From 6ed5aaf415ed91e2bb19c74b64069c460395dad0 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 12 Nov 2024 12:46:12 -0500 Subject: [PATCH 001/220] app(fix): Fix liquids always required during protocol setup (#16762) Closes RQA-3535 --- .../hooks/useRequiredSetupStepsInOrder.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/redux-resources/runs/hooks/useRequiredSetupStepsInOrder.ts b/app/src/redux-resources/runs/hooks/useRequiredSetupStepsInOrder.ts index 481a3622f05..31863f238e6 100644 --- a/app/src/redux-resources/runs/hooks/useRequiredSetupStepsInOrder.ts +++ b/app/src/redux-resources/runs/hooks/useRequiredSetupStepsInOrder.ts @@ -56,14 +56,19 @@ const keysInOrder = ( protocolAnalysis == null ? NO_ANALYSIS_STEPS_IN_ORDER : ALL_STEPS_IN_ORDER.filter((stepKey: StepKey) => { - if (protocolAnalysis.modules.length === 0) { - return stepKey !== MODULE_SETUP_STEP_KEY + if ( + stepKey === MODULE_SETUP_STEP_KEY && + protocolAnalysis.modules.length === 0 + ) { + return false + } else if ( + stepKey === LIQUID_SETUP_STEP_KEY && + protocolAnalysis.liquids.length === 0 + ) { + return false + } else { + return true } - - if (protocolAnalysis.liquids.length === 0) { - return stepKey !== LIQUID_SETUP_STEP_KEY - } - return true }) return { orderedSteps: orderedSteps as StepKey[], orderedApplicableSteps } } From 9e951dad2890acd0238b4fec9ae0bed6cb0ac078 Mon Sep 17 00:00:00 2001 From: Brayan Almonte Date: Wed, 13 Nov 2024 10:34:32 -0500 Subject: [PATCH 002/220] fix(api): use encoder position instead of homing gantry when placing plate reader lid. (#16781) - The plate reader lid hits the Flex side window when the gantry homes while the gripper holds the lid, don't do that! :) - Instead, let's update the gantry position from the encoders, so we don't have to home at all. --- .../commands/unsafe/unsafe_place_labware.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py index aa11555954d..c69cea29243 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_place_labware.py @@ -129,9 +129,14 @@ async def execute( module.id ) - # NOTE: When the estop is pressed, the gantry loses position, - # so the robot needs to home x, y to sync. - await ot3api.home(axes=[Axis.Z_L, Axis.Z_R, Axis.Z_G, Axis.X, Axis.Y]) + # NOTE: When the estop is pressed, the gantry loses position, lets use + # the encoders to sync position. + # Ideally, we'd do a full home, but this command is used when + # the gripper is holding the plate reader, and a full home would + # bang it into the right window. + await ot3api.home(axes=[Axis.Z_L, Axis.Z_R, Axis.Z_G]) + await ot3api.engage_axes([Axis.X, Axis.Y]) + await ot3api.update_axis_position_estimations([Axis.X, Axis.Y]) # Place the labware down await self._start_movement(ot3api, definition, location, drop_offset) From 653fb4931ec4bedc445cc043687a0aa4e594de0f Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Wed, 13 Nov 2024 12:37:58 -0500 Subject: [PATCH 003/220] fix(app, shared-data, components): add calibration not req text for plate reader, remove lid filtration (#16776) fix RQA-3396 --- .../localization/en/device_settings.json | 1 + .../Desktop/ProtocolDetails/index.tsx | 5 +- .../ModuleCalibrationItems.tsx | 86 +++++++++++-------- .../__tests__/ModuleCalibrationItems.test.tsx | 22 ++++- .../IntroScreen/getPrepCommands.ts | 4 +- .../analysis/getProtocolModulesInfo.ts | 4 +- .../getLabwareSetupItemGroups.ts | 8 +- .../ProtocolDeck/utils/getModulesInSlots.ts | 4 +- shared-data/js/constants.ts | 6 -- 9 files changed, 77 insertions(+), 63 deletions(-) diff --git a/app/src/assets/localization/en/device_settings.json b/app/src/assets/localization/en/device_settings.json index 5e40c7ce5e2..79416a09f73 100644 --- a/app/src/assets/localization/en/device_settings.json +++ b/app/src/assets/localization/en/device_settings.json @@ -177,6 +177,7 @@ "never": "Never", "new_features": "New Features", "next_step": "Next step", + "no_calibration_required": "No calibration required", "no_connection_found": "No connection found", "no_gripper_attached": "No gripper attached", "no_modules_attached": "No modules attached", diff --git a/app/src/organisms/Desktop/ProtocolDetails/index.tsx b/app/src/organisms/Desktop/ProtocolDetails/index.tsx index a54115a00f9..3bdf4be672e 100644 --- a/app/src/organisms/Desktop/ProtocolDetails/index.tsx +++ b/app/src/organisms/Desktop/ProtocolDetails/index.tsx @@ -47,7 +47,6 @@ import { parseInitialLoadedLabwareBySlot, parseInitialLoadedModulesBySlot, parseInitialPipetteNamesByMount, - NON_USER_ADDRESSABLE_LABWARE, } from '@opentrons/shared-data' import { getTopPortalEl } from '/app/App/portal' @@ -285,9 +284,7 @@ export function ProtocolDetails( : [] ), }).filter( - labware => - labware.result?.definition?.parameters?.format !== 'trash' && - !NON_USER_ADDRESSABLE_LABWARE.includes(labware?.params?.loadName) + labware => labware.result?.definition?.parameters?.format !== 'trash' ) : [] diff --git a/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/ModuleCalibrationItems.tsx b/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/ModuleCalibrationItems.tsx index 11ee8f60402..684b8269784 100644 --- a/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/ModuleCalibrationItems.tsx +++ b/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/ModuleCalibrationItems.tsx @@ -8,7 +8,10 @@ import { LegacyStyledText, TYPOGRAPHY, } from '@opentrons/components' -import { getModuleDisplayName } from '@opentrons/shared-data' +import { + getModuleDisplayName, + ABSORBANCE_READER_TYPE, +} from '@opentrons/shared-data' import { formatLastCalibrated } from './utils' import { ModuleCalibrationOverflowMenu } from './ModuleCalibrationOverflowMenu' @@ -41,42 +44,51 @@ export function ModuleCalibrationItems({ - {attachedModules.map(attachedModule => ( - - - - {getModuleDisplayName(attachedModule.moduleModel)} - - - - - {attachedModule.serialNumber} - - - - - {attachedModule.moduleOffset?.last_modified != null - ? formatLastCalibrated( - attachedModule.moduleOffset?.last_modified - ) - : t('not_calibrated_short')} - - - - - - - ))} + {attachedModules.map(attachedModule => { + const noCalibrationCopy = + attachedModule.moduleType === ABSORBANCE_READER_TYPE + ? t('no_calibration_required') + : t('not_calibrated_short') + + return ( + + + + {getModuleDisplayName(attachedModule.moduleModel)} + + + + + {attachedModule.serialNumber} + + + + + {attachedModule.moduleOffset?.last_modified != null + ? formatLastCalibrated( + attachedModule.moduleOffset?.last_modified + ) + : noCalibrationCopy} + + + + {attachedModule.moduleType !== ABSORBANCE_READER_TYPE ? ( + + ) : null} + + + ) + })} ) diff --git a/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/__tests__/ModuleCalibrationItems.test.tsx b/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/__tests__/ModuleCalibrationItems.test.tsx index 2fdd9694e5d..8cb0dd62dc6 100644 --- a/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/__tests__/ModuleCalibrationItems.test.tsx +++ b/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/__tests__/ModuleCalibrationItems.test.tsx @@ -9,6 +9,7 @@ import { formatLastCalibrated } from '../utils' import { ModuleCalibrationItems } from '../ModuleCalibrationItems' import type { AttachedModule } from '@opentrons/api-client' +import { ABSORBANCE_READER_TYPE } from '@opentrons/shared-data' vi.mock('../ModuleCalibrationOverflowMenu') @@ -42,7 +43,7 @@ const mockCalibratedModule = { totalCycleCount: 1, currentStepIndex: 1, totalStepCount: 1, - }, + } as any, usbPort: { port: 3, portGroup: 'left', @@ -101,4 +102,23 @@ describe('ModuleCalibrationItems', () => { render(props) screen.getByText(formatLastCalibrated('2023-06-01T14:42:20.131798+00:00')) }) + + it('should say no calibration required if module is absorbance reader', () => { + const absorbanceReaderAttachedModule = { + ...mockCalibratedModule, + moduleType: ABSORBANCE_READER_TYPE, + moduleOffset: undefined, + } + props = { + ...props, + attachedModules: [ + absorbanceReaderAttachedModule as AttachedModule, + ] as AttachedModule[], + } + render(props) + expect( + screen.queryByText('mock ModuleCalibrationOverflowMenu') + ).not.toBeInTheDocument() + screen.getByText('No calibration required') + }) }) diff --git a/app/src/organisms/LabwarePositionCheck/IntroScreen/getPrepCommands.ts b/app/src/organisms/LabwarePositionCheck/IntroScreen/getPrepCommands.ts index 8c2831115c9..4e8119e4d74 100644 --- a/app/src/organisms/LabwarePositionCheck/IntroScreen/getPrepCommands.ts +++ b/app/src/organisms/LabwarePositionCheck/IntroScreen/getPrepCommands.ts @@ -3,7 +3,6 @@ import { HEATERSHAKER_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, ABSORBANCE_READER_TYPE, - NON_USER_ADDRESSABLE_LABWARE, } from '@opentrons/shared-data' import type { @@ -49,8 +48,7 @@ export function getPrepCommands( return [...acc, loadWithPipetteId] } else if ( command.commandType === 'loadLabware' && - command.result?.labwareId != null && - !NON_USER_ADDRESSABLE_LABWARE.includes(command.params.loadName) + command.result?.labwareId != null ) { // load all labware off-deck so that LPC can move them on individually later return [ diff --git a/app/src/transformations/analysis/getProtocolModulesInfo.ts b/app/src/transformations/analysis/getProtocolModulesInfo.ts index ee1da1a2392..8a268c2694b 100644 --- a/app/src/transformations/analysis/getProtocolModulesInfo.ts +++ b/app/src/transformations/analysis/getProtocolModulesInfo.ts @@ -3,7 +3,6 @@ import { getModuleDef2, getLoadedLabwareDefinitionsByUri, getPositionFromSlotId, - NON_USER_ADDRESSABLE_LABWARE, } from '@opentrons/shared-data' import { getModuleInitialLoadInfo } from '../commands' import type { @@ -39,8 +38,7 @@ export const getProtocolModulesInfo = ( protocolData.commands .filter( (command): command is LoadLabwareRunTimeCommand => - command.commandType === 'loadLabware' && - !NON_USER_ADDRESSABLE_LABWARE.includes(command.params.loadName) + command.commandType === 'loadLabware' ) .find( (command: LoadLabwareRunTimeCommand) => diff --git a/app/src/transformations/commands/transformations/getLabwareSetupItemGroups.ts b/app/src/transformations/commands/transformations/getLabwareSetupItemGroups.ts index 30c79281649..ebc31e37ccc 100644 --- a/app/src/transformations/commands/transformations/getLabwareSetupItemGroups.ts +++ b/app/src/transformations/commands/transformations/getLabwareSetupItemGroups.ts @@ -1,8 +1,5 @@ import partition from 'lodash/partition' -import { - getLabwareDisplayName, - NON_USER_ADDRESSABLE_LABWARE, -} from '@opentrons/shared-data' +import { getLabwareDisplayName } from '@opentrons/shared-data' import type { LabwareDefinition2, @@ -46,8 +43,7 @@ export function getLabwareSetupItemGroups( commands.reduce((acc, c) => { if ( c.commandType === 'loadLabware' && - c.result?.definition?.metadata?.displayCategory !== 'trash' && - !NON_USER_ADDRESSABLE_LABWARE.includes(c.params?.loadName) + c.result?.definition?.metadata?.displayCategory !== 'trash' ) { const { location, displayName } = c.params const { definition } = c.result ?? {} diff --git a/components/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts b/components/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts index 612759b3d01..0d9da4b48bd 100644 --- a/components/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts +++ b/components/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts @@ -2,7 +2,6 @@ import { SPAN7_8_10_11_SLOT, getModuleDef2, getLoadedLabwareDefinitionsByUri, - NON_USER_ADDRESSABLE_LABWARE, } from '@opentrons/shared-data' import type { CompletedProtocolAnalysis, @@ -37,8 +36,7 @@ export const getModulesInSlots = ( commands .filter( (command): command is LoadLabwareRunTimeCommand => - command.commandType === 'loadLabware' && - !NON_USER_ADDRESSABLE_LABWARE.includes(command.params.loadName) + command.commandType === 'loadLabware' ) .find( (command: LoadLabwareRunTimeCommand) => diff --git a/shared-data/js/constants.ts b/shared-data/js/constants.ts index f5f764d480d..8ae6d2d6ff8 100644 --- a/shared-data/js/constants.ts +++ b/shared-data/js/constants.ts @@ -589,12 +589,6 @@ export const WASTE_CHUTE_STAGING_AREA_FIXTURES: CutoutFixtureId[] = [ export const LOW_VOLUME_PIPETTES = ['p50_single_flex', 'p50_multi_flex'] -// robot server loads absorbance reader lid as a labware but it is not -// user addressable so we need to hide it where we show labware in the app -export const NON_USER_ADDRESSABLE_LABWARE = [ - 'opentrons_flex_lid_absorbance_plate_reader_module', -] - // default hex values for liquid colors const electricPurple = '#b925ff' const goldenYellow = '#ffd600' From 21bf7474e4486867d64c165294a3537bba355a0e Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 13 Nov 2024 14:48:13 -0500 Subject: [PATCH 004/220] fix(app): Bubble pipette command errors during drop tip wizard (#16793) Works toward RQA-3569 --- .../organisms/DropTipWizardFlows/DropTipWizard.tsx | 10 +++++++--- .../hooks/__tests__/useDropTipRouting.test.tsx | 11 +++++++++++ .../DropTipWizardFlows/hooks/useDropTipRouting.tsx | 5 ++++- .../organisms/ErrorRecoveryFlows/RecoveryError.tsx | 4 ++++ .../__tests__/RecoveryError.test.tsx | 6 +++++- 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/src/organisms/DropTipWizardFlows/DropTipWizard.tsx b/app/src/organisms/DropTipWizardFlows/DropTipWizard.tsx index be4cc9979ef..228d4f3384c 100644 --- a/app/src/organisms/DropTipWizardFlows/DropTipWizard.tsx +++ b/app/src/organisms/DropTipWizardFlows/DropTipWizard.tsx @@ -246,7 +246,13 @@ export const DropTipWizardContent = ( function buildModalContent(): JSX.Element { // Don't render the spinner screen for 1 render cycle on fixit commands. - if (currentStep === BEFORE_BEGINNING && issuedCommandsType === 'fixit') { + + if (errorDetails != null) { + return buildErrorScreen() + } else if ( + currentStep === BEFORE_BEGINNING && + issuedCommandsType === 'fixit' + ) { return buildBeforeBeginning() } else if ( activeMaintenanceRunId == null && @@ -259,8 +265,6 @@ export const DropTipWizardContent = ( return buildRobotInMotion() } else if (showConfirmExit) { return buildShowExitConfirmation() - } else if (errorDetails != null) { - return buildErrorScreen() } else if (currentStep === BEFORE_BEGINNING) { return buildBeforeBeginning() } else if (currentStep === CHOOSE_LOCATION_OPTION) { diff --git a/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useDropTipRouting.test.tsx b/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useDropTipRouting.test.tsx index c6cf823784c..f5622960244 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useDropTipRouting.test.tsx +++ b/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useDropTipRouting.test.tsx @@ -144,4 +144,15 @@ describe('getInitialRouteAndStep', () => { expect(initialRoute).toBe(DT_ROUTES.DROP_TIP) expect(initialStep).toBe(DT_ROUTES.DROP_TIP[2]) }) + + it('should return the overridden route and first step when fixitUtils.routeOverride.route is provided but routeOverride.step is not provided', () => { + const fixitUtils = { + routeOverride: { route: DT_ROUTES.DROP_TIP, step: null }, + } as any + + const [initialRoute, initialStep] = getInitialRouteAndStep(fixitUtils) + + expect(initialRoute).toBe(DT_ROUTES.DROP_TIP) + expect(initialStep).toBe(DT_ROUTES.DROP_TIP[0]) + }) }) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useDropTipRouting.tsx b/app/src/organisms/DropTipWizardFlows/hooks/useDropTipRouting.tsx index b0928eca3c2..4c3e8e01064 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useDropTipRouting.tsx +++ b/app/src/organisms/DropTipWizardFlows/hooks/useDropTipRouting.tsx @@ -218,7 +218,10 @@ export function getInitialRouteAndStep( ): [DropTipFlowsRoute, DropTipFlowsStep] { const routeOverride = fixitUtils?.routeOverride const initialRoute = routeOverride?.route ?? DT_ROUTES.BEFORE_BEGINNING - const initialStep = routeOverride?.step ?? BEFORE_BEGINNING_STEPS[0] + const initialStep = + routeOverride?.step ?? + routeOverride?.route?.[0] ?? + BEFORE_BEGINNING_STEPS[0] return [initialRoute, initialStep] } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryError.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryError.tsx index dd680ed24f6..d2fe92438a4 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryError.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryError.tsx @@ -92,6 +92,7 @@ export function RecoveryDropTipFlowErrors({ routeUpdateActions, getRecoveryOptionCopy, errorKind, + subMapUtils, }: RecoveryContentProps): JSX.Element { const { t } = useTranslation('error_recovery') const { step } = recoveryMap @@ -108,6 +109,9 @@ export function RecoveryDropTipFlowErrors({ errorKind ) + // Whenever there is an error during drop tip wizard, reset the submap so properly re-entry routing occurs. + subMapUtils.updateSubMap(null) + const buildTitle = (): string => { switch (step) { case ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_GENERAL_ERROR: diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryError.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryError.test.tsx index 1394993746b..f46f3f949ba 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryError.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryError.test.tsx @@ -25,12 +25,14 @@ describe('RecoveryError', () => { let getRecoverOptionCopyMock: Mock let handleMotionRoutingMock: Mock let homePipetteZAxesMock: Mock + let updateSubMapMock: Mock beforeEach(() => { proceedToRouteAndStepMock = vi.fn() getRecoverOptionCopyMock = vi.fn() handleMotionRoutingMock = vi.fn().mockResolvedValue(undefined) homePipetteZAxesMock = vi.fn().mockResolvedValue(undefined) + updateSubMapMock = vi.fn() props = { ...mockRecoveryContentProps, @@ -48,6 +50,7 @@ describe('RecoveryError', () => { route: ERROR_WHILE_RECOVERING.ROUTE, step: ERROR_WHILE_RECOVERING.STEPS.RECOVERY_ACTION_FAILED, }, + subMapUtils: { subMap: null, updateSubMap: updateSubMapMock }, } getRecoverOptionCopyMock.mockReturnValue('Retry step') @@ -95,7 +98,7 @@ describe('RecoveryError', () => { expect(screen.queryAllByText('Continue to drop tip')[0]).toBeInTheDocument() }) - it(`renders RecoveryDropTipFlowErrors when step is ${ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_TIP_DROP_FAILED}`, () => { + it(`renders RecoveryDropTipFlowErrors when step is ${ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_TIP_DROP_FAILED} and resets the submap`, () => { props.recoveryMap.step = RECOVERY_MAP.ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_TIP_DROP_FAILED render(props) @@ -107,6 +110,7 @@ describe('RecoveryError', () => { )[0] ).toBeInTheDocument() expect(screen.queryAllByText('Return to menu')[0]).toBeInTheDocument() + expect(updateSubMapMock).toHaveBeenCalledWith(null) }) it(`calls proceedToRouteAndStep with ${RECOVERY_MAP.OPTION_SELECTION.ROUTE} when the "Return to menu" button is clicked in RecoveryDropTipFlowErrors with step ${ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_GENERAL_ERROR}`, () => { From f2adaab5b25013dd0d0bf17d18ea0cc0acc6216a Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 13 Nov 2024 15:10:24 -0500 Subject: [PATCH 005/220] fix(app): Fix run setup buttons (#16796) Closes RQA-3578 and RQA-3577 --- .../__tests__/SetupLabware.test.tsx | 25 +++++++++++++++++- .../ProtocolRun/SetupLabware/index.tsx | 16 +++++++++++- .../SetupLabwarePositionCheck/index.tsx | 1 - .../__tests__/SetupLiquids.test.tsx | 26 ++++++++++++++++++- .../ProtocolRun/SetupLiquids/index.tsx | 15 ++++++++++- 5 files changed, 78 insertions(+), 5 deletions(-) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/__tests__/SetupLabware.test.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/__tests__/SetupLabware.test.tsx index 9aa6b7cee22..6acaf42445b 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/__tests__/SetupLabware.test.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/__tests__/SetupLabware.test.tsx @@ -3,6 +3,8 @@ import { fireEvent, screen } from '@testing-library/react' import { describe, it, beforeEach, vi, afterEach, expect } from 'vitest' import { when } from 'vitest-when' +import { useHoverTooltip } from '@opentrons/components' + import { renderWithProviders } from '/app/__testing-utils__' import { i18n } from '/app/i18n' import { useLPCSuccessToast } from '../../../hooks/useLPCSuccessToast' @@ -20,6 +22,13 @@ import { useUnmatchedModulesForProtocol, } from '/app/resources/runs' +vi.mock('@opentrons/components', async () => { + const actual = await vi.importActual('@opentrons/components') + return { + ...actual, + useHoverTooltip: vi.fn(), + } +}) vi.mock('../SetupLabwareList') vi.mock('../SetupLabwareMap') vi.mock('/app/organisms/LabwarePositionCheck') @@ -78,7 +87,6 @@ describe('SetupLabware', () => { .thenReturn({ complete: true, }) - when(vi.mocked(useRunHasStarted)).calledWith(RUN_ID).thenReturn(false) vi.mocked(getIsLabwareOffsetCodeSnippetsOn).mockReturnValue(false) vi.mocked(SetupLabwareMap).mockReturnValue(
mock setup labware map
@@ -88,6 +96,8 @@ describe('SetupLabware', () => { ) vi.mocked(useLPCDisabledReason).mockReturnValue(null) vi.mocked(useNotifyRunQuery).mockReturnValue({} as any) + vi.mocked(useHoverTooltip).mockReturnValue([{}, {}] as any) + vi.mocked(useRunHasStarted).mockReturnValue(false) }) afterEach(() => { @@ -98,8 +108,21 @@ describe('SetupLabware', () => { render() screen.getByText('mock setup labware list') screen.getByRole('button', { name: 'List View' }) + screen.getByRole('button', { name: 'Confirm placements' }) const mapView = screen.getByRole('button', { name: 'Map View' }) fireEvent.click(mapView) screen.getByText('mock setup labware map') }) + + it('disables the confirmation button if the run has already started', () => { + vi.mocked(useRunHasStarted).mockReturnValue(true) + + render() + + const btn = screen.getByRole('button', { + name: 'Confirm placements', + }) + + expect(btn).toBeDisabled() + }) }) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/index.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/index.tsx index 38963d79dda..687c1a739ab 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/index.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabware/index.tsx @@ -1,17 +1,22 @@ import { useTranslation } from 'react-i18next' import map from 'lodash/map' + import { JUSTIFY_CENTER, Flex, SPACING, PrimaryButton, DIRECTION_COLUMN, + Tooltip, + useHoverTooltip, } from '@opentrons/components' + import { useToggleGroup } from '/app/molecules/ToggleGroup/useToggleGroup' import { getModuleTypesThatRequireExtraAttention } from '../utils/getModuleTypesThatRequireExtraAttention' import { useMostRecentCompletedAnalysis, useModuleRenderInfoForProtocolById, + useRunHasStarted, } from '/app/resources/runs' import { useIsFlex } from '/app/redux-resources/robots' import { useStoredProtocolAnalysis } from '/app/resources/analysis' @@ -46,6 +51,11 @@ export function SetupLabware(props: SetupLabwareProps): JSX.Element { moduleModels ) + // TODO(jh, 11-13-24): These disabled tooltips are used throughout setup flows. Let's consolidate them. + const [targetProps, tooltipProps] = useHoverTooltip() + const runHasStarted = useRunHasStarted(runId) + const tooltipText = runHasStarted ? t('protocol_run_started') : null + return ( <> { setLabwareConfirmed(true) }} - disabled={labwareConfirmed} + disabled={labwareConfirmed || runHasStarted} + {...targetProps} > {t('confirm_placements')} + {tooltipText != null ? ( + {tooltipText} + ) : null} ) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/index.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/index.tsx index 9d2c6223373..637a4814936 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/index.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/index.tsx @@ -143,7 +143,6 @@ export function SetupLabwarePositionCheck( ) : null} { launchLPC() setIsShowingLPCSuccessToast(false) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/__tests__/SetupLiquids.test.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/__tests__/SetupLiquids.test.tsx index 097f30447ee..736d5f5bc85 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/__tests__/SetupLiquids.test.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/__tests__/SetupLiquids.test.tsx @@ -1,15 +1,26 @@ import type * as React from 'react' -import { describe, it, beforeEach, vi } from 'vitest' +import { describe, it, beforeEach, vi, expect } from 'vitest' import { screen, fireEvent } from '@testing-library/react' +import { useHoverTooltip } from '@opentrons/components' + import { renderWithProviders } from '/app/__testing-utils__' import { i18n } from '/app/i18n' import { SetupLiquids } from '../index' import { SetupLiquidsList } from '../SetupLiquidsList' import { SetupLiquidsMap } from '../SetupLiquidsMap' +import { useRunHasStarted } from '/app/resources/runs' +vi.mock('@opentrons/components', async () => { + const actual = await vi.importActual('@opentrons/components') + return { + ...actual, + useHoverTooltip: vi.fn(), + } +}) vi.mock('../SetupLiquidsList') vi.mock('../SetupLiquidsMap') +vi.mock('/app/resources/runs') describe('SetupLiquids', () => { const render = ( @@ -44,6 +55,8 @@ describe('SetupLiquids', () => { vi.mocked(SetupLiquidsMap).mockReturnValue(
Mock setup liquids map
) + vi.mocked(useHoverTooltip).mockReturnValue([{}, {}] as any) + vi.mocked(useRunHasStarted).mockReturnValue(false) }) it('renders the list and map view buttons and proceed button', () => { @@ -64,4 +77,15 @@ describe('SetupLiquids', () => { fireEvent.click(mapViewButton) screen.getByText('Mock setup liquids list') }) + it('disables the confirmation button if the run has already started', () => { + vi.mocked(useRunHasStarted).mockReturnValue(true) + + render(props) + + const btn = screen.getByRole('button', { + name: 'Confirm locations and volumes', + }) + + expect(btn).toBeDisabled() + }) }) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/index.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/index.tsx index 28a6f84e2d4..685d14a2ae5 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/index.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLiquids/index.tsx @@ -6,11 +6,14 @@ import { DIRECTION_COLUMN, ALIGN_CENTER, PrimaryButton, + useHoverTooltip, + Tooltip, } from '@opentrons/components' import { useToggleGroup } from '/app/molecules/ToggleGroup/useToggleGroup' import { ANALYTICS_LIQUID_SETUP_VIEW_TOGGLE } from '/app/redux/analytics' import { SetupLiquidsList } from './SetupLiquidsList' import { SetupLiquidsMap } from './SetupLiquidsMap' +import { useRunHasStarted } from '/app/resources/runs' import type { CompletedProtocolAnalysis, @@ -38,6 +41,12 @@ export function SetupLiquids({ t('map_view') as string, ANALYTICS_LIQUID_SETUP_VIEW_TOGGLE ) + + // TODO(jh, 11-13-24): These disabled tooltips are used throughout setup flows. Let's consolidate them. + const [targetProps, tooltipProps] = useHoverTooltip() + const runHasStarted = useRunHasStarted(runId) + const tooltipText = runHasStarted ? t('protocol_run_started') : null + return ( { setLiquidSetupConfirmed(true) }} - disabled={isLiquidSetupConfirmed} + disabled={isLiquidSetupConfirmed || runHasStarted} + {...targetProps} > {t('confirm_locations_and_volumes')}
+ {tooltipText != null ? ( + {tooltipText} + ) : null} ) From 20c98e6aca500133c1bf2eccd1c098a9dff6e1b4 Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Wed, 13 Nov 2024 17:41:58 -0500 Subject: [PATCH 006/220] fix(app): enable about plate reader button when run is in progress (#16803) fix RQA-3561 --- app/src/organisms/ModuleCard/ModuleOverflowMenu.tsx | 2 +- app/src/organisms/ModuleCard/hooks.tsx | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/organisms/ModuleCard/ModuleOverflowMenu.tsx b/app/src/organisms/ModuleCard/ModuleOverflowMenu.tsx index a22c7591360..a668fc48e70 100644 --- a/app/src/organisms/ModuleCard/ModuleOverflowMenu.tsx +++ b/app/src/organisms/ModuleCard/ModuleOverflowMenu.tsx @@ -150,7 +150,7 @@ export const ModuleOverflowMenu = ( item.onClick(item.isSecondary)} - disabled={item.disabledReason || isDisabled} + disabled={item.isSettingDisabled} whiteSpace={NO_WRAP} > {item.setSetting} diff --git a/app/src/organisms/ModuleCard/hooks.tsx b/app/src/organisms/ModuleCard/hooks.tsx index 10b0e9fd30b..da44c64d983 100644 --- a/app/src/organisms/ModuleCard/hooks.tsx +++ b/app/src/organisms/ModuleCard/hooks.tsx @@ -80,6 +80,7 @@ export function useLatchControls(module: AttachedModule): LatchControls { export type MenuItemsByModuleType = { [moduleType in AttachedModule['moduleType']]: Array<{ setSetting: string + isSettingDisabled: boolean isSecondary: boolean menuButtons: JSX.Element[] | null onClick: (isSecondary: boolean) => void @@ -267,6 +268,7 @@ export function useModuleOverflowMenu( module.data.lidTargetTemperature != null ? t('overflow_menu_deactivate_lid') : t('overflow_menu_lid_temp'), + isSettingDisabled: isDisabled, isSecondary: true, menuButtons: null, onClick: @@ -285,6 +287,7 @@ export function useModuleOverflowMenu( module.data.lidStatus === 'open' ? t('close_lid') : t('open_lid'), + isSettingDisabled: isDisabled, isSecondary: false, menuButtons: [thermoSetBlockTempBtn, aboutModuleBtn], onClick: controlTCLid, @@ -298,6 +301,7 @@ export function useModuleOverflowMenu( ? t('overflow_menu_deactivate_temp') : t('overflow_menu_mod_temp'), isSecondary: false, + isSettingDisabled: isDisabled, menuButtons: [aboutModuleBtn], onClick: module.data.status !== 'idle' @@ -317,6 +321,7 @@ export function useModuleOverflowMenu( ? t('overflow_menu_disengage') : t('overflow_menu_engage'), isSecondary: false, + isSettingDisabled: isDisabled, menuButtons: [aboutModuleBtn], onClick: module.data.status !== 'disengaged' @@ -336,6 +341,7 @@ export function useModuleOverflowMenu( ? t('heater_shaker:deactivate_heater') : t('heater_shaker:set_temperature'), isSecondary: false, + isSettingDisabled: isDisabled, menuButtons: [ labwareLatchBtn, aboutModuleBtn, @@ -358,6 +364,7 @@ export function useModuleOverflowMenu( { setSetting: t('overflow_menu_about'), isSecondary: false, + isSettingDisabled: false, menuButtons: [], onClick: handleAboutClick, }, From 91b40aec8288a835be7b181752b5e6e86f3a5152 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Thu, 14 Nov 2024 09:19:01 -0500 Subject: [PATCH 007/220] fix(api): Skip updating position estimators for axes that are not present (#16804) --- api/src/opentrons/hardware_control/ot3api.py | 10 +++---- .../protocols/position_estimator.py | 4 ++- .../unsafe/update_position_estimators.py | 6 +++- .../hardware_control/test_ot3_api.py | 29 ++++++++++++++----- .../hooks/useDropTipCommands.ts | 6 ---- .../hardware_control/motor_position_status.py | 6 +--- shared-data/command/schemas/10.json | 2 +- 7 files changed, 36 insertions(+), 27 deletions(-) diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index f90a0a539dc..7f28d861a2c 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -775,12 +775,12 @@ async def _update_position_estimation( """ Function to update motor estimation for a set of axes """ + if axes is None: + axes = [ax for ax in Axis] - if axes: - checked_axes = [ax for ax in axes if ax in Axis] - else: - checked_axes = [ax for ax in Axis] - await self._backend.update_motor_estimation(checked_axes) + axes = [ax for ax in axes if self._backend.axis_is_present(ax)] + + await self._backend.update_motor_estimation(axes) # Global actions API def pause(self, pause_type: PauseType) -> None: diff --git a/api/src/opentrons/hardware_control/protocols/position_estimator.py b/api/src/opentrons/hardware_control/protocols/position_estimator.py index 04d551020c3..fc4e1521a89 100644 --- a/api/src/opentrons/hardware_control/protocols/position_estimator.py +++ b/api/src/opentrons/hardware_control/protocols/position_estimator.py @@ -10,7 +10,7 @@ async def update_axis_position_estimations(self, axes: Sequence[Axis]) -> None: """Update the specified axes' position estimators from their encoders. This will allow these axes to make a non-home move even if they do not currently have - a position estimation (unless there is no tracked poition from the encoders, as would be + a position estimation (unless there is no tracked position from the encoders, as would be true immediately after boot). Axis encoders have less precision than their position estimators. Calling this function will @@ -19,6 +19,8 @@ async def update_axis_position_estimations(self, axes: Sequence[Axis]) -> None: This function updates only the requested axes. If other axes have bad position estimation, moves that require those axes or attempts to get the position of those axes will still fail. + Axes that are not currently available (like a plunger for a pipette that is not connected) + will be ignored. """ ... diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py b/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py index cf5454db332..ff06b6c22ed 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py @@ -23,7 +23,11 @@ class UpdatePositionEstimatorsParams(BaseModel): """Payload required for an UpdatePositionEstimators command.""" axes: List[MotorAxis] = Field( - ..., description="The axes for which to update the position estimators." + ..., + description=( + "The axes for which to update the position estimators." + " Any axes that are not physically present will be ignored." + ), ) diff --git a/api/tests/opentrons/hardware_control/test_ot3_api.py b/api/tests/opentrons/hardware_control/test_ot3_api.py index 064ea087c6b..8d07999646e 100644 --- a/api/tests/opentrons/hardware_control/test_ot3_api.py +++ b/api/tests/opentrons/hardware_control/test_ot3_api.py @@ -2037,23 +2037,36 @@ def set_mock_plunger_configs() -> None: @pytest.mark.parametrize( - "axes", - [[Axis.X], [Axis.X, Axis.Y], [Axis.X, Axis.Y, Axis.P_L], None], + ("axes_in", "axes_present", "expected_axes"), + [ + ([Axis.X, Axis.Y], [Axis.X, Axis.Y], [Axis.X, Axis.Y]), + ([Axis.X, Axis.Y], [Axis.Y, Axis.Z_L], [Axis.Y]), + (None, list(Axis), list(Axis)), + (None, [Axis.Y, Axis.Z_L], [Axis.Y, Axis.Z_L]), + ], ) async def test_update_position_estimation( ot3_hardware: ThreadManager[OT3API], hardware_backend: OT3Simulator, - axes: List[Axis], + axes_in: List[Axis], + axes_present: List[Axis], + expected_axes: List[Axis], ) -> None: + def _axis_is_present(axis: Axis) -> bool: + return axis in axes_present + with patch.object( hardware_backend, "update_motor_estimation", AsyncMock(spec=hardware_backend.update_motor_estimation), - ) as mock_update: - await ot3_hardware._update_position_estimation(axes) - if axes is None: - axes = [ax for ax in Axis] - mock_update.assert_called_once_with(axes) + ) as mock_update, patch.object( + hardware_backend, + "axis_is_present", + Mock(spec=hardware_backend.axis_is_present), + ) as mock_axis_is_present: + mock_axis_is_present.side_effect = _axis_is_present + await ot3_hardware._update_position_estimation(axes_in) + mock_update.assert_called_once_with(expected_axes) async def test_refresh_positions( diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts b/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts index 6bb8915505e..493b4a77bff 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts @@ -369,12 +369,6 @@ const buildBlowoutCommands = ( ), }, }, - { - commandType: 'prepareToAspirate', - params: { - pipetteId: pipetteId ?? MANAGED_PIPETTE_ID, - }, - }, Z_HOME, ] : [ diff --git a/hardware/opentrons_hardware/hardware_control/motor_position_status.py b/hardware/opentrons_hardware/hardware_control/motor_position_status.py index 90319764922..1ce9bbe3ce5 100644 --- a/hardware/opentrons_hardware/hardware_control/motor_position_status.py +++ b/hardware/opentrons_hardware/hardware_control/motor_position_status.py @@ -152,11 +152,7 @@ def _listener_filter(arbitration_id: ArbitrationId) -> bool: log.warning("Update motor position estimation timed out") raise CommandTimedOutError( "Update motor position estimation timed out", - detail={ - "missing-nodes": ", ".join( - node.name for node in set(nodes).difference(set(data)) - ) - }, + detail={"missing-node": node.name}, ) return data diff --git a/shared-data/command/schemas/10.json b/shared-data/command/schemas/10.json index 7e8f87a6c22..33a65c4d4fe 100644 --- a/shared-data/command/schemas/10.json +++ b/shared-data/command/schemas/10.json @@ -4624,7 +4624,7 @@ "type": "object", "properties": { "axes": { - "description": "The axes for which to update the position estimators.", + "description": "The axes for which to update the position estimators. Any axes that are not physically present will be ignored.", "type": "array", "items": { "$ref": "#/definitions/MotorAxis" From a0fe00fba2e7394260eecf6c31de88b73fadbabb Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Thu, 14 Nov 2024 11:17:09 -0500 Subject: [PATCH 008/220] fix(app): add error handling for failed maintenance run creation (#16818) Closes RABR-663 and RABR-667 During calibration flows, we currently don't have any error handling for failure to create a maintenance run. If a user exits pipette calibration and re-enters too quickly, for example, the "Move gantry to front" button is disabled indefinitely. This PR just adds some basic error handling if a maintenance run fails to be created successfully. --- app/src/organisms/GripperWizardFlows/index.tsx | 12 +++++++++--- app/src/organisms/PipetteWizardFlows/index.tsx | 9 +++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/organisms/GripperWizardFlows/index.tsx b/app/src/organisms/GripperWizardFlows/index.tsx index 34f07d39a35..1a4bab512eb 100644 --- a/app/src/organisms/GripperWizardFlows/index.tsx +++ b/app/src/organisms/GripperWizardFlows/index.tsx @@ -71,6 +71,7 @@ export function GripperWizardFlows( const [createdMaintenanceRunId, setCreatedMaintenanceRunId] = useState< string | null >(null) + const [errorMessage, setErrorMessage] = useState(null) // we should start checking for run deletion only after the maintenance run is created // and the useCurrentRun poll has returned that created id @@ -86,6 +87,9 @@ export function GripperWizardFlows( onSuccess: response => { setCreatedMaintenanceRunId(response.data.id) }, + onError: error => { + setErrorMessage(error.message) + }, }) const { data: maintenanceRunData } = useNotifyCurrentMaintenanceRun({ @@ -117,7 +121,6 @@ export function GripperWizardFlows( ]) const [isExiting, setIsExiting] = useState(false) - const [errorMessage, setErrorMessage] = useState(null) const handleClose = (): void => { if (props?.onComplete != null) { @@ -298,9 +301,12 @@ export const GripperWizard = ( isRobotMoving={isRobotMoving} /> ) - } else if ( + } + // These flows often have custom error messaging, so this fallback modal is shown only in specific circumstances. + else if ( (isExiting && errorMessage != null) || - maintenanceRunStatus === RUN_STATUS_FAILED + maintenanceRunStatus === RUN_STATUS_FAILED || + (errorMessage != null && createdMaintenanceRunId == null) ) { onExit = handleClose modalContent = ( diff --git a/app/src/organisms/PipetteWizardFlows/index.tsx b/app/src/organisms/PipetteWizardFlows/index.tsx index 39022810b56..ed11df4352d 100644 --- a/app/src/organisms/PipetteWizardFlows/index.tsx +++ b/app/src/organisms/PipetteWizardFlows/index.tsx @@ -113,6 +113,7 @@ export const PipetteWizardFlows = ( const [createdMaintenanceRunId, setCreatedMaintenanceRunId] = useState< string | null >(null) + const [errorMessage, setShowErrorMessage] = useState(null) // we should start checking for run deletion only after the maintenance run is created // and the useCurrentRun poll has returned that created id const [ @@ -143,6 +144,9 @@ export const PipetteWizardFlows = ( onSuccess: response => { setCreatedMaintenanceRunId(response.data.id) }, + onError: error => { + setShowErrorMessage(error.message) + }, }, host ) @@ -169,7 +173,6 @@ export const PipetteWizardFlows = ( closeFlow, ]) - const [errorMessage, setShowErrorMessage] = useState(null) const [isExiting, setIsExiting] = useState(false) const proceed = (): void => { if (!isCommandMutationLoading) { @@ -281,9 +284,11 @@ export const PipetteWizardFlows = ( let onExit if (currentStep == null) return null let modalContent: JSX.Element =
UNASSIGNED STEP
+ // These flows often have custom error messaging, so this fallback modal is shown only in specific circumstances. if ( (isExiting && errorMessage != null) || - maintenanceRunData?.data.status === RUN_STATUS_FAILED + maintenanceRunData?.data.status === RUN_STATUS_FAILED || + (errorMessage != null && createdMaintenanceRunId == null) ) { modalContent = ( Date: Thu, 14 Nov 2024 12:08:11 -0500 Subject: [PATCH 009/220] fix(robot-server): update data_files_table with uploaded source (#16813) --- .../persistence/_migrations/v6_to_v7.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/robot-server/robot_server/persistence/_migrations/v6_to_v7.py b/robot-server/robot_server/persistence/_migrations/v6_to_v7.py index ce528a12ab7..f2c0f2ad93d 100644 --- a/robot-server/robot_server/persistence/_migrations/v6_to_v7.py +++ b/robot-server/robot_server/persistence/_migrations/v6_to_v7.py @@ -100,16 +100,8 @@ def _migrate_data_files_table_with_new_source_col( dest_transaction: sqlalchemy.engine.Connection, ) -> None: """Add a new 'source' column to data_files table.""" - select_data_files = sqlalchemy.select(schema_7.data_files_table).order_by( - sqlite_rowid - ) - insert_new_data = sqlalchemy.insert(schema_7.data_files_table) - for old_row in dest_transaction.execute(select_data_files).all(): - dest_transaction.execute( - insert_new_data, - id=old_row.id, - name=old_row.name, - file_hash=old_row.file_hash, - created_at=old_row.created_at, - source=DataFileSourceSQLEnum.UPLOADED, + dest_transaction.execute( + sqlalchemy.update(schema_7.data_files_table).values( + {"source": DataFileSourceSQLEnum.UPLOADED} ) + ) From 0ae04149e87b115bcc524a2ee77c93fcc710576a Mon Sep 17 00:00:00 2001 From: Brayan Almonte Date: Thu, 14 Nov 2024 12:15:36 -0500 Subject: [PATCH 010/220] fix(api): add supported wavelengths to runtime error when initializing the plate reader. (#16797) --- .../commands/absorbance_reader/initialize.py | 26 ++++++++++++++----- .../protocol_engine/errors/__init__.py | 2 ++ .../protocol_engine/errors/exceptions.py | 13 ++++++++++ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py index 4b28154ed17..458225ad1bb 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/initialize.py @@ -10,6 +10,7 @@ from ..command import AbstractCommandImpl, BaseCommand, BaseCommandCreate, SuccessData from ...errors.error_occurrence import ErrorOccurrence +from ...errors import InvalidWavelengthError if TYPE_CHECKING: from opentrons.protocol_engine.state.state import StateView @@ -69,30 +70,41 @@ async def execute(self, params: InitializeParams) -> SuccessData[InitializeResul unsupported_wavelengths = sample_wavelengths.difference( supported_wavelengths ) + sample_wl_str = ", ".join([str(w) + "nm" for w in sample_wavelengths]) + supported_wl_str = ", ".join([str(w) + "nm" for w in supported_wavelengths]) + unsupported_wl_str = ", ".join( + [str(w) + "nm" for w in unsupported_wavelengths] + ) if unsupported_wavelengths: - raise ValueError(f"Unsupported wavelengths: {unsupported_wavelengths}") + raise InvalidWavelengthError( + f"Unsupported wavelengths: {unsupported_wl_str}. " + f" Use one of {supported_wl_str} instead." + ) if params.measureMode == "single": if sample_wavelengths_len != 1: raise ValueError( - f"single requires one sample wavelength, provided {sample_wavelengths}" + f"Measure mode `single` requires one sample wavelength," + f" {sample_wl_str} provided instead." ) if ( reference_wavelength is not None and reference_wavelength not in supported_wavelengths ): - raise ValueError( - f"Reference wavelength {reference_wavelength} not supported {supported_wavelengths}" + raise InvalidWavelengthError( + f"Reference wavelength {reference_wavelength}nm is not supported." + f" Use one of {supported_wl_str} instead." ) if params.measureMode == "multi": if sample_wavelengths_len < 1 or sample_wavelengths_len > 6: raise ValueError( - f"multi requires 1-6 sample wavelengths, provided {sample_wavelengths}" + f"Measure mode `multi` requires 1-6 sample wavelengths," + f" {sample_wl_str} provided instead." ) if reference_wavelength is not None: - raise RuntimeError( - "Reference wavelength cannot be used with multi mode." + raise ValueError( + "Reference wavelength cannot be used with Measure mode `multi`." ) await abs_reader.set_sample_wavelength( diff --git a/api/src/opentrons/protocol_engine/errors/__init__.py b/api/src/opentrons/protocol_engine/errors/__init__.py index b25dfdb2d0e..0db3d7ebdf2 100644 --- a/api/src/opentrons/protocol_engine/errors/__init__.py +++ b/api/src/opentrons/protocol_engine/errors/__init__.py @@ -55,6 +55,7 @@ InvalidTargetTemperatureError, InvalidBlockVolumeError, InvalidHoldTimeError, + InvalidWavelengthError, CannotPerformModuleAction, PauseNotAllowedError, ResumeFromRecoveryNotAllowedError, @@ -137,6 +138,7 @@ "InvalidTargetSpeedError", "InvalidBlockVolumeError", "InvalidHoldTimeError", + "InvalidWavelengthError", "CannotPerformModuleAction", "ResumeFromRecoveryNotAllowedError", "PauseNotAllowedError", diff --git a/api/src/opentrons/protocol_engine/errors/exceptions.py b/api/src/opentrons/protocol_engine/errors/exceptions.py index 12f45f4936d..43efc7b05b0 100644 --- a/api/src/opentrons/protocol_engine/errors/exceptions.py +++ b/api/src/opentrons/protocol_engine/errors/exceptions.py @@ -773,6 +773,19 @@ def __init__( super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) +class InvalidWavelengthError(ProtocolEngineError): + """Raised when attempting to set an invalid absorbance wavelength.""" + + def __init__( + self, + message: Optional[str] = None, + details: Optional[Dict[str, Any]] = None, + wrapping: Optional[Sequence[EnumeratedError]] = None, + ) -> None: + """Build a InvalidWavelengthError.""" + super().__init__(ErrorCodes.GENERAL_ERROR, message, details, wrapping) + + class InvalidHoldTimeError(ProtocolEngineError): """An error raised when attempting to set an invalid temperature hold time.""" From 7cbee8ec434b7a1f9aab1864f57db666c507fe2c Mon Sep 17 00:00:00 2001 From: koji Date: Thu, 14 Nov 2024 13:07:52 -0500 Subject: [PATCH 011/220] fix(app, components) fix csv name wrapping issue (#16785) * fix(app, components) fix csv name wrapping issue --- .../ProtocolSetupParameters/ChooseCsvFile.tsx | 2 +- .../ProtocolSetupParameters.tsx | 1 - .../ProtocolSetup/ProtocolSetupStep/index.tsx | 21 ++++++++++++------- components/src/atoms/buttons/RadioButton.tsx | 6 ++++-- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ChooseCsvFile.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ChooseCsvFile.tsx index d8dcf237caa..bcaaca86182 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ChooseCsvFile.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ChooseCsvFile.tsx @@ -11,8 +11,8 @@ import { DIRECTION_ROW, Flex, LegacyStyledText, - SPACING, RadioButton, + SPACING, truncateString, TYPOGRAPHY, } from '@opentrons/components' diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ProtocolSetupParameters.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ProtocolSetupParameters.tsx index a80ea2b1f84..ec4df679049 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ProtocolSetupParameters.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupParameters/ProtocolSetupParameters.tsx @@ -321,7 +321,6 @@ export function ProtocolSetupParameters({ ) - // ToDo (kk:06/18/2024) ff will be removed when we freeze the code if (chooseCsvFileScreen != null) { children = ( - {detail} + {title === 'CSV File' && detail != null + ? truncateString(detail, CSV_FILE_MAX_LENGTH) + : detail} {subDetail != null && detail != null ?
: null} {subDetail} diff --git a/components/src/atoms/buttons/RadioButton.tsx b/components/src/atoms/buttons/RadioButton.tsx index e271f509a6c..ff991941fe4 100644 --- a/components/src/atoms/buttons/RadioButton.tsx +++ b/components/src/atoms/buttons/RadioButton.tsx @@ -14,6 +14,7 @@ import { SPACING, StyledText, } from '../..' + import type { IconName } from '../..' import type { StyleProps } from '../../primitives' @@ -28,7 +29,7 @@ interface RadioButtonProps extends StyleProps { radioButtonType?: 'large' | 'small' subButtonLabel?: string id?: string - maxLines?: number | null + maxLines?: number // used for mouseEnter and mouseLeave setNoHover?: () => void setHovered?: () => void @@ -51,7 +52,7 @@ export function RadioButton(props: RadioButtonProps): JSX.Element { : `RadioButtonId_${buttonValue}`, largeDesktopBorderRadius = false, iconName, - maxLines = null, + maxLines = 1, setHovered, setNoHover, } = props @@ -118,6 +119,7 @@ export function RadioButton(props: RadioButtonProps): JSX.Element { -webkit-line-clamp: ${maxLines ?? undefined}; -webkit-box-orient: ${maxLines != null ? 'vertical' : undefined}; word-wrap: break-word; + word-break: break-all; } ` From 59814e62614518dfe0125542bea98e5e8487c1b5 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Thu, 14 Nov 2024 13:32:55 -0500 Subject: [PATCH 012/220] fix(app): support special cased slot name copy (#16823) Closes RQA-3585 --- .../en/protocol_command_text.json | 1 + .../getLabwareDisplayLocation.test.tsx | 18 +++++++++++++++ .../utils/getLabwareDisplayLocation.ts | 23 ++++++++++++++++++- shared-data/js/constants.ts | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/app/src/assets/localization/en/protocol_command_text.json b/app/src/assets/localization/en/protocol_command_text.json index a472c55432c..e8dee50f26c 100644 --- a/app/src/assets/localization/en/protocol_command_text.json +++ b/app/src/assets/localization/en/protocol_command_text.json @@ -78,6 +78,7 @@ "tc_starting_extended_profile_cycle": "{{repetitions}} repetitions of the following steps:", "tc_starting_profile": "Running thermocycler profile with {{stepCount}} steps:", "touch_tip": "Touching tip", + "trash_bin": "Trash Bin", "trash_bin_in_slot": "Trash Bin in {{slot_name}}", "turning_rail_lights_off": "Turning rail lights off", "turning_rail_lights_on": "Turning rail lights on", diff --git a/app/src/local-resources/labware/utils/__tests__/getLabwareDisplayLocation.test.tsx b/app/src/local-resources/labware/utils/__tests__/getLabwareDisplayLocation.test.tsx index ca4b095f00e..beed2d012c0 100644 --- a/app/src/local-resources/labware/utils/__tests__/getLabwareDisplayLocation.test.tsx +++ b/app/src/local-resources/labware/utils/__tests__/getLabwareDisplayLocation.test.tsx @@ -137,6 +137,24 @@ describe('getLabwareDisplayLocation with translations', () => { screen.getByText('Slot C1') }) + it('should special case the slotName if it contains "waste chute"', () => { + render({ + location: { slotName: 'gripperWasteChute' }, + params: { ...defaultParams, detailLevel: 'slot-only' }, + }) + + screen.getByText('Waste Chute') + }) + + it('should special case the slotName if it contains "trash bin"', () => { + render({ + location: { slotName: 'trashBin' }, + params: { ...defaultParams, detailLevel: 'slot-only' }, + }) + + screen.getByText('Trash Bin') + }) + it('should handle an adapter on module location when the detail level is full', () => { const mockLoadedLabwares = [ { diff --git a/app/src/local-resources/labware/utils/getLabwareDisplayLocation.ts b/app/src/local-resources/labware/utils/getLabwareDisplayLocation.ts index 2e02199e667..63804cba764 100644 --- a/app/src/local-resources/labware/utils/getLabwareDisplayLocation.ts +++ b/app/src/local-resources/labware/utils/getLabwareDisplayLocation.ts @@ -4,6 +4,8 @@ import { getOccludedSlotCountForModule, THERMOCYCLER_MODULE_V1, THERMOCYCLER_MODULE_V2, + TRASH_BIN_FIXTURE, + WASTE_CHUTE_ADDRESSABLE_AREAS, } from '@opentrons/shared-data' import { getLabwareLocation } from './getLabwareLocation' @@ -12,6 +14,7 @@ import type { LocationSlotOnlyParams, LocationFullParams, } from './getLabwareLocation' +import type { AddressableAreaName } from '@opentrons/shared-data' export interface DisplayLocationSlotOnlyParams extends LocationSlotOnlyParams { t: TFunction @@ -47,7 +50,8 @@ export function getLabwareDisplayLocation( } // Simple slot location else if (moduleModel == null && adapterName == null) { - return isOnDevice ? slotName : t('slot', { slot_name: slotName }) + const validatedSlotCopy = handleSpecialSlotNames(slotName, t) + return isOnDevice ? validatedSlotCopy.odd : validatedSlotCopy.desktop } // Module location without adapter else if (moduleModel != null && adapterName == null) { @@ -91,3 +95,20 @@ export function getLabwareDisplayLocation( return '' } } + +// Sometimes we don't want to show the actual slotName, so we special case the text here. +function handleSpecialSlotNames( + slotName: string, + t: TFunction +): { odd: string; desktop: string } { + if (WASTE_CHUTE_ADDRESSABLE_AREAS.includes(slotName as AddressableAreaName)) { + return { odd: t('waste_chute'), desktop: t('waste_chute') } + } else if (slotName === TRASH_BIN_FIXTURE) { + return { odd: t('trash_bin'), desktop: t('trash_bin') } + } else { + return { + odd: slotName, + desktop: t('slot', { slot_name: slotName }), + } + } +} diff --git a/shared-data/js/constants.ts b/shared-data/js/constants.ts index 8ae6d2d6ff8..de68e5d996e 100644 --- a/shared-data/js/constants.ts +++ b/shared-data/js/constants.ts @@ -513,6 +513,7 @@ export const SINGLE_RIGHT_SLOT_FIXTURE: 'singleRightSlot' = 'singleRightSlot' export const STAGING_AREA_RIGHT_SLOT_FIXTURE: 'stagingAreaRightSlot' = 'stagingAreaRightSlot' +export const TRASH_BIN_FIXTURE: 'trashBin' = 'trashBin' export const TRASH_BIN_ADAPTER_FIXTURE: 'trashBinAdapter' = 'trashBinAdapter' export const WASTE_CHUTE_RIGHT_ADAPTER_COVERED_FIXTURE: 'wasteChuteRightAdapterCovered' = From 9bf09d81c997a9df1867e498d1db51dae5e496aa Mon Sep 17 00:00:00 2001 From: koji Date: Thu, 14 Nov 2024 15:46:34 -0500 Subject: [PATCH 013/220] fix(components) fix long unit wrapping issue (#16836) * fix(components) fix long unit wrapping issue --- components/src/atoms/InputField/index.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/components/src/atoms/InputField/index.tsx b/components/src/atoms/InputField/index.tsx index 14a4f520377..713930bb233 100644 --- a/components/src/atoms/InputField/index.tsx +++ b/components/src/atoms/InputField/index.tsx @@ -2,7 +2,12 @@ import * as React from 'react' import styled, { css } from 'styled-components' import { Flex } from '../../primitives' -import { ALIGN_CENTER, DIRECTION_COLUMN, TEXT_ALIGN_RIGHT } from '../../styles' +import { + ALIGN_CENTER, + DIRECTION_COLUMN, + NO_WRAP, + TEXT_ALIGN_RIGHT, +} from '../../styles' import { BORDERS, COLORS } from '../../helix-design-system' import { Icon } from '../../icons' import { RESPONSIVENESS, SPACING, TYPOGRAPHY } from '../../ui-style-constants' @@ -233,6 +238,7 @@ export const InputField = React.forwardRef( font-weight: ${TYPOGRAPHY.fontWeightRegular}; line-height: ${TYPOGRAPHY.lineHeight28}; justify-content: ${textAlign}; + white-space: ${NO_WRAP}; } ` From 972c5924034ade27037973a343447afe4479e693 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Thu, 14 Nov 2024 15:47:08 -0500 Subject: [PATCH 014/220] fix(app): add affordances for tip detection failures (#16828) Closes RQA-3589 At the end of a protocol run, we execute tip detection logic to determine whether or not we should pop drop tip CTAs. There are a few network requests necessary to make this work, and we are not error handling if any of these requests fail. This PR adds a general fallback: if almost any network request fails, let's just assume both pipettes have tips attached and pop the CTAs (assuming the pipettes have ok firmware status). It's probably better to be more conservative here, and in practice, this exact scenario should occur rarely. Note that the very first request we make is to get the currently attached instruments. If this request fails, we can't do drop tip wizard, so we shouldn't show CTAs. The only workaround here would be going to design and coming up with some sort of "can't detect tips" copy. At the very least, the user can always go to drop tip wizard manually and handle tips there. --- .../getPipettesWithTipAttached.test.ts | 59 +++++++++++++++++-- .../getPipettesWithTipAttached.ts | 36 +++++++---- 2 files changed, 80 insertions(+), 15 deletions(-) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts index eb969f46820..bdaeff2dee0 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts @@ -20,11 +20,21 @@ const DROP_TIP_IN_PLACE = 'dropTipInPlace' const LOAD_PIPETTE = 'loadPipette' const FIXIT_INTENT = 'fixit' +const LEFT_PIPETTE = { + mount: LEFT, + state: { tipDetected: true }, + instrumentType: 'pipette', + ok: true, +} +const RIGHT_PIPETTE = { + mount: RIGHT, + state: { tipDetected: true }, + instrumentType: 'pipette', + ok: true, +} + const mockAttachedInstruments = { - data: [ - { mount: LEFT, state: { tipDetected: true } }, - { mount: RIGHT, state: { tipDetected: true } }, - ], + data: [LEFT_PIPETTE, RIGHT_PIPETTE], meta: { cursor: 0, totalLength: 2 }, } @@ -185,4 +195,45 @@ describe('getPipettesWithTipAttached', () => { const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) expect(result).toEqual([mockAttachedInstruments.data[0]]) }) + + it('returns all valid attached pipettes when an error occurs', async () => { + vi.mocked(getCommands).mockRejectedValueOnce( + new Error('Example network error') + ) + + const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) + + expect(result).toEqual([LEFT_PIPETTE, RIGHT_PIPETTE]) + }) + + it('filters out not ok pipettes', async () => { + vi.mocked(getCommands).mockRejectedValueOnce(new Error('Network error')) + + const mockInvalidPipettes = { + data: [ + LEFT_PIPETTE, + { + ...RIGHT_PIPETTE, + ok: false, + }, + ], + meta: { cursor: 0, totalLength: 2 }, + } + + const params = { + ...DEFAULT_PARAMS, + attachedInstruments: mockInvalidPipettes as any, + } + + const result = await getPipettesWithTipAttached(params) + + expect(result).toEqual([ + { + mount: LEFT, + state: { tipDetected: true }, + instrumentType: 'pipette', + ok: true, + }, + ]) + }) }) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts index 42b006ca0b2..02cf7343497 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts @@ -31,15 +31,17 @@ export function getPipettesWithTipAttached({ return Promise.resolve([]) } - return getCommandsExecutedDuringRun( - host as HostConfig, - runId - ).then(executedCmdData => - checkPipettesForAttachedTips( - executedCmdData.data, - runRecord.data.pipettes, - attachedInstruments.data as PipetteData[] - ) + return ( + getCommandsExecutedDuringRun(host as HostConfig, runId) + .then(executedCmdData => + checkPipettesForAttachedTips( + executedCmdData.data, + runRecord.data.pipettes, + attachedInstruments.data as PipetteData[] + ) + ) + // If any network error occurs, return all attached pipettes as having tips attached for safety reasons. + .catch(() => Promise.resolve(getPipettesDataFrom(attachedInstruments))) ) } @@ -119,8 +121,10 @@ function checkPipettesForAttachedTips( } // Convert the array of mounts with attached tips to PipetteData with attached tips. - const pipettesWithTipAttached = attachedPipettes.filter(attachedPipette => - mountsWithTipAttached.includes(attachedPipette.mount) + const pipettesWithTipAttached = attachedPipettes.filter( + attachedPipette => + mountsWithTipAttached.includes(attachedPipette.mount) && + attachedPipette.ok ) // Preferentially assign the left mount as the first element. @@ -136,3 +140,13 @@ function checkPipettesForAttachedTips( return pipettesWithTipAttached } + +function getPipettesDataFrom( + attachedInstruments: Instruments | null +): PipetteData[] { + return attachedInstruments != null + ? (attachedInstruments.data.filter( + instrument => instrument.instrumentType === 'pipette' && instrument.ok + ) as PipetteData[]) + : [] +} From df802636a513f3e733058b4054aeb038ffba1a9c Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 15 Nov 2024 11:33:34 -0500 Subject: [PATCH 015/220] fix(app, robot-server): support `retryLocation` when retrying `dropTipInPlace` during Error Recovery (#16839) Closes RQA-3591 When dropping a tip in a trash bin or waste chute, the pipette moves downwards before doing the drop tip. During Error Recovery, when we retry the failed command with a fixit intent, we need to perform a moveToCoordinates first before dispatching the dropTipInPlace or the robot drops the tip(s) from too high a location. To know how far to move, we need the failedCommand to contain retryLocation metadata. We have a pattern for this already with overpressure in place commands, so we extend the same functionality here. Co-authored-by: Max Marrone --- .../commands/aspirate_in_place.py | 6 +-- .../protocol_engine/commands/command.py | 4 +- .../commands/dispense_in_place.py | 2 +- .../protocol_engine/commands/drop_tip.py | 3 +- .../commands/drop_tip_in_place.py | 9 ++++- .../commands/pipetting_common.py | 9 ++++- .../errors/error_occurrence.py | 11 ++++-- .../protocol_engine/commands/test_drop_tip.py | 1 + .../commands/test_drop_tip_in_place.py | 23 ++++++++++-- .../__tests__/useRecoveryCommands.test.ts | 37 ++++++++++++++----- .../hooks/useRecoveryCommands.ts | 14 ++++++- 11 files changed, 93 insertions(+), 26 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/aspirate_in_place.py b/api/src/opentrons/protocol_engine/commands/aspirate_in_place.py index 4c7ab2cc01c..3bca160e50b 100644 --- a/api/src/opentrons/protocol_engine/commands/aspirate_in_place.py +++ b/api/src/opentrons/protocol_engine/commands/aspirate_in_place.py @@ -83,10 +83,11 @@ async def execute(self, params: AspirateInPlaceParams) -> _ExecuteReturn: TipNotAttachedError: if no tip is attached to the pipette. PipetteNotReadyToAspirateError: pipette plunger is not ready. """ + state_update = StateUpdate() + ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate( pipette_id=params.pipetteId, ) - if not ready_to_aspirate: raise PipetteNotReadyToAspirateError( "Pipette cannot aspirate in place because of a previous blow out." @@ -94,11 +95,10 @@ async def execute(self, params: AspirateInPlaceParams) -> _ExecuteReturn: " so the plunger can be reset in a known safe position." ) - state_update = StateUpdate() current_location = self._state_view.pipettes.get_current_location() + current_position = await self._gantry_mover.get_position(params.pipetteId) try: - current_position = await self._gantry_mover.get_position(params.pipetteId) volume = await self._pipetting.aspirate_in_place( pipette_id=params.pipetteId, volume=params.volume, diff --git a/api/src/opentrons/protocol_engine/commands/command.py b/api/src/opentrons/protocol_engine/commands/command.py index 1fefcbf7315..bea6bed084d 100644 --- a/api/src/opentrons/protocol_engine/commands/command.py +++ b/api/src/opentrons/protocol_engine/commands/command.py @@ -185,7 +185,9 @@ class BaseCommand( ) error: Union[ _ErrorT, - # ErrorOccurrence here is for undefined errors not captured by _ErrorT. + # ErrorOccurrence here is a catch-all for undefined errors not captured by + # _ErrorT, or defined errors that don't parse into _ErrorT because, for example, + # they are from an older software version that was missing some fields. ErrorOccurrence, None, ] = Field( diff --git a/api/src/opentrons/protocol_engine/commands/dispense_in_place.py b/api/src/opentrons/protocol_engine/commands/dispense_in_place.py index 7df9471b038..7935f7f72e9 100644 --- a/api/src/opentrons/protocol_engine/commands/dispense_in_place.py +++ b/api/src/opentrons/protocol_engine/commands/dispense_in_place.py @@ -76,8 +76,8 @@ async def execute(self, params: DispenseInPlaceParams) -> _ExecuteReturn: """Dispense without moving the pipette.""" state_update = StateUpdate() current_location = self._state_view.pipettes.get_current_location() + current_position = await self._gantry_mover.get_position(params.pipetteId) try: - current_position = await self._gantry_mover.get_position(params.pipetteId) volume = await self._pipetting.dispense_in_place( pipette_id=params.pipetteId, volume=params.volume, diff --git a/api/src/opentrons/protocol_engine/commands/drop_tip.py b/api/src/opentrons/protocol_engine/commands/drop_tip.py index 81a34a5ad39..36b7a7c22c2 100644 --- a/api/src/opentrons/protocol_engine/commands/drop_tip.py +++ b/api/src/opentrons/protocol_engine/commands/drop_tip.py @@ -145,6 +145,7 @@ async def execute(self, params: DropTipParams) -> _ExecuteReturn: error=exception, ) ], + errorInfo={"retryLocation": position}, ) state_update_if_false_positive = update_types.StateUpdate() state_update_if_false_positive.update_pipette_tip_state( @@ -165,7 +166,7 @@ async def execute(self, params: DropTipParams) -> _ExecuteReturn: ) -class DropTip(BaseCommand[DropTipParams, DropTipResult, ErrorOccurrence]): +class DropTip(BaseCommand[DropTipParams, DropTipResult, TipPhysicallyAttachedError]): """Drop tip command model.""" commandType: DropTipCommandType = "dropTip" diff --git a/api/src/opentrons/protocol_engine/commands/drop_tip_in_place.py b/api/src/opentrons/protocol_engine/commands/drop_tip_in_place.py index aa40384ac6a..b0390632d6a 100644 --- a/api/src/opentrons/protocol_engine/commands/drop_tip_in_place.py +++ b/api/src/opentrons/protocol_engine/commands/drop_tip_in_place.py @@ -18,7 +18,7 @@ from ..state import update_types if TYPE_CHECKING: - from ..execution import TipHandler + from ..execution import TipHandler, GantryMover DropTipInPlaceCommandType = Literal["dropTipInPlace"] @@ -57,15 +57,19 @@ def __init__( self, tip_handler: TipHandler, model_utils: ModelUtils, + gantry_mover: GantryMover, **kwargs: object, ) -> None: self._tip_handler = tip_handler self._model_utils = model_utils + self._gantry_mover = gantry_mover async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn: """Drop a tip using the requested pipette.""" state_update = update_types.StateUpdate() + retry_location = await self._gantry_mover.get_position(params.pipetteId) + try: await self._tip_handler.drop_tip( pipette_id=params.pipetteId, home_after=params.homeAfter @@ -85,6 +89,7 @@ async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn: error=exception, ) ], + errorInfo={"retryLocation": retry_location}, ) return DefinedErrorData( public=error, @@ -99,7 +104,7 @@ async def execute(self, params: DropTipInPlaceParams) -> _ExecuteReturn: class DropTipInPlace( - BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, ErrorOccurrence] + BaseCommand[DropTipInPlaceParams, DropTipInPlaceResult, TipPhysicallyAttachedError] ): """Drop tip in place command model.""" diff --git a/api/src/opentrons/protocol_engine/commands/pipetting_common.py b/api/src/opentrons/protocol_engine/commands/pipetting_common.py index 2dafb4c81b2..ef53b585e87 100644 --- a/api/src/opentrons/protocol_engine/commands/pipetting_common.py +++ b/api/src/opentrons/protocol_engine/commands/pipetting_common.py @@ -148,7 +148,12 @@ class DestinationPositionResult(BaseModel): class ErrorLocationInfo(TypedDict): - """Holds a retry location for in-place error recovery.""" + """Holds a retry location for in-place error recovery. + + This is appropriate to pass to a `moveToCoordinates` command, + assuming the pipette has not been configured with a different nozzle layout + in the meantime. + """ retryLocation: Tuple[float, float, float] @@ -201,3 +206,5 @@ class TipPhysicallyAttachedError(ErrorOccurrence): errorCode: str = ErrorCodes.TIP_DROP_FAILED.value.code detail: str = ErrorCodes.TIP_DROP_FAILED.value.detail + + errorInfo: ErrorLocationInfo diff --git a/api/src/opentrons/protocol_engine/errors/error_occurrence.py b/api/src/opentrons/protocol_engine/errors/error_occurrence.py index 02bcfb38b62..4141befe9b8 100644 --- a/api/src/opentrons/protocol_engine/errors/error_occurrence.py +++ b/api/src/opentrons/protocol_engine/errors/error_occurrence.py @@ -12,8 +12,6 @@ log = getLogger(__name__) -# TODO(mc, 2021-11-12): flesh this model out with structured error data -# for each error type so client may produce better error messages class ErrorOccurrence(BaseModel): """An occurrence of a specific error during protocol execution.""" @@ -44,8 +42,15 @@ def from_failed( id: str = Field(..., description="Unique identifier of this error occurrence.") createdAt: datetime = Field(..., description="When the error occurred.") + # Our Python should probably always set this to False--if we want it to be True, + # we should probably be using a more specific subclass of ErrorOccurrence anyway. + # However, we can't make this Literal[False], because we want this class to be able + # to act as a catch-all for parsing defined errors that might be missing some + # `errorInfo` fields because they were serialized by older software. isDefined: bool = Field( - default=False, # default=False for database backwards compatibility. + # default=False for database backwards compatibility, so we can parse objects + # serialized before isDefined existed. + default=False, description=dedent( """\ Whether this error is *defined.* diff --git a/api/tests/opentrons/protocol_engine/commands/test_drop_tip.py b/api/tests/opentrons/protocol_engine/commands/test_drop_tip.py index 1d113c999c3..64368de1ff2 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_drop_tip.py +++ b/api/tests/opentrons/protocol_engine/commands/test_drop_tip.py @@ -281,6 +281,7 @@ async def test_tip_attached_error( id="error-id", createdAt=datetime(year=1, month=2, day=3), wrappedErrors=[matchers.Anything()], + errorInfo={"retryLocation": (111, 222, 333)}, ), state_update=update_types.StateUpdate( pipette_location=update_types.PipetteLocationUpdate( diff --git a/api/tests/opentrons/protocol_engine/commands/test_drop_tip_in_place.py b/api/tests/opentrons/protocol_engine/commands/test_drop_tip_in_place.py index 292aa532879..807d702e2bc 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_drop_tip_in_place.py +++ b/api/tests/opentrons/protocol_engine/commands/test_drop_tip_in_place.py @@ -14,12 +14,13 @@ DropTipInPlaceImplementation, ) from opentrons.protocol_engine.errors.exceptions import TipAttachedError -from opentrons.protocol_engine.execution import TipHandler +from opentrons.protocol_engine.execution import TipHandler, GantryMover from opentrons.protocol_engine.resources.model_utils import ModelUtils from opentrons.protocol_engine.state.update_types import ( PipetteTipStateUpdate, StateUpdate, ) +from opentrons.types import Point @pytest.fixture @@ -34,14 +35,23 @@ def mock_model_utils(decoy: Decoy) -> ModelUtils: return decoy.mock(cls=ModelUtils) +@pytest.fixture +def mock_gantry_mover(decoy: Decoy) -> GantryMover: + """Get a mock GantryMover.""" + return decoy.mock(cls=GantryMover) + + async def test_success( decoy: Decoy, mock_tip_handler: TipHandler, mock_model_utils: ModelUtils, + mock_gantry_mover: GantryMover, ) -> None: """A DropTip command should have an execution implementation.""" subject = DropTipInPlaceImplementation( - tip_handler=mock_tip_handler, model_utils=mock_model_utils + tip_handler=mock_tip_handler, + model_utils=mock_model_utils, + gantry_mover=mock_gantry_mover, ) params = DropTipInPlaceParams(pipetteId="abc", homeAfter=False) @@ -64,14 +74,20 @@ async def test_tip_attached_error( decoy: Decoy, mock_tip_handler: TipHandler, mock_model_utils: ModelUtils, + mock_gantry_mover: GantryMover, ) -> None: """A DropTip command should have an execution implementation.""" subject = DropTipInPlaceImplementation( - tip_handler=mock_tip_handler, model_utils=mock_model_utils + tip_handler=mock_tip_handler, + model_utils=mock_model_utils, + gantry_mover=mock_gantry_mover, ) params = DropTipInPlaceParams(pipetteId="abc", homeAfter=False) + decoy.when(await mock_gantry_mover.get_position(pipette_id="abc")).then_return( + Point(9, 8, 7) + ) decoy.when( await mock_tip_handler.drop_tip(pipette_id="abc", home_after=False) ).then_raise(TipAttachedError("Egads!")) @@ -88,6 +104,7 @@ async def test_tip_attached_error( id="error-id", createdAt=datetime(year=1, month=2, day=3), wrappedErrors=[matchers.Anything()], + errorInfo={"retryLocation": (9, 8, 7)}, ), state_update=StateUpdate(), state_update_if_false_positive=StateUpdate( diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts index ca2e086d9fd..21307b8e4e8 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts @@ -139,24 +139,41 @@ describe('useRecoveryCommands', () => { false ) }) - ;([ + + const IN_PLACE_COMMANDS = [ 'aspirateInPlace', 'dispenseInPlace', 'blowOutInPlace', 'dropTipInPlace', 'prepareToAspirate', - ] as const).forEach(inPlaceCommandType => { - it(`Should move to retryLocation if failed command is ${inPlaceCommandType} and error is appropriate when retrying`, async () => { + ] as const + + const ERROR_SCENARIOS = [ + { type: 'overpressure', code: '3006' }, + { type: 'tipPhysicallyAttached', code: '3007' }, + ] as const + + it.each( + ERROR_SCENARIOS.flatMap(error => + IN_PLACE_COMMANDS.map(commandType => ({ + errorType: error.type, + errorCode: error.code, + commandType, + })) + ) + )( + 'Should move to retryLocation if failed command is $commandType and error is $errorType when retrying', + async ({ errorType, errorCode, commandType }) => { const { result } = renderHook(() => { const failedCommand = { ...mockFailedCommand, - commandType: inPlaceCommandType, + commandType, params: { pipetteId: 'mock-pipette-id', }, error: { - errorType: 'overpressure', - errorCode: '3006', + errorType, + errorCode, isDefined: true, errorInfo: { retryLocation: [1, 2, 3], @@ -180,9 +197,11 @@ describe('useRecoveryCommands', () => { selectedRecoveryOption: RECOVERY_MAP.RETRY_NEW_TIPS.ROUTE, }) }) + await act(async () => { await result.current.retryFailedCommand() }) + expect(mockChainRunCommands).toHaveBeenLastCalledWith( [ { @@ -194,14 +213,14 @@ describe('useRecoveryCommands', () => { }, }, { - commandType: inPlaceCommandType, + commandType, params: { pipetteId: 'mock-pipette-id' }, }, ], false ) - }) - }) + } + ) it('should call resumeRun with runId and show success toast on success', async () => { const { result } = renderHook(() => useRecoveryCommands(props)) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts index 4ce5194aca4..65bd77eed0b 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts @@ -9,7 +9,7 @@ import { } from '@opentrons/react-api-client' import { useChainRunCommands } from '/app/resources/runs' -import { ERROR_KINDS, RECOVERY_MAP } from '../constants' +import { DEFINED_ERROR_TYPES, ERROR_KINDS, RECOVERY_MAP } from '../constants' import { getErrorKind } from '/app/organisms/ErrorRecoveryFlows/utils' import type { @@ -127,6 +127,7 @@ export function useRecoveryCommands({ | DispenseInPlaceRunTimeCommand | DropTipInPlaceRunTimeCommand | PrepareToAspirateRunTimeCommand + const IN_PLACE_COMMAND_TYPES = [ 'aspirateInPlace', 'dispenseInPlace', @@ -134,16 +135,25 @@ export function useRecoveryCommands({ 'dropTipInPlace', 'prepareToAspirate', ] as const + + const RETRY_ERROR_TYPES = [ + DEFINED_ERROR_TYPES.OVERPRESSURE, + DEFINED_ERROR_TYPES.TIP_PHYSICALLY_ATTACHED, + ] as const + const isInPlace = ( failedCommand: FailedCommand ): failedCommand is InPlaceCommand => IN_PLACE_COMMAND_TYPES.includes( (failedCommand as InPlaceCommand).commandType ) + return unvalidatedFailedCommand != null ? isInPlace(unvalidatedFailedCommand) ? unvalidatedFailedCommand.error?.isDefined && - unvalidatedFailedCommand.error?.errorType === 'overpressure' && + RETRY_ERROR_TYPES.includes( + unvalidatedFailedCommand.error?.errorType + ) && // Paranoia: this value comes from the wire and may be unevenly implemented typeof unvalidatedFailedCommand.error?.errorInfo?.retryLocation?.at( 0 From d49f9908c8e65b6e2088bd7eebc94e4ff9f00338 Mon Sep 17 00:00:00 2001 From: Brayan Almonte Date: Fri, 15 Nov 2024 13:25:27 -0500 Subject: [PATCH 016/220] fix(api): update the plate reader parsing of the serial + version to account for the new format. (#16824) --- .../drivers/absorbance_reader/async_byonoy.py | 9 +++--- .../drivers/absorbance_reader/test_driver.py | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py b/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py index 0460a016229..6f405c9af32 100644 --- a/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py +++ b/api/src/opentrons/drivers/absorbance_reader/async_byonoy.py @@ -23,7 +23,8 @@ SN_PARSER = re.compile(r'ATTRS{serial}=="(?P.+?)"') -VERSION_PARSER = re.compile(r"Absorbance (?PV\d+\.\d+\.\d+)") +# match semver V0.0.0 (old format) or one integer (latest format) +VERSION_PARSER = re.compile(r"(?P(V\d+\.\d+\.\d+|^\d+$))") SERIAL_PARSER = re.compile(r"(?P(OPT|BYO)[A-Z]{3}[0-9]+)") @@ -156,10 +157,10 @@ async def get_device_information(self) -> Dict[str, str]: func=partial(self._interface.get_device_information, handle), ) self._raise_if_error(err.name, f"Error getting device information: {err}") - serial_match = SERIAL_PARSER.fullmatch(device_info.sn) - version_match = VERSION_PARSER.match(device_info.version) + serial_match = SERIAL_PARSER.match(device_info.sn) + version_match = VERSION_PARSER.search(device_info.version) serial = serial_match["serial"].strip() if serial_match else "OPTMAA00000" - version = version_match["version"].lower() if version_match else "v0.0.0" + version = version_match["version"].lower() if version_match else "v0" info = { "serial": serial, "version": version, diff --git a/api/tests/opentrons/drivers/absorbance_reader/test_driver.py b/api/tests/opentrons/drivers/absorbance_reader/test_driver.py index 58552695f44..b4db8d604b2 100644 --- a/api/tests/opentrons/drivers/absorbance_reader/test_driver.py +++ b/api/tests/opentrons/drivers/absorbance_reader/test_driver.py @@ -124,6 +124,36 @@ async def test_driver_get_device_info( mock_interface.get_device_information.assert_called_once() mock_interface.reset_mock() + # Test Device info with updated version format + DEVICE_INFO.sn = "OPTMAA00034" + DEVICE_INFO.version = "8" + + mock_interface.get_device_information.return_value = ( + MockErrorCode.NO_ERROR, + DEVICE_INFO, + ) + + info = await connected_driver.get_device_info() + + assert info == {"serial": "OPTMAA00034", "model": "ABS96", "version": "8"} + mock_interface.get_device_information.assert_called_once() + mock_interface.reset_mock() + + # Test Device info with invalid version format + DEVICE_INFO.sn = "OPTMAA00034" + DEVICE_INFO.version = "asd" + + mock_interface.get_device_information.return_value = ( + MockErrorCode.NO_ERROR, + DEVICE_INFO, + ) + + info = await connected_driver.get_device_info() + + assert info == {"serial": "OPTMAA00034", "model": "ABS96", "version": "v0"} + mock_interface.get_device_information.assert_called_once() + mock_interface.reset_mock() + @pytest.mark.parametrize( "parts_aligned, module_status", From 62b1e9ddf66bdf078c2968c54bbf2355c458a777 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Fri, 15 Nov 2024 13:53:22 -0500 Subject: [PATCH 017/220] fix(shared-data): deck riser and auto sealing lid labware definition updates (#16852) Covers PLAT-602 Update new maximum height dimension of the riser and adjust stacking offset of auto sealing lid --- .../labware/definitions/2/opentrons_flex_deck_riser/1.json | 2 +- .../definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shared-data/labware/definitions/2/opentrons_flex_deck_riser/1.json b/shared-data/labware/definitions/2/opentrons_flex_deck_riser/1.json index 59f0548ca32..94533e059b2 100644 --- a/shared-data/labware/definitions/2/opentrons_flex_deck_riser/1.json +++ b/shared-data/labware/definitions/2/opentrons_flex_deck_riser/1.json @@ -13,7 +13,7 @@ "dimensions": { "xDimension": 140, "yDimension": 98, - "zDimension": 21 + "zDimension": 55 }, "wells": {}, "groups": [ diff --git a/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json b/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json index f872649a027..b08bb84409f 100644 --- a/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +++ b/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json @@ -69,7 +69,7 @@ "opentrons_flex_deck_riser": { "x": 0, "y": 0, - "z": 0 + "z": 34 } }, "gripForce": 15, From c90aaea51c22d19346f69de87fb54222cdcba40e Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Fri, 15 Nov 2024 14:47:08 -0500 Subject: [PATCH 018/220] fix(api): add stopped state so a stop request doesn't mean the gripper needs to re-home (#16853) # Overview This fixes an error that happens during error recovery where the gripper needs to re-home because the error flow sends a stop request. This fixes that by adding a new state called stop, and if the firmware responds with STOPPED instead of UNHOMED then we know we can just continue on without re-homing. The gripper will still go into a UNHOMED state during the following: Labware droped Collision Estop ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- api/src/opentrons/hardware_control/backends/ot3utils.py | 1 + api/src/opentrons/hardware_control/types.py | 2 ++ hardware/opentrons_hardware/firmware_bindings/constants.py | 1 + 3 files changed, 4 insertions(+) diff --git a/api/src/opentrons/hardware_control/backends/ot3utils.py b/api/src/opentrons/hardware_control/backends/ot3utils.py index 6d62ffc4581..167f16f5cb8 100644 --- a/api/src/opentrons/hardware_control/backends/ot3utils.py +++ b/api/src/opentrons/hardware_control/backends/ot3utils.py @@ -652,6 +652,7 @@ def update( FirmwareGripperjawState.force_controlling_home: GripperJawState.HOMED_READY, FirmwareGripperjawState.force_controlling: GripperJawState.GRIPPING, FirmwareGripperjawState.position_controlling: GripperJawState.HOLDING, + FirmwareGripperjawState.stopped: GripperJawState.STOPPED, } diff --git a/api/src/opentrons/hardware_control/types.py b/api/src/opentrons/hardware_control/types.py index 62265afffcc..bc32431d2a5 100644 --- a/api/src/opentrons/hardware_control/types.py +++ b/api/src/opentrons/hardware_control/types.py @@ -625,6 +625,8 @@ class GripperJawState(enum.Enum): #: the gripper is actively force-control gripping something HOLDING = enum.auto() #: the gripper is in position-control mode + STOPPED = enum.auto() + #: the gripper has been homed before but is stopped now class InstrumentProbeType(enum.Enum): diff --git a/hardware/opentrons_hardware/firmware_bindings/constants.py b/hardware/opentrons_hardware/firmware_bindings/constants.py index 923d8eb0725..91a3ab9800e 100644 --- a/hardware/opentrons_hardware/firmware_bindings/constants.py +++ b/hardware/opentrons_hardware/firmware_bindings/constants.py @@ -461,3 +461,4 @@ class GripperJawState(int, Enum): force_controlling_home = 0x1 force_controlling = 0x2 position_controlling = 0x3 + stopped = 0x4 From 6d5b3a23220419317d68f01b15405371ce8953cb Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 15 Nov 2024 16:19:48 -0500 Subject: [PATCH 019/220] fix(app): fix post run tip detection after error recovery (#16860) Closes RQA-3589 It's insufficient to check if a run entered error recovery as the sole condition for whether or not to run the post-run drop tip wizard, because it's possible for a run to proceed through error recovery then encounter a terminal error. In these spots, we must show drop tip wizard. To fix, determine whether the run just entered error recovery (or not). If it didn't, do the tip detection logic. --- .../local-resources/commands/utils/index.ts | 1 + .../lastRunCommandPromptedErrorRecovery.ts | 13 +++++++++++ .../hooks/useRunHeaderDropTip.ts | 23 ++++++++++++++++--- .../getPipettesWithTipAttached.ts | 7 +++++- app/src/pages/ODD/RunSummary/index.tsx | 16 +++++++++++-- 5 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts diff --git a/app/src/local-resources/commands/utils/index.ts b/app/src/local-resources/commands/utils/index.ts index 7aa84d14de5..cc4e9c2579a 100644 --- a/app/src/local-resources/commands/utils/index.ts +++ b/app/src/local-resources/commands/utils/index.ts @@ -1 +1,2 @@ export * from './getCommandTextData' +export * from './lastRunCommandPromptedErrorRecovery' diff --git a/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts b/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts new file mode 100644 index 00000000000..dd07756ef43 --- /dev/null +++ b/app/src/local-resources/commands/utils/lastRunCommandPromptedErrorRecovery.ts @@ -0,0 +1,13 @@ +import type { RunCommandSummary } from '@opentrons/api-client' + +// Whether the last run protocol command prompted Error Recovery. +export function lastRunCommandPromptedErrorRecovery( + summary: RunCommandSummary[] +): boolean { + const lastProtocolCommand = summary.findLast( + command => command.intent !== 'fixit' && command.error != null + ) + + // All recoverable protocol commands have defined errors. + return lastProtocolCommand?.error?.isDefined ?? false +} diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts index e41b7edc8ec..48887d4ac17 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts @@ -9,8 +9,13 @@ import { useTipAttachmentStatus, } from '/app/organisms/DropTipWizardFlows' import { useProtocolDropTipModal } from '../modals' -import { useCloseCurrentRun, useIsRunCurrent } from '/app/resources/runs' +import { + useCloseCurrentRun, + useCurrentRunCommands, + useIsRunCurrent, +} from '/app/resources/runs' import { isTerminalRunStatus } from '../../utils' +import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' import type { RobotType } from '@opentrons/shared-data' import type { Run, RunStatus } from '@opentrons/api-client' @@ -102,6 +107,15 @@ export function useRunHeaderDropTip({ : { showDTWiz: false, dtWizProps: null } } + const runSummaryNoFixit = useCurrentRunCommands( + { + includeFixitCommands: false, + pageLength: 1, + cursor: null, + }, + { enabled: isTerminalRunStatus(runStatus) } + ) + // Manage tip checking useEffect(() => { // If a user begins a new run without navigating away from the run page, reset tip status. @@ -111,11 +125,14 @@ export function useRunHeaderDropTip({ } // Only determine tip status when necessary as this can be an expensive operation. Error Recovery handles tips, so don't // have to do it here if done during Error Recovery. - else if (isTerminalRunStatus(runStatus) && !enteredER) { + else if ( + runSummaryNoFixit != null && + !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) + ) { void determineTipStatus() } } - }, [runStatus, robotType, enteredER]) + }, [runStatus, robotType, runSummaryNoFixit]) // TODO(jh, 08-15-24): The enteredER condition is a hack, because errorCommands are only returned when a run is current. // Ideally the run should not need to be current to view errorCommands. diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts index 02cf7343497..b710ba5a810 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts @@ -63,7 +63,12 @@ function getCommandsExecutedDuringRun( }) } -const TIP_EXCHANGE_COMMAND_TYPES = ['dropTip', 'dropTipInPlace', 'pickUpTip'] +const TIP_EXCHANGE_COMMAND_TYPES = [ + 'dropTip', + 'dropTipInPlace', + 'pickUpTip', + 'moveToAddressableAreaForDropTip', +] function checkPipettesForAttachedTips( commands: RunCommandSummary[], diff --git a/app/src/pages/ODD/RunSummary/index.tsx b/app/src/pages/ODD/RunSummary/index.tsx index 6d1f9ddfc2d..ce7fd3c0ef6 100644 --- a/app/src/pages/ODD/RunSummary/index.tsx +++ b/app/src/pages/ODD/RunSummary/index.tsx @@ -65,11 +65,13 @@ import { useRunCreatedAtTimestamp, useCloseCurrentRun, EMPTY_TIMESTAMP, + useCurrentRunCommands, } from '/app/resources/runs' import { useTipAttachmentStatus, handleTipsAttachedModal, } from '/app/organisms/DropTipWizardFlows' +import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' import type { IconName } from '@opentrons/components' import type { OnDeviceRouteParams } from '/app/App/types' @@ -238,11 +240,21 @@ export function RunSummary(): JSX.Element { }) // Determine tip status on initial render only. Error Recovery always handles tip status, so don't show it twice. + const runSummaryNoFixit = useCurrentRunCommands({ + includeFixitCommands: false, + pageLength: 1, + cursor: null, + }) useEffect(() => { - if (isRunCurrent && enteredER === false) { + if ( + isRunCurrent && + runSummaryNoFixit != null && + !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) + ) { + console.log('HITTING THIS') void determineTipStatus() } - }, [isRunCurrent, enteredER]) + }, [runSummaryNoFixit, isRunCurrent]) const returnToQuickTransfer = (): void => { closeCurrentRunIfValid(() => { From 29e03aea6c5af18f48d77614f06549e62cf57325 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Mon, 18 Nov 2024 10:20:31 -0500 Subject: [PATCH 020/220] fix(app,robot-server): Account for failed commands not having a pipetteId (#16859) Co-authored-by: Jamey Huffnagle --- api-client/src/runs/types.ts | 5 ++ .../protocol_runner/run_orchestrator.py | 15 ++++++ .../protocol_runner/test_run_orchestrator.py | 2 +- .../RecoveryOptions/ManageTips.tsx | 8 +-- .../ErrorRecoveryFlows/hooks/useERUtils.ts | 1 + .../hooks/useRecoveryTipStatus.ts | 22 +++++++- .../robot_server/runs/router/base_router.py | 52 +++++++++++-------- .../robot_server/runs/run_data_manager.py | 7 +++ robot-server/robot_server/runs/run_models.py | 28 ++++++++-- .../runs/run_orchestrator_store.py | 7 +++ .../tests/runs/router/test_base_router.py | 41 +++++++-------- 11 files changed, 135 insertions(+), 53 deletions(-) diff --git a/api-client/src/runs/types.ts b/api-client/src/runs/types.ts index a6279d12145..bf8596b66d7 100644 --- a/api-client/src/runs/types.ts +++ b/api-client/src/runs/types.ts @@ -120,6 +120,7 @@ export interface Runs { export interface RunCurrentStateData { estopEngaged: boolean activeNozzleLayouts: Record // keyed by pipetteId + tipStates: Record // keyed by pipetteId placeLabwareState?: PlaceLabwareState } @@ -218,3 +219,7 @@ export interface PlaceLabwareState { location: OnDeckLabwareLocation shouldPlaceDown: boolean } + +export interface TipStates { + hasTip: boolean +} diff --git a/api/src/opentrons/protocol_runner/run_orchestrator.py b/api/src/opentrons/protocol_runner/run_orchestrator.py index dfa66e6a55a..94e6fe48eb0 100644 --- a/api/src/opentrons/protocol_runner/run_orchestrator.py +++ b/api/src/opentrons/protocol_runner/run_orchestrator.py @@ -418,6 +418,21 @@ def get_nozzle_maps(self) -> Dict[str, NozzleMap]: """Get current nozzle maps keyed by pipette id.""" return self._protocol_engine.state_view.tips.get_pipette_nozzle_maps() + def get_tip_attached(self) -> Dict[str, bool]: + """Get current tip state keyed by pipette id.""" + + def has_tip_attached(pipette_id: str) -> bool: + return ( + self._protocol_engine.state_view.pipettes.get_attached_tip(pipette_id) + is not None + ) + + pipette_ids = ( + pipette.id + for pipette in self._protocol_engine.state_view.pipettes.get_all() + ) + return {pipette_id: has_tip_attached(pipette_id) for pipette_id in pipette_ids} + def set_error_recovery_policy(self, policy: ErrorRecoveryPolicy) -> None: """Create error recovery policy for the run.""" self._protocol_engine.set_error_recovery_policy(policy) diff --git a/api/tests/opentrons/protocol_runner/test_run_orchestrator.py b/api/tests/opentrons/protocol_runner/test_run_orchestrator.py index ff0938a2e6d..c2cea3e0e7e 100644 --- a/api/tests/opentrons/protocol_runner/test_run_orchestrator.py +++ b/api/tests/opentrons/protocol_runner/test_run_orchestrator.py @@ -525,7 +525,7 @@ def get_next_to_execute() -> Generator[str, None, None]: index = index + 1 -async def test_create_error_recovery_policy( +def test_create_error_recovery_policy( decoy: Decoy, mock_protocol_engine: ProtocolEngine, live_protocol_subject: RunOrchestrator, diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx index 0cd49fec3ea..57eef74d2d6 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx @@ -202,6 +202,7 @@ export function useDropTipFlowUtils({ subMapUtils, routeUpdateActions, recoveryMap, + errorKind, }: RecoveryContentProps): FixitCommandTypeUtils { const { t } = useTranslation('error_recovery') const { @@ -210,7 +211,7 @@ export function useDropTipFlowUtils({ ERROR_WHILE_RECOVERING, DROP_TIP_FLOWS, } = RECOVERY_MAP - const { runId } = tipStatusUtils + const { runId, gripperErrorFirstPipetteWithTip } = tipStatusUtils const { step } = recoveryMap const { selectedRecoveryOption } = currentRecoveryOptionUtils const { proceedToRouteAndStep } = routeUpdateActions @@ -304,11 +305,12 @@ export function useDropTipFlowUtils({ } const pipetteId = - failedCommand != null && + gripperErrorFirstPipetteWithTip ?? + (failedCommand != null && 'params' in failedCommand.byRunRecord && 'pipetteId' in failedCommand.byRunRecord.params ? failedCommand.byRunRecord.params.pipetteId - : null + : null) return { runId, diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts index 533b30aa6c4..ecf03e4f56b 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts @@ -139,6 +139,7 @@ export function useERUtils({ const tipStatusUtils = useRecoveryTipStatus({ runId, runRecord, + failedCommand, attachedInstruments, failedPipetteInfo, }) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts index a715d12c83f..0a12b59d089 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts @@ -1,18 +1,22 @@ import { useState } from 'react' import head from 'lodash/head' -import { useHost } from '@opentrons/react-api-client' +import { useHost, useRunCurrentState } from '@opentrons/react-api-client' import { getPipetteModelSpecs } from '@opentrons/shared-data' import { useTipAttachmentStatus } from '/app/organisms/DropTipWizardFlows' +import { ERROR_KINDS } from '/app/organisms/ErrorRecoveryFlows/constants' +import { getErrorKind } from '/app/organisms/ErrorRecoveryFlows/utils' import type { Run, Instruments, PipetteData } from '@opentrons/api-client' import type { PipetteWithTip, TipAttachmentStatusResult, } from '/app/organisms/DropTipWizardFlows' +import type { ERUtilsProps } from '/app/organisms/ErrorRecoveryFlows/hooks/useERUtils' interface UseRecoveryTipStatusProps { runId: string + failedCommand: ERUtilsProps['failedCommand'] failedPipetteInfo: PipetteData | null attachedInstruments?: Instruments runRecord?: Run @@ -22,6 +26,7 @@ export type RecoveryTipStatusUtils = TipAttachmentStatusResult & { /* Whether the robot is currently determineTipStatus() */ isLoadingTipStatus: boolean runId: string + gripperErrorFirstPipetteWithTip: string | null } // Wraps the tip attachment status utils with Error Recovery specific states and values. @@ -77,11 +82,26 @@ export function useRecoveryTipStatus( }) } + // TODO(jh, 11-15-24): This is temporary. Collaborate with design a better way to do drop tip wizard for multiple + // pipettes during error recovery. The tip detection logic will shortly be simplified, too! + const errorKind = getErrorKind(props.failedCommand) + const currentTipStates = + useRunCurrentState(props.runId, { + enabled: errorKind === ERROR_KINDS.GRIPPER_ERROR, + }).data?.data.tipStates ?? null + + const gripperErrorFirstPipetteWithTip = + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + Object.entries(currentTipStates ?? {}).find( + ([_, state]) => state.hasTip + )?.[0] ?? null + return { ...tipAttachmentStatusUtils, aPipetteWithTip: failedCommandPipette, determineTipStatus: determineTipStatusWithLoading, isLoadingTipStatus, runId: props.runId, + gripperErrorFirstPipetteWithTip, } } diff --git a/robot-server/robot_server/runs/router/base_router.py b/robot-server/robot_server/runs/router/base_router.py index 7e20e62881a..1c4b6bf65a9 100644 --- a/robot-server/robot_server/runs/router/base_router.py +++ b/robot-server/robot_server/runs/router/base_router.py @@ -61,6 +61,7 @@ RunCurrentState, CommandLinkNoMeta, NozzleLayoutConfig, + TipState, ) from ..run_auto_deleter import RunAutoDeleter from ..run_models import Run, BadRun, RunCreate, RunUpdate @@ -591,33 +592,27 @@ async def get_current_state( # noqa: C901 """ try: run = run_data_manager.get(run_id=runId) - active_nozzle_maps = run_data_manager.get_nozzle_maps(run_id=runId) - - nozzle_layouts = { - pipetteId: ActiveNozzleLayout.construct( - startingNozzle=nozzle_map.starting_nozzle, - activeNozzles=list(nozzle_map.map_store.keys()), - config=NozzleLayoutConfig(nozzle_map.configuration.value.lower()), - ) - for pipetteId, nozzle_map in active_nozzle_maps.items() - } - - run = run_data_manager.get(run_id=runId) - current_command = run_data_manager.get_current_command(run_id=runId) - last_completed_command = run_data_manager.get_last_completed_command( - run_id=runId - ) except RunNotCurrentError as e: raise RunStopped(detail=str(e)).as_error(status.HTTP_409_CONFLICT) - links = CurrentStateLinks.construct( - lastCompleted=CommandLinkNoMeta.construct( - id=last_completed_command.command_id, - href=f"/runs/{runId}/commands/{last_completed_command.command_id}", + active_nozzle_maps = run_data_manager.get_nozzle_maps(run_id=runId) + nozzle_layouts = { + pipetteId: ActiveNozzleLayout.construct( + startingNozzle=nozzle_map.starting_nozzle, + activeNozzles=list(nozzle_map.map_store.keys()), + config=NozzleLayoutConfig(nozzle_map.configuration.value.lower()), ) - if last_completed_command is not None - else None - ) + for pipetteId, nozzle_map in active_nozzle_maps.items() + } + + tip_states = { + pipette_id: TipState.construct(hasTip=has_tip) + for pipette_id, has_tip in run_data_manager.get_tip_attached( + run_id=runId + ).items() + } + + current_command = run_data_manager.get_current_command(run_id=runId) estop_engaged = False place_labware = None @@ -672,11 +667,22 @@ async def get_current_state( # noqa: C901 if place_labware: break + last_completed_command = run_data_manager.get_last_completed_command(run_id=runId) + links = CurrentStateLinks.construct( + lastCompleted=CommandLinkNoMeta.construct( + id=last_completed_command.command_id, + href=f"/runs/{runId}/commands/{last_completed_command.command_id}", + ) + if last_completed_command is not None + else None + ) + return await PydanticResponse.create( content=Body.construct( data=RunCurrentState.construct( estopEngaged=estop_engaged, activeNozzleLayouts=nozzle_layouts, + tipStates=tip_states, placeLabwareState=place_labware, ), links=links, diff --git a/robot-server/robot_server/runs/run_data_manager.py b/robot-server/robot_server/runs/run_data_manager.py index d30f5c33979..b5ac801a117 100644 --- a/robot-server/robot_server/runs/run_data_manager.py +++ b/robot-server/robot_server/runs/run_data_manager.py @@ -516,6 +516,13 @@ def get_nozzle_maps(self, run_id: str) -> Dict[str, NozzleMap]: raise RunNotCurrentError() + def get_tip_attached(self, run_id: str) -> Dict[str, bool]: + """Get current tip attached states, keyed by pipette id.""" + if run_id == self._run_orchestrator_store.current_run_id: + return self._run_orchestrator_store.get_tip_attached() + + raise RunNotCurrentError() + def get_all_commands_as_preserialized_list( self, run_id: str, include_fixit_commands: bool ) -> List[str]: diff --git a/robot-server/robot_server/runs/run_models.py b/robot-server/robot_server/runs/run_models.py index 2ed77b0d0bc..b18906fb39d 100644 --- a/robot-server/robot_server/runs/run_models.py +++ b/robot-server/robot_server/runs/run_models.py @@ -316,6 +316,16 @@ class ActiveNozzleLayout(BaseModel): ) +class TipState(BaseModel): + """Information about the tip, if any, currently attached to a pipette.""" + + hasTip: bool + + # todo(mm, 2024-11-15): I think the frontend is currently scraping the commands + # list to figure out where the current tip came from. Extend this class with that + # information so the frontend doesn't have to do that. + + class PlaceLabwareState(BaseModel): """Details the labware being placed by the gripper.""" @@ -331,9 +341,21 @@ class PlaceLabwareState(BaseModel): class RunCurrentState(BaseModel): """Current details about a run.""" - estopEngaged: bool = Field(..., description="") - activeNozzleLayouts: Dict[str, ActiveNozzleLayout] = Field(...) - placeLabwareState: Optional[PlaceLabwareState] = Field(None) + # todo(mm, 2024-11-15): Having estopEngaged here is a bit of an odd man out because + # it's sensor state that can change on its own at any time, whereas the rest of + # these fields are logical state that changes only when commands are run. + # + # Our current mechanism for anchoring these fields to a specific point in time + # (important for avoiding torn-read problems when a client combines this info with + # info from other endpoints) is `links.currentCommand`, which is based on the idea + # that these fields only change when the current command changes. + # + # We should see if clients can replace this with `GET /robot/control/estopStatus`. + estopEngaged: bool + + activeNozzleLayouts: Dict[str, ActiveNozzleLayout] + tipStates: Dict[str, TipState] + placeLabwareState: Optional[PlaceLabwareState] class CommandLinkNoMeta(BaseModel): diff --git a/robot-server/robot_server/runs/run_orchestrator_store.py b/robot-server/robot_server/runs/run_orchestrator_store.py index ee82ea034ac..68a9dfba36d 100644 --- a/robot-server/robot_server/runs/run_orchestrator_store.py +++ b/robot-server/robot_server/runs/run_orchestrator_store.py @@ -295,6 +295,9 @@ async def clear(self) -> RunResult: state_summary=run_data, commands=commands, parameters=run_time_parameters ) + # todo(mm, 2024-11-15): Are all of these pass-through methods helpful? + # Can we delete them and make callers just call .run_orchestrator.play(), etc.? + def play(self, deck_configuration: Optional[DeckConfigurationType] = None) -> None: """Start or resume the run.""" self.run_orchestrator.play(deck_configuration=deck_configuration) @@ -331,6 +334,10 @@ def get_nozzle_maps(self) -> Dict[str, NozzleMap]: """Get the current nozzle map keyed by pipette id.""" return self.run_orchestrator.get_nozzle_maps() + def get_tip_attached(self) -> Dict[str, bool]: + """Get current tip state keyed by pipette id.""" + return self.run_orchestrator.get_tip_attached() + def get_run_time_parameters(self) -> List[RunTimeParameter]: """Parameter definitions defined by protocol, if any. Will always be empty before execution.""" return self.run_orchestrator.get_run_time_parameters() diff --git a/robot-server/tests/runs/router/test_base_router.py b/robot-server/tests/runs/router/test_base_router.py index 9052b588bc9..30a4072f7cf 100644 --- a/robot-server/tests/runs/router/test_base_router.py +++ b/robot-server/tests/runs/router/test_base_router.py @@ -1,6 +1,4 @@ """Tests for base /runs routes.""" -from typing import Dict - from opentrons.hardware_control import HardwareControlAPI from opentrons_shared_data.robot.types import RobotTypeEnum import pytest @@ -53,6 +51,7 @@ ActiveNozzleLayout, CommandLinkNoMeta, NozzleLayoutConfig, + TipState, ) from robot_server.runs.run_orchestrator_store import RunConflictError from robot_server.runs.run_data_manager import ( @@ -112,23 +111,6 @@ def labware_offset_create() -> LabwareOffsetCreate: ) -@pytest.fixture -def mock_nozzle_maps() -> Dict[str, NozzleMap]: - """Get mock NozzleMaps.""" - return { - "mock-pipette-id": NozzleMap( - configuration=NozzleConfigurationType.FULL, - columns={"1": ["A1"]}, - rows={"A": ["A1"]}, - map_store={"A1": Point(0, 0, 0)}, - starting_nozzle="A1", - valid_map_key="mock-key", - full_instrument_map_store={}, - full_instrument_rows={}, - ) - } - - async def test_create_run( decoy: Decoy, mock_run_data_manager: RunDataManager, @@ -876,7 +858,6 @@ async def test_get_current_state_success( decoy: Decoy, mock_run_data_manager: RunDataManager, mock_hardware_api: HardwareControlAPI, - mock_nozzle_maps: Dict[str, NozzleMap], ) -> None: """It should return different state from the current run. @@ -885,8 +866,23 @@ async def test_get_current_state_success( """ run_id = "test-run-id" + decoy.when(mock_run_data_manager.get_tip_attached(run_id=run_id)).then_return( + {"mock-pipette-id": True} + ) + decoy.when(mock_run_data_manager.get_nozzle_maps(run_id=run_id)).then_return( - mock_nozzle_maps + { + "mock-pipette-id": NozzleMap( + configuration=NozzleConfigurationType.FULL, + columns={"1": ["A1"]}, + rows={"A": ["A1"]}, + map_store={"A1": Point(0, 0, 0)}, + starting_nozzle="A1", + valid_map_key="mock-key", + full_instrument_map_store={}, + full_instrument_rows={}, + ) + } ) command_pointer = CommandPointer( command_id="command-id", @@ -918,6 +914,7 @@ async def test_get_current_state_success( config=NozzleLayoutConfig.FULL, ) }, + tipStates={"mock-pipette-id": TipState(hasTip=True)}, ) assert result.content.links == CurrentStateLinks( lastCompleted=CommandLinkNoMeta( @@ -935,7 +932,7 @@ async def test_get_current_state_run_not_current( """It should raise RunStopped when the run is not current.""" run_id = "non-current-run-id" - decoy.when(mock_run_data_manager.get_nozzle_maps(run_id=run_id)).then_raise( + decoy.when(mock_run_data_manager.get(run_id=run_id)).then_raise( RunNotCurrentError("Run is not current") ) From c94a64c8e8e15d83955db513b4e4f49a88b32bb2 Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Mon, 18 Nov 2024 11:59:23 -0500 Subject: [PATCH 021/220] fix(api): update error message to title case (#16851) --- api/src/opentrons/protocol_engine/commands/pick_up_tip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/opentrons/protocol_engine/commands/pick_up_tip.py b/api/src/opentrons/protocol_engine/commands/pick_up_tip.py index 898929566fe..1c434e54f51 100644 --- a/api/src/opentrons/protocol_engine/commands/pick_up_tip.py +++ b/api/src/opentrons/protocol_engine/commands/pick_up_tip.py @@ -82,7 +82,7 @@ class TipPhysicallyMissingError(ErrorOccurrence): isDefined: bool = True errorType: Literal["tipPhysicallyMissing"] = "tipPhysicallyMissing" errorCode: str = ErrorCodes.TIP_PICKUP_FAILED.value.code - detail: str = "No tip detected." + detail: str = "No Tip Detected" _ExecuteReturn = Union[ From 57ea4aecf4eaacc603c6f2b76f0e43a902e36674 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 18 Nov 2024 12:37:03 -0500 Subject: [PATCH 022/220] fix(app): fix timestamp used for protocol completion (#16855) Closes RQA-3596 --- .../RobotDashboard/RecentRunProtocolCard.tsx | 3 +- .../__tests__/RecentRunProtocolCard.test.tsx | 4 +- .../ODD/ProtocolDashboard/ProtocolCard.tsx | 28 +++++--------- app/src/pages/ODD/ProtocolDashboard/hooks.ts | 38 +++++++++++++++++++ app/src/pages/ODD/ProtocolDashboard/index.tsx | 5 ++- 5 files changed, 55 insertions(+), 23 deletions(-) create mode 100644 app/src/pages/ODD/ProtocolDashboard/hooks.ts diff --git a/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx b/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx index 17ef7de2c3c..e522fb1dae7 100644 --- a/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx +++ b/app/src/organisms/ODD/RobotDashboard/RecentRunProtocolCard.tsx @@ -160,7 +160,8 @@ export function ProtocolWithLastRun({ } // TODO(BC, 2023-06-05): see if addSuffix false allow can remove usage of .replace here const formattedLastRunTime = formatDistance( - new Date(runData.createdAt), + // Fallback to current date if completedAt is null, though this should never happen since runs must be completed to appear in dashboard + new Date(runData.completedAt ?? new Date()), new Date(), { addSuffix: true, diff --git a/app/src/organisms/ODD/RobotDashboard/__tests__/RecentRunProtocolCard.test.tsx b/app/src/organisms/ODD/RobotDashboard/__tests__/RecentRunProtocolCard.test.tsx index e03f548f069..10ee119176e 100644 --- a/app/src/organisms/ODD/RobotDashboard/__tests__/RecentRunProtocolCard.test.tsx +++ b/app/src/organisms/ODD/RobotDashboard/__tests__/RecentRunProtocolCard.test.tsx @@ -87,7 +87,7 @@ const missingBoth = [ const mockRunData = { id: RUN_ID, createdAt: '2022-05-03T21:36:12.494778+00:00', - completedAt: 'thistime', + completedAt: '2023-05-03T21:36:12.494778+00:00', startedAt: 'thistime', protocolId: 'mockProtocolId', status: RUN_STATUS_FAILED, @@ -169,7 +169,7 @@ describe('RecentRunProtocolCard', () => { it('should render text', () => { render(props) const lastRunTime = formatDistance( - new Date(mockRunData.createdAt), + new Date(mockRunData.completedAt), new Date(), { addSuffix: true, diff --git a/app/src/pages/ODD/ProtocolDashboard/ProtocolCard.tsx b/app/src/pages/ODD/ProtocolDashboard/ProtocolCard.tsx index 4be3c6f0e69..61a0bcb9061 100644 --- a/app/src/pages/ODD/ProtocolDashboard/ProtocolCard.tsx +++ b/app/src/pages/ODD/ProtocolDashboard/ProtocolCard.tsx @@ -1,8 +1,7 @@ -import * as React from 'react' +import { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' import { Trans, useTranslation } from 'react-i18next' import { useQueryClient } from 'react-query' -import { formatDistance } from 'date-fns' import last from 'lodash/last' import { css } from 'styled-components' @@ -34,6 +33,7 @@ import { SmallButton } from '/app/atoms/buttons' import { OddModal } from '/app/molecules/OddModal' import { LongPressModal } from './LongPressModal' import { formatTimeWithUtcLabel } from '/app/resources/runs' +import { useUpdatedLastRunTime } from '/app/pages/ODD/ProtocolDashboard/hooks' import type { UseLongPressResult } from '@opentrons/components' import type { ProtocolResource } from '@opentrons/shared-data' @@ -60,16 +60,17 @@ export function ProtocolCard(props: ProtocolCardProps): JSX.Element { setIsRequiredCSV, } = props const navigate = useNavigate() - const [showIcon, setShowIcon] = React.useState(false) + const [showIcon, setShowIcon] = useState(false) const [ showFailedAnalysisModal, setShowFailedAnalysisModal, - ] = React.useState(false) + ] = useState(false) const { t, i18n } = useTranslation(['protocol_info', 'branded']) const protocolName = protocol.metadata.protocolName ?? protocol.files[0].name const longpress = useLongPress() const queryClient = useQueryClient() const host = useHost() + const updatedLastRun = useUpdatedLastRunTime(lastRun) const { id: protocolId, analysisSummaries } = protocol const { @@ -121,7 +122,7 @@ export function ProtocolCard(props: ProtocolCardProps): JSX.Element { } } - React.useEffect(() => { + useEffect(() => { if (longpress.isLongPressed) { longPress(true) setTargetProtocolId(protocol.id) @@ -195,13 +196,8 @@ export function ProtocolCard(props: ProtocolCardProps): JSX.Element { if (isFailedAnalysis) protocolCardBackgroundColor = COLORS.red35 if (isRequiredCSV) protocolCardBackgroundColor = COLORS.yellow35 - const textWrap = (lastRun?: string): string => { - if (lastRun != null) { - lastRun = formatDistance(new Date(lastRun), new Date(), { - addSuffix: true, - }).replace('about ', '') - } - return lastRun === 'less than a minute ago' ? 'normal' : 'nowrap' + const textWrap = (updatedLastRun: string): string => { + return updatedLastRun === 'less than a minute ago' ? 'normal' : 'nowrap' } return ( @@ -257,13 +253,9 @@ export function ProtocolCard(props: ProtocolCardProps): JSX.Element { - {lastRun != null - ? formatDistance(new Date(lastRun), new Date(), { - addSuffix: true, - }).replace('about ', '') - : t('no_history')} + {updatedLastRun} diff --git a/app/src/pages/ODD/ProtocolDashboard/hooks.ts b/app/src/pages/ODD/ProtocolDashboard/hooks.ts new file mode 100644 index 00000000000..6db041786ff --- /dev/null +++ b/app/src/pages/ODD/ProtocolDashboard/hooks.ts @@ -0,0 +1,38 @@ +import { useEffect, useState } from 'react' +import { formatDistance } from 'date-fns' +import { useTranslation } from 'react-i18next' + +import type { TFunction } from 'i18next' + +const UPDATE_TIME_INTERVAL_MS = 60000 + +// Given the last run timestamp, update the time since the last run on an interval. +export function useUpdatedLastRunTime(lastRun: string | undefined): string { + const { t } = useTranslation(['protocol_info']) + + const [updatedLastRun, setUpdatedLastRun] = useState(() => + computeLastRunFromNow(lastRun, t as TFunction) + ) + useEffect(() => { + const timer = setInterval(() => { + setUpdatedLastRun(computeLastRunFromNow(lastRun, t as TFunction)) + }, UPDATE_TIME_INTERVAL_MS) + + return () => { + clearInterval(timer) + } + }, [lastRun, t]) + + return updatedLastRun +} + +function computeLastRunFromNow( + lastRun: string | undefined, + t: TFunction +): string { + return lastRun != null + ? formatDistance(new Date(lastRun), new Date(), { + addSuffix: true, + }).replace('about ', '') + : t('no_history') +} diff --git a/app/src/pages/ODD/ProtocolDashboard/index.tsx b/app/src/pages/ODD/ProtocolDashboard/index.tsx index de775795ded..cddc9ee0a1f 100644 --- a/app/src/pages/ODD/ProtocolDashboard/index.tsx +++ b/app/src/pages/ODD/ProtocolDashboard/index.tsx @@ -252,9 +252,10 @@ export function ProtocolDashboard(): JSX.Element { {sortedProtocols.map(protocol => { - const lastRun = runs.data?.data.find( + // Run data is ordered based on timestamp. We want the last time a matching run was ran. + const lastRun = runs.data?.data.findLast( run => run.protocolId === protocol.id - )?.createdAt + )?.completedAt return ( Date: Mon, 18 Nov 2024 13:38:38 -0500 Subject: [PATCH 023/220] docs(api): Absorbance Plate Reader in Python API docs (#16668) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Overview Adds a docs page and publishes API Reference entries for the Absorbance Plate Reader. Addresses RTC-488, RTC-508. ## Test Plan and Hands on Testing [Sandbox](http://sandbox.docs.opentrons.com/docs-plate-reader/v2/modules/absorbance_plate_reader.html) ## Changelog - Adds a new page, Absorbance Plate Reader Module, under Hardware Modules - Links to new page from Hardware Modules landing page - Adds Absorbance Plate Reader to Module Setup page - Adds H3s for modules in API Reference for easier navigation - Edits to `AbsorbanceReaderContext` docstrings in `module_contexts.py` - Cleaned up malformed note syntax _for Thermocycler_ in `module_contexts.py` - Removed nitpick rule from `conf.py` now that `AbsorbanceReaderContext` is published - 🆕 Instruct authors not to detect CSV dialect when using plate reader output as RTP. ## Review requests - Check that all descriptions are true to how the plate reader behaves. - Double check that my code simulates — I have done this once. - Do we need more information in any area, especially for CSV files? - Should we provide a sample? If so, where to put it? - ✅ Should we give more concrete guidance on parsing the CSV other than "you know how to write code, yeah"? - 🆕 Do we need to list the four `wavelengths` values that actually function on a default HW config? ## Risk assessment v low, docs only --- api/docs/v2/conf.py | 1 - .../v2/modules/absorbance_plate_reader.rst | 147 ++++++++++++++++++ api/docs/v2/modules/setup.rst | 7 +- api/docs/v2/new_modules.rst | 4 +- api/docs/v2/new_protocol_api.rst | 26 +++- .../opentrons/protocol_api/module_contexts.py | 82 ++++++---- .../parameters/csv_parameter_interface.py | 4 +- 7 files changed, 239 insertions(+), 32 deletions(-) create mode 100644 api/docs/v2/modules/absorbance_plate_reader.rst diff --git a/api/docs/v2/conf.py b/api/docs/v2/conf.py index 5ab0fdaad76..708d800ce3e 100644 --- a/api/docs/v2/conf.py +++ b/api/docs/v2/conf.py @@ -445,7 +445,6 @@ ("py:class", r".*protocol_api\.config.*"), ("py:class", r".*opentrons_shared_data.*"), ("py:class", r".*protocol_api._parameters.Parameters.*"), - ("py:class", r".*AbsorbanceReaderContext"), ("py:class", r".*RobotContext"), # shh it's a secret (for now) ("py:class", r'.*AbstractLabware|APIVersion|LabwareLike|LoadedCoreMap|ModuleTypes|NoneType|OffDeckType|ProtocolCore|WellCore'), # laundry list of not fully qualified things ] diff --git a/api/docs/v2/modules/absorbance_plate_reader.rst b/api/docs/v2/modules/absorbance_plate_reader.rst new file mode 100644 index 00000000000..9f96d5e90d3 --- /dev/null +++ b/api/docs/v2/modules/absorbance_plate_reader.rst @@ -0,0 +1,147 @@ +:og:description: How to use the Absorbance Plate Reader Module in a Python protocol. + +.. _absorbance-plate-reader-module: + +****************************** +Absorbance Plate Reader Module +****************************** + +The Absorbance Plate Reader Module is an on-deck microplate spectrophotometer that works with the Flex robot only. The module uses light absorbance to determine sample concentrations in 96-well plates. + +The Absorbance Plate Reader is represented in code by an :py:class:`.AbsorbanceReaderContext` object, which has methods for moving the module lid with the Flex Gripper, initializing the module to read at a single wavelength or multiple wavelengths, and reading a plate. With the Python Protocol API, you can process plate reader data immediately in your protocol or export it to a CSV for post-run use. + +This page explains the actions necessary for using the Absorbance Plate Reader. These combine to form the typical reader workflow: + + 1. Close the lid with no plate inside + 2. Initialize the reader + 3. Open the lid + 4. Move a plate onto the module + 5. Close the lid + 6. Read the plate + + +Loading and Deck Slots +====================== + +The Absorbance Plate Reader can only be loaded in slots A3–D3. If you try to load it in any other slot, the API will raise an error. The module's caddy is designed such that the detection unit is in deck column 3 and the special staging area for the lid/illumination unit is in deck column 4. You can't load or move other labware on the Absorbance Plate Reader caddy in deck column 4, even while the lid is in the closed position (on top of the detection unit in deck column 3). + +The examples in this section will use an Absorbance Plate Reader Module loaded as follows:: + + pr_mod = protocol.load_module( + module_name="absorbanceReaderV1", + location="D3" + ) + +.. versionadded:: 2.21 + +Lid Control +=========== + +Flex uses the gripper to move the lid between its two positions. + + - :py:meth:`~.AbsorbanceReaderContext.open_lid()` moves the lid to the righthand side of the caddy, in deck column 4. + - :py:meth:`~.AbsorbanceReaderContext.close_lid()` moves the lid onto the detection unit, in deck column 3. + +If you call ``open_lid()`` or ``close_lid()`` and the lid is already in the corresponding position, the method will succeed immediately. You can also check the position of the lid with :py:meth:`~.AbsorbanceReaderContext.is_lid_on()`. + +You need to call ``close_lid()`` before initializing the reader, even if the reader was in the closed position at the start of the protocol. + +.. warning:: + Do not move the lid manually, during or outside of a protocol. The API does not allow manual lid movement because there is a risk of damaging the module. + +.. _absorbance-initialization: + +Initialization +============== + +Initializing the reader prepares it to read a plate later in your protocol. The :py:meth:`.AbsorbanceReaderContext.initialize` method accepts parameters for the number of readings you want to take, the wavelengths to read, and whether you want to compare the reading to a reference wavelength. In the default hardware configuration, the supported wavelengths are 450 nm (blue), 562 nm (green), 600 nm (orange), and 650 nm (red). + +The module uses these parameters immediately to perform the physical initialization. Additionally, the API preserves these values and uses them when you read the plate later in your protocol. + +Let's take a look at examples of how to combine these parameters to prepare different types of readings. The simplest reading measures one wavelength, with no reference wavelength:: + + pr_mod.initialize(mode="single", wavelengths=[450]) + +.. versionadded:: 2.21 + +Now the reader is prepared to read at 450 nm. Note that the ``wavelengths`` parameter always takes a list of integer wavelengths, even when only reading a single wavelength. + +This example can be extended by adding a reference wavelength:: + + pr_mod.initialize( + mode="single", wavelengths=[450], reference_wavelength=[562] + ) + +When configured this way, the module will read twice. In the :ref:`output data `, the values read for ``reference_wavelength`` will be subtracted from the values read for the single member of ``wavelengths``. This is useful for normalization, or to correct for background interference in wavelength measurements. + +The reader can also be initialized to take multiple measurements. When ``mode="multi"``, the ``wavelengths`` list can have up to six elements. This example will initialize the reader to read at three wavelengths:: + + pr_mod.initialize(mode="multi", wavelengths=[450, 562, 600]) + +You can't use a reference wavelength when performing multiple measurements. + + +Reading a Plate +=============== + +Use :py:meth:`.AbsorbanceReaderContext.read` to have the module read the plate, using the parameters that you specified during initialization:: + + pr_data = pr_mod.read() + +.. versionadded:: 2.21 + +The ``read()`` method returns the results in a dictionary, which the above example saves to the variable ``pr_data``. + +If you need to access this data after the conclusion of your protocol, add the ``export_filename`` parameter to instruct the API to output a CSV file, which is available in the Opentrons App by going to your Flex and viewing Recent Protocol Runs:: + + pr_data = pr_mod.read(export_filename="plate_data") + +In the above example, the API both saves the data to a variable and outputs a CSV file. If you only need the data post-run, you can omit the variable assignment. + +.. _plate-reader-data: + +Using Plate Reader Data +======================= + +There are two ways to use output data from the Absorbance Plate Reader: + +- Within your protocol as a nested dictionary object. +- Outside of your protocol, as a tabular CSV file. + +The two formats are structured differently, even though they contain the same measurement data. + +Dictionary Data +--------------- + +The dictionary object returned by ``read()`` has two nested levels. The keys at the top level are the wavelengths you provided to ``initialize()``. The keys at the second level are string names of each of the 96 wells, ``"A1"`` through ``"H12"``. The values at the second level are the measured values for each wells. These values are floating point numbers, representing the optical density (OD) of the samples in each well. OD ranges from 0.0 (low sample concentration) to 4.0 (high sample concentration). + +The nested dictionary structure allows you to access results by index later in your protocol. This example initializes a multiple read and then accesses different portions of the results:: + + # initializing and reading + pr_mod.initialize(mode="multi", wavelengths=[450, 600]) + pr_mod.open_lid() + protocol.move_labware(plate, pr_mod, use_gripper=True) + pr_mod.close_lid() + pr_data = pr_mod.read() + + # accessing results + pr_data[450]["A1"] # value for well A1 at 450 nm + pr_data[600]["H12"] # value for well H12 at 600 nm + pr_data[450] # dict of all wells at 450 nm + +You can write additional code to transform this data in any way that you need. For example, you could use a list comprehension to create a list of only the 450 nm values for column 1, ordered by well from A1 to H1:: + + [pr_data[450][w.well_name] for w in plate.columns()[0]] + +.. _absorbance-csv: + +CSV data +-------- + +The CSV exported when specifying ``export_filename`` consists of tabular data followed by additional information. Each measurement produces 9 rows in the CSV file, representing the layout of the well plate that has been read. These rows form a table with numeric labels in the first row and alphabetic labels in the first column, as you would see on physical labware. Each "cell" of the table contains the measured OD value for the well (0.0–4.0) in the corresponding position on the plate. + +Additional information, starting with one blank labware grid, is output at the end of the file. The last few lines of the file list the sample wavelengths, serial number of the module, and timestamps for when measurement started and finished. + +Each output file for your protocol is available in the Opentrons App by going to your Flex and viewing Recent Protocol Runs. After downloading the file from your Flex, you can read it with any software that reads CSV files, and you can write additional code to parse and act upon its contents. + +You can also select the output CSV as the value of a CSV runtime parameter in a subsequent protocol. When you :ref:`parse the CSV data `, make sure to set ``detect_dialect=False``, or the API will raise an error. \ No newline at end of file diff --git a/api/docs/v2/modules/setup.rst b/api/docs/v2/modules/setup.rst index c6badd82954..a0cbe18bf0e 100644 --- a/api/docs/v2/modules/setup.rst +++ b/api/docs/v2/modules/setup.rst @@ -66,7 +66,7 @@ Available Modules The first parameter of :py:meth:`.ProtocolContext.load_module` is the module's *API load name*. The load name tells your robot which module you're going to use in a protocol. The table below lists the API load names for the currently available modules. .. table:: - :widths: 4 5 2 + :widths: 4 4 2 +--------------------+-------------------------------+---------------------------+ | Module | API Load Name | Introduced in API Version | @@ -95,6 +95,9 @@ The first parameter of :py:meth:`.ProtocolContext.load_module` is the module's | Magnetic Block | ``magneticBlockV1`` | 2.15 | | GEN1 | | | +--------------------+-------------------------------+---------------------------+ + | Absorbance Plate | ``absorbanceReaderV1`` | 2.21 | + | Reader Module | | | + +--------------------+-------------------------------+---------------------------+ Some modules were added to our Python API later than others, and others span multiple hardware generations. When writing a protocol that requires a module, make sure your ``requirements`` or ``metadata`` code block specifies an :ref:`API version ` high enough to support all the module generations you want to use. @@ -124,7 +127,7 @@ Any :ref:`custom labware ` added to your Opentrons App is als Module and Labware Compatibility -------------------------------- -It's your responsibility to ensure the labware and module combinations you load together work together. The Protocol API won't raise a warning or error if you load an unusual combination, like placing a tube rack on a Thermocycler. See `What labware can I use with my modules? `_ for more information about labware/module combinations. +It's your responsibility to ensure the labware and module combinations you load together work together. The API generally won't raise a warning or error if you load an unusual combination, like placing a tube rack on a Thermocycler. The API will raise an error if you try to load a labware on an unsupported adapter. When working with custom labware and module adapters, be sure to add stacking offsets for the adapter to your custom labware definition. Additional Labware Parameters diff --git a/api/docs/v2/new_modules.rst b/api/docs/v2/new_modules.rst index 956a2bc7989..594ceca3867 100644 --- a/api/docs/v2/new_modules.rst +++ b/api/docs/v2/new_modules.rst @@ -8,6 +8,7 @@ Hardware Modules .. toctree:: modules/setup + modules/absorbance_plate_reader modules/heater_shaker modules/magnetic_block modules/magnetic_module @@ -17,13 +18,14 @@ Hardware Modules Hardware modules are powered and unpowered deck-mounted peripherals. The Flex and OT-2 are aware of deck-mounted powered modules when they're attached via a USB connection and used in an uploaded protocol. The robots do not know about unpowered modules until you use one in a protocol and upload it to the Opentrons App. -Powered modules include the Heater-Shaker Module, Magnetic Module, Temperature Module, and Thermocycler Module. The 96-well Magnetic Block is an unpowered module. +Powered modules include the Absorbance Plate Reader Module, Heater-Shaker Module, Magnetic Module, Temperature Module, and Thermocycler Module. The 96-well Magnetic Block is an unpowered module. Pages in this section of the documentation cover: - :ref:`Setting up modules and their labware `. - Working with the module contexts for each type of module. + - :ref:`Absorbance Plate Reader Module ` - :ref:`Heater-Shaker Module ` - :ref:`Magnetic Block ` - :ref:`Magnetic Module ` diff --git a/api/docs/v2/new_protocol_api.rst b/api/docs/v2/new_protocol_api.rst index a71ad5cf4a2..2ce4c39e3cc 100644 --- a/api/docs/v2/new_protocol_api.rst +++ b/api/docs/v2/new_protocol_api.rst @@ -53,29 +53,53 @@ Wells and Liquids Modules ======= +Absorbance Plate Reader +----------------------- + +.. autoclass:: opentrons.protocol_api.AbsorbanceReaderContext + :members: + :exclude-members: broker, geometry, load_labware_object, load_adapter, load_adapter_from_definition + :inherited-members: + + +Heater-Shaker +------------- + .. autoclass:: opentrons.protocol_api.HeaterShakerContext :members: :exclude-members: broker, geometry, load_labware_object :inherited-members: +Magnetic Block +-------------- + .. autoclass:: opentrons.protocol_api.MagneticBlockContext :members: :exclude-members: broker, geometry, load_labware_object :inherited-members: +Magnetic Module +--------------- + .. autoclass:: opentrons.protocol_api.MagneticModuleContext :members: :exclude-members: calibrate, broker, geometry, load_labware_object :inherited-members: +Temperature Module +------------------ + .. autoclass:: opentrons.protocol_api.TemperatureModuleContext :members: :exclude-members: start_set_temperature, await_temperature, broker, geometry, load_labware_object :inherited-members: +Thermocycler +------------ + .. autoclass:: opentrons.protocol_api.ThermocyclerContext :members: - :exclude-members: total_step_count, current_cycle_index, total_cycle_count, hold_time, ramp_rate, current_step_index, broker, geometry, load_labware_object + :exclude-members: total_step_count, current_cycle_index, total_cycle_count, hold_time, ramp_rate, current_step_index, broker, geometry, load_labware_object, load_adapter, load_adapter_from_definition :inherited-members: diff --git a/api/src/opentrons/protocol_api/module_contexts.py b/api/src/opentrons/protocol_api/module_contexts.py index 7beab69c53f..8890981e32a 100644 --- a/api/src/opentrons/protocol_api/module_contexts.py +++ b/api/src/opentrons/protocol_api/module_contexts.py @@ -581,7 +581,7 @@ def set_block_temperature( individual well of the loaded labware, in µL. If not specified, the default is 25 µL. - .. note: + .. note:: If ``hold_time_minutes`` and ``hold_time_seconds`` are not specified, the Thermocycler will proceed to the next command @@ -605,7 +605,7 @@ def set_lid_temperature(self, temperature: float) -> None: :param temperature: A value between 37 and 110, representing the target temperature in °C. - .. note: + .. note:: The Thermocycler will proceed to the next command immediately after ``temperature`` has been reached. @@ -635,13 +635,13 @@ def execute_profile( individual well of the loaded labware, in µL. If not specified, the default is 25 µL. - .. note: + .. note:: Unlike with :py:meth:`set_block_temperature`, either or both of ``hold_time_minutes`` and ``hold_time_seconds`` must be defined and for each step. - .. note: + .. note:: Before API Version 2.21, Thermocycler profiles run with this command would be listed in the app as having a number of repetitions equal to @@ -991,7 +991,7 @@ class MagneticBlockContext(ModuleContext): class AbsorbanceReaderContext(ModuleContext): - """An object representing a connected Absorbance Reader Module. + """An object representing a connected Absorbance Plate Reader Module. It should not be instantiated directly; instead, it should be created through :py:meth:`.ProtocolContext.load_module`. @@ -1009,17 +1009,21 @@ def serial_number(self) -> str: @requires_version(2, 21) def close_lid(self) -> None: - """Close the lid of the Absorbance Reader.""" + """Use the Flex Gripper to close the lid of the Absorbance Plate Reader. + + You must call this method before initializing the reader, even if the reader was + in the closed position at the start of the protocol. + """ self._core.close_lid() @requires_version(2, 21) def open_lid(self) -> None: - """Open the lid of the Absorbance Reader.""" + """Use the Flex Gripper to open the lid of the Absorbance Plate Reader.""" self._core.open_lid() @requires_version(2, 21) def is_lid_on(self) -> bool: - """Return ``True`` if the Absorbance Reader's lid is currently closed.""" + """Return ``True`` if the Absorbance Plate Reader's lid is currently closed.""" return self._core.is_lid_on() @requires_version(2, 21) @@ -1029,19 +1033,28 @@ def initialize( wavelengths: List[int], reference_wavelength: Optional[int] = None, ) -> None: - """Take a zero reading on the Absorbance Plate Reader Module. + """Prepare the Absorbance Plate Reader to read a plate. + + See :ref:`absorbance-initialization` for examples. :param mode: Either ``"single"`` or ``"multi"``. - - In single measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses - one sample wavelength and an optional reference wavelength. - - In multiple measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses - a list of up to six sample wavelengths. - :param wavelengths: A list of wavelengths, in mm, to measure. - - Must contain only one item when initializing a single measurement. - - Must contain one to six items when initializing a multiple measurement. - :param reference_wavelength: An optional reference wavelength, in mm. Cannot be - used with multiple measurements. + - In single measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses + one sample wavelength and an optional reference wavelength. + - In multiple measurement mode, :py:meth:`.AbsorbanceReaderContext.read` uses + a list of up to six sample wavelengths. + :param wavelengths: A list of wavelengths, in nm, to measure. + + - In the default hardware configuration, each wavelength must be one of + ``450`` (blue), ``562`` (green), ``600`` (orange), or ``650`` (red). In + custom hardware configurations, the module may accept other integers + between 350 and 1000. + - The list must contain only one item when initializing a single measurement. + - The list can contain one to six items when initializing a multiple measurement. + :param reference_wavelength: An optional reference wavelength, in nm. If provided, + :py:meth:`.AbsorbanceReaderContext.read` will read at the reference + wavelength and then subtract the reference wavelength values from the + measurement wavelength values. Can only be used with single measurements. """ self._core.initialize( mode, wavelengths, reference_wavelength=reference_wavelength @@ -1051,16 +1064,33 @@ def initialize( def read( self, export_filename: Optional[str] = None ) -> Dict[int, Dict[str, float]]: - """Initiate read on the Absorbance Reader. + """Read a plate on the Absorbance Plate Reader. + + This method always returns a dictionary of measurement data. It optionally will + save a CSV file of the results to the Flex filesystem, which you can access from + the Recent Protocol Runs screen in the Opentrons App. These files are `only` saved + if you specify ``export_filename``. + + In simulation, the values for each well key in the dictionary are set to zero, and + no files are written. + + .. note:: + + Avoid divide-by-zero errors when simulating and using the results of this + method later in the protocol. If you divide by any of the measurement + values, use :py:meth:`.ProtocolContext.is_simulating` to use alternate dummy + data or skip the division step. - Returns a dictionary of wavelengths to dictionary of values ordered by well name. + :param export_filename: An optional file basename. If provided, this method + will write a CSV file for each measurement in the read operation. File + names will use the value of this parameter, the measurement wavelength + supplied in :py:meth:`~.AbsorbanceReaderContext.initialize`, and a + ``.csv`` extension. For example, when reading at wavelengths 450 and 562 + with ``export_filename="my_data"``, there will be two output files: + ``my_data_450.csv`` and ``my_data_562.csv``. - :param export_filename: Optional, if a filename is provided a CSV file will be saved - as a result of the read action containing measurement data. The filename will - be modified to include the wavelength used during measurement. If multiple - measurements are taken, then a file will be generated for each wavelength provided. + See :ref:`absorbance-csv` for information on working with these CSV files. - Example: If `export_filename="my_data"` and wavelengths 450 and 531 are used during - measurement, the output files will be "my_data_450.csv" and "my_data_531.csv". + :returns: A dictionary of wavelengths to dictionary of values ordered by well name. """ return self._core.read(filename=export_filename) diff --git a/api/src/opentrons/protocols/parameters/csv_parameter_interface.py b/api/src/opentrons/protocols/parameters/csv_parameter_interface.py index 6da9a0f7aaf..ff460b48f21 100644 --- a/api/src/opentrons/protocols/parameters/csv_parameter_interface.py +++ b/api/src/opentrons/protocols/parameters/csv_parameter_interface.py @@ -60,7 +60,9 @@ def parse_as_csv( as appropriate. :param detect_dialect: If ``True``, examine the file and try to assign it a - :py:class:`csv.Dialect` to improve parsing behavior. + :py:class:`csv.Dialect` to improve parsing behavior. Set this to ``False`` + when using the file output of :py:meth:`.AbsorbanceReaderContext.read` as + a runtime parameter. :param kwargs: For advanced CSV handling, you can pass any of the `formatting parameters `_ accepted by :py:func:`csv.reader` from the Python standard library. From 9c5fdb55cd903504c018210cdd720cabd8f76aa3 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Mon, 18 Nov 2024 17:32:20 -0500 Subject: [PATCH 024/220] chore(release): Update command schema for merge. --- shared-data/command/schemas/11.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 27de3c75b54..60aefa9820d 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -5608,7 +5608,7 @@ "type": "object", "properties": { "axes": { - "description": "The axes for which to update the position estimators.", + "description": "The axes for which to update the position estimators. Any axes that are not physically present will be ignored.", "type": "array", "items": { "$ref": "#/definitions/MotorAxis" From 8e84bb48ee2fe802725ae7dab8524fc032c0d1af Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Mon, 18 Nov 2024 17:37:00 -0500 Subject: [PATCH 025/220] chore(release): Merge fixups. --- robot-server/robot_server/runs/run_data_manager.py | 2 +- robot-server/robot_server/runs/run_orchestrator_store.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/robot-server/robot_server/runs/run_data_manager.py b/robot-server/robot_server/runs/run_data_manager.py index 4541fcacb14..6825dfb14a3 100644 --- a/robot-server/robot_server/runs/run_data_manager.py +++ b/robot-server/robot_server/runs/run_data_manager.py @@ -1,7 +1,7 @@ """Manage current and historical run data.""" from datetime import datetime -from typing import List, Optional, Callable, Union, Mapping +from typing import Dict, List, Optional, Callable, Union, Mapping from opentrons_shared_data.labware.labware_definition import LabwareDefinition from opentrons_shared_data.errors.exceptions import InvalidStoredData, EnumeratedError diff --git a/robot-server/robot_server/runs/run_orchestrator_store.py b/robot-server/robot_server/runs/run_orchestrator_store.py index 6abd7a3a2f5..b4bd757150e 100644 --- a/robot-server/robot_server/runs/run_orchestrator_store.py +++ b/robot-server/robot_server/runs/run_orchestrator_store.py @@ -2,7 +2,7 @@ import asyncio import logging -from typing import List, Optional, Callable, Mapping +from typing import Dict, List, Optional, Callable, Mapping from opentrons.types import NozzleMapInterface from opentrons.protocol_engine.errors.exceptions import EStopActivatedError From 0f115947f1b663b2e57ea1987064ffa423a2b3df Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 18 Nov 2024 19:31:59 -0500 Subject: [PATCH 026/220] fix(app): Error Recovery 8.2 DQA (#16880) Closes RQA-3608, RQA-3609, RQA-3611, RQA-3613, RQA-3610, RQA-3612, and RQA-3615 --- app/src/assets/localization/en/app_settings.json | 2 +- app/src/assets/localization/en/error_recovery.json | 4 ++-- .../AdvancedTab/__tests__/EnableErrorRecoveryMode.test.tsx | 2 +- .../organisms/DropTipWizardFlows/steps/BeforeBeginning.tsx | 4 ++++ .../ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx | 4 ++-- .../ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx | 2 +- .../ErrorRecoveryFlows/shared/GripperReleaseLabware.tsx | 2 +- .../ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx | 2 ++ .../ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx | 2 +- .../shared/__tests__/TwoColLwInfoAndDeck.test.tsx | 2 +- .../pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx | 2 +- .../__tests__/RobotSettingsDashboard.test.tsx | 2 +- components/src/icons/icon-data.ts | 5 +++++ 13 files changed, 23 insertions(+), 12 deletions(-) diff --git a/app/src/assets/localization/en/app_settings.json b/app/src/assets/localization/en/app_settings.json index 3f957ebe608..77ee3a9fd3f 100644 --- a/app/src/assets/localization/en/app_settings.json +++ b/app/src/assets/localization/en/app_settings.json @@ -40,7 +40,7 @@ "enable_dev_tools_description": "Enabling this setting opens Developer Tools on app launch, enables additional logging and gives access to feature flags.", "error_boundary_desktop_app_description": "You need to reload the app. Contact support with the following error message:", "error_boundary_title": "An unknown error has occurred", - "error_recovery_mode": "Error Recovery Mode", + "error_recovery_mode": "Recovery mode", "error_recovery_mode_description": "Pause on protocol errors instead of canceling the run.", "feature_flags": "Feature Flags", "general": "General", diff --git a/app/src/assets/localization/en/error_recovery.json b/app/src/assets/localization/en/error_recovery.json index 392c9c694c3..b46e276c48b 100644 --- a/app/src/assets/localization/en/error_recovery.json +++ b/app/src/assets/localization/en/error_recovery.json @@ -43,7 +43,7 @@ "ignore_similar_errors_later_in_run": "Ignore similar errors later in the run?", "inspect_the_robot": "First, inspect the robot to ensure it's prepared to continue the run from the next step.Then, close the robot door before proceeding.", "labware_released_from_current_height": "The labware will be released from its current height.", - "launch_recovery_mode": "Launch Recovery Mode", + "launch_recovery_mode": "Launch recovery mode", "manually_fill_liquid_in_well": "Manually fill liquid in well {{well}}", "manually_fill_well_and_skip": "Manually fill well and skip to next step", "manually_move_lw_and_skip": "Manually move labware and skip to next step", @@ -60,7 +60,7 @@ "proceed_to_cancel": "Proceed to cancel", "proceed_to_tip_selection": "Proceed to tip selection", "recovery_action_failed": "{{action}} failed", - "recovery_mode": "Recovery Mode", + "recovery_mode": "Recovery mode", "recovery_mode_explanation": "Recovery Mode provides you with guided and manual controls for handling errors at runtime.
You can make changes to ensure the step in progress when the error occurred can be completed or choose to cancel the protocol. When changes are made and no subsequent errors are detected, the method completes. Depending on the conditions that caused the error, you will only be provided with appropriate options.", "release": "Release", "release_labware_from_gripper": "Release labware from gripper", diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/__tests__/EnableErrorRecoveryMode.test.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/__tests__/EnableErrorRecoveryMode.test.tsx index a2d4824951f..9406e38f768 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/__tests__/EnableErrorRecoveryMode.test.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/__tests__/EnableErrorRecoveryMode.test.tsx @@ -32,7 +32,7 @@ describe('EnableErrorRecoveryMode', () => { it('should render text and toggle button', () => { render(props) - screen.getByText('Error Recovery Mode') + screen.getByText('Recovery mode') screen.getByText('Pause on protocol errors instead of canceling the run.') expect( screen.getByLabelText('enable_error_recovery_mode') diff --git a/app/src/organisms/DropTipWizardFlows/steps/BeforeBeginning.tsx b/app/src/organisms/DropTipWizardFlows/steps/BeforeBeginning.tsx index bbcb908ea24..82be17832b4 100644 --- a/app/src/organisms/DropTipWizardFlows/steps/BeforeBeginning.tsx +++ b/app/src/organisms/DropTipWizardFlows/steps/BeforeBeginning.tsx @@ -235,6 +235,10 @@ const CONTAINER_STYLE = css` display: ${DISPLAY_FLEX}; flex-direction: ${DIRECTION_COLUMN}; grid-gap: ${SPACING.spacing16}; + + @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { + grid-gap: ${SPACING.spacing8}; + } ` const ODD_MEDIUM_BUTTON_STYLE = css` diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx index da3ddc07629..6bb18c4c5ec 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx @@ -132,7 +132,7 @@ describe('RecoverySplash', () => { render(props) const primaryBtn = screen.getByRole('button', { - name: 'Launch Recovery Mode', + name: 'Launch recovery mode', }) const secondaryBtn = screen.getByRole('button', { name: 'Cancel run' }) @@ -172,7 +172,7 @@ describe('RecoverySplash', () => { render(props) - clickButtonLabeled('Launch Recovery Mode') + clickButtonLabeled('Launch recovery mode') expect(mockMakeToast).toHaveBeenCalled() }) diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx index 94ef850834c..036f1aff3d0 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/GripperIsHoldingLabware.tsx @@ -14,11 +14,11 @@ import { import { RecoverySingleColumnContentWrapper } from './RecoveryContentWrapper' import { RecoveryFooterButtons } from './RecoveryFooterButtons' import { ODD_ONLY, DESKTOP_ONLY, RECOVERY_MAP } from '../constants' +import { RecoveryRadioGroup } from '/app/organisms/ErrorRecoveryFlows/shared/RecoveryRadioGroup' import type { JSX } from 'react' import type { TFunction } from 'i18next' import type { RecoveryContentProps } from '../types' -import { RecoveryRadioGroup } from '/app/organisms/ErrorRecoveryFlows/shared/RecoveryRadioGroup' type HoldingLabwareOption = 'yes' | 'no' export const HOLDING_LABWARE_OPTIONS: HoldingLabwareOption[] = [ diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/GripperReleaseLabware.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/GripperReleaseLabware.tsx index 3e0c24756d2..2c433775a83 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/GripperReleaseLabware.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/GripperReleaseLabware.tsx @@ -95,6 +95,6 @@ const ANIMATION_CONTAINER_STYLE = css` const ANIMATION_STYLE = css` @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { width: 27rem; - height: 18.75rem; + height: 20.25rem; } ` diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx index ccfaa8376ba..82974023805 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryInterventionModal.tsx @@ -63,6 +63,7 @@ const SMALL_MODAL_STYLE = css` padding: ${SPACING.spacing32}; height: 100%; overflow: ${OVERFLOW_HIDDEN}; + user-select: none; } ` const LARGE_MODAL_STYLE = css` @@ -73,5 +74,6 @@ const LARGE_MODAL_STYLE = css` @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { height: 100%; overflow: ${OVERFLOW_HIDDEN}; + user-select: none; } ` diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx index e378b25d769..00fa95072c1 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx @@ -102,9 +102,9 @@ export function TwoColLwInfoAndDeck( >['infoProps']['type'] => { switch (selectedRecoveryOption) { case MANUAL_MOVE_AND_SKIP.ROUTE: - case MANUAL_REPLACE_AND_RETRY.ROUTE: return 'location-arrow-location' default: + case MANUAL_REPLACE_AND_RETRY.ROUTE: return 'location' } } diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/TwoColLwInfoAndDeck.test.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/TwoColLwInfoAndDeck.test.tsx index 15094e5aacb..0629038f800 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/TwoColLwInfoAndDeck.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/TwoColLwInfoAndDeck.test.tsx @@ -98,7 +98,7 @@ describe('TwoColLwInfoAndDeck', () => { expect(vi.mocked(LeftColumnLabwareInfo)).toHaveBeenCalledWith( expect.objectContaining({ title: 'Manually replace labware on deck', - type: 'location-arrow-location', + type: 'location', bannerText: 'Ensure labware is accurately placed in the slot to prevent further errors.', }), diff --git a/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx b/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx index 043b2b8b843..cbc0d68e353 100644 --- a/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx +++ b/app/src/pages/ODD/RobotSettingsDashboard/RobotSettingsList.tsx @@ -200,7 +200,7 @@ export function RobotSettingsList(props: RobotSettingsListProps): JSX.Element { settingName={t('app_settings:error_recovery_mode')} dataTestId="RobotSettingButton_error_recovery_mode" settingInfo={t('app_settings:error_recovery_mode_description')} - iconName="recovery" + iconName="recovery-alt" rightElement={} onClick={toggleERSettings} /> diff --git a/app/src/pages/ODD/RobotSettingsDashboard/__tests__/RobotSettingsDashboard.test.tsx b/app/src/pages/ODD/RobotSettingsDashboard/__tests__/RobotSettingsDashboard.test.tsx index 00b70120809..9fa824ec0b9 100644 --- a/app/src/pages/ODD/RobotSettingsDashboard/__tests__/RobotSettingsDashboard.test.tsx +++ b/app/src/pages/ODD/RobotSettingsDashboard/__tests__/RobotSettingsDashboard.test.tsx @@ -113,7 +113,7 @@ describe('RobotSettingsDashboard', () => { screen.getByText('Robot System Version') screen.getByText('Network Settings') screen.getByText('Status LEDs') - screen.getByText('Error Recovery Mode') + screen.getByText('Recovery mode') screen.getByText( 'Control the strip of color lights on the front of the robot.' ) diff --git a/components/src/icons/icon-data.ts b/components/src/icons/icon-data.ts index 9f8338c7e87..c4f2cb46466 100644 --- a/components/src/icons/icon-data.ts +++ b/components/src/icons/icon-data.ts @@ -655,6 +655,11 @@ export const ICON_DATA_BY_NAME: Record< 'M24.4 49.6H34.2V38.6H44.2V29.8H34.2V18.8H24.4V29.8H13.4V38.6H24.4V49.6ZM28.8 72C20.46 69.9 13.575 65.115 8.145 57.645C2.715 50.175 0 41.88 0 32.76V10.8L28.8 0L57.6 10.8V32.76C57.6 41.88 54.885 50.175 49.455 57.645C44.025 65.115 37.14 69.9 28.8 72Z', viewBox: '0 0 58 72', }, + 'recovery-alt': { + path: + 'M14.5 27.2563H17.5V11.4062H14.5V27.2563ZM16 40.4062C11.3333 39.2396 7.5 36.5312 4.5 32.2812C1.5 28.0312 0 23.3729 0 18.3062V6.40625L16 0.40625L32 6.40625V18.3062C32 23.3729 30.5 28.0312 27.5 32.2812C24.5 36.5312 20.6667 39.2396 16 40.4062ZM16 37.3063C19.8333 36.0396 22.9583 33.6479 25.375 30.1313C27.7917 26.6146 29 22.6729 29 18.3062V8.50625L16 3.60625L3 8.50625V18.3062C3 22.6729 4.20833 26.6146 6.625 30.1313C9.04167 33.6479 12.1667 36.0396 16 37.3063Z M23.85 17.9062V20.9062H8V17.9062H23.85Z M17.5 17.9062H14.5V20.9062H17.5V17.9062Z', + viewBox: '0 0 32 41', + }, 'radiobox-blank': { path: 'M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z', From c0f95deec1266b215c73e1bddbbc5470d68d86f9 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 18 Nov 2024 20:09:00 -0500 Subject: [PATCH 027/220] fix(app): Fix `failedCommand` caching issues (#16874) Closes RABR-671, RQA-3213, and RQA-3595 --- .../useCurrentlyRecoveringFrom.test.ts | 94 ++++++++++++++++++- .../hooks/useCurrentlyRecoveringFrom.ts | 40 +++++++- .../ErrorRecoveryFlows/hooks/useERUtils.ts | 13 ++- .../hooks/useRetainedFailedCommandBySource.ts | 4 +- .../organisms/ErrorRecoveryFlows/index.tsx | 77 ++++++++------- .../protocols/hooks/useRunningStepCounts.ts | 19 +--- app/src/resources/protocols/utils.ts | 26 +++++ 7 files changed, 211 insertions(+), 62 deletions(-) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts index 4b177972851..dc3bb2dd2be 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts @@ -42,9 +42,11 @@ describe('useCurrentlyRecoveringFrom', () => { }, }, }, + isFetching: false, } as any) vi.mocked(useCommandQuery).mockReturnValue({ data: { data: 'mockCommandDetails' }, + isFetching: false, } as any) const { result } = renderHook(() => @@ -69,8 +71,11 @@ describe('useCurrentlyRecoveringFrom', () => { data: { links: {}, }, + isFetching: false, + } as any) + vi.mocked(useCommandQuery).mockReturnValue({ + isFetching: false, } as any) - vi.mocked(useCommandQuery).mockReturnValue({} as any) const { result } = renderHook(() => useCurrentlyRecoveringFrom(MOCK_RUN_ID, RUN_STATUS_AWAITING_RECOVERY) @@ -94,9 +99,11 @@ describe('useCurrentlyRecoveringFrom', () => { }, }, }, + isFetching: false, } as any) vi.mocked(useCommandQuery).mockReturnValue({ data: { data: 'mockCommandDetails' }, + isFetching: false, } as any) const { result } = renderHook(() => @@ -111,6 +118,91 @@ describe('useCurrentlyRecoveringFrom', () => { expect(result.current).toStrictEqual('mockCommandDetails') }) + it('returns null if all commands query is still fetching', () => { + vi.mocked(useNotifyAllCommandsQuery).mockReturnValue({ + data: { + links: { + currentlyRecoveringFrom: { + meta: { + runId: MOCK_RUN_ID, + commandId: MOCK_COMMAND_ID, + }, + }, + }, + }, + isFetching: true, + } as any) + vi.mocked(useCommandQuery).mockReturnValue({ + data: { data: 'mockCommandDetails' }, + isFetching: false, + } as any) + + const { result } = renderHook(() => + useCurrentlyRecoveringFrom(MOCK_RUN_ID, RUN_STATUS_AWAITING_RECOVERY) + ) + + expect(result.current).toStrictEqual(null) + }) + + it('returns null if command query is still fetching', () => { + vi.mocked(useNotifyAllCommandsQuery).mockReturnValue({ + data: { + links: { + currentlyRecoveringFrom: { + meta: { + runId: MOCK_RUN_ID, + commandId: MOCK_COMMAND_ID, + }, + }, + }, + }, + isFetching: false, + } as any) + vi.mocked(useCommandQuery).mockReturnValue({ + data: { data: 'mockCommandDetails' }, + isFetching: true, + } as any) + + const { result } = renderHook(() => + useCurrentlyRecoveringFrom(MOCK_RUN_ID, RUN_STATUS_AWAITING_RECOVERY) + ) + + expect(result.current).toStrictEqual(null) + }) + + it('resets isReadyToShow when run exits recovery mode', () => { + const { rerender, result } = renderHook( + ({ status }) => useCurrentlyRecoveringFrom(MOCK_RUN_ID, status), + { initialProps: { status: RUN_STATUS_AWAITING_RECOVERY } } + ) + + vi.mocked(useNotifyAllCommandsQuery).mockReturnValue({ + data: { + links: { + currentlyRecoveringFrom: { + meta: { + runId: MOCK_RUN_ID, + commandId: MOCK_COMMAND_ID, + }, + }, + }, + }, + isFetching: false, + } as any) + vi.mocked(useCommandQuery).mockReturnValue({ + data: { data: 'mockCommandDetails' }, + isFetching: false, + } as any) + + rerender({ status: RUN_STATUS_AWAITING_RECOVERY }) + + expect(result.current).toStrictEqual('mockCommandDetails') + + rerender({ status: RUN_STATUS_IDLE } as any) + + expect(result.current).toStrictEqual(null) + }) + it('calls invalidateQueries when the run enters recovery mode', () => { renderHook(() => useCurrentlyRecoveringFrom(MOCK_RUN_ID, RUN_STATUS_AWAITING_RECOVERY) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts index d0273643b61..9ea9d468697 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts @@ -1,4 +1,4 @@ -import { useEffect } from 'react' +import { useEffect, useState } from 'react' import { useQueryClient } from 'react-query' import { @@ -23,13 +23,15 @@ const VALID_RECOVERY_FETCH_STATUSES = [ ] as Array // Return the `currentlyRecoveringFrom` command returned by the server, if any. -// Otherwise, returns null. +// The command will only be returned after the initial fetches are complete to prevent rendering of stale data. export function useCurrentlyRecoveringFrom( runId: string, runStatus: RunStatus | null ): FailedCommand | null { const queryClient = useQueryClient() const host = useHost() + const [isReadyToShow, setIsReadyToShow] = useState(false) + // There can only be a currentlyRecoveringFrom command when the run is in recovery mode. // In case we're falling back to polling, only enable queries when that is the case. const isRunInRecoveryMode = VALID_RECOVERY_FETCH_STATUSES.includes(runStatus) @@ -38,10 +40,15 @@ export function useCurrentlyRecoveringFrom( useEffect(() => { if (isRunInRecoveryMode) { void queryClient.invalidateQueries([host, 'runs', runId]) + } else { + setIsReadyToShow(false) } }, [isRunInRecoveryMode, host, runId]) - const { data: allCommandsQueryData } = useNotifyAllCommandsQuery( + const { + data: allCommandsQueryData, + isFetching: isAllCommandsFetching, + } = useNotifyAllCommandsQuery( runId, { cursor: null, pageLength: 0 }, // pageLength 0 because we only care about the links. { @@ -54,7 +61,10 @@ export function useCurrentlyRecoveringFrom( // TODO(mm, 2024-05-21): When the server supports fetching the // currentlyRecoveringFrom command in one step, do that instead of this chained query. - const { data: commandQueryData } = useCommandQuery( + const { + data: commandQueryData, + isFetching: isCommandFetching, + } = useCommandQuery( currentlyRecoveringFromLink?.meta.runId ?? null, currentlyRecoveringFromLink?.meta.commandId ?? null, { @@ -62,5 +72,25 @@ export function useCurrentlyRecoveringFrom( } ) - return isRunInRecoveryMode ? commandQueryData?.data ?? null : null + // Only mark as ready to show when waterfall fetches are complete + useEffect(() => { + if ( + isRunInRecoveryMode && + !isAllCommandsFetching && + !isCommandFetching && + !isReadyToShow + ) { + setIsReadyToShow(true) + } + }, [ + isRunInRecoveryMode, + isAllCommandsFetching, + isCommandFetching, + isReadyToShow, + ]) + + const shouldShowCommand = + isRunInRecoveryMode && isReadyToShow && commandQueryData?.data + + return shouldShowCommand ? commandQueryData.data : null } diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts index ecf03e4f56b..72e9bb481bc 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useERUtils.ts @@ -1,3 +1,5 @@ +import { useMemo } from 'react' + import { useInstrumentsQuery } from '@opentrons/react-api-client' import { useRouteUpdateActions } from './useRouteUpdateActions' @@ -13,12 +15,12 @@ import { } from '/app/resources/runs' import { useRecoveryOptionCopy } from './useRecoveryOptionCopy' import { useRecoveryActionMutation } from './useRecoveryActionMutation' -import { useRunningStepCounts } from '/app/resources/protocols/hooks' import { useRecoveryToasts } from './useRecoveryToasts' import { useRecoveryAnalytics } from '/app/redux-resources/analytics' import { useShowDoorInfo } from './useShowDoorInfo' import { useCleanupRecoveryState } from './useCleanupRecoveryState' import { useFailedPipetteUtils } from './useFailedPipetteUtils' +import { getRunningStepCountsFrom } from '/app/resources/protocols' import type { LabwareDefinition2, @@ -102,7 +104,14 @@ export function useERUtils({ pageLength: 999, }) - const stepCounts = useRunningStepCounts(runId, runCommands) + const stepCounts = useMemo( + () => + getRunningStepCountsFrom( + protocolAnalysis?.commands ?? [], + failedCommand?.byRunRecord ?? null + ), + [protocolAnalysis != null, failedCommand] + ) const analytics = useRecoveryAnalytics() diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRetainedFailedCommandBySource.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRetainedFailedCommandBySource.ts index 90afa5851da..5a226fddcf1 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRetainedFailedCommandBySource.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRetainedFailedCommandBySource.ts @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import { useState, useLayoutEffect } from 'react' import type { RunTimeCommand } from '@opentrons/shared-data' import type { ErrorRecoveryFlowsProps } from '..' @@ -27,7 +27,7 @@ export function useRetainedFailedCommandBySource( setRetainedFailedCommand, ] = useState(null) - useEffect(() => { + useLayoutEffect(() => { if (failedCommandByRunRecord !== null) { const failedCommandByAnalysis = protocolAnalysis?.commands.find( diff --git a/app/src/organisms/ErrorRecoveryFlows/index.tsx b/app/src/organisms/ErrorRecoveryFlows/index.tsx index 6461ae773fc..fff4acb5426 100644 --- a/app/src/organisms/ErrorRecoveryFlows/index.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/index.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState } from 'react' +import { useMemo, useEffect, useState } from 'react' import { useSelector } from 'react-redux' import { @@ -7,10 +7,12 @@ import { RUN_STATUS_AWAITING_RECOVERY_PAUSED, RUN_STATUS_BLOCKED_BY_OPEN_DOOR, RUN_STATUS_FAILED, + RUN_STATUS_FINISHING, RUN_STATUS_IDLE, RUN_STATUS_PAUSED, RUN_STATUS_RUNNING, RUN_STATUS_STOP_REQUESTED, + RUN_STATUS_STOPPED, RUN_STATUS_SUCCEEDED, } from '@opentrons/api-client' import { @@ -41,10 +43,13 @@ const VALID_ER_RUN_STATUSES: RunStatus[] = [ RUN_STATUS_STOP_REQUESTED, ] +// Effectively statuses that are not an "awaiting-recovery" status OR "stop requested." const INVALID_ER_RUN_STATUSES: RunStatus[] = [ RUN_STATUS_RUNNING, RUN_STATUS_PAUSED, RUN_STATUS_BLOCKED_BY_OPEN_DOOR, + RUN_STATUS_FINISHING, + RUN_STATUS_STOPPED, RUN_STATUS_FAILED, RUN_STATUS_SUCCEEDED, RUN_STATUS_IDLE, @@ -52,7 +57,6 @@ const INVALID_ER_RUN_STATUSES: RunStatus[] = [ export interface UseErrorRecoveryResult { isERActive: boolean - /* There is no FailedCommand if the run statis is not AWAITING_RECOVERY. */ failedCommand: FailedCommand | null } @@ -61,45 +65,48 @@ export function useErrorRecoveryFlows( runStatus: RunStatus | null ): UseErrorRecoveryResult { const [isERActive, setIsERActive] = useState(false) - // If client accesses a valid ER runs status besides AWAITING_RECOVERY but accesses it outside of Error Recovery flows, don't show ER. const [hasSeenAwaitingRecovery, setHasSeenAwaitingRecovery] = useState(false) const failedCommand = useCurrentlyRecoveringFrom(runId, runStatus) - if ( - !hasSeenAwaitingRecovery && - ([ - RUN_STATUS_AWAITING_RECOVERY, - RUN_STATUS_AWAITING_RECOVERY_BLOCKED_BY_OPEN_DOOR, - RUN_STATUS_AWAITING_RECOVERY_PAUSED, - ] as Array).includes(runStatus) - ) { - setHasSeenAwaitingRecovery(true) - } - // Reset recovery mode after the client has exited recovery, otherwise "cancel run" will trigger ER after the first recovery. - else if ( - hasSeenAwaitingRecovery && - runStatus != null && - INVALID_ER_RUN_STATUSES.includes(runStatus) - ) { - setHasSeenAwaitingRecovery(false) - } - - const isValidRunStatus = - runStatus != null && - VALID_ER_RUN_STATUSES.includes(runStatus) && - hasSeenAwaitingRecovery + // The complexity of this logic exists to persist Error Recovery screens past the server's definition of Error Recovery. + // Ex, show a "cancelling run" modal in Error Recovery flows despite the robot no longer being in a recoverable state. - if (!isERActive && isValidRunStatus && failedCommand != null) { - setIsERActive(true) - } - // Because multiple ER flows may occur per run, disable ER when the status is not "awaiting-recovery" or a - // terminating run status in which we want to persist ER flows. Specific recovery commands cause run status to change. - // See a specific command's docstring for details. - // ER handles a null failedCommand outside the splash screen, so we shouldn't set it false here. - else if (isERActive && !isValidRunStatus) { - setIsERActive(false) + const isValidERStatus = (status: RunStatus | null): boolean => { + return ( + status !== null && + (status === RUN_STATUS_AWAITING_RECOVERY || + (VALID_ER_RUN_STATUSES.includes(status) && hasSeenAwaitingRecovery)) + ) } + // If client accesses a valid ER runs status besides AWAITING_RECOVERY but accesses it outside of Error Recovery flows, + // don't show ER. + useEffect(() => { + if (runStatus != null) { + const isAwaitingRecovery = + VALID_ER_RUN_STATUSES.includes(runStatus) && + runStatus !== RUN_STATUS_STOP_REQUESTED + + if (isAwaitingRecovery && !hasSeenAwaitingRecovery) { + setHasSeenAwaitingRecovery(true) + } else if (INVALID_ER_RUN_STATUSES.includes(runStatus)) { + setHasSeenAwaitingRecovery(false) + } + } + }, [runStatus, hasSeenAwaitingRecovery]) + + // Manage isERActive state, the condition that actually renders Error Recovery. + useEffect(() => { + const shouldBeActive = + isValidERStatus(runStatus) && + // The failedCommand is null when a stop is requested, but we still want to persist Error Recovery in specific circumstances. + (failedCommand !== null || runStatus === RUN_STATUS_STOP_REQUESTED) + + if (shouldBeActive !== isERActive) { + setIsERActive(shouldBeActive) + } + }, [runStatus, failedCommand, hasSeenAwaitingRecovery, isERActive]) + return { isERActive, failedCommand, diff --git a/app/src/resources/protocols/hooks/useRunningStepCounts.ts b/app/src/resources/protocols/hooks/useRunningStepCounts.ts index 915676ba5ec..f3a7cb5028f 100644 --- a/app/src/resources/protocols/hooks/useRunningStepCounts.ts +++ b/app/src/resources/protocols/hooks/useRunningStepCounts.ts @@ -3,6 +3,7 @@ import { useMostRecentCompletedAnalysis } from '/app/resources/runs' import { useLastRunProtocolCommand } from './useLastRunProtocolCommand' import type { CommandsData } from '@opentrons/api-client' +import { getRunningStepCountsFrom } from '/app/resources/protocols' export interface StepCounts { /* Excludes "fixit" commands. Returns null if the step is not found. */ @@ -35,21 +36,5 @@ export function useRunningStepCounts( commandsData ?? null ) - const lastRunAnalysisCommandIndex = analysisCommands.findIndex( - c => c.key === lastRunCommandNoFixit?.key - ) - - const currentStepNumberByAnalysis = - lastRunAnalysisCommandIndex === -1 ? null : lastRunAnalysisCommandIndex + 1 - - const hasRunDiverged = - lastRunCommandNoFixit?.key == null || currentStepNumberByAnalysis == null - - const totalStepCount = !hasRunDiverged ? analysisCommands.length : null - - return { - currentStepNumber: currentStepNumberByAnalysis, - totalStepCount, - hasRunDiverged, - } + return getRunningStepCountsFrom(analysisCommands, lastRunCommandNoFixit) } diff --git a/app/src/resources/protocols/utils.ts b/app/src/resources/protocols/utils.ts index 82d62e8cc0b..cfee1b61eb6 100644 --- a/app/src/resources/protocols/utils.ts +++ b/app/src/resources/protocols/utils.ts @@ -1,4 +1,6 @@ import type { RunTimeCommand } from '@opentrons/shared-data' +import type { RunCommandSummary } from '@opentrons/api-client' +import type { StepCounts } from '/app/resources/protocols/hooks' export function isGripperInCommands(commands: RunTimeCommand[]): boolean { return ( @@ -8,3 +10,27 @@ export function isGripperInCommands(commands: RunTimeCommand[]): boolean { ) ?? false ) } + +// See useRunningStepCounts. +export function getRunningStepCountsFrom( + analysisCommands: RunTimeCommand[], + lastRunProtocolCommand: RunCommandSummary | null +): StepCounts { + const lastRunAnalysisCommandIndex = analysisCommands.findIndex( + c => c.key === lastRunProtocolCommand?.key + ) + + const currentStepNumberByAnalysis = + lastRunAnalysisCommandIndex === -1 ? null : lastRunAnalysisCommandIndex + 1 + + const hasRunDiverged = + lastRunProtocolCommand?.key == null || currentStepNumberByAnalysis == null + + const totalStepCount = !hasRunDiverged ? analysisCommands.length : null + + return { + currentStepNumber: currentStepNumberByAnalysis, + totalStepCount, + hasRunDiverged, + } +} From abaade69ce834e36c8646265053bc5bc4e296f19 Mon Sep 17 00:00:00 2001 From: Brayan Almonte Date: Tue, 19 Nov 2024 10:17:22 -0500 Subject: [PATCH 028/220] fix(api): add 10s delay after updating the plate reader to give time to boot-up. (#16882) --- api/src/opentrons/hardware_control/modules/absorbance_reader.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/src/opentrons/hardware_control/modules/absorbance_reader.py b/api/src/opentrons/hardware_control/modules/absorbance_reader.py index ab6ce1bb22b..ec4a80b7f60 100644 --- a/api/src/opentrons/hardware_control/modules/absorbance_reader.py +++ b/api/src/opentrons/hardware_control/modules/absorbance_reader.py @@ -312,6 +312,8 @@ async def update_device(self, firmware_file_path: str) -> Tuple[bool, str]: log.debug(f"Updating {self.name}: {self.port} with {firmware_file_path}") self._updating = True success, res = await self._driver.update_firmware(firmware_file_path) + # it takes time for the plate reader to re-init after an update. + await asyncio.sleep(10) self._device_info = await self._driver.get_device_info() await self._poller.start() self._updating = False From 31a819d1691ba9c72f02c0666bee5cd7cc25a842 Mon Sep 17 00:00:00 2001 From: Shlok Amin Date: Tue, 19 Nov 2024 10:20:11 -0500 Subject: [PATCH 029/220] feat(app, opentrons-ai, labware-library): update deck riser image (#16875) https://github.com/Opentrons/opentrons/pull/16870 but for chore_release-8.2.0 --- .../labware/opentrons_flex_deck_riser.png | Bin 17859 -> 690224 bytes .../Labware/LabwareDetails/labware-images.ts | 3 + .../components/labware-ui/labware-images.ts | 2 +- .../src/images/opentrons_flex_deck_riser.jpg | Bin 1009921 -> 0 bytes .../src/images/opentrons_flex_deck_riser.png | Bin 0 -> 690224 bytes .../labwares/opentrons_flex_deck_riser.png | Bin 0 -> 690224 bytes .../LabwareDiagram/labware-images.ts | 618 ++++++++++++++++++ 7 files changed, 622 insertions(+), 1 deletion(-) delete mode 100644 labware-library/src/images/opentrons_flex_deck_riser.jpg create mode 100644 labware-library/src/images/opentrons_flex_deck_riser.png create mode 100644 opentrons-ai-client/src/assets/images/labwares/opentrons_flex_deck_riser.png create mode 100644 opentrons-ai-client/src/molecules/LabwareDiagram/labware-images.ts diff --git a/app/src/assets/images/labware/opentrons_flex_deck_riser.png b/app/src/assets/images/labware/opentrons_flex_deck_riser.png index a06f26bf4458e6acd562ae72631c3607be13675a..1fecdf8ca4b677cbc16d18f868d1940fc5888595 100644 GIT binary patch literal 690224 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≫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 Q$|RMV!Ajm!q35{xO&#jf7}5=O2F)X-Dg3& z4xzo4640bsb8)v_sc|oGT@t1%@dUuoo%vT-rLf#0h(0nx?Vzpdp4eT?3?h!FMkI zM=T)!@1DQf3H+`AAF@l?H1)bm*T`|T1<@X`#+vSsx1e$EajT5tNtQuWTi zd%jfK+AI(9C}O=LBsx&wb2H8l%kSMQ1K()GUX4%Gh`VK$YV8*&fp<8;sDZf{jlmuS0sWXsIUG9DJdMXIfjOvt;DeoR<D zm{Zm+W1}x%IJV@3vm}W3)C|ioOM5GLfL{PiM6>C~_ht_hEgeF&gXm;P{`TXy(iOGtvX)8CKAa-Ue8lEpZwdp#(o(MTBZVS5|uiR4NNM zG<@+>8SaWWm4XCg<_W+olK}XQf4cjJ7k(y}fL-Bz)k3yk<#4=+?JEL-2(4yCPwoHb z`xWs(cKz;(asVRpZ-j8|R%AD?<5=ZGz z=g$eUDd^!6V3w-*w*N5M zHlO`%K6tMQ_@~8XxMgm$m$X3ogpEbNA*p}u0fi2qTnG4EEvP3i`-!cCcat`p-oA=C zxWimN7;o?4{Uo-|Z6a~&ylv=6jPUN38Y7fmj>IUhqh)SZg)-FE`i@(SIPTqpeGE*D zVRh5ikP7!32hW^Mt9r?ZQQ#FQNq^bj1w02n!YvuF7%_gEdE$fZa_Y$AA6EH&XGp(h z;LbQS;XD1?jJOUx3#B6%m^1R}EA(jAe-&!OF#lDKR=@b;rGh-Xv8bta=bZsnL4`k1 za{+3%RaU&uds3&C9tsxfM)WxvwpZP}vf~&4vBDmhz@a@{-A(tGd=#%^?38fby%KYK zHgA~WO30Ywv#`?s9aE-~?UnbiBji6P&YKOcU51oFG+AitplFG|QezaP&!69Ln`bv}}FHlelePNKC7RX$AbUU+8brl+$$UOvIb zS{9#RkYOL9LC{E3D*WfvS*JvSN`yFas)ELuPFc|(+1P^ZR1CNY^y}MYm6?W< zb~!>N6WrpEww~Ad0DlG%V;FSki=vSWVX4i#(q!ai7Up~dEmq&exBB&TbGW8DsSUPH z+p@%7%x`YM?NA%waiz@Z%y^o8C2-#qk~kaV8+iSZcrN8e9y&KKs)I5%c*~f_Mto0b zrL)i)E2Kp|@rVl6Vcapf{)Kxur6h8B?TlL>xFfYp%{jFQerf{(07j%R*wy56-iYXG z4=}z&JRs539|-jbNui;OaW#kvdMFLR@01tFO8;@Tix1&zub@)+_Ao27m^$@Fs zl0=mN0jdG0ycF#eK!!BVdiM?ZP_o%`@oZJR>u@ninsjkZ>(Kj05kU066-H`}pVs_kOot z8S;ybp|LEgeHdo;sWp_B^2ktrbjt@i%)fyZ*IY!Cc{DHn%yh2PT*gF?t#= zkBLb+_ZfgU{(m#s#< z4nol~%qu&ciCkr{DiI2o0oNy3)CbUtXyC#8ldjzs5&03Fq|i~|s_*jC)(g!1M7R4c zhkb%cE51kuREgZU51i}4BC#C+d5f+GKRbDVnY(B&04O;mQBk+3qzfq46Mekl#MbBb z^ACbO8i)Kdp=*#$TaMF8i4&M7(Ubgr{zD*Tgg3F;lDwYON5u&~4zKMc;tP-6V)|Po zH=^-#j_)5(tOdGJJ@&llKn@?wl5~C19zj)YCph&OhRCvdHeWNUXa9mc3HnQb$Q`~4 z;!<~=dO9Mg=~Zd&ITIO?)v9%Go!a_E3Bm`AYxNLvXa)o&?TOeX6i+$j)`n_DnxU^O z?@xGJJAGI59doscE7XhRi%%VcQw>{JQ!_`s6R6%%liA5-6?7zq($5-fTvqP*rjxXF zT>9)i;epBEz`(NqlmOy%{-y!C9sq)z0aa~yv8y|WbU+hGCZOoN{~!S>O3Ja-{#5~p zfJ)1h**p1Q|CJli2X#~Ih@N{-x}`OLBmk5SfN76TyZjztc}=G23dk3Rd@lBU@K*wP zYO+xxUMsTdm!X+)#g-H?F&D-q>vQ^9WG%1D`CDfLLA4s#E#|?agx`)PH0wC<3A1dS zxtG}7J>3&txA?KF+D^9nH9%^kAAFSeGz!Z3^)0sEpL(bPQGSx9%-G60W-s9Lw3e$g zHCcp*sdJ8mnxIeZ8YtQ;Gd5EvWA>oHj~QI(W+}i0&pn>LI959G#=tLQXSrp~$9Y_* zLo;5vA#nq|8xVd%`jhxpqrv*kV%m+5&Am2D|GMhvqs<<$8a>|m>PcLb{|n!m4)@4& zaW#iuHw?x^j#(>}7K3*?F#;WXu>p*S(i{4%yNJ7GIY&cyJ(x<`@BP6xU*pAl<%Y5p zOxt&5D$m^Oh%SvTdw(6bOE>b5E|U({O0rwrurPtL`Le^=w&)OwOmjl3M@Rlbhkqm6 zh^8}$af|ZZ^6?{Kbv^knBAlDCD1B2r*K^J9*PX@u!~Dlv0XiQATD)ANa%hI(K-MgE zPR7DteXUdv-^)A5f7*W}U|3~VCua&psJFjyo_|%+oNT#Sp)aIv2&zLbJ7k(X*D_Om zeRr;nll26XZP>a5R3w;^&u|puW@-IAyYS-UT73t=)Yt4m!qJE)o>axtI=R&v`1_jH zypeJ{PGY;3+wdcP4>iEfkd~`xg2~l4NhFM+oKM|S`26kT@IU6vi-|zG-gl(d^?zUBl&<(jCcfMFutS~`0e86;T?DL^j zD4OWD1r5T50J!cr^O4l0o!=8hBYe^N2IBl8xnE@D{TcF|Z2dXU7ZvT50u^FTLO#Ph zQS{WnO}(tdqpm079M1~XQe@6$2&cjtF+m$Sh48$js5myb&BRJ~cH(wif>n=%3o(ai9ML%6Z1dfPD~nCT;6z{llyBr6R{* ziy!?!fg^|aO|BAEXS!a6`JZ&VKWF#$ z!?AtNGdivtkaI&Dm{$#oQE_A&rItaP$1Uou$7E6+?))xM*!!Vx%g15+Xn|H=Rn=dY z{`8yIXPj}Rw8dX7%J}*#s>eJ^y%9&}m|#=RW|TfgjI?<(JWbm;g;zQ*X>gD_y=&g` z(OBOT%Pt+&?QxsaNUv6zA$?!H;=1SLkDnpd)wKs0s7`UJd|_c!+R@nzfg5w~T`jpx zv&w!;Ho&fpuD*~IC>1f5*&lP4|HeStAs?{_oOPplOZyXwuAc1w@Z!(NXIh}sqx(H- z=06wqXm!`zddwM0SY2UOlXm)StRc3{iH$Z{w^2SK9#DEK|FB2pM5L9#d8IUaaar;G zb-{7S<<~K=z@Gag*`cQjdR|CsLmaAnSMRQ0-MhL2Z20?#K1_G0Wz>*It1~4h#AyA? z;=owp)2U3@t62kc|D%w;jaeOsqgUiLW(c?dW!BB5B3$3axnsUT3B4QDgP0-DxPxg!VSmN(mdky zmllKZS>D^x?-sr?hox9+N;btd;<~x6ZhxxYf3ypbI>Z~yxThhg83}D&FYF1xIUri+ zKi53a*%7rMn(B$n^CB<5NbeIp0c2rL&d%{6O8_nI^Jn>M{)xS+KcsvE&=(0{VK6x+ zjbJjyarp6aAtm_QPHTWe!@h10McuoUvw=DIw^{K$;GuwS?NHMvbNlyo#AxrvipOo2 zR}Ta$q?8NnsinD?a>m>FLQq{=&0)+Z^XznEzj{eHKtj9aGVR=7^xj5&qwul{Nm%5{ zz2o~Tz)#EfhLlUwOCxqqqwIIy(A2L_>b|(w0%KCj=wgpnuM0K^A-7$sdHWu1F26GM zL&=E*TH3}Txv_GHQ3EPBEp}LW*r_FU!*KLLnAi5B#cq#mJAh@d)AK(7U*Lc_6h{`T==)`A@)gLb`uD|{@5HJFbk!SLbaa!L=a|Bf)9>vO z8o$>3aoa(fKXa?-R2NecEH&n_CU8msZ4e5+8<9=XsT z8sK`d?yAZ{(w28}Y`?yvVFbIYFhh^^S5S;)J~i`XR7ylc?X84yKgYuzVjZOBzHwH* z{L-4I%FxPVXrSI*0xOg0r}L~;gxR#krzC1D%k__Ntnvr07N1VAVMFMo{YsVPbsQ{9kn-Ce^7YM2LL-uON14Ew z-&w`UO1m@A@X@s;B%dXR>s;yDTFsc?$if;GRA=86RhC|L9G25E>kOvzGs!05de*0H z3)MA4^5XR&6?U^mvSSaa`IR^J8Oz4=rO3KkFz-T95S!5k4m0u{T%>u6aKN~qjb$b7%RVj(uaz!6t zrmeuhn=_Z%wnejfAhi$hhMc!Udv1|OyrTAjErx8-5hUXun8#%mv|Gx_o)nP99N-q5 ziiHF$exUR2UDSWS`?Z=C>rW0=*+UnoY*^ zv}hZiO0Wcr(E?`B)~hH+$zG4TI$6LSU~=W?Gzld~A!f142h$X&Jh>q#nRD%wCiplV z(C^+dX98bI&jA}H#e^SpFqwy_`u&nxFylR8((^` z$UCkX|H%7Eg4j#@J6YHRMUOisU0}eh7_jc3;^Ysvw2+ao%SKq1-_?*b(|D2O z1#+dqqOnO@50cj9utc{SDmXXbQO)DYlfMcs$|Z0&)TghK3%j@jA^f~!5HFkG8gdO8 zI$1?Ea*x-(xhpP&+9k0#lY#5OV4#UJFaBEN;ay6! zpt*VCMxGX_^h~?^=ZN&6EKFHqa8m;DMjgu!Z8kpX7CM7=()UQN6xjX9MrZrY^C7wL z{8`6y9=AiT;#_4PzAbA_iM!_7`|5)-g*U!2rkT6eamfe`Gnb2i?dhSVPayrOGG}E4 z)|ofW+r4FiY4<46<%Ze6vK`ND9SIT2^8eakcnrAjTPjGLQl$U$iVEx$GT1)=BM}Nh zMi#(3!Go2=T|IBVwc|?!>>JK|m8{mi$^|!&TlP+;iZl)Fyac&k2j`x#(qMAPwUIH} zXoD$KZ)rXqqXMf_$PCp)`soHE6zy*r_TCwOj{0?IU(hosa%aM+)i8;h6M`#vlBoq| z`r%Vyy_#b^fl**5gQy!h4En1z31SF22%zM=@bv@Et63*+SC8uQ{0~mUY%hznZCQbB z%^_kv44J*@y9^;aP$FgYjB?RKE*?}_%x~|sJT-*RNhNDr-rE&X>RK&1Ow)phiiN)Q ztXSp#V6*V&A4bdTGL23bUzTeBF!(0q--L*@T7^U|h2A9^q62vtz?p{xo`wP0^zA`Y z;|3fburZiAa1={kgv^_-pSSgE{Bdz}=JQcU0rf&I;jDR;(Y+T^L$0@_`c7<$|2XYS zT^E^fL~uQku~x7Rcxpwy+Mm!J(XXOmS0ImaV{nPtr~(vRf36O7R4*+WBu0$Y7&?7V`(gpF+c*0fF^EzJIC3mjwR06QWCg(`9Tf)gy&kueQLz*67_7F;Gt?AD4cWO~ZX#ANXwdl^8^gZ`4{*apE+`(z1 zb5w^L>^l!D{JkVEWR0;ZlyY@lTt$V(|rg1WP%u=II$tPbh|%n zMv(X8SYQPS?HTVgcR<*ys@!*t6*=Be{;B>-kSDNJmMElr1g-3n{hP@0Oa3a)y~5ej zL7!S5MwUS`S3(PhF@__v=_9{iXar*qV`jest?!{!D$VPCW)z$zy~fEy^+7L%WvLuc zB6z)j49^r?kpBZ(;K`iCu?k=o!W&SuKOml2+SZxKJwYe1Kvn%Ks2rm;e8+U z+iO$jM!Z%2+zxVSCcVxK@TXm{ami~99_CGwu944dy7JR$SNv;qOJ)jiboBfhe~iBE z3qr`}nHom*`lln!Sw@^-!jbK2*8LeT`ryL?{F|{1S6V~i+`pOH%8Hc>!wkdvfUv%= zI?T}5`1Zye^Kx%}VM=~Dl#HA~3BDaOe^2Puo9vo|2g(jfA$`^dy^Xay>ibgE!k@Ar zsG{JJI+&h3+K6?!siBBQM(yJ_1)d&FI7Vws0aYX7N?rTkBm&-TQPN%Hd1v-gWy2yP z8!EjGZx-A)W_ey$t_A8l0N{!c0Hsx8NMR@q1TVLZ4!e~>YIONSL zR$|SwFEI`T{b{Wgp|t?}96(Am5vgZ@v1UD^hGD49Ncq&IPv)t)h6%ZK0AUAX!{d7wlb1!CgsStzq?qyY@kZjX^bHAXD za?Viy`BCESaBZ-O7Z-A>UvN)43o!3)+s>3lS{km<;wbGv6nkzPun#oc&#D>|VSdte z8mR%p)qJId6j37=Q@~Wp5I{+H5(kzzFv@SkYJBrx+z^fjX}?0|U7CI%lIm_FiIlx;?4| zieweoj^3(MQb^AebpOwc->&I)KJAR~A(+aNwUcg=Jq<6f^hIRM0#3vf6L)*m!eNc1ZEu$U4l z9A&FQf_FH@-}eoDV10}zRA~F8K)`=RFj*!Jd-rqlppJ#pPJ{s!l?6WqYN#AKlp_Qt z<&p;V3~#?>lQfHGk&_p_cfg&5n-Z&!=$qko|;xFh*Xr z8HxuwT!r%qS3{J^!RBEx+z@&STYHW{HG}qR^w|Zk*(kbW+r@5aJ8}KNj8$-VZ zYObmylWoE^*DkBA>}e10K2CEz^^>-Dt+Y}90+4ZA#P#tqM_mZDj}}+2o$x;s^xka- zriVxQ2ycK_2OH*_(f9~Aequ|GwpM08CjUj`QDAOlo**i^6dm#+%sr6x{E5#L3F3fA z_Va)S4(Iv^?|x2OL6P;XhUb|}3~zsM6`|{O@GSJhU~*7*%{5nJ?ChF#YO{v6FZwAz z^hbKovqzhQ`Zn87WQIT4#!IJ(&rWQSO1LkK?6u$vjIsxfo1Tv6;dDZ1)O@e*RmCZt zx!Tg)?tQb7jb_ETGGs!(`$eGf`q!Z3(o_Anax?jplasfOuEde)>Q}(X)%r}l zHcABK>M+SxHLNE1nn((%k`Be}3PoXznzis~$LU7h-!XtB?T2`v;vtu5HRnglC=!G= zWHy#D@Pi55aRcCa5pMFomKP1#zu&W;0dg3gBwGtGUhcnD#})`?0X)ZhOC-qMxsCme zC}CFgf+RM+rWY$&H$GSDv~o~u>{wsSKeZ30i0?$*^~pVkbbNXeD?6nPN>|torRzU) z!NU%}B;Ouyi^xV1znC|xV$^H^kbX?&_{Cg($UXNKFs;YT05<2Sh)~wp- z{IKAAFi@Sl0kx`>I9SJom7R@Y*%9+8{o&U1U?n7q+tON@zqBG<qxvO~$Qt3s){%C|>ku%iPF33UH(aI$nBQr*@EZ_zCTFB%fZ}}h>U~yp z%m!}Yt^-h|iz%^WzsS5Us&Gczfw0Hd9Tkeb7r$;}>%}8BvLg^_1nH^lULF2Z8$%l~ zb+6E8a}&1Hyk)fZTAJ*Ke9a$-JflEP07^3_h@<-L))qb|B8zkw#+M_PQw+~ztrxt% zvzonhD;Zu}L2(ZRv92vA65l_CgJ4S??awuaUkhZ6Hzxn-_m7iNGuqpSrjjm>w65O?PJ{8qR+uzbbc5l&9x%UM`>+7Bl54oIF}Pd?XKc7D>E*(ugt+kmmlv;c z`C|JP_W}3UwOT0QgfT16-nbT%4;cVl8}|Jgj+?1zSiY?11Vo9lus$2!X3bfGkkYj> z_)&mSZEK6qU;)ZG3qacfcXJ@<{%>6ym|=-p=0)ILz!36po~=mVjsw>DBCcC=$qT%) z&X(g=#$Vp4dyZifp25JrL9DY}$xxdPOk9Jdb)fV#JDa4Baxy14k~8kvNuTkKB%(3e zL9N=y#HBZP+183B{M(242RRB;_lAqI`NnDv-Y-g`UPhOCu8sIbnxuI-O_HlRoKhL3 z^e6tqYfsS1CtT6-Q8e}So8+>)*K-A@&o#(iR_-=OC9G|+>@JvRReKpSJx@XlcM{-EOcF8{{X<+Q}zRn$6A z+7V^c(efW0OS!)#S|X2$NdGLr1|Z8q60Z1#-oO7=(~Iq(omJC0bqOYuGF zsvB#azT4~3^d_EV$-28i+0{rxza6Lz51Sa<;?r#f^h;PIB6K=K;Tbw$r|gYN805ye zZ?uE=*f1f!O4(1%H>~I2Q^?Y2UR?N2fY=QX*J;bM=~d{L^Pz=rvUPBh`a4I&Rs3iU zje8-_^`}5+R}JawR0ReLtG=Zi{UvxWAFC@ z^|T=9gCH+Iwz@y^Y2XC?E8)^0l}RKW2X&wm#7dW+?Y!sqSW8Yfo@^X^uyup|c|^8pPFITcY9XVpoa)``MuCyA_Ne2tjBUb6eb$lH7Fd!L z-EwOvf*rnW*f@LVTR14haqMgO0yb17u`*wqCqx-%3tpBWgD~Za2WVzqhOCSv7A-iV z)=qg!0VkPds~!-C^R3uD9l1u1v-Bsu)p{mFc|z09`y}Wj-J|4G|AO@0)FT=Bd|fu! zdNkIL(G!gMoLb03=7akzduEV_=wgadSHVHpa=ZSkxYZagm79%eLwCF|MvSUP6lE5- zBIk^_Yf{s6iFXAp&8)!y1G%PPg=nRFfs&}=<&oc0h(T z1Hw`wC%33sZcH6+*r;#qeQ#Fu)FeEj>qx`qA5?o%{9cx9moE&jfwA#@mWvtL;qMsb zmH);(fq}bpWq{Whuz*ESY5||a5<#j(T{QmaA9YvUemlzo<-q11LvtT-MjK6J)wxPg2^2;rUQ18E+J!V*u&M}K@ zY4n8xl93Y%$cWiL+>$F|8wBB?$E%tKS)C2vR5tZDgLqH+WmP!qTX@*(Mk1;^mERju z9F%uBT_CyZZJ|G%4GRCH9(Nz`7$)s1slp}7=R{bvRmkKn;J5{h?f+t|qnynKHGpDg z;h9AB+_b|%$KC8>%p0E9eA7`FZGrR;FbuL3ir4V)NIJ`|d-Au{cC?PKnW<@g!{WseErw?Z^tEIY*RA5_#bJ`wdQz4xoXAkFD+D!cXva|M?yDaNbY z4eC|hjbZC{oBCitJL&Lx6UW>Fx;K5mHUo>J`mL42?4uBTgbh}L7SaW(x|L^eH#9OqNse|9*UQBO#FOIbGLC51=JsH7zCw9AI|`l% zWjuc((;qlWRR=JNu@H51zx*kOxc5$hu2|KHvmq8AsQY`5_4uGw_V!HYADzoq*x#l) zj8zD07Vi#l^~=sAXrkBh9sVuOpmP>@Dvrx-HBc=1r=QfR8aJIq`Lur8@#$ksN z?(dyIAl~X|oV|jLO*<;Mg1KH95yJ8&oM?c$;|)lmy+#*@5oG~k1MGlxpa!y6{^^+j zVaVj4yMLIW*Mo(Zgo?vQP`@u~z|9mDK2OV}f*NZfz68M^Oj8wwH2HXXc#e0cd2I3g znq0MUE(*ihR2R^@-A`J^Lvv2S zPs|{YL9mH;Kftp7Nv~{tC3@`wNfzL|6<;Z^*J3@hj^o<|=Og3DCaEUg1uC5EYAx+k zMnLsmE#PO?`)|P;`1|BVjFwT+GRFhexg^n$N)$yA4X=QmLu5e9H3OTwy1JT|9bo%M zN*!kfXJGOHqP0dz^5z~?*65CSGKzJ%Mh29 ziMr~N1sMjPZYc|n4)>8*&_h?op9!pApl)Wu;CfHe7!O^@+=XDr=_9!Ng;Kk9i-0z$ z3k=#+CKe&XHHlHx9XkoSrxT#oQGOBmuBs|+IQuv{#Qa)?x0$&uSg2#373ts-seEu5 zjju{WDg(K)zqw3wNPn}OodY`YCRo7x8F+npq=;Qvdd`lSXdGMjN$!z6PKYi5Io2;P zygNXq7?_cMJ%Y7Fym)xg_im^A+v8ZWmM&q#7wQOvvz-&H6`ee$2DFxIf9Z_;SND4L z&6ZXUKx^3R!gg7_Zq*Q4X+TM^>2(?p;p&H$v&BG%Lp2jCtjy@6GF;Q*pmdwxl^YFO zkPSfer24j$#;^A3n!|CPIOLv|7-^YjG;>g!@j!+mC%~W2o zA>v`>J$;>rp?6LNKj{s=Tyq`8!b<#W3t#7JOyQbw)mk;4+p|X(x0sQe zLjXWz1J#pS?|aI$FI?y*^c=oPxccKU(4*@XejuLIjEpkuFT5JRg@6q#4T2rlsQ1kZ z665<*V`0*0OQxktr^mHSRDxGCgp+>zk^&A!HQ~Kr38r6?O!(0|1cT7!p$#pLO+m>(H>q!|hwr#{a2UPocga^ZvEr$XV zF!@s5jDdnmq_@r>`Kkpwa7KP51bIvBO>HD`H&ObXc!-vfSC`6k z&D1qwfxfXh6grQ~4getdfVsTsMyKeHh&u5^XSV44=J5g>=TKR7&9%TW&lOFxMBWp8 z)K0bG{h?SRDaO_h4hHOLtK>62@@e)&30zQ&N*h@k(Qgv_~tuzDvo*(%^g%dxVIwRv6jI>`YpC%5-ZId+&k9^!aWzRRsZ-VJNss#j= zxVAkIXmBS)ivK9EbJA2V{qGBV>;D>0mVuET4)EPC0Q=&)WtAw`mDfpX<D@Dh-jrQI&V>&>d0j;{UfA(*--fUHD1NUg4h1x?4UNw3t;)*XP6F$ zhr;?-()5R29mZ_bhwS3DKo9NRyf8dO8M_GkFHOTQRmyVbb1SN@Za;ilw-B@Tz*H?4 zpuDDV9rP*`qRB@7H@@WBsYffoqu8AGdz9j1Ul%0ev8yj(!T8IOcx5itkU+t`RAKqlw>n} z?cK`fzq7i6C8c+YKDF3XYT8OhvP)n$d;Gdd+@h2fRW=BoPs7bA?$zjr5qtfIsz1Tr z3Sj5A5#?W$H~Lj%DgGQUxQ(~P3QKP_%_gu-7qu`(DX^+ zn1d7fgK2u@Ro|R?brJmJC1nct!(eRCw+&)7t`4J#Nvfdi!%-kRFpRD)q23$ChHkcvZ?uA3fAZ>qhqcH}BFdVH@}r_d8VGCy#_|Dhu(+uFN+f~WdSoRRGrAz?A-F?DfcA0GF!8XKxiHCa# zIo>*qRu7QgZ6~+G6~|PajSwul%!fn+m)bMbR)=m%sTYT5j_!asAYbrn#^-)@@_T*4 zmS1mhz2ed$FnDWtkvzA}Z_zqLWbf;EAu)dT@y&!5a@on8g%M8h3Ap72&=s_)pgjf+ zcF2g*y8Bv9n^$|L`Q5#9eN_WjBC8%-*KDI$L{KhDudQ&P16FzhjQjG2b4g`--0N2m z(P9a>Y`j;>YV!sW3*S#2L!K-$>z98va^A~~of7ZCuJ$}!`y#SBncmt3VP1uvz=*277O%39;if@g@nIQ5fx7O^7xSx+5S%^i$ z{i4UK|M0_U5f10KV|NK3scZvgkGznoH^kNGOEFJYOc<{2Lk#0t|K$F4HbQ^jBYM(~@>`KXYrQPucX(g3F$sM*kU+ zWiU#c>gJhrf1i1%I4+2rRm1B@Z8xrBgeW}C4X7iZ^%ApKhPMDDe{j}i*nH@3Fw*f%jUQ`!+# zX9?{cW?hl|ot;P^Ly-uuUg-?Rx{(XOeiS*X!y}{NKzI zbyRrT^>&L3f~rgr!GzG~xgx*=usv z^`TLYb-`UE*2c&oZCBQ$*tGSQ1M;meS4? zRfG^p6^Sj0rM1OULQ=Iv#1={T-Tj{5`Mf{x@9&(Sf573~uls(!uIF_}#WEHV z-}hsajqIq`gfLwyU5x6n=L4)87e~9y{Lqca%Fax%0}BT|9`9FU#DJ0T$$Jx`jGhR< zlvkMHjpc##z4Y5>Tz|Y~F8Ew{5AqNkNu!zSY615AR%Hel7Z?+2(;hui zkkWyg-wn+I`s1y4IC)V_t&kptu{?8D6Gu}zZE_I2V%A%Ht6(yO0WAz(FTCv2uNgGZ z_GYR404&oK`bpFO1MwHxkcw8~>f3TqgHwvT2%`Yitup&WznWauk{xkILS| za_UYB?8fY{lX!+MiyDdLb;FVH_RHh9^ zYTLO$K#td3V>YVX!jAZ2EaU>K^HH|ti^76JFrE+LCr2AZayE7B)k)Q@!-dF?-bGQM z?Pc$U^sWAI2qm-3;R~QXpbDXUx$Wrm#Z2R6aIX|KCnc)594<=LCXlR#z(co_62tcZ zm4%T_KkYHiJ|1N)RwPqn6i4`tHlA0(QefzdJTpXOzF=&gqt5h7y-s&{o6jENq7#=9FHn;!6Hxz+cKjWXFv;8V&XQhoek(O)-nIACt97GS zVl8sGyY$jx42B->+>bgX)$k!Jm>6s)9QiRA)^6~$UeZr*%h+>#bwIY->($qNPu#u; zmARcR5Jmv;ShIIt*Ve5!wMUi2E_HT6tZ?mm!Y6Nx;!RJf3LA1b9BhJ8TZ{%yg z!`*ROm1i%;NElOPR$iKXnaSQ%SV#inBc43=6dqnVx#@{(bpS!$yrMU?->@rWG@)bS z_>ZbbhLCXP9@d}ypk1bINF7<9vrQu0{zF1NQzlw@9b zYb-OuPfAa{gZ@#OZ$&<*ABOp@s5JEM%4uD2z^JG{m?;G|AT-}=DbuBgSZBj{XFC;E z;KyPLm5_AVs33<$K@dAz8TI<+dOgPW=lSb-u_Gql6@)1ZFKn+k)CBVfwh-28!byg< zF8RYPZ0L+Bug74LIUS7E=ZJ0444#==jqN-M`DDVtzLWD4|6*aG1f&~doBt;9N83IF z(i*^wq5Q$d=fIpXG@fu`W__{f-_irLT2mbZ5rFxvi)b?i%`HgJ?NKf@e5 zKUpfk4CezAU-TX7C}36a{nwipwrfS47?_u<@P_E)T!bthd4vJ-3KbA5X##4j^QiH0H{TJP->A0 zT&@>r)RZ`}XY_bd-JIj{epFZqjQ zn(3r>Jg^M|$W%H<0;YcYz+WkAG<4*}x}W1!YI=*5SxEJ#&@=;mYx=Ll6=pw>-j9$| z4>lx-Soh$2CuIUsyC2|BgcK5<6dK%uPklydXND=$Y5Ufo``W!3?NMF8dU#RtSR3x6 zmiW2r^4%tB6A#aAy%UT(-02!6T7mNWc}wT9vqF#SMw`5Wdv!ZkVH7`u_a>g#?ZFuI zD#5QH)o`XL6-^)=2U+Pc7-1p%PRZ8XIyOBF<^u7H%hRuM5fAz0yK>rH=Z%AW_muGt zMQ@kk2$jcYyjoImZG9`nCirW16?qgt{Os3ATR6=Ie@l*eMUFEg??e^Zpk2J*lLr~g zbZb58@bj-rHRM@Kyb`NB*mGb~9%{a!Q&z{SnA>zeJZT%#e_Ns6Zdd z{0c1bu-K_G0CLrXwo*4XIdhwk#V!4}ZzSBL%aF7Pz`4#(I$h#l7c9xcNioXI_G)*Q z%a6F!5vXMXWv#jPIMsgAzVNBVB98ZED4n-?8aonE+Sv$IV+FtG$B{yYK&tM!9Y*At zKYRjGzW;oz5i|vT10xy@n)Y*94IoPlfl})RB2igO3m2JdZDGNLV1>YN9-I~w1~iKA zIJEMCw?v8D_n)|Q;Fz=^s8h$4;x9F^tOfpr8(J$pV>1CZq1adC4^<`G9+eNEf{+=1 zbh4Xpbn^n|$m;DvDl!sSTW~Mii2dLc0^n}@*)lMM2SVBq&$xn$_}Q(V&a%mG=H0VT zLR%lB3aa1;tNdE@uRQewbY>P_nKy-Lsa2G^wozzT2}fFtt2+C!hx0VREs4 zu?Y9Yi`9Y#L%I{M=*K@m-xjmiFoZ=#49s);_Yx-XucGexUs3G;&lJ8Rve{vb+lU8j z#$l#7oy+xXOCYC}*}8AmZSR!4w{KKSd-}NwH-vHm6o1sr!aL+it*5h)fd`OpEF zkFapgiCwEF!$mC}inkA@JDRqtwP=VR2z z`wP{h@p|9;xczE85l3;)t;<$rd)oSJIUa>PX^3)-$?rX@L))}TuM$N8v~lcDU-Qv8 zioxVNFPd6!IpJ!0)5|)F64jf2n{XXAaw4D*{xAI52YS6`Y5-(Vt2@v7Q@W9;)@K-G zifzRy6$4ohEtmI+Qjo4LUh)vO9CI}%1uDVEEEEJ-)%n=1*K7vcd@@4;yUUIpPdP=1 zq3K*GdiR{aHv;)y;6l~xHZeY|KbjpyW#y$8EBKI#V>0&(+1*$@^T zUR9V86Ld@Dz1@inFPdd-ehudt_m4b(cw(*+yT{Xu!W zvi4@^P%RR+UJ(4QoZf;;jJ!ujB}7I{z^%o<+bLp!8=>^~nbB+89p%6rXW#HMD+ugP z#2DI7Tv|~Pzvt_!NkXdB|4DVmybpdwBN~fIRHv9hGfpN3dbR123pvQE ze4YLHyxRoV30xA}B7BTTi}skxg8dlo zKBU|?&%=!NlJj0~5s$&9HFeVjx!O+q=~=%cax)s2mSmlM(s&L?4YP*p6q@7UQMm)} zG>8+dEbHQ^JsijNd{mj%D`vaoG#%~X9{Tt!D-eu-_z#!Avwes6mBw!C+w%QpMqx@h z(%h`{c+kTyhN_=tv>$(n{iOqVO!$Xw9p{4JN~S-4s~_>CPLAa!}2 zJi|1I2ZgjGeZ<6jX3-lRQKdbPh z#?l1O6Zt!PS7-)bNiR0!t28IeAT+Kgu3tH;8m)^&OoG=PF_aW!djoI4JV#h`Q&GY+ zD?caaX3xE*Sxa3i-uZ(9oUMOWavI@fD9(8ouNnkO|Ds~!;9fqu!M+5qnKA-KiHfrn zUS0dI)OTzL&xz0IkFh3P4*wMLTOm6CSv8dxP%oS%Jks~Ow!M1k)dsMM-RZxu6htob zoy_C{xxkkO-TLR;Gg=ur8aEQ0tVNTcK|gE>Ey=Pom)3kw9;l{@H!?#^-=x`6meMr&0}k zDt}s2)GUAv7QpsY0RBHeS(`6+6_C`|2|tZz=KMEJy%f#!{Bfey`ZEMeDr6Y>jy6Qk z=H^f8e_PHb{f$gPdAOzBew4Fgh5$Q13lJ8q!>=fB7Lob{PHZ?MeqDbG3-M89@$@O1 z=wVvt`e_0v=4#Q$1w*xWK z*f5#&{eYo~z#;EPeAvL>H_qLn@!q%AWR@|@>P?>2 z?k^{BW_GQMb%!CTFD5J7Fgql@uV;^Z*q3cfYw))q7|*8}3P_mQt%m>@)VG@MVo*ho}z3kxezSFdeq z0R!@AdPA04POFX&Opko!g5}s{U!M^MsL)WBds?-}2#ynhdHH0`V)m4Qnt!n?_p_-m ztK%yRWSuWZ#4i?1tS0TaO288O!0rP^l$YN)$wz-I7$`KUKf8C08bBiUO>5%5Ef7;< ztW(zzey=PS_?tm$bIEzK189V1d4L=u;HAu|44s=3rm?&%<2<>(2+-sG1sIF%Oc#V| z>4G9x*J0(2NqDWOMao;3QtNKO-=Y6?5ObCO29}V#eF{ofq`jADc{969fno4_^tIxd zEbKuQteHORB~CkleCPbA&cEx2ve~aYifBP!*4Q_XN}h$%gRwn3LEkjuX|NT`2wmtA zZvMjAjk0bjPs|LmV&0O@#p_ZT3bz2x*)YX$dtFGgE7)1DTQv|R%1T&MU8iTc1PW)j zZgH*3->{)lK}PzPj0{=iIRKp11iA0Pg;vZD19r~949r~q$%FYmLk5;ZYr2eOhfk%s z`udNmJaRwijmlaThg9>j&F}1d17j=k!=tPD+g}qh_;kO>)U&G*gMU%*y*N~DcVVzT zqmP4bP3oa)Lg;-fA4Khw{RyJozmj1K0U4`j6ELr&9@|y5`s?ic@eFkcQ`C@SP{B;d zqL~MgFIe5(ej47>@LXf@{t8R{MZ<@=lJfm*qEs)*d`OrJ4`67|oF%(*N=z-C#}6&? z4$?KuqA01BqgxyRyRtniBix|u*tzfzi(VLXEdifiE_0!(NXRCQpp1v81?2joO(M0Z zoiP$~kXmvGh9>Wr0-ix&GPkiVfd2+U-(K$;Ugbt~ z;l5pZKC!Q?H!wVb-BnOyL*UZmAk)`CK}jb@a>0@zAP!FiYN~p_2P*$2IDSFw$lIS% zyL@`opvnuIpC5XZ{F|<@rK17*6z8OZj#%bZV@w?TrN6f-(r1E&1emEiUF5#xpCq3lAp@vr+eYQzhF>M| z%ut!qE4`>%%ZH$Bc9C*@#&jH}yRckqn_7R75lUhNgoehExUQ;& z+#ae&wqn#1}812XQqr%Phv3rFyGOy756dFI(yYJ(MQbtmQ;Vww<@vk~hiP2*E~kAq@Z%GCxS(Fd^J`JGM!L&Rzynw;o#il3DW zmh&vAG7Ava*r_um#h_Uy^fO$cHj1g)5xkO+0|_VI#|FGsN?(HFhyBj;zgpT^)zZ$% zym~*@F*sePbU0o&!$Kl34#z7nbi!nL|095PnQeHL5t5NZwY{cy(ikQ@MXjzv!4b}K zjdOOeaA|mS;r)2%SV!Uyb`Od;+#8?&D6J=+LF+%?)(cNnK+S=5j z4p*k?#UZMm3-)FWBlf3P7*aclXuZFSepZ&0Kw>>|7}uu`t`R%$fAo8Aq;}Rt=$T;} z8?ZLk^E54m6XEk$%xUua0{g0$b$|;&c>qmO@`fTm3$?o~WB-QSNemhQFPg3uo zuH`lmoof0|Z?JC*|?Tb-by08!ygPZ9EMCA1{bU@h57WzG$>RY|AU5_7Xh2&lHGgP z9#Fyd!K9U)w$$_|dS+qLa>m{bYil~+GGW&C%o5_;l0g(dVDRN9c8Rjal1^d%I^HXS zzpF5JOF_~55aO}c@CAW)YX!Lmx4e|G-{FWSsTvl=Qc_Y6eKZo1@YL$bYh*$73)jl z6N~VN2xKdNuN-DhaAxQi^dH}pOY^tPTU+9^LIJrpA=h<_&PX@l2V;^5q}lB4THLqI zw5fF$jHJ;dd;iBmqwOh!_ybf;gi+H}U17K7o5bn~upA?zErLA+Z>`pvH;Z6MA@F}q z!(+9qX>v?hmNWaDF6J;~#nMc8T4&yFKmc-y1+m9SRh_ZP_O0XVz9V=-QK&K4Jd&3O zt>jE2=l_|D91B_|kp{DOX$y9v|T^2MPJIi?v@y%!?b@NG>T;BNRPcP&kFjgoK@_X@qP?1Zj^9jE-o zd>Rs%)>^lVS+(}rsR(Gq+fQA8pKU;NHO5(V$Otb8oz+4K4&A2B$+m)?=%bcNE_Yf* z*^O5x2nL0dXB|cbfJ$p!exhPgFcL29o=mGZj#sx<9bgoHvHCF$V3A*0ics5#?QmKO z_LMR|t4!BChdc77*gAWNlUOOi9s@qF8si!j^nU{wMhd9)XXjbAUP*A{M;!VkPvyGA z)X+Lo0cO1@p)|jFHw@ORrBqo zCcW)%-L;jF%Zno&uQJ3$QP-D@^nT5=S&VI}KYrAsSEJ$D-2OJV)lOaqWhk3WqBqXI zzQT(AWIlb;V=3b3-$5_oSL#Djh8oXiivpc;b2P-eBHoJk{v#QRST>>w98k|v^V_t2 z2^q-EXP29__#Zmh(;DJG_~Qf$?=*E3QJixyf@*WShu@+Rce~^gU#b?uL~L^R@1?$4 z{vfz!>crmaY1ceDZy+$yUQ)U#XIf!H%jIXJV~VvV1uK6r(FGsFbxJ486ZoFO6I+?z zjwmz)0g;7p7PueibXqim$8OVk=;CO?*#|ZQR(rO(WV_)|Ovo-T~zreDBTpXu?_hrI@_n#rg0m^c}AV#D&D* z3HQ)Ki9Q)dc(SY#R&C0pMrAH7dkqKeVVh16lJO3cpOZh!mVl``oH8=Lu+w$=t6ynV z@YbT8pRj&#uEB#Gb zO8RPmFA|-H&HbF6W)Ry+6{z_4#wkRU2$UhAUefeMIha}fPG~KdZXU@@G=_wVu>ysJ z{+s6lK+APA&{QopRtzs`j|sGyj(s~X0=Of*9Gtujt|p_)`-_8c`#ZWDDwtQJ*QDu3 z{r(1WCHqd;6_!@WoirD;2DB8iej>E!Ccn_%s2hcDUh5YqL_A^PVQy5#{>$;5-H`Q5 zWm=mvM%FC^JG#ZX!BVgOWA3h%^5#2j?tkQan#!k)@(DpmWvxk6x|jexE}*-Qh5x$p zMda&aYx4~Jx@jh4;gNoIm>%gZrJ;ZGxN>yQy)2oTcc|SyMts|JeM^Lmzr~cKD@I}! zI%9+*cOLDxyY+2&{V%Zdcx^&i-xw>rXu#a4+jX?CEo(kIM+sHy(bLgT+p>9Gcwwb| z{t{u**cJlY@>Nj$F5|U8Hxc0sFxwxBhMH}xFa8hX11Q~<{Vx+VL<-o5ac|AA{7%V{ zJj@P6s~1zf41(RRP4DKzUo}io!Cpr{abzQ#KaI<_csTYT^;bDQrmt%E1!S;n*P-?PTiO>Rr=uFqX1PF)h<@=|I-xdua4Vy!}PjR`FfF)(#$x#-evw; zi49AnYi_S9By#YT$uNX$3B7iDujHW4TRZ9E^0~Y0{NuwOJtgCf=Ra3}S9@Dk@nJsT zIDgnMNXpjf=EY#`Ph#D6YgzvSE9LAuaWc{TEjURtT}f+?naIW+D^DjJ#0x@&;X>c}-?4w5(HKn;`}3vXh>uluTt8RI z2Tp&MzA>@J@XT_WZd0Q@BdOcv>7EE91!Jr5Yz2Wqwv+&8+2RyWvp0!>mkZKtf(Y1% zPNLSNcpNlUc4j`N(tys^okI~hg~KzzEVDq`Ze<@@ZJYX95CCKJCE9yQ*wrlL5BmiEoxz?@JXuDJW&xpJ2CzjTyi z4eEhM!g;|=WA7B~Wg1tx%bPa?KphtP=W!b$w=rL~3IQ1U7j*0ZgqM-yg_bzoalpaEv7t zj)Yd$>#?`XU2x9vy73Z_-UAapUMB#soB0K6JjAv7kXbHYX60-6lk{Od!Bw>2I{?CHNefj2prv^<53kyZx_qmy-r1OHNa?+o9%&gYQ3$O1o z9>Tv4)js#}Wp88w>!biKca1^YNlH?>6s|9q1_aR7qGhP7pTo6d(7Ps3u@7*PJ?WEe z1JSY76CC&Vw+;NNp;TLLTZWJzjb1 z#Hzf`{Q`1ZtXsofBJz5jNg_QuBp&sOkwB4(pl*ij%d!zClYff ztxEZTM(H9aSxU-?3rUCt>1Q-;E)*TkQ)a$+fDiJ->akS;c+d;}>LDJbc!33$fM~F}d<`30_f0n_$%j zQvH}WU$T3hiazQrZg@)P88D5^hT2X#Ot%cHh{Fm)HdOe{gRrHCP6D&ZQ`}AsRs+DB zZZ8ETZj;I6#9Efo?0NGNmmG)f4s1_roy)dLO^|9RdD*|Y7Q>DMln6Mlb$f#J`?tdS zcKLxh^qC9{+V3w|5@Y|LmTYmophZ#`^4_{cL7SG)Y(U z3Y-0GDR;xGMq(!lIxa8f+^*@J`1MRFu02*ZZS*tZekz0d>s3;@ZedfyQoyc@OHRlx zVu>Xo6DJ(=UP2F_YJd1d@^(c--VUMF-|Np%$+hH#i;J%>Sz85szq;#z;l0DuxVufc zSX|jxjv*rWOrY)VQH7vt#Hi*NP>3D-H|EP})6;~^uHba7wU2YZ&Yr`ju%2z`Y!L)W z(RCMp<(cX)Qi(~~lHr7$^kaIN{ienVwl~2(tPoapl}zQM04-vQt>sFeC^&tustwUs zJ#)LSws!M8IY;hq zLs%OVDYzX{Lyf@~R?D}(1_`ZX%t1Cks4x-yME(>tvcKMCs#&Dkd~XbH8JV_hIVH2!wFS3AZ3i~9 z+!KnmaEhcy3M4QGBIxAhXbnru#->g>NsK)o@_UZ#iKmADM)6%SrFEgJ@1#*_gtiiK z(4XqTgQy0~qKrjPQ#)+-&SUz3K zEV44{5W8S^Rn(L)T>b^VJ_?YA+GdUn_-5pK2V#Jnw9 z)wJqk_EEWZC7X*lC4%=IQ#!!F`)S>@sZ5O_=A>>Q&V(DiPE9Kw0wD5_yp>A}M@22_ zEW(Men0%02Q(BT>?&PZo-Hpb#ql)!$=^+Ck?(T+&_aj6Oo2d7sAU8*j6ZkQri{PAg1_dM&aHe0A%rMDTIXi4`wDNYSZN47ve ze9C2w7}N^hQLx_wgMClAfSps14mOYBZZ${i5xca+muA{GgKpJl;4K}4h8}V0DsH4boPU3Ap3td=VFh=XZh@vll#nbHZZ(Zy zaBkxfXK>GtKZ5T~iN;P3Zx#$qfB!(ASF9hjXDm}>y0v?e!zWj z&ZH!hp_xkL=%N<0;aqu}et(-6Xh&^<36_BzCi$^(UOEQAvcjF~1%F*+j&Ws|c7i`H z0_w%B?S7q+gyJ!4%4QQUn;=E4mae(}yRQIbZKM{Vd{7_LnTG-+Vk&!wmRJplG4)$D z?iUoUL9RO7-)`tsrxqS{XL$0ncG6;Fb6!gK>3cFPi)Wpcie{~J_k#-Frs(d+6&6~K zN{z>bY~DzIUZphjmQy2o-F{gp4_Z*+Yp=(Wa#)#+1nD|QC0%P+;??48@)y{^6hR>v zJ;5?(yzzdkRGQoPc@rK3E*Ae)GnHRqLNYGy!z*){{30<6keeX66n`5kOnOU!6=FTC zR_A`l+lv^{Ll?J|&$T($cS=kvH>)qr*s`&L!&EU~Cx&>N;ny#!u%ea<9gDMe^0oP9 zq4>}>#4M!1!gGSw;UuwcLjG!P zoyq7i4%Q?|Iy8YH_+7RchYVOKqwqE{Pr7DM@{lKep&vu%K9(SjYX} z;*77%|8)ofpn!}=SaWl8#lA;wV_~m`Qr7|W<1i<2w_LKvHP%Cm7Mlu7yUEjd-6eeT z4OZ{3N7}yHDqt3I?IHVYU*}@E9-4pmq7UbiDxOJ z^hamw;9g%J_sB1_W6!;NKI-+XR*rl?Lsf9cAEhNp>QwwTGd=shnqqsNbure6>v68` zeO$%d6eRAzTFIQ(C#M_hoqC>)XRcT>^{&oj3*aiqR(n3bB50tYDSD|aNt44SkNbAm zRcp#I!IG^Q|FX$#x-FXD(kK@flATuneEj{cy3X#}eKsIbFBP9G!E&~~q3>z*Olj3j zf+{653M18zFB+DKNwaOQx$h0SNOiO7grW3aLWUF12x2&}OGxwPoNS0!4=SH{7BKKl z^Rw*DvC__Q3axeK;NGsU7WGYM+c#?6pC#YVf!r8Wu9|`t58P}R$z^4!t~_Ube4w#$ zZc<~XkURomEJvkv69=Cfs8SECd>nz%O@!>|LHkh>Us@OfvbkRGwdWS=LCCm;3A-`P zlsPhJ>?zT~Ve7}I&kn6N&T3*(i4%2A|MZp8>Xy$ez1J4l_7bpO%^F-H$)Si{si zmlTyX6!o7%yASV1JP&ux7qk*K0os5LH%Jgy`3e$RD;ymG(^)7Q#7Na3*~~3pb^rjO zMoxqmN4{^j1j!{&wpi5mrwot*gRNCeC&s)t&T1}jdjxr3Kfxo)DK(^j`vuw3uQ}8Z z9_hS=l?ebi_<`W!#eX_u2E7A!&YQoLgKw2)1QYHb~19j!blyj1W!gr z_xsyV^o6!L3l4P;+p3Hq>N7;U1&FW-+v5DnZ+Wo2)<)0l;hBi-`@_fjH#^ZkpnvdTkzMTw2K1kmu^5(P)yn{Um--0GKi#v+j%^(h=-d7H7 zx76$Qdj$+$&=WPawB4iKD-ywNyFAo?ousqLQHqj{W(U%cK6UW*zrTHLAaJ$1a zbo&O`b1J`mFn>a*I_co!u3F=#i2lTf*CMMsP-p$ zgj9@(j_aWze`qb83t)?l5A9{`@_b2G9{1ylD(MpYY+;lej4UFH}jgnav`` z@FVx-&PSOpdCZG+xvZ;-CKWP-lo&fQD_NF-trq$H9bXjD5skOAr+}wzCoe1DEvrVZ zP1i7(+wc<0oY>}WLyih-AXR47Kv()&l|1gf5#~Xy4KqdTysR$828)fNDoe+i996z} zoqz~qt<7lgl_?r*sfm!Wm8Wn|ln>>A^@K{kNVCc^H|h+C#`fSF6;n~n;*O0GKB|eT zf67=`#&}gRpyrV{7WVbd-R=DK$i&oxs$|~4*4+FYL>zZpH2~gSY#!1aj)KrfqVQ#Q zm`h^-)LU9HGe`}Pmomb4U0nU?Z<~yBXaa6|HEs*PZ}L4Rtc@%`?!c|bY8i0{7+P$+ ze4rRZ<||4BsV87sO7%CxR7dx)dV3Ia8GMf1fww~#NnK4_=Rz2sBt z-_JUkGN-WMi10P$;dN-urDH)-e>$NqwpI5~uyIr0( zDbycAYYju8ga#As-t3`@b2ATvw2y@=%O<;D32*hSgqB=qz3@LQsIzN!`&1tS!s1CF z^GnqC(X#031FYT4)taxyTw>nI=?pi>znFH?zFYln62Qzl#s;+;O|W(!r@ky)*rUkZ zPFxV*dRyTYGx;=~Fjx?aLq#r{+n4`%PD+Cx0tIyrOj~$PN@FcoS($AYq_f_H|9j_!Lj>J3 zmb+#!R6sCWg9uF%`8I65qQ5i$xodeYA4TFuQ=>^Z9)^RaIw(1-sbcX3!2$a|(x@OG zY9$e>A#{O+Xt4t3X`#kSl9OW+5g;?5oeMVlIO;ldx~^}r0R{>6WNuD5J!_il=CxXv z2#)`_q5Tb6{W{g>X;qZqwG=4P(c7~piulTrSy@nVrepiv+{Ir9-Ct%wOD*CvHTk2B zS7OzxC}s(to_q|6go*DV^MX!>hR4YoUG+-!4;k|Q@j>$VVr&I@U2R=`VX|?$lpuNd zv)6n=0<+vbV4+HoxFsWOaPvLBGogCo56DDyz9nY+oZDlW(hTFWUrv7uMmO_{I@QfS ze5e`mUClPgjISdAuQKW9>1$m>y%T2`t9|U>p~}J|bnshyozfud7W2@_ZzpYj+~*oB zl$>SdyPWJ{ce10fi4s~{-d)cU{vB7U*5|ixZd$`@Ml5AFk#Sw8s6pjUQE!bBlrrLP zroIqNEJoTRA8&oLR@QK))h{Mpl?e$-bNSWzs?Dr_v5@qX^WLQt8*L29Ob9^Yd3_tW zwl{N6{pEdm_XbSxHN{zOLSGEbXQdtqN>pMvCWWj4saNZnFZWvcZmdDd8>ymaS{bkj z;4xlrxD*VxGQWcE)2fYqb_{H4Q^;E=@iVogCtS&hSK@Ui&c_JL79S@F^8++U_D+cl zDa5DW zIQ#_hWT=kU$`IbEaWv-kccU43HRtfOh&Xvx!zVMc;DiJNO}|h~m7a4|#wmq9tm1gE zA*o&pxhU8qALIiru3dY^mKed;1{evzAMC^ptt|2B{_OB{8MU~-dlKTvyVKTJ91IyL1%hg{mfnMg_+kDN3F`A z!Jx|A^9${F*7FURpR10ZC|z@sq&NrAkG!KW4w`orA9U_I(W$4mWrV(MmM!6&oAh;&bt?rcodMP|CQfjP3E7 ze)j3q;YGuycmr^dx#!28gNpc?ZP%!xV}5?^2_4q&#G18j&5N3oc$!C6*V*{hrAO=P zgXIBSU3Ip~V7jp9<|FC)YDV4osPw}@c}IKN_;zpO=KRcG7arNMH8R>#YII5*4%w@1V01_ z*e0z*2R-FHPt1&br9C_v;NqD9GC+&ddWh9a$1m?g~C+ zWwtsF>(kZ8W44FTCZF8|z{hS3rpKx8rjhQdA(r#pcfsEo-}S$j1Z=0uJnH%Tg(YV8 zaxsX+HmCn(wWBjEYMzP^2@m5f5)=ZqI(UmmM=zOD7||nirg!BU4gD9tmBzt0Tum4m z1TLw_4-tKhmL)G(E2GI9XGfm^*^;sGah0CGqRBQCdBCfSw#2>uWFXDO9-w4B4#x}Q zV8n&jKk6Tyiv$(b70=dlI13ExepGDND8F`<8?EMrh`EhjC${o`7g7zRhg=I1M(g|P z@92;&bj01p%`|Z!JR75NmdG66kv9+C7u1EEbm&bn-kw#Y%th+|5O$dglz;4I9gFXQ zBc|3sTV&-8yJNtDOR3x4M)g(Of|%7R9Mjpa3sz7u zg8P@%#+F-?SjZ*sOusGp&zwD3|KZn{|G`Sc-37WBbA9pxP7WV*&=igCMtqX&5XJxA zLNy?S%|C|7K1oLsOP;0bH{>yoSk%~hCe57;9X%PDpylz*I!|Aw z&5j=MA!=o~AG=L58yUR!kT?#!eVY{W6WNkXh1?v`l|;wLm=r%ePo5o`y=RSjaPRKa z{2o?-c6z;Inc1r$>xy5x0Pk00X8Gx&fT!7@fSMpJ$lDY+YqG4alX?%NaPF)>ki9KB zQ3rV$ddNL7|4^L`PutPM7-l{&bk-{9DM&V3-h~+*Rt}kND4&^n6yVS{LQUhD3py^I zTWJXoTlw-h@l_H>+!ZJ^c_^+Cs|rI8URudb=q74D(&RpZd5&U2oTQD&hsEdI<-U8Z zj2{uQ<>qFi9A0K4HeRThVl!6gJ!K`wx3W!XjNXj_8zxAAT{JW`%<%ZrUkI{!3lp&8 zDEqwjQX?{g6lqwBh8!&`foi>BZ}oxvdSL(%EJ>ZQTUV{aGWmT^J0>3Q`y$Emi#2jC zB^*a&vh!_TLNt9AQdUuXhh z6js%3&lcnt3lv!@%-7PFZ+gpL^7d*`Tq~W+M%Ic{EYRuxwLn$b@J$m(e+_$=Mi{V84$=g3L zAuZJS;>{7<$0wETU8@e@9?{g<_@Ed%FMwaNIt6}!ES&O9?DTUSU|G-YDC@&W&O)+>}=k@T7o7|+AJkt=hO5<@U+uR@f+qxTzl`n}rC+7b9q=R77(8d)nI$TbGvfNc6+QDSbSDd)<#+`!L> z-$mGVl?!Zy&(m~;7jN(+n~O4$837Un*#B+qtM@(rzaynz!XhIhXJ69| zC@m+K-EI+4PUj>gc669mM^}O>)7M{%|CX1vGi>s>cXTX)0aDau+-IQt8B}?8{KzKrGiE>vNN(wvlUC3RUl5Z^Hx^C%I&6c)$exNWxv+$*3f$K z6vC_?WnsCx*RSTAY%>zH&Kkw8fv6GvX(8zrRKICD5qrG+nG2B;9`P_Wr0`1^&t98e zo#vF`-wSUKc^HaeJkw=MQEPTOkaE)?&oegN9o8D;Tb5ncMSJl!(XK1MZ&9Fa>76rW zR4`+&A00P(p&%~mfkG;OlwPFs{*RU1cye=bv$iu&eDaE(tlG3S9a+!GdA)li~k-CxB zGXmOcFbt#S58iR4&ZjJV-u$+p?75x2w)EZVT+1GwYdeIuCUWuUVZSI%+M)`N4qQ-E zxKcd?+@<=kyB}tRR0>X0B)cE8Y#{}=W)y*TO4UQiY9%p_i@nkm^hy;ER$^YuRdLWQ z$zSAqt~@dfH5f$pn=fs;_$WqgIZ>p$|At~WX6m7Pn6b_@up%0Pru{1UPHjK+ul`nH zdYRlzlNh=DfnIAi5Qc|nRm>zd<>1c;@;-B5!MkfvP~}NA^1EeS&|M)fbUv4JS`>o& z3U7%!=&aLGlfJTg(rhTq4;a}q z&9}A0lip#~=3-R=hz4&Adnxq6(vLz@|0mtmxHYO&=0sgI<>iU%zLOEimeb<;mvk)~ z$wxE$Y}RLL4EHThyH1a(8MNy*fX#dHFS<|uwy;dr|M}zLEg6!sjRubL`kK}3Rjwl- z?{*c)0g2&~kZL?>IjHRK9LWI4{&c^dF-Eaz8{W&+if(}HEM!>$`czz~VaAsEuW))w zlYKT)cMWr97yqn2n4SbpfDYIG_#wy!`GOK4T!rI3@reV;3msoPmJXl)Y(`WeEtuGJ zV}q``R2>(lhQP0Iow4%k@r+N_LJ75h$BXuDTE?p-9n_VrR#;>65tN`xNJRW9nmS8Z z04`&?ZKw~1&3UJ(r=YbSBtah(=Yuno{i4coG#Gn%d%wCCr6IAkr9%*d*Y9j%GQ31y z6n@`+4H&g%zunNs$w;VF8*g2XE;YkN4FgeK&pd|<%VUC{#yw@`1SeL>GbEc7R=vunW}|m}11en$qYGOk$F{Y={${y}k|f411yoULlrNMGNNv77S@X;D zV(Lt)tG@i&c8SgJljUqwY@^Mt+^T0tyTQrjZ|F&OUXINLmyPt@ZS`ZB62ZgBvAAmn zlyRdZObf!ZQi_XZk7`krsK!b@#j>T)jYt^6eh$AGcQw%O$po31yo7D~Dh)^RB_qx%@6R3C#Zvf)U^HTa9>W*gqmB)aeIl%lHa%aDDO@vPuuE+^ z_(Eaoop&ZOW_|8J+K6bG<_R0zPlLrTjJ(w&xl4(~V~Vl`KG9^Gd&-;xnU!-3XrJni zXO)R9$&IEaH;i;jrAfZ}9WkgHajGCul2wFH1n?Uf&$y3wa&4-_FZ;0-d^uUZ^@5>Y zl;akRl_8*Rxvfwe`yzXo1+vsHMyY@iuXW^P$%Guf~ z90q;Dnndl?>@4dZ4#BTY#=*zqz8kFAEpC&h3k;$WfomJ{k-Bs_R4J)&!qgB1&}tE^ zqN%$%5#~|Pn^%Q=17~x;|17yJrIP*sr4bjL1@Cbwu70{0W5BJPinTT-?3SqVX!b>4 z3rvkqxA+0TJ-*@JDgwyqHGi$#jhaq-&9K7`S5o)}*KW?#TnJLV+wGSrOH0HKvVGl zq!0+I@8mWlJ6m^X?gI3i2oGY%Jl$ENH{5n1-luR1=2cVoqwR5@n$M_^$#4qyGr06! z(sspK>%3Q(PB`HbvZF9hG7wJk0=P*>ONkq_jvf7yw+m&Z@-NMK=QteB?XSaiye+2$ zBYP(%7O@S)Gl!3a?ZlW?tMbB!n5;7@B}VEwzj5R&gZDzJ!g)mIFGX?;=jL=3ws#N4SeGK(nG62)tetzeFM)7)0kR$ddKH;H1oNGe8DCt#gObf z`~qLAQR6GCnot0BVld83QwBnoioe({|NQi=BwLjTzoh-}OGwl8Wp@Rk&KX5);`S%v;^;un}Z z)a`D`oc=ZMwd0Gvpscrh(UDEnKY6%E9g+U1K<(%Ts$EzqspslRAZn>GP9;aqBYr1y zq1-;EH8HNTaH1KWqNRh&L|$?vRVAA@)f8yU&7PR^q-hQR1GI^p+&?#ts@aPydu&gw zJ1#*o>*>@rn=%0S5B`Jk>fcojjyS{#2cds67BRrUnEcHF{`OX18W;out@QN>+BCsp zXRz{6P(Le*CeH`Y>CuxWr<%Ba!#(@2QT37Td+=0KY{l-GP+_+CdUIehq{JKXWqm3k zhyu&1#4tXU>jDaX+BB!R9?j1T-ImKirczfP4cE=D%*Kpe&W-lU(?)3f`3L_jn`b7! ze`CZ~)jNJ0Sj}_lH+EQ>%e5+dM98dO&W5W&N%OY8B4m}xy2qfN_^>&G-n+}L6Dr6n zHp6vMy1`$`<=$CNsf9b|xfhg1VduR77k1v43KOaV8T-TCIuKE7QRg?? zC1xY~`+YC+av*nKkkK*-JopECe~Zn<#-Qks5Zr&a@SsHhkJdxrVh9b?)vd!urfIAQ z;ZWr>Pn*c{yXHfCX|x}bi8FVQ554yAfaaTOO_dm|Rp6s|$&cy{=CaMaDnPGUHK46| zd-eJqO}jetp!E?8&D7zOFnngyu0Jauvrk zG1PuwdD8#AiExa1>giR1VXK8~&YyI<4w6MCirNxO5w-c2z1@!SA0j+jz^BlA5%a@`3NIpVD*%FfXuPr1!Uw!jIkG0xj4k z+XIy0G{Z6~lcYa#tUoS6GQ2|&Uhd=g#BgHvTEh-{V5}yvIBbTgGkT2D8rT;!kY-dy zt-H$i4eEP`MQC-!xgPUkxbYEN=DX8NBeeX(`Y*D9*5YK9oQL>54>5X#>EoafPWQ7@ zm5Bp}ME!R;D4!@9mEZVz8nZlYc+dW!)8$DfTW!{(fU}ty?4NA%Q=^$&o-4jZg-w~~ zvQAsmWZ;~{h4|%XY|m2Q6b)Sfr4?HZJf2H<+#9e z>y)6nhGF3tpJBFd#I|4kHlvTg-Gza>Han&y{7FBgzRCfb<*xz9nKx(4krkH*>7ObD>AK%qUa@A?lr3Yqy~pbrZz@8}vkrVck-IzRF;h>fww1wBGKx z8!5UJrtID}sm6i*Tw#&L(LPr|C%jfQH8lQb{oS$?8TkMFeWGBU-8G55weP~v$+HY4 zC)v6Eq2EL|H2#8j=it^bzSC)d9PGgW1uf+KruzF4sdDUdmQE37Pa7u*e=*^HIb+iz zv+v}Cl;UHz)-w{59{4Xkzvfm)HC8@!c4di_^h0gr&iUZXS*yrZvBeH((+jA9g1Ml< zbZ}?3FezgnL~XWiSxFy9zpEmaE3ac<#5%Rxb*q;Y_f?w@ek)d!`iimv$b9%(I8r$x zF*LOFI*7WZzwZg*^>aYdC(rJS3~zbEnAwh~$JAXF(E*41JsU7xQj;rl^1+20z(>-& z;I@r9#0PjX@(mthqHX|ddS?>IQqCySZWzey_Nog;d3Qn%Dxc2zvmePbR5qOe>vLNV z@}eiD!bi6aEmN!gd%*7}hUz4>osPeCm!f*_hN#ltuS_W0{k@dk=NqfIS>9a`A&VlL z#PT(QU(DN=&>5V)Q3Ia;@5F_3@D=voPM6b`K01BA-tgL_TFz!7wL64Y%!CSkQxOnp z|M`05jG6*gs1)F~_GVm5>J>i`sr&;vPWZ@kRQn>0H&-+kh9ls4ebAjYVJlF@Vh~$p zqrHR7xrJXcnVD%Av<#mB4*s1H!+45`PsM!KOhE8ZkK}CaLL(g z89MVYa(Q|I&T;2TDoM96snJY;k>FZ4!Qru(cN;bNFV) zoI5sq!J<8pUpGz(H{bRK!U}wL&VsdP^ffA@*pH-XS2j^8w9L@q-cg}iE%;?^!)2EB zcPQbz&F%{)7a~sDKg@cC(C)*XgL%F}_IKs9p9G3!WzuHU?~~g+v1g!Mt?n_!l*#-O ze4edLzil8KwnY0-H=SCo)_C(U=@m8nqV3TAI31JO9+ zdm(iT)iuPn6{5TPbZU@*e;F0s@1Kgx;ul&w7Bl!2tRNYAUv!>O)H=vZ*AkyUL)KXO ziZSjGw-8P90I>%eB`aJRQTpN8V0YU$$M}Env`sLCHR^m>dAY>4Y17()ike<2m2M+m zj;?Ff^eeB_&QwKVABY9-C%z9V(w3*s-zvSGVUOjGU zpgb7y%{REz$*!J_38z3|^ZV(UPuo4&t#HIZM(bHC7En5O)9;5ahb#(-$ zDAP|!3%l<80Cxr{lEB3pBwK4pPt~vnlB>x?qOd{_dD;9i*!63puv>HDLJAGo$E41jy{+ltm9MSgWhHeLM|Yx8@8vILk#e2W z^hbaq*2N z0xo9@Wo)dXKgNf*JKteEw5!O*@%SonjU#Z<2h*UaWMqY-FGGFqR`g2j-|N{mc`r9L z!fI&!^>3OOClm2O$nY~4Vd;6rb)l9O;MN)w|4mL|F zp-t0#A;NUAd+I-<%GJpK^ZmrL`;Er_JuN!JxV+FM60GSN`94Q9+v<7W$!z<(b8Y&7 z8vA;>h>P-H*>2gVojhQgMC~uv&Iwj}liDHpSE)Z%1!2Y+9Q8}G5mY)(QX2v}8LIr- z;d)AxeLi*?O%J>8Y&Fa^F-QX4BhJUVOY)R3?$5-n9x^TAq0(%~eDgdOoU zZ9@LE81_*%@eEKvOhQ0J3XRyio~vZ(*(sr6sDK{D`~b+EYf*2QgD&}oI9q-@V?sBZ zek3DbjCD-i$2+ytZy%GmnXg~{N6!&l=8e9+3lwaE*U48=x?Ed8pfS>`wKD0`cz)-8 zHG!q$`nO#%iA!bx|8&YRyMzwk9RJzH<_Rxh)kO=Qff4=KM?vKsge5xkXlfO9UmB}( z&J9!#{=kY*MgT->AEUMh9=kbRBt5u5Y|CcWc^@VY|DcQG9t}RFP`%c|RR8{9<#?XD zyN(#9P7Wf%VZ23VJEq{HmFId$I!UN9X4lnb>kwIG>DI2+Uq!_|*=;pmY8SA(6%@`B zrZTYqqi5so=-fTjKrc8%_Yk*jzt-dtj~?*ZX)-N)b!MV^aJJ>MOr{d={J2fz)Hamx z*NlE=nZsZr9~ZvN+b1>XKQr|Bj%#2K0(ahE&$Hl|*Kb9S#WOOff17<~^L(X~_h9Nokc}7^j*q!wI**r@%4k_KB!ou@?z_TU%tw~b%lVQ zy5J#j5f{o%j*2KD9za(oq~X5lF43UW@)Mv3O)WqBw7S1a0lL~Z9vOcm6cz}HySLCA z!YBR4`K($)lG-Yf(U!9z7>owhu--=4$lueiutzzuH3d4onDY%86j}B|CpKw2uW_vTw1}Q6*Q@veaUYx0< z5M@ugzl4y_B`w8YL4|G4#{6TVFC78$Tw8-sTT*vJcGvJ_WbSQ6>bxxU5Inm@;hS82 zsma2#rq}bbp(vHTNl-)cmuK@rS{F%37)%$;V$g$?t-7Ntq5C(W`5AZRH=1hpmP2@5 zw-8qA%HHsqQ@uVP)#Y*9riKZa%>;Do)d2!1e0`R)w6sJ%sPP}pW=qWfSPpF4^;%dd z)58Ba0B}8`e&lzjyGBAlYx8o%cd0u^?EkbLYPS$lTzVKC(9FJo*l!lnL!?=b@LrML;gH*)Nmd+Mr zz()_P$BpGmDcd^@7^`mkbc-$e`i}W$E4|OV@lIf;Ti6*^b3;*5wz@-g?%QJ#?)TS^ zxvOob*-t^9Crgxya{kyb0LXXPAYnuOi)3N%>$|CJkoHRT^M{sFb9JI>d3J^3x(-K1 z6gk2fREDs!=$VuTSQofJC;`G4&Zt0Z_Cl&A?&F4BbY4rfjB~%1#n?;j-Lu}Q9?{ed z%oRqkbyk={+-Bn&r?S4}or53YYS8r6Uh-P0q!V~A& z=W9>P4zot<)AbGlzTOYnP#+<8Nc`rXA(?kD516pz7Ls)7oLS@L-X?RN9=z*{cfhBX z=QNHFN2`Ho-b$_uP+NbE|8T6{J0}84coOyA>C(rIg;))awyK+$vznM_!P#SP{$X6h zgr*n2|H5@1X6!ctylD6w=sBNK^k6qba8YtHWqyChTWBpbua{}K9!Cl|hWubsoW{{f zJ=T#^da<2keDADM*Vz}1s3K{yMw>$ zqHFe(ifpa@HYS!`F6&R`uNza3uSqkv^%9?w8-JTnURN!tsY<|e zt>uke>>wS(;O~nb)m-enhV`L0X2Rl5QlL$+Q0;pRXvh>k;ziaQ1cDuR^^-KAPQbFt0W_;ZDk z5pH9PrP-A-yjboN9i#9|7ouD+qy^yOax3lCe&G%>Dn8 ztb=rt_c#lf7`uu9N|u0^zgCmQo0b$S2g^#Kb}WxiM9U-Tye!}R&Mz!i;L8sz+a zWo^MLNUAyB?shwSB|hnwx(~B6ND6Ea^ZU9*zREH6bhq6c*`%p1!jJ3z=i5YFxcRJP zluk=w`h4CWKetDW0Tq){PIs9duOu&7>v1DOd-KP}`!7jM>Sg$;^##(q1uvp-*DtTo zpUCF!F~T+;s(Dw*y?9a73#NH1ODs#+9W=G467GjEMS+G2D-HQja~w>2*hJ;LF_@1{ zifLBO%jiCsMhkkskd?7CTNhQuaB7)OZHZr&KG0_aIPH13Yl9RkH~B&IuG7Gqkd6t# z^9TdgvJYjp<#uAGazS~P1vQW8%X=}l-LAMqSsNvHIfLyZ7@I3YoJxu{mIzhr!m&G`k%T`e9@Au=(7X!r@?+MjZc-JER^agv22O_=mC?w zT*BR(HG3Pa22#|B;#sX!+UU^iELRj6Tq&7U2dAi`hq4YP9HybQGvva3Ft?+tW3Rhd z=InsS#_p43RTCwb$F*V^T!+{w!!#}){#;+z-fo5CJSwa*1*b$!AcpF6qKCF0VHDJN z{qVl^fhcO$W_*yo@>TCE{*?+o%;pUKlQloVYxX}>pI_Y?6d@n*URn6vZ|e^nu>RKgVzO+?FPbv-L`l^yPE%(ppsm?oih z(_D~mgE85-$EnPZKO`^jLQsgUQfW>>ECeQxZP}z_f&D&8kWR0Wy1n;@~ zU2P(-0|}eLg6aSHO8#GC-rjD(9-A+$(>efnlr!t~-mE_j>GVrWc=oyrnU#EffgM{V z8MIGB(CE7A-=k}#tIwV5oOn@8^*@10Y6j6>ySWr{wp~D8=btAH6)BJ$AG!SUGY@F+ z!`)qt3s4!h`?Gy94-_<*4`?T=DtoF8cTILn08VG$8vST$`62w;%n?}urQg^(G~0W& zzT>ThxbhKoc8=Ki3pcKo#ZT<1aO<_8D_Y%PW$!Lb&auH%>_vs?Ln`k+6Rd*5op5#2 zxnr%AZnNK+%Qb_iE3gwb$Mtv;bREmwbjm{fz)Q=#>^mp3!&bL=&*VO<9p=p)%KR#t zMOdlu)-7bK5Eb&TT5w<0g*h+pZGDTG*O4Q&Yl@6P#uOqX^HhE=yzboCl8 z&DLh*s)_q6oM63o4S9b#G_)4pAF`VYv&$oPz$Yh6>bN)9fvMN5`$0Ce5mXX)-j0!7 zfa^#DKLw8)W}v@Fju??74{XNo44@t+X>Y{iwkA;B=;W}bfk&PgVk8kj>>9<9FC`){ zGGUNj`UxB&Bz>{Vh@{{`b$`c)?#xd4C?6iW5z)6Nb?bK8oEKHp_>HEhSMI7ms)}}J_sM#9$CKUN+yf)OMqbd>%Qykt7IR5G47%0W zkUx2J(u~yJt|IaS&A7f)NQPeA+QorS*c}J42a88~=}w(e&w zao}<0*%y3S{>HxxsuoM@h{D1uAo4woq>rMeLqp4awjlBu65j_i15={Fo0)jp>XxuZ zdZp5pM#J%B*9&}Y_w_(^S3RTO5V%9A58RoV+lzJpM`7Nei(?Vpu%*4 zNPw}%-%a{GqPtF09J<@j&m86bg?w96vLvd z=!l!Dk^xhv$3a8BGC)GYCkJ9762tS?QHyN0mhndg_pN&1Cavzg&@_dGUPin~;|PERRT+n4;@EO!3`=vS#;j1`@+7A0xZN>vJt z%1d-t`y_rp-nq^CBiw?=* zb=}M0!T#l@N&SX?blSXjW^h-a=oWlOR@3RmEv$cfil~L7Rmw^Zp&|83!i~fACO3~%>rR#<*;diafWL6T=pXO?i%=$YUy3|C_`{q%bS)i%VDU?WLXy! zFmJ$QJM8>J$5cAu&9Rv7Hyd?rkYRJY^G0{95dlfWpBHfW>LGRYaAPgwd=-5c^2?QR z!m`lBbzpTGL-9cs!71*ATzBK@RLS|#hipW(-J|9Wr=j)QtkElb11(SF`Z1<*Bi&*b6Oh_8}F3R!JU|%4M(d z!%;xd5o<+mEAQYi)6OfZGH;=sEVx8s-Gehx5Z4Y(+;#anA*e88OL&y-8Z-3k5AzJ4KydN=Um;D#LrRN<;n0b@ z#STsuj;k{>L1|Sl1$riJhXwGY76b?NijUjAF+l}ZVv&A}`Gu6Iu$CKWs>$7G$E8pC zb}k)ctypvt=SGE-hK7b<;s3i@+Ex7Ve`Q+7=tYFFkU02N2nl>g zK1S9#636O_GGN0mck&9?bTX$)ex&L5!NwXfg=t7wqQvkk-}7vuDm8%dmUY!xqh}V$ zi+}LWd>YpI7aYWx+K2-wh)-QJnNN;}y@_*Jicd6V54Q+mipqgI4n1RW?vNSjts>f+ zeWHC!57it2o4JR0CPR71*k?&6VMfyJ_48-xjQ!6x+Cwz9&%4rj*mH9YPL>f~!dh3V z@w$qLqqf|;(yPtTd%nWz5Y^Vo1jZ-L{(UH{$MS_1k4KTh>>c0UB-gsgI2ih1;93RZ z@gSun`uYzVjWPXc?Nhv^c&>B4V~478s? z$W@os*tyX%*=qHnsA`+a)NJCo(20DvNCV_uZeC}7H-4fHDEp*xQe-AsN5gGyyOr8# z+DLv#jLqo}DDgA{&7bKo_*R10`D^A`wrgsN4?u90U_L4A$CZz&4ZksSKR)pp{AJ54 zt++~~FxzO9Gs7|@9aq+{Rx*(cJ;=8XnS`O+mxb}^R~mGR@0s#0O_Qe{1m7zFfq1I5QhmlWZxWxfa|`7t#vC6xfP+U-HSI@B3tm_zNmgegoV|Vb6{S}p z8b`b<$^%L+*zG|!EoZJ0tY@~JhHsTC^!@S%Ph6qrCF;M1@XquvgX;RS8`2u;>-EoQ ziexYEbEJEkK=Wkhf4NTFN@C~OjO(5i$7gQ&r5cYoQuIEX<)`UR*Ez|qmN-uRr0s5C z{^@gFnVAk^zuBu@$<@OXL3!j$V(NY;_14n@TRTEYkLm4bi)c*sKoKbZaRFX~1loIf zEW3bgk{#XR^=K)(Q;cDjQyY1s*D&B5d1OvX^9%3IHR>{UfLT6bza!X|qFG`NgM^J& zLaXWknR3N;rYK87I*8dV`sq$`!c;qX} ztM!eDBjjYwjdw`@>jjB*nRavA9X`qJh3_PjWS=Ds7E*(lb)o^DBKLhLB0HHsVBHs0 zoV&_1H;`?yN6smy)n`*~912woyxz$d4yQ?1n-sOS> z8PTWGyzvlWd_a*fP23PU<9oYqvzlwIJdW++AbV>U7W!zm5^Vq}?Hcz4+$e!YXF3N^nqxWVBcl6}_`A-Xn`at=A>dt~)M0uQv~A zSw+6T5ZtM6;F1nmoH-L8DAWg&ZJ6(qePD~*)SZp6O!G-e*Hqf}IIJfw00!J$W;<=) z2-l1BXtEcpwyB+NNVqsp#fTBNA4A5N{}>PjeQCOSRW|S{pOB95xCJF+4sALAEecCk zN)YBjarfk_S942^uF_1}zeDq0+Kk*A{>FiW$F>;_`<6=sy0gtd0J5tyO`*WlvjI+*1br3p(DYu$OPdQ9BR`9#ekVIzl5ryTtHt zfAG%!j~ik2PoeHxe*fanPCL!VLQtOQH@s&u!+h<*pEvzaz93+C-L71Wi_r$14bz&0 z)&@#HGpaX8Z#DPVI4-#=J+0yS#6pFxqdG#@SGye)BgXQKz9diI-;yC~Kjk@ep&sdV z9)LOYQ2C$mmgSS3S~)*zO2$)vbfR6e1fILdwwi?x!A0HAw`*pP`}n_3IRY4Ndt55X zTu~W#+0(|mP+r;#d0czrM@dDuMe{Fa$Y4@0iQ(dtQy z=Yw}rBD}7Z89hnW z8XAo|R@90TTLvTS@5jp?UefHQa;Q7Yu}R4WH=~uB7kt3u1Q|XY{YuL*{S?yQiX1#k zfWJlS2UQL%2;1V%aVEucQw@s9FR>+cBj!9?sqosCa4fuR5CI$vN^&#OO2e!k(_HSo zqWqrAd@um5h{^`@%%sfXTub$nKu4C7muFZx8#$RzLj!B%?}j9{mv;4_Sh6{S6jqi9 z8n=~GnoE-X8WnHCF-Ef!R@n|Qc5KJOFB7kkK3DydrO6sn^E&GJwF0j(TTkN0?zWb1 zjHSHiiZM!enY{b>kwN3}H$jaAU0UU|r=Rx^on`rN zh>jzvEw`B2)#s^X&p>}dzHYt|R}c8Ex8av2ueim_FI{Vzh@J#JBIMN_)+8xWv~6Ob zxbUuRQ@QzVbzPBp;X6)N2fn zbU`7Wwa#9ioqxN4w$3BlJChb53G1>8zM=y@w?GaG-IwIUuT6|aDzq%uFOS*Yd;ocX zyk!j_;5xo8^qsjRE7ro)MEZ1RWo~<0++maO?rkPbf9TlPYp#!V7FIvb-_*9qej1!% z@z3HvN7XJ`E}oQxyfF!HeXO_nJn8p24>Z{UX{?%c|=hz7iOl z*7!*90-<)}Tt7tqkY-B{#!W6TAkD%Ta5-mdLqX%vJ6TVWA?=2Uv8#YUOx?!3bv(5$ zH~}03ssuTlc(J+;|CfCZhtk8?ki`K3y}={ofU5CY$LP71`U|Y zE>lZ0mZ+7Q0ag8zgh4;gz)WQ`s$&KaS!H}#YRy5)_|*ek0?IEI+T ztdrpaqvM*iIi4aUF7gULyJ_dvD&0)+~vRQ-r$1 zwHRKXuF#R1{wKFBuqK>mP50(kIHyYpw=3N(tC_?GuG!EP;-gkMo>KElyx{=-3qNBa z=k)gq?yhjKdz7c6)U@^kM}V`xSAIo# zvIi>V*02P{#EVr>Lvg=9ym)974!ARs4`Zu?arJPFXbZ?jzV6KT-4_eq=teT|*Rus% z&q~skoh*Sn83NCUXB=dC$^hIN-;IQr(()ID&4c1IoKyUbyxy&E2KjQ<4Bp9GXHzy5 zIlauZ@YY2~0=}$Mu8y^v7r38JiS=Cn2G*gCDqi1(KK2)$4}T~wsU}3fbQtbOo~tiX z=XqBueG5!M6q0;TI@!3(pp8-;(YU!kxW3L;(@Jd;b#Unq@Ro#*mLZcQT!X!76VO*M z(&#pW7z!km{BBFc4UbjXvl*zk;h-UkP3(1r03l`~oe5s^_* z#zNr-y;+R@T`cGmN;qrxl!E^M&$TCnVd`E)6i`XTaUCg~E(0@;2ey@-?h5}oVgXe7 zyS{7c<(~;EX?4?a4%f3qtKj?e7?FnyGySbhARXCh0?*jO)925s(DR>*hL40Cgqhmk zRVL<$(wStnn05pJ681Ci$kHD^Zuew7CSHOP4$Ngd{!{e45EOAjqc9_adQ__0H$QMF z+2XA7nFAX81I{baG{Eo0tC}VCJI0QPt@GYs`%|f2`dXn!Ra_RqrCZf)>CA#IGl2LN ztfV0q=pa3l( zd<<;>|B_@CwjMFmAFId~?nPrkUU|wgE|kJcK1JY$GZawGF)HP%^w1$~Wv&kUi-Bjs z_n>V4RetDDII{_!F{?@q+tTYz<486-1mwWGB6|~YkL_(Wb`dVRu0GO(q=C?Sw}i2X z88?BR{OhbG?Pa^;-`c{6MnfKQ-ksWTzu{eH)!*L8rySqONl<*_6b#SGl9+g2G(nY9 zi|)-P!5?k}gCUbdebm?e)Uf$Ido>s`phz)~`dqI@dOdwPG0O*m8%D|TjW^qoV~yU} zcl^k*pYB&kQn7nYaExC4?L-a{%r1!gvXU0}WDrPy1qFHK-#3vZ$fY@(cF{OAjdhma z_x$o9^b$MK_Lu)Yb#D89C7xOu$-s1NW2y)Ddeu`{eC$l8M#U{FKx<-Q6q)TznIS*> z95lFaZu~aQGwK|66i%Hg+5SQ{CLf69(opqLr&*u+`r@UkEr2Xv^iYfPZncdY^#ROt zMrRtfGd3!171*AkUmN_#(A4Pp5>a^)g78!J(M?O@q+i|PM#=o4Oas>|^8X%^#D~-1 zm|`0bHJ?D>dYpb;m?ef8&Gu0SxcEjE3C1BdT>l;oLbJH}o}5cInqw_1_f;FgX+F&t zowEdv&YtCRA6bFD?>Jc?l0wxp2lwJaXri^jC)TSw1Ig7Z}nywITM0`}Kx)3a@>+CbO@?|P?rTUkNEbmwG_N$9g zIjfNud8f8`0&D^9Yva65=8*+9KBoRTabi6GaK>Tb3jNd(0(bP?8Y}cIlHhQqlk^+p z<_weG=YJJi_>;eW{mK_Y>P>{fR{q3ZPugx*+V1EH_y2q|rIPcT{s4gBcUG>MTw>Ly-~`Q-&&02CEr3!$&&^-<1c?gHW|;IL(VEkWB*n- z<`m|2|C7=kN>g9C+o1jp}*P%a6Kd^LPj&u_{evCkqMDm9xM+|0lX+bQc2f z$ESjEonWnRZSQP%Fz8DMCUqpoq_a4_=z+buX|y^?dA?|m98dK$XbFzJT0h>N7&xi0 z`Qc|B__&)yh)3?=gfcj<%7Zv|v1tT0tS(a!|lTtj##wm*NYg0|}ycen@(a?^UgP^%u% zZz|_c&#TX#hsWRU!3f4#?9~<)H@EH5Yh2GA5 zjaSvME?eHY13nnzQ>M}G_|o>)?;=FmG~^>?lb#9FJ<55;XfgCC^@Pe~8iT-Hq*VqI zjcMAIG+BfQDL*5b)tF#VGpq~gMDP@PHTgLzsbg=Bv{quxhhzf@(alhwo!gc2n=_r= zaPe2ZiG;cSMaHn*@!Ozr&PcSdp6DEfT|@5cc5JnK`9V9>JMiu^MyHjgI_byo?tA_N z-$k_W=-^=W#2mv(U(S!#y%pf(qid79OXaWaS^>x(r4${~gNBXRhAjl{?}=^g$%~36 zeO^sHd6%22iJoD{=Iih_vW&Huf+cyfT|cs&`eSr7TL!ONm1CjG z5L<2=`;zsX%zDmP1Cwp5kMPFV-hws_lllBJ<+L)kuwwfbzP&n6#bu;7Tg_LJX&YHs;}&z$ zwf!;XT29A>-i_fSC+Za7kXPKZng{FJ{!n(eYGNVVKAo;RsHyx0HFXv515>%yEvaJV z*$q*FB|OUzt1kSs`T9s=k*07og*jwG_^lnrqE^9W>(OpCmV{FPK>hYsh~v zV~?(0CIxDQDE2RvFWj>fbD;EPWun;JqF$U1gWlnqacjqdo*&eIG8!VjBfI?Zv~L)U z;Y+wV?W^mVYo;ps&f3I=d!_fAh|!EXg^LkXA1d6hvUE zdt9x)$J6S?2<=MgYt^T#Uem1QVHg%HwA4Fh8(ZZ;x<S(rp0a!@UqD|0IYvH< z*H8C67Yue57(g1BJBO+tKCr#XX_tM*3iSl!n@zY**kpru6r}#SS^$gsr1lx1R{!Xp zDhqKn!)8NC4RpY^x<1J0{6v*u5wZmH|)L|H_ud#19@>E{R@zl!JXIkCJ z=%SAuX(COTmh7n6U?N=~_3G2agX%zvMIUtn|J)Gnlu(RBpw_nc0jx|wAlcLR>nc6B zEJt)GT3rumq7~NuJ`yAL#TI7l6Q#$v{S2X-oG{pTqRFeNp+Pz;E2});BwFCQH|Hvt z+iPXdQ$mOPrT)WtKl4BSpU^*rEiX#0O-YPf-58wz@8=?tj~ZSq=M}<5Zb3l)AdSAJ zyKzYj4F})O{RT9ts^&0jJbv6N7oTmNH~Hc6UfqQ+;Y)EaAR_Uy<_DEa-#T=|XU*3x z0GyV_PG+dTKUps%bS7R|{4?q6P+F2QIVtn_5tG+H{G(^>8A!&e+Jsy9tCmyAIx?4O zj(ekTA2^wzaxQ*MnI$Y#VC$}HD(i(c&vnd}WEhgA?A9KK+i6&Jtm`mPN?$XqV=kQe z0xW&{mZ9%sK6MGG!d${Qv;rtvKC=hGq8g4vlTmSpEjkQ*-hy-7peNsU6N>gY2oMeR zDtKrYF~7u{hz48O-H!(;heIan=+}lHPf%&$pq;za%Uoe@bv&j1vY=+RGQ91vsw-s* zRTNdmy+Kt(c!IHfrF~N<_m|F-Uw=&#l7MoA6w%-@feGq15Vx3zh>Nan*yp1X?ZC3$ zwN+L7Sv#xHTA8UI_Rx~yC+qy~N%Yu8T-bIV|HS5tWowl*9cL@o5nqZqMm zGq9ShZ8*r-AMBgVz^XYr4R0hxHU8+0@>kn}gAJqtAYI!gO*6axNZ3aq4hiJv2yybH zakPbQbtCHeO<|x2JUE~K5?%`AJ;^V?LS;XSSNsM8 znY$XA>}5nXDEHZlwFbtD@**XpKLc4dMKMilldd%eR{ljRw)tc|kyRlnU?39_zUK6j z<7uP?oO%()lkeu-iGVC9k$$#of{4BcSfAd9;xs(5xeMi@AC0AWSJZ{C@Vhl!^FK+9 z`=JgzCMK+eyhv7^S?%9FO>#3@SB`*1dt(*KFB- zVOT8^xwN&k?;7dQ`bnZW^lDPZFGyaR^ zuM>?K513!!Mc0UrUSsNY(CZHCNr}zLz4Y6RIbl870Vk(#7v4&KBPtqQz{QFJ1O^6H z5k5v-+RI3N@uWY_$}zu&YJDozy7XHvs9QxPF_A6Q)c0BYm^oo+HB-`}pM4=>uOU*! zDO%zoA3j87WW7<0(oJ%3*e#mY0ZVJL$yy~`Q#P?XXcDEWT;-arRJ`zzx;^_=bU*Ct zhz;-V`Y@}Jdv*N_7nyoX4yuqu@=xwVFkp@_WR@wg*7-sh9r`SMMIr^#A|=zdA@#sgy$wt0eVu z%5mhd&XQAy_bWLrmQ&0^&bD=ugsqyF<5(i$d7=h^dKg|d^nB?0|K^+_M2;Muq=ryv`(JdD<}A>Zs2 zA~z0u7W5-((cA*GZaeNm^?G$Ro5^$<ZzVzx* zrv3>?dr`#VS7LJXo=B8RB&p1CkkUTk+o;h$0Cm|x1|M~tVb+;2bivFsC047HDiQ?m zA)HShXB9x$jGyn&;nxp0SiJGwEqprcT&*Sn_SPk3C3BC-tVL|Z!$Qv{QfJy`VL~R7 z5ro>&=hgOEVBeAA@zjF%B-M_`ocGkI4ojX+QiU9rtG*yPh4um|44+h)P+iI}s$E6C zm`^iE_|m!F8I-XBXBw5LYSEOWL%wgE&2n#0f ziRL6p8$;C25GjgR2;v^eCsX(TV~mu(`TFNW&;R>yNv+`{02%r6$K#|L$B3wNBQk>q zo{Gg)-d0+^=4m*KEtv3slytv7wN+_r{ZYwzY>g!yJKz0F%AW{NJiu$Sy}+jzH0sne z9{ZYBHMK9ZaiT+dPVHch(9wU-rhDZuNFDXdkCkL1LVRXRlR+!NrEDA1z}$!Y zW$~bKeDF|Kcv7nYZwM*h-k-Lzr$eW}i!}**pnFMr#hL0=2u-`d(-w`q4g~B=W@Uuq zZ=fKx(p*#Y?DkJ^l0dXFvJwj@UMDk;uV~lpQN?YX-CWhnb$}e0ZGm+=Wx36LFI&I7 z5t<98xNae=Hr1_!3kV+h#m;=0NrR9IO6d6?~u}Mr9*wvTn<6A$jUZ|U?&9dGX z*?k4VAohi*S3rqzPKRbpMKZe9=ASLnOqHi7;rKH@QHhQ1m(9`y4dQvkU{O+iRC_bX z!P#zvL8W6&3q<6@b8pmX%B|CNpZj>o{hmZ=wFYEcv9b zpj^|^NwzR!E-oEj_@q`!*qN)hVD%10#vUtP!Qr)cfM~}(5fuCEcflrZ5pj@aztJ97 zede|+z1oTzrYgBJ=Xg?mISRDoT9{(=x!CccM?RBg95Y+X!BMH_bnt;IP#&}3iKrA) zSP}tJyT98{l9$i*qoOgey1~9P_f*~yH1($SlQ1q{IWsMFf*C+% z?#kA#6F1fP^Y%}^Vp|ATRo{#tszJ_(jIbj-14=YB0C~SIfM`o_ z*odQ?8!VuVF`{7`;F6zVBMDOr9?w<8#Vx7U!=V-W_cp=qb0w<%*$Z9HQFNWN78QHT z9M&VQf(OY+92jm{qIpK)hFtgO6fcW=W`@=(YsnWNl)<3AbEB1^DaS#hMog#4FTV#@ zj}8D75(T`=h6}0%jpEmayz!xqoEgKV4VdD#Mq*$`lZz=8oU9+XWzA!VK;xkP@MGsi*fhT>{J_ z(e15RuqMo}dAnmTdz+d&Fvsnbm7zNs(Xw-LXyT74QR@8urS5Qu~JBwu1HDPJSte^X6L>x0aT9YEwtm`|CC!9NCyMO zfSJB8U7-!IXu$~Wuz>7p70H#{CjCOh=r*&@opPpMvKT8WCWqk_8Pn#9Oy)Gep2|qI zlGWjjEFG!m=h1!P5cS1WY&kOf1c+o!mI2n7UJA8?9bp5&;0lI^fj}eP?!oc*VRd@X z!uD&)-t2K+8e{t1FmoU{)L)U5Ax8tdohxg^?R`pZNUT30P%<)+LSrsM7d_#b=8iFB zL_J&eG%`xvr02=aHP{LpZ)ApwTBrdo7v2J7aa!yL{vY_wr;Aqai@LzVe-6GUnqOpQ z5&~}|E2p}3NXacHBJPxv&2B|~_7avZzG-jShPj{~^!r5SRk3toBJu#3Ry5r|fT>pT z_oD~<6Pn_yV{~RcI;QA$HGP5S0QjrTmvPdSCdDe@e>$WMgJW+t&!s$>KE!dz-If)M zX&AUdFz=D>z7zN9Ngaj@rq$i@g6ykZasRpjvpNBtyQ#taofjX;LawodOO0}p5uhJl zoPPe{e;#SwmVdXgI|0Y$a)`o%%&5DDe#z|fC-szKj}FMTx|hnCH8eh5{BVBXi4Q#| zV5GYj>@dj&m=|LF%hixv#<4guv%@R}G)_tMk-;3{a zU$-BV=R2ZyXem0x+Y}HU+$cH;S&mOy*V|oY9lD!6@mOW~iA2WnmZ``6WnOQ1!Qb&) zoANas-Htsi5BIu(+ZKIB+ur<=c9OW5^voAhpv$TZJK>R!=(YRa$vzzrq*?>Z7Mvp+ z4;ej6($4yXtkdjyoP?`0zpQKwnz(p+3SdYAC+OpIUJo`K6-llF~?+eXZAyb*Lh|4JCO$`apxcYk7u7Wxx9 zz^@jJ9RBg*OOv-WKOMY#AJ}uz+fWPZf$tZ2YI_ETG#j>t^Oa|4hF&Va@_ZNtbKcgMuROO1DhTgLP4josqmG-M`qTVfKi_7h zEY+crL|1fexbj&m2Lmh2i8<@)*6wJ*jN-YikSu)%adJj6i7K1r^WV6M9J3v0h9}7? zNe*@76+ghjNG&aFx^DWCcD0eCF5hjmPj~TR>nt34>X)XcDy&R*O_lxk+1`k*Y?bA}axNj{Pb2QndF4t_J4;a1bbDEW?E*pBhJo@;$0fXsS z$^XlGfs}fi)!k=G52L2U_)3Q34s$aP9n0EFIvPBgNF#Ke%@~oi&pniEqmyEHW8ji@ z?!f0k`do&f>w!T(oW#s8Qdz>WnVRbPo1Ik#a(t5Q(U%&B7wSIwh6YHo8N6_+MR?*Tq84^8C1Maad0vgqj zurMP)+(8|*%R(DlZyEa3|7FgC4ioN}m}jY%(6gV@K7<49{e03LNs~Ccq*OQAfC_9- zs_W`R>sWCYWTP3n9uHlI)~)urSsnSWVe|IVj(>Tp$r|fF^RdA24d>y7l&E)CrSn z|D3?gr)?6`6I`|Y#f`rw_XzL2x^%Z@unskHeCGcC-Gb()@ji_0%7UKP@ygkjk>y{w zNo<3ocU@ja_64vn4jp#T9b^}1%@Dfg?n=qtu-uUp?{@yBVZH;9uTqp&T~WWTihL~S znoFVOJP6-^fO#gd$KT+1tACwetM;$XIg|Rdcbgik;LZcjrlpZ?b}dr+LQTaiL&40} zV752>@S+`Ywp5R^DT*c?tYrW`=KQ{>YX<5$SkJh~z zx`NKO4+D-?1^VMvnY7!^wiQV$Jc|dlV+kBT@i%t$*>Qb)L5h&F)o;?ubyOA zV@>_;Z&3k8;CJl;7Ek$?5u36pBNz~cR%kM;ED;mYiYCg?jpn&YbDZq_lc>SSGYhr) z6OCojp9PT{wDv9U2?foloPKFD{c-b+7rx*EQfn%~<1P_sb zgB0=fo?)0oS3I~zlr|3tv-FMm4MUv31q8`il&S?Rqk9~N=!?o`o?7H4&zr-lgXIIK zd2a#lF_4?I)rq!~=1rTzNA3ob@jbER2`m!EBlJprCv4E8RYQ1nUwP*@aAS=%yL|kV zaSMfZd`_Rna;rhiG}{4sf6@&S)VO1UT6I9&u{vJQ>YNk~xwAxvqBF?rXlmon3ZHX1 zMshGYxNags<$k-b+lFzsx1}y$G*8X43Q#Ow@ zG>cNVAnO+4t?5KmulIA<_Wu3I;_#AYC1Jgam2&uP~(CB z5rrtS|No~t=Ld8yOXj8xJl;`e< z24(rJ3rP>c3^F#&1E^B##IwT@ycV#K?|mlZUgF+m=CT*Tvt{~m-4y41{n#r5m#Ep} zt{YxuD!7Y!{CxZ2XYiVbi#Z#gb$iv}+tD+OR~G97P5j0aTwCH&Y@aLD!aqqglK z)I#0Uj}}I$N3`agFQuwXIK)0@Ae!&yel(k|s$P7n(qpI0EKCVp$}cub1EY)~eG`9# z2k`kXRxTjl#4)S&o>rD*)L+Jny9`>`=D{`lsN}CDA3CDa+;|~DZQRYXYV+UA8bZF4 zLwC>>Uugkp5Q2R+%K+qJ>vZx|M*m&7%Gx$89(wa(~tN6!%8( zkM^L_LF}fl_MeB@;RZK*wk$3$n$g*>j5u;YdTgQG!t;!XT=@Y;CSIR)0NtW>^%_17bMW!~9fg4~>|68txs`mrgjyi1zIE zf6Ic0MbBol?e9b|4qECeEF| zYQ2B4B$eV8McQq}QcPD;mRbT5dJ$Cy+IW0R)Izp`_@mPK3^QYPk*vNOXeN8DcC@~h zjy6k(un$k>;x!FM9$>kx$X%RGjK&Nhj!5w*zl!3bz6hX@=XCN6Nx8qf!!o;hU}Z+> zihB=bQCD;;V+UP7BfU4i(626yb0xCJOE{K%E_&l!zG`+W#!?Rb+-b!$>}f?s1-H)) zVYRSzbF~DGv_y;JEMxg|XDL>DLBswr3|R6!CLozPUBh+|+pI;_dU&K)K-sDdaR{Cv z+piR9f-H;!g4lrSIt&Q!6v;b%=uDSSPFDZ`sbKc-kh}EZ8=0Zdc>1N7KOT2%Y11 z#=m};%{+ZXEJFX8_?10u`wZ5x^2*HoXv^eXyZ^XKyLBT9Db}>7GD$9jiny$TysjTX z-x5JuaVKS$n=DP05N-P6w)Hc4=G0m5{FSK!{Y?d75YbMQq2%jbHShc*$?d~-UPSFk7;sMFU>IqH z@JIbN32zywv1MQ?`3jBF3rC?)*G{*5)9r|L1r4W!CbLQ7*CG3!uh^e0n}F%)R$tGLHJxr=(7Jj&ZY1=|o$H*V9Z#0`ve;{=-l7=-!uoo3%pBEuz zN&+`GMwte$>ijP~Ej-mZJx|9|Ob{G-g$RIs9=6dUw&!s^qFgLQ!Z zv&G7q0cLjIdJdt%;#LkPz}vZy&D)BqvDuXSEP6uMLXfO#QkeX#!fKA()l5Z93bnzY zbR>TOq?z`L|8tALKQ5aU$~0xIf&uo}Jv{FQ+7J;J6{Q3$IoVLjEZS-`X116s67aad z0mF>tH&jo|h0!zCB(tFhAG^|XKGKVlX|X7Ejm031d9glCE#DIC&wE};0nX$>Xc2c4 zU_PQ3wV{IV`pAVaLhN;E*Z-4wOUEK*{$AoLyu5+`MjOAsNT<4-}fpv0m|L`k?QT<<{W>u%#g$Y4>`TgZ^KV7!1t zNrBzZ)*Q>xp&Kk7rUkZYPyA}C$HCPT+jG2 zcwY`Gbf|mIYgcgJIUHpZjh|4NZ-~fd>zs$f6Sd|ai`!7OhxQVmhW04ZcK#wx*;?Y? zFd}2aO#|Mk8@t2NeS$xxE?Zs!(E?1T)H2n=ifw9g5$pcqtcbgyRx;h9t@4m=CV}o$ zTF=dD)}-2P7%6PcP!LwRUr>E+my|+Z7%5rRywuwJ7t{7Wck!7@NCD(9yL9YFn9TRQ zW*DUXl6v8~CV%dB-!2{ZWbfJn$Gf|E7&BLr8mP5G!C5Jx$CsF70Q9RDlWgev<&4Wl zAw>@I(rf27v*@}lHyJnG+u6}!%+`!@b_j+;;@`J6pw4dP^G`n(;9-4Iqjp2Is+#?1 z8W_JEncMHWgRg7k@fPx8cUDP;01H?XHKKWS;cdol&VH6Mn5KL+#HQ&;QOVci>^uv$Ht8Jk5?3KYjPzy*X?6cYM zt7R3d@0TVcAJz`Vs>5A~6E?q&NwOgo>vojc+dre4#8+^v!p^&k;K8Z{Cnf3SammkZ zk^4`8T4FEo^5MlPBJbUPpL`*3%&&n)v%ZZ|(28E$3=Mf;&S+Q;juj8~Gf5rO2jZST zSYGOwYXDbvw#8j$fBD-C>EpYqPP=N9Ee09hn`7C&7egG)4sz5IcO@&DXtmy-2d0b9+r$+)9<)d5o(E)Nlxb`+ye z?5XbrT^UanmW!8$Zt2|ftSuI_Z@c{A2(VJ_eX%Dxca!Md=Dzs&X09L5s})+Pr^mIKRmQe`g=HjE zmW`FNKnpF7=mWsZvyE83Us#(~#*W#TkgOk^J^PuFAwX;<$F-^~ELl;;cr64BfQMy;K+4uz@Ed(AA#AD*SZHf)=;10%2FI znyz&x|FwN$RNXtbc?lm@YwEmOSJe8FHyXz~jHMYE1%LMHQVD-dPzW=7#+5<%iF3xj zSt*_-M*Ub1-&J>lUGoT82*}cX-in+%Wx7-p>c+ueJk^B2Gs6abvzGw^S|Bfq$~xO~ zj*%G9IQ=Mu6FzCR=}r7!7^RuO zu&p3J%e=ix&KMuzab$&(qnjp67x>(%Gix2^v8D44Tx%Z-TySlkvsoYX0z|4eHa9uEM=2PskeYY zSXcvfXv$3de-uAPYk6oX=IjnkDhE#c?97zMwkIh5!tVTLpnr_Rl+oaiymrz#7T9dk z^mpqMV&^c`>utNte*I7Kidv^$Pii@;7mc4ISNwcpyS?YCI`C6*o%XwoqqCeR)0w5Z z%+h_>vB^kn(Y^KdyNrSgSv`?My_TM8TWeFHO^S5WNNZ}^8~lvtSHPI6dCG!UJy?LN zFKA69{Y2O)WhE?R!|h>WH`D140=)I+(0W?34`g_=`$1Dt-G^)6C8y+bNucR!I^;%L zYV=T5f&>0Id++>;eqJ-VSqdKz2z}Mxc5{dBIsdHTTx3s2=EW-YFGpzc_$DJ5(HToR zUIN<&v5)H^2Z4(_!7ROp0ph21MW0UPQ)!)N1vmWQwUhfpu24{W5OzCj$C``{u7gVT zT-R(PRTB6);@kG;YhLKH=1F}pFgi54(5N4LaVx6THTUs+Gk9?Q33b=2c-Q}iF)Ku((F^w3tRDns&85!_8WT~(?uy^=5J3L0|=K) zI-+c+wrH&J&*X|4y|oUVyOT_V-53r(37<`fd6{7tu({txJ^Ron7s@*2kx%cEd6nna zGF95>)BfbW6M=5`hYKX*CVFpkHhsO^*$J}R%*{OwFqPY#HvTA*fMzP^Z;dxq-mKWO zkF#VbD$SW@nvMoxD?8PzsRlhN>?Tvb9A08h1VcLli*K4E22GWtQ1;O1?|lo4i?iFV zylVB!>i+%trbTg71JUoYc zPT0It>l_;NE~Vo^plQEhiT}14p~LK@%1vql;6%G!9q3|;x_&F=7B6|lSM8B$D?**4 z*O?afAdtjN0j>~ISb`juva_=@8^}KWt?IG`JPx}Rr)Bft8nw`*+O^~q;yc|mEF{DL zu##-Cnk4iW{)|+Ucc_4W>^d(pw+`3tr^E?Dhet=n`2=ANK}Zs>gCuN;_kRxtZ!g9E zn;8Z?(d&a)rx$M!04*#+?_!2-RM?|bnF)ivk%eOub4m#%g+WP7Jy&)HcBe)e;68DT zYFC)6Ke^BxrKN~p3M<>0WQ4c$GB~@DJsxvJ6_02&(EsVC;K;AMcw1b%2q2eJ|A=^- zN_#Ded`p$(e zt;&<6mJCX(+;T#q$%)e{j=G88)oPQqSHH&}nasr9vfu5Z=QzFZ6U5S2SYu4U*wpJa-F@Q*N`Br!6`?brdGSU0|rCg^^ZR%|93hyMpfNy?r6MlUrE12>? zex?$&Ga~w0%@Yv*#eXNrt5%DwA*X%QV^*?jRCU`47`SzL;9kMNtA>&b zb_+=^bC=vwSi9tWQ5egDVcn8}G*F>`WhFPO#E9_8LJVX+Gs}h3(bfa!tr;Tko}!lT zF|)UgDj>OmYeXY!AgDevkTrcuIX1$f;!*MiwM>Drgdj*)ULwaO_g@lCTJ)pVA0C;C zMxn$%lhkZ#V38sWe0c5F_KuLK+%KnlPJK2X=&M0>2N_ltptm6pbD+8MRnf^)@S#@u zQD>m{dpR@k_hO3y`Fq$5v2UtM^ZU2B4$|rq4ia>Ac&pBXRrmL;<>QypUbR}3mTeGK zrneTPSCQfDsxz^Uc{S7aWiIw4nq;oVamH&@32-62m}4P@jy4@+2`iY?Q*)&!nxgh1 zj_o);Z4zBM5=;X|(1s`Ob;JgMj>#V8{P^h1R$;AE*Voxt8gOSsMNvS%9o_lX0O90G zv=Y)S8=Dou8=8gW#(KEB_ext^N>^BZu%pt$c5dhhz4&Ut!8bb}YaOEm6Xj5royFf7 zaZ3%-tWU`v|1;Z4F%iWDjSK{3bRA^;%?1eIBF9qn0 z#&%_FlC~Epq7yIJZ9VPs^>_l#(p@RyTYd_z;DB)QG0ILgy6elKJz=}`>?;VDZ?gZo zANrODC?I7^nYK>)qeg?RC@b};wx$zFc)rl-MbYMv|8l(TUaiYHXDb$}GdgOO-qBBa z+DNf3;bX3K9gk1EKI~+wHY=yv|)z0dH0{o$;B9aI72b{m87z}?oNo`3cbFz{-%B8UqK z32AcPSWL4|qTIhRAkhUc=RAm7a~3KOx%NC+GG;lxam6O%kdjlNMeCjXHT52uYeM^9 z2LpIzX~(s4>j0{BbqAL`1MrdOl0r)nQ&p88@kZ#dj&K10bIs9z%Mx+|Y;Q|k)vvqgMOk?>8 zdg6ykQutHLBjR4ap>3PHgq1n_v=pQVpQ(%%`~V^#0?zz0^8qc+di?Q?I}f(^dyrPX za(lY$(U-3wwnpLUe3R^?u+gCG;N~2D4v?`1VcS{{!^_7x2@L?JtR!rhQ_XuX`_EjD zJ(Pz_HWw_`obu_P1VJv1x`G{4X4nP_kZgu>8|qKmdTHKjd`R7@ood$NJwS`SjqqJl z`p`Hp)v(ITs#M;rXblY7$Jc3xUy_7Phak3YicJDOdCh9;Z#?z*gFr1(j5CJc>+CYf6Cvv)ZR z>X)z=Qt2lylrTu!y*D`E=-G=N6;i*%LCMqd8Kq%c2NQ!Z9P1z(#|WH4+Yh8MYOrvC zdMR!)N8TH8^`eE>U{LxdC+38KpYb)$GX2}kAK^*xRyW~`w0+0x3sYiPqK`g{2{DHu zIy?o$NeIt?)2-;!G2)haE$ECfZoeQEp%p=wU4BS0SBUl+3LRZ$ljgILTy(b9ZR|D& z&jvc8a3IJOTZ_tBe$w@q_1%|?E3ILZ*O%I(72hA|29<=(1(;H6(nCsjKThHVrp9j; z3Fg^?;E-YNYgC_YG(S@^ZiO^r>j^Sg^In=06UQ7B>?hCZEz>Ej?4R)gvJ}e%6UK8~ z$Z?j+;uA$#$E@N43V@lGEm%J$2`zqI915>b4G5V;(tP2ur`AZX49#RNB3{xGz z(#8?9q@=ea)-1g@yAWod7ca~OHd^rQtPhjM{H*+H4@#T*m-QNQqdhIy(!w);r3P$d zkuxG!Y zAwY}?iH)`JtcwaMO*>5uq_pJZg)N3euGzxxlLJ7QDpAf`INOPQ*dDyt_KAs^&-J^W z{u5GCQu4b}qc~X6E66ejB3f#c{M?!NuP6JjGsP(Rpe1DG8Ic=h)ol&%F5J5{EGqN{ z>G=|_imN7vm1q{i?L!ll^3Qc$CNE9|9UYbN)bbtFmsbm7gxR00j3}r=CWo;#WRLk> zDsp^Y0qyCHGPB!h5MZ+H#3{OyB09sfr}_Aw(ZhFrRb7uY)j5F*`s@5-hNCXWjHGir z%79SBd*3Whct&^Fwmy@lWDXD)R3f#SMv7K5Dwm_Q?~N-FYvPO=R7T6*k5sx^Z)ZMP z)$HH+(dPJtxHaYLhl}E57B_!*OA7p?b6b`S^Oow>QH!IwvgmKdg%=cyy@LN!oN^+-IQoP>(eo~ z13p`zQCjV_f)gX+j@(FBzDt*4I0p8Ttcoz~s2Pl-e(9P_KZd5c6CpkpDVWZVz$|yStE-1$RCYi=456BUH66CFfD- z1~Y3<(9|ib8@N5P@Iif=h9g;D6RQ&@e6GsbHn5#`XV!j$FY-3EsU+_QRG>!$El~2d z=sQ+{@ntomv%!LSq4I_&V}vf5&Ym!0#`VMmLoT4(QTfhs126gKvhNurq1xnhUPJZ7 zK6MTjiv#mQV}OUG28Ndy4Vp%uQ0N*J(F4`6+xTEzswv3MjeXn5t+In>-5<}(D{lU| z{%YF7TWQVt8$sN6$EHcfZJ6iz^`m_D6I;F!h^C>Yz z&F@X+<#SMSoH?+amCOT&6cbJ&0Yt))^bFnqFW})ZYumprDSTfZa`^1K7!n5@O+nVB zC1WTG3koD_kLAWs5bp&0C$e0&0xUCkb|6Tm!JI$7Jwr%GYsKcgJQ9_cB|B3wIe+R* zj;P(leLXl)b!}cMMC;3yY+Rt{itpQm2g5AZ?H-d}&)U%nxC(s^S1{ILo6 z7ku4mwbT#tU`L(nAXl%qj9MsvJ_p;PsP#6>{>p4S=9rw8S&AaA7l5okawvIy-1mIz zJU;3u-TsBqActsQ`m#_o9pzX)XkDx^!>S$>yT^H3n*#>%u96c@yy0@9dNc7oTJPH# zABp4gVB|H>C+$@5RI~TT>58Aub4+-)?b2X>W@N9-GKKrqx@6|Yfp1*rQ{9$_pj+)9 zhT<#3xf$VkgDz~ByAzMUQ0=tt>BMx2kmH>(%4+y+}* zD*+wxhBPF_bWWhMrLRTc+p15#6s@chv30=~{ngl8bLLbpuVc{)mIKZ`k))#0ssYxE zN8b8nAgmYRHA-~$wczi-ER?CpZFkjPaP4u(1)HU;`AK^9_ zu>(9SMZ?(pv(jXQCRP}>&Q}Ng8@Q=eyG-5k$D=4{Hs#sP#W?3Mdm z--Bng)cVDdI9C6(b}sq=i{E)_rc_lomS&)kB`-H*EeW$Hdo*2w^qGuG-pL8A6dbPW zpOo)z96>0@2KDQrs-kQ*11{N57Q@m7_V+;ni)Qdr{re!J(a8+X+2p_`I?4pD`q6Rb zc9M1zHq3>6Iy-j11h0Wf12M9xR9v4kJ2UzWPX)-Z3e~!~u?O;S##~Nt75@{RwGi@I zoiZh~pm|IL#=f;T%VlNU@!+dcd4y?_t~3Tw3)?+q)(hIuSWXg~!v~z=Wask*t{dhw z2+N7witQ|%V4W;c5H4qz;S7uRM%2(Gq#2(Uqi1`@PBy##HrgVW{aE z{lad(M&8PSQJa6J+p7;H+D#;IRdut!X zfXe=8(5i7_)%93IbHW^hGprcB*i_E=XYjuFu@+k; z=98H=pxHEy$*Ql3YPF5{UfI=9W~R<8Z)uCjF+KG-Y$7;q(wj1!l7tsoL@mLDvW^a< zfUv$pOmDlo)E|IU2`_f!hwedoB#r0>n}7x)iqwf;B)m;rob3yAVk<%4|-j&Cj%ji+6eAbX< zPG!{Qo8~WZafqha?6GfZB$pLDLy3KdBvMEREUv# za^yi+ot>^??Gss{7TqTK=8YDazp2_MG^l2JErC*$amJ_j*f7e%hS!LC*8(>XLnrlrWh8-e zj)%UrTIPS$E&ix?5C*NdtH3aDp+2?U1uJF*vA4@JU#e?01~H7(rp&CV5q+`0BBDlj z1&nBIruy{0#tR(ZCN)d-<~@uwPHw+Km=C)3)pscQCho5XiDxb`wIFjhlOu=B5`!ee zbFGybYm@P^Z*S~7o#ea+&9*t*Er+~?3;P;xrMFNeW@2%iUf9CfpE)fa{y$#7#XMSZ zoAes;DY_+G6h)S~P5Q;=iCX=B9Ty%!yQfyNK#P+qHOA2I1&}&Gv=U@tc&u~IRl-}{FDtbw`95tQf9Vk4h zxPF>krkmtw=vZ-cw%&(9R+YSGT5`V0OxU|+HNP4N#sKw6tHk!>d_U1q)%ViHiYPC) zd|m0=I=-L_%JIQKZqsCqKD)G4x z{xxpafNSShShld#iLdB>yLvMA?^}04n@JcT>Q+0^jSM7dsz?4j{@Dn0X{6L6W5;8T zOs~%}o!rE}`5BfR5*g_%ynhr`iwFu+X4{c#Q`mmIk;)Qfbks=DUQ=y;C1@gqdAS0? zeAFNnznujhP<#n>khI?vT68ax=j3yIq)f zl*7v$$-kc4*SPe9+{Ifk^~-4f$AH>!=E>sJko)sE#^QSH!lxiqss3_L8EP6)PnI8! z{><$*_+0$4GWuP3PPq}b2jVlYG(2&Ddj~!IE+^)4?3C(I#Hgq;8u$M&ZKhI3>hl7q zZokrf4k1I^6L-fU?#3D$=M-!*`v%F)FAtuRmO~AQfA4}!kwA*!?cH>b?~B081`Gj! z=)oSW@Ph$Mq}kcoe6u^bmF72iRt=3jXHq=?kpLD-&c7e|$~&m287d-J180$RH;n#& zG2FmTNRh(Y`QI(kIx>N-6i(uRtB@jVpvspq=cza?CyYW{=J43oUw{+sPj}T|+0L4@ zB)X?DBQoMN?^u-EMMSHL*iSMaDO88`K2@4ILNL5_;8yWI>Lr=cEhSvTq!pcwjByD2 z9rrH5QD#?s3>9^PFcKvn~?xD&Kamn!ZfSYAO{QMFwksVWA zsN)v^s(l>s>0fs3*A!2}v@{>fCv`ur;2MwUp6U+LU(V2M^|*U6=Up-ofo(puu-);E z8po{9M&SyPyUdi5DjrL)^oFLPAK+~-pWuoPd;Z!Ztf5dKSN57_A9r$Jp90qTXZFR0 z-{^^|{yCni7mEKWJ!8UfJf!#%+?2yVNBEojNw#UEu4A?MWh2?B+{deWCcnK!igy`xtV_!J#L`F^0Q7&yeHfE<0E z!ak_Cj9OMZWPh(9dSRC?h%^8QN^pY?=mc&eHM}1Y>_KD zO!;|c^)Zh~yr3y`c%%_tFoO|L2Rav~PTDN9!uHd=+p^h15RMsVhVM7|NZm4KeO#0KkUM5ZVoq?9#t$70l9ladX^bDwQYu<8n1i&xJf9}t>; zY-Zi!(JhbGn@?8<)#UtH$uldi_c7V_tExof;v%D?gBnqb)bYKmx?49u#o}~FopcaS zdE?OXi-=Sn^@nvf(LQ#!XWYZi7*4bk&)fmgvR0VB1E8@FU;Q$XucME(br0(hGuNK4 zAS#iVkqOewvgp0Qu;XafXh_N>KVcrm6A@BnHbsdhP(m`a-(u@U$$5qPMv*I_@TMsVL%mGehz)3y1m9_DXTtH zFQ!e%$i&>QZ!T++!{acB`7f5gwPVVE^wE~Zv99%|g5>a5QYe_}VqyFC z1)a>vrc@mH5khPK)cGIa)?SN|FE110mNMpW%?=KGE4z}}+h0UCgca|56t81$BRG9( z^uT1Vz9;*5)PWlS#sYWhNv8M}N(+~vg8-PANV>@9{%$?Kc2h%yJ)wz=KVrmiNS9x< zKO*nG^GB2&`dn=#%fuqD`Q%njwC+gd5EU)G5pt2-?+<8Jds0Sro)1D)R}b`oR0_04j+fi&TcC9r06H zJ_=HNYK*#TQ@S3oQGe@AqxIpvM$kLZbCB+dgsH1>C#7ezkVaVH8USH><>9sr|$37{vPa%Nig#UE!!GbC@Q4z zRSo6HH9Ol^c#tW(rSP)A4WI6&t#}0vHL5<_LNLD7U_*nqmO9U5@zCrKGm*pP!5N;+ z$R$Sh_JJafPeDqh&0Y~46r`399R-A z1Ae(qgxs6S2I{gSDWI82OPaBZG@JnBqskr3lsx)G<9g{R`1z5)R>KD^_6|tz_l+v8 z2l7gFZ!%`h)P(^C!*HhMv$OvnU;iD?_8Rx`w5E;H7_wVue-MznmeEsi_kn6hM zq)0>Hzo(b@q=gFhkH3AwBKW z3^_3uYUND_T3O&z@|sD!WfJexznuToKTQc8{6D2|@wd-BR@2_l8Xz_Xc1fa8NqM0P ztL!#FTp@hY?oH75Z^j^%kYXv(5%#-#)G0Z^4r=;6%$bg4l=-6WX!GG>QFd1O9n5&FdR<@21BcB0^cyBK=x>ewxx&2A z&hNS#s{Y!_X~$FLi!fnRkL5{Os5FZ);<3IjszWjBX^4uZ_F*@pSz`lVp5>9&uANZt zu8K3sHlljcG9Ntz^cV`7wIg2_j?S4kR_;B#Ou(7;reao$WiPJ8ed$Vzqx@^&zwq}RoN-k378J|c)5c%i?_xheXm%X}C@5B_6 z%0W2xDB&o08G~%cKCdB$TpPtY?kepf$$wHM-~kccp=&*2nP)zy49`lD^-pBc%*+cX zs9}GS!flczw%U0UbnVTTFqN0(D<{2!6M<~l~MEXD8zCJVdf zYBL=Zuj2llacQuz(}YDh-uwz3e=Lcn6G1S>;l*Qf*U7n^k$f=b)x7Pwu(dFYi6;@V z+(G#bEIk)GRvf-OlE2kf@4~;Y>ydH8zEb!5;(TBszG*g}_K>HY`A7rxbH>dp6^w>$ zRRh8)?w6^4Y-^PkuRG)oZ?fvPQv_pT*P9`M$0Ok0?Z*ix$*L^lY*2Xc{~j%7x&9kHMqCe{k|=VCv?e26dVZjjv_^Wyx*)!LJr zs#Gha*28+%JSr1&<1{*MIs;)!+x;r+e|I#N`s4v@h z13c`SxTy2CD&$(zq>H>v!)*3j#JLr4NDt>NqAIYIwbz}r-^Busy#1Z(TvrAxt)AtZ zdrnG&3?Rv*00V&#(9!NqXEbr<9CyBpHm>(2tN(8`Yqie)KboiOP6cbQ;uYYO1C~Uh zT3D2-K@9ft_gE3R*9RS{=HDv{B2T=@RzeyG{M@C9l~@giJnkFi)=hN^+`tJYf{i3| zF9&{)jKxhEN!rqVsL@FQ`4h&{OqSfv#Oe{T9GeGtSx=24!skkILya4)MTQhNTGWI6 zGyJdQwSShK=Q%75(qn`V;o7;zGLedQK^FcIM4>$Olp-Scqa{tlPZBy zVln1FNwWROEqk2fHmrxD>pPY#C#^xTZXkz19do@#`RVzk0mGn0zCBv_yrmocO-=XM zJSey!Kyo8mgs7^!S~rp&#- zws2$COdkP(VM6c94RO`lujdzsw(&y8>90fjbUqxXKLKY(Jf##bk0T=y=(2PyRKwGY zr!xHEWBJ$Vu7DcJu85e3nF#POgO?{{?Yg}4arrb!?7Qw`;4g|fD2$jhzGPBJnG`rF$KHjt@9s={d z3eV}{Jj1oU6soXhz;YBFB!$xGnquf7$vVUUfV;mTJF(WzvI2;bOf+_SE>(4^sYC-oRE10+he z{^R?l=-_t7_lCHv{$LXk_;iCTpMM@SMM&wvh2ziDe`U(vw%I7#dOLd!Z2m?MXoHLy z@o{@9BF-)ZL3V=3jA=Gd&p_$tLVv+?lw_!ZH$Kb$sca+%%1*R=Xv)i05luRrE&YaI z>YK8sA?18yR6s%g&;T;sJ1WBqLum7)O>0tp$4*wRC+?m>U+CUU4N3ujWyqIxju1;T zUtRK5(RHSub1d_USgs%EC!cIuAFi8wuka%)Z2GXzfbCebSXppFPUi&Tep0r1xA(K% zQRyRB%*=v2`3DRqWD(3xoX*)XQ0U-X>Fz*^Xa>dA< z@v?~D>>-%O>nQG62NvpT0x*Y=(!N=k{?S3~PTZGKg`#Rwtd3zeZ?L(hg0WxBfBgw60D(RoHG#Va6D!M`|_`%w_^NZ75mOF@(QjWPiay~ugnWM(WyH>a{KCR!%zL&yd58TRxTr!;XS}< zN;+kCNn2670)j_f@H+uNhT*{KCoM%AF6z_#<7K5=7zMzIOO|zQp6DUxxI8@9&bzwy z&UXx7V`_o`urD40`r!8lf`EB8fb&r_r>kt>nZ%+Bv=(9ZFuV|_Xe-?t}$yWzzLsPoH>Z^EdVDf=KQb3 z=G`8#nVEYyS5V;i%-6~VZ_at;L>Xxc$D^*BnWdvupF^K)(9G4?%jWgFOaC~3ym7DM z3mT#Gbt;0eB$4jf5+IVq!YnEHtfpfF9L>b<4Tq4-8s{R9jiKpKZ+vcreLc@S@RZzwQum9!hpSn$H8ac?F4YRbDBuDx$_pPQSjsjb!PRR*`J#pzVmz|Khx z4-Zp!cXyXiJ3@QYD0Yhwgi}8d_ZxL|2l0PUz)l)r&6Vdr*BZU(1%7o{xl_9xekull zE(hru-^rBCt$DX}>6UGc`{@hA8p+9z+m$-K^zFs;+o!!8a;+{Rln)qt5OOY`!{mN@ ze4vm$gMFyG$VX3q_d{zT#-Jor=kbrHz@``owHJ3yza@}lpqJYyftVF^eRB1D2_U$@ zdb}`Jkki#|6vofS(w{!)28NUh8$$?v&pUQUamsSiv2i{**l``8CJ97uW ztdAIXiCc68?1r?197$ro9v#+D8$ZpP7YdAGnoic%L=rq&66ad!h${KWF)yH2>*{fc64Qc-XwW?Rja005{4fIbsHgp>iLx{7c*-^8ntN%Qo@y8SsnTrpOFjkkxy6~ zG)$B_t4H`CQ@-YU{#{aSNEuPS{}K6AM%du2>)1zkB4I43M3m=?ZQIj3v6cBP(=*(w z;XFl5QQ~V6F=AV6_SAxRNO#0lvR~rF&JVb8I8Vp16Fio=Oxd&!1~sy#bi(P*tsEi0 z#@wimssd9Ii6nIFb4zhNI_hV~0$?`t#*+^L-*}c8IzN{W@*^X{%cpZdyGM))=Xco{ z4wFWfeL~v!+bF%IoNJd{N9Mhu4S6w>6w0s^%~+LPg{TTh zXlh*n2EWv3A+Q*l=w|2OAWf8dRaW-FZXxyH%5l|NUR#_fb$)&x!krOq+JSM~_J>Vn z(BH%nkY~Rugd3Y8+qwxq3kWazJW+le;Lh(C*ujNJOkD`H9eG5FIr@E3lHfxZo5|V@pQ^AkShk;KG36^&xutW%s>F>;!1* z#4V=6b4$Z3W*8qrx&r%8pR`D}b8}JPxPazTH2m>Q0^iZWw^hd9Cu5zNCiNacx4^og zUQ$&;@#eil_8>Qi8811w^|P#B?o(NWvO{fol>RcYcA-e|g}To!KF3ah#yK$Q}b9czNY!_-ncBB%o%X$A_+7(ht2U z^Ydv=6PL1U!mIn0y-{etTXIl2IS(u;EN&uc>DKt(UILsdqas#hMh_ExTV-!;8wuhT zvAmjYNq$M1)`4fY8S;XfHIszzV7LI(A?|Gv!EhY9c|&jP)|hRO$`wsjyLYz{S{AWo zG#z5b7^T+g^8#k!3G+I6E9c#r?JDGW`?vRt?FKxYbhh>nls4hR7dN3|dZr+thEjA|mPi{nTqG^7!A1LE9 zBX2C`V}KY^C!?7TEq(9tMkzf)yT247)HYg8Msm$vf6B_&vG*~rD5P~H9a}ThiU-&1 zY2!Pv4N@<8V>nmJ9Lun@D_VV8nKptABzca=g}mvhl9j6Zx1Y>$uD8H)PZhhNXH7Oq z+wJi(%|C@sTOJwht7%(TOI*A8>riJvnfN_acGEl4PXl=pYDjIQ0l0f;`cGzMYotD! zB}uhjLhJXQaa-JOvpZF|UCU z-+xjU7yon6VLVz%2wXOxf%wCK0!Rk2*$4DvJk-{lDvG7LpNY{i{CP_Be|y)RL%+AK zQ*2S~9q`{zcp}}e-wP#Ta&zs0Ioq=Bja6HkP>QRMT5!C@Y23=0CS_;ZBl$43(YAjp zFWK=bVFS&#{t&*E|KjOsM;=p0v^c@5UGHCy>(UyZu7k#l`j#%FsO|c;YGj8bz7RIm z3`x%2tTx=4YJ)KfWhF1m$ag8+Y+C)<`RCdn=v#S$$1=|aCYQunTbU9rMaM1YRJqDD z4t;wLrDjELs5K55H_elcwKp#pqfABv8z(e;9#-r*PFL z>V!64fK|a?SRd9q`HnDMiM(Y+|9FbZLrJJ)LrMnt?S_1US!r{m!RsQ(t{Pe1^>q09 z>RPKJRg3qa$lP}fbGoTRy&hYA_&i+=6CGY^VL;F${M|0R@uGJZtMnZokD2)B_9EOI zTu*s8J3p~oBDnd%{04b48;pkUv4bVNxxvt$-O|))a4{h?|BlX_xtg5vjma>7+C8@Tl=us9h0Avf!+RhC?L~ zwsuej2Qy4CJ5jR6fi-B!tWeznF-?g_Gzf5otv_~*e0b8_;jAt`pf4q`X~7a)^tMWm z`9^1%5GKsIgD=CbRDS%qQz^qfoJeJT2+Za@Y5PDIj>J*%w6i?jywk9mZ?%8S%|=xh zDQ>E@cBwzXeq;1>z=B||Tx{O1&e|beShrYn7fde%_!;-np0bD31{AxFEoboJ^d%t} z7bUW&Af8-P_%`gu*TOH$iV=Br1M?~kL)%YrqHHC6Cw{Hi?V7$+_=p=56HzRbx3w?= zSl8tp$+J@<-zf9-Ta$G^BU}ms=Y@aay(_D#MG87Z$Cd$^$9=34d|zX5MT&e;#Yc4X znskl16J>lGr6E9UBL{~lGC+2=< zd)Nsw47k`?|9?E2`iI*?b^tZ{mB% zZkS!o+yw*CMncHf-kcXU^6zrqxZhA5mT2f8HIBK!4JLQHgB9C7I*-bWWPOBRSiW}o z?upuOkt>sFPkoHFM2t@A$e*hDMv{W$-jc;wuXh|iwiQ|T*xu>=cfmb9!r?;U2d3G2 z0^c9uR<|*K$=##a0x6B|B}Y5`-A+Ge&bEHq8m!YCFcQ6_cK=p*07dC2U6s#EOSJQ@{y$S`h275 zgG!Wx(O7oEsQeqbuDrGrX}PKIz!tern5hRt;lYwV%c3w~Z?2scNnYZfG^2iv zBU;_Lan_BmX1?Xq;Rc^kWbpj<)nH>=$RE=aI3;1xBk&V5nb+-o!6{{G7MRWZAoJbs zVGeLSm!fYfKCMjrV9|82{!IUz){ydKxB~zNTL@^tmfDyfVP~n`-l}f}kS7$+2Hc*{ zW^#tgIbeiYXN#U9xpeQCFcc70Lf+wpAKJ8M`d_byjMouE1|x8DT8xDB5itFl7>B znUM;a6(|g`vY+BssTXqSPj()WmOXwM2ALwegm@=lBlV4Q{c~KV&jgNu``|si&wVa> z$#Mr>-6^mzsrqbRIEX?RdFhUAIqOdnXqq3!ErFAIjIZ<4@xV6f_e+Fi~qGN^+ z2o$>a@&t4hRwzApU|g zxS_YEYH|}efTy2ODNb2bj=iIwW%s_JVIYqDK*q}B%0PG`k!mWPj4%16 zO7%09Cvnijq|-r_m)_0|?Z!6*^cdc#oS;6qw)DLYr+6~%cutynFF5xy`i#OUEAPQ$ z;LKaO3;c72tkWp=L@({&GwV|qL!UUVwm$i$ee$aRsk@3#-c6=jnD_M0v#$K<)3|Vq z4e!GVvo*q@Hz1oE5W({uMj~=_oltj>^_8|(P^h7ef`L4$lf9l$7xZKJl#Ym^4#xad zy#2{rTo}|+=L>A`;*6`~FL>vp?XC$_LU>#!bKCruM!qTg%5k3v-j<7a$jaL-{wZ>D@Qsd6wQFNW;RlfVCJAm21%D*@Z=-*C+b+|9 zRvU!aefmFDuaJ-sApG5+BjF;&689WG3eRF!_SZN2)1^JGC1lHTuMJ3p!*Gq{`Ttjq zR6Zqi^7l3Bn$Vq73}k$2J!CELIN3Dr-P+okBXTL+CR4NB`IJapp8X$NuevXdj-LL~ zASWO#cWWn?qI^CT98xNqk|XJ9{LEUt3!&dUMJfFGRA($lQ;TGmb~3CcZs5~lFRDrE zBgG=<1NF|DhppEdI*Nh4ucWL@PQ)c}$sYyN5&w0NIFC=gO4XfpSk&3%R8OLty~j=9KR)J7qLsK0;fvNvFb@asjJs)*S|wAnSj2;e zm;NI6oX$(u2}EmNscp9xwcq@U>lv1^RI*q3yfKt^K}+7CgoZW#k;vE7{MPWO%A4ao z^Oh|GhUW8?h=&6KY+)XrV-ITP*?7D3YgP3&CBUtou3>FBelFSSl})baYvUB$u*vE{ z2jsRo!BuSs7eB>0k50B_%sYD&em%V1k+2tVT=4s+q|NHVvW_TS)-Iqfz4yE&=AwtF z$~D-ou}oX-HHK`%Bs>*4ROez{)vCSHN&`8Z-W&|wxJ>v6!#Uqjyd4Yiz(#S=I?HkD zp4bE)@!R*@DRV~xJXGZxB;D&WIxDaKPOAUAq<8Tj2UcUa?0*?JMQRQ%Uk6t0G<}K` zZvHLwc1Ww#kA+7{I{m~TWpn*J>x@@r2r+0hz|qu`q;>Aeh4;Tvvwrn+nW*1C|MxNm zc2-SA>7#3dhZ+Fbz|GaFvRon4deOlLi%Yb@eUq0>2sQ1n-8H~}jpwKK>S)T`keKPI zD9qx>o+!DT#*yV|V4UAAyJ2HjmJM{vT&};R1v5q4BaxYuSqZZ3iP=M;BqSLn;}!A- zxj}&9km!{VX|k4Lix;|91jI9H{8z73I{)}i&{NG% znhzZMppEk(43lOGsb}ElFjDwB0PHjmhQkP}~ z$D*AF1xc~qIz=TVv2!&t-na?%+o>7zQrtCQQnOEP+Ru7}0K1R<1e@mUQ?ze+jGWhG zAI{XtuzhAfaEkZp_h~Pvc_Y-O5eo6Y-Ko{O{o&t$FH_+%4|Z}W2SgzZP~3-5#L6D9 zy2@hN$>jf-qsb3284+YNZ-bwi{K=vo$E1eaq% zbQM-^c_-p$K#Wgk-X-*_*d{w3nXFZ}hByhKce2#z*f2p-g8lpPt?xJAa z@JEf3KM2O^WA9RJDqGQkdWP>>4eAfn>vn<9XmG^*X6NcgWad-I;rRrf0s zv!7jW<=twsg?-@h@C37e)& zvlE2`L*3b7@16k{yVU>jx-8Sg(#@z6)Zk4e&4IOSi;`b`bx*jS8#94bNf7~}rj9WE zgDQz1R_w<;4|H?5LWg5kw(=UQKmeU!yUJ|-o42&CVE}H|?f*LO z-YL3~pyn4(Wf@aXg?2J0r$?FQWG9)yPaNN}WSy%-mHsB$!Q*$(R6ghf#W$6hCoe)0 z4-`g+`Pfz@sjaLQv&QF*R=g&fSaU3yP>q(@r}w}bd7AaOJ^yfg?)3Gh@7jgukp--= ztYr`Z#v3Ml4X33=;-2C%KlV`y$*BIa+m zBGTRE0;Ofz9mjzeYA1ADuOK4l*_Tm2{^r6HA5Xe*EVXZzf0>ws4`Q8*s6(eVx~OP^ za^nUYpeQ6~ATYPT^JNkH=!{W2+!-lPX-R?|_=9kqx+z9G3B2rN3=0=&Ingjz|4Z*s~$#<=JvS zx`t2cFxAL=@cIMGfB@arHbfa3pX|yY{T2&hM@A+oiT30 zu)C+nM5_Z9O(fedX1&Ub?}+JCkt(Cz@L%)WXK4>T zMt3@P-1WkO|C=X&QEiW;_CxOTe^dlzM0su~G_5G=p5TV^2*_-(*jdV*j5x&+_t&A` zsjZz)do8T_M>FXD1{={8f!*hNh?xJ0H`p@wRCz|1e8$Htu`23J+`Y=6dg_FqJ3oxe zm2}7T?%d>7st8B)gk2APz&}}d^ML4!s)-#S{FK1!B<&nob@AoZJnQDZQOPTy=zVaU z&80~zmCj{O&P`ODn@Ic0y1v^@8nvqfgyVtMun8j%i~5HVRF!DX#Eqd|nCx%WX zu#Jk*y0}HR5LO@qx*5auFJUdt6#TV{=U4E*8d*2ADs&Yy8>sRplao#DiMY!ny$&L8 z`G8Zg+if{z`p!=po=!X9ER?Lf_JmEWzKVp(7YD^ zD>>isEH$WrO@nHL`(0z;Xxc^j4Wc?VaU)%d?iDoY zVxGuw{?Tg)xs9ySOITwq>%7VcT?$tvSx1rgnTB*G8I}Y?GSGk|kLgi*vteZk5Gz7w z^}85MW{{n|{nxNP?ly|`KOL$OhSlxvK>6~!CjbBSvI;YIs-C<{kECF9DX)uUlI-p6 zR{#Vc)B0IZRBNZ0yoG>W@BAL82QSJYh#47Y;dYi^I7z#c)BnnmedA{QfEx05)`FVF znNn?J?YVMUyAeEm{a_to>V4?$6kN_YN7v;-UKutB9?K5whc!`>&}cNE`Y&obX4ea& zbrxJZT{J7sdVJN>7?bYdA#il#&B~W>V655p&6HVVHee#BcS9H+IDLYAW#LBlPLpib zh^kK{XcH!1F{X02cxSaxBQ=%Hb53E_q*rwzm^Uqv=P&`r`C;7|Z z6FKb=`w8P5#!H__T^mbn4mT7%@^&J3nihQP-R{=EnU#HQ}4`5 z3P%>UL(dtbe}n5cvHpk&ev6OT!Cb2~P}x9HugArt1B#yaC%Rq^uZs~r^jJO8)t;k? z&EBX0E~fRV7#7qKDqcDG#yW{8pgv}xl_#sW z(*Ib|ZzF6bA4+aXP=ng1|&ZtYukayJM}t_S4ElJFHnn0BOuAbcXG$I;9`&4D(zy}_h;m^-()DZ;?__U$ZNE79&2;{4XtTlG4c5a8=9E%SLYw1W^Cm=9 z27bZR3(`J)_5kIV+xSOe;+m!7X*Bm?`6fvXt&||TqO{^3u-d)UVbb1OBr&x8s}Hcy z08UmJ2onm?ZWr61DuJzxrn!pTm2Oh1s5nOG=z1M+8sG>7w;IBd-Y|CKpJ*yp8YU;ZZ%Y zRZ2q|`ES9QhXW3Nl=Z17Nb~fFb?MIolUE0nr>TYSgaueNHG=|QEMp}Yd0Z>)!K8XNQ06}lw75r8@U95E5N#bW0rjLji+1L zofdx%8@#&o7t3P&YXS39sOVO#(_RYiJ->=ye!N0UPC@rF+j~hIDq`zxIpisFOz&YY z9@p4G5Q#pdRO$y=pr}n$>6g~}y<+w{?3qhSDPE4@xOs1|+#YdO^x~RBQst7aHw2WP zd0BTkqb_`LvT)(`*0@^H=rIW~zyp zdS#Zg!39Upn4#c}1nNtR_|9fDuN(BFCXqfymy^)9p zT5`H5ePV5!|HWEjvj#v53l+|(%X?Z;0uPGt;pTi#;1x`_GQ5X5@qwxO*TtW|94h0! zr07DkzsL|VWLmOJqOo{tP4~{o@({EJHP-K)C-#+i(`8&BlPX(U{IQSMvso>~1w%j6 zoHS5#;Oxm%oy6lTvpieE*`!w{NP`pQC4sQ|3F*#^#w$L?Weakp@d|cJ0WvE#jjmlm zck9mHOGJ{BX@+LVBR}N1?CVb$>Teo7D~spPH>hy4_wq}wUdkQ0fgbZtTvPTgn7uy` zD00{qZ$VF783B^28};()%otf!qWx`php3;+wj-S7QnRGSZtJNQBjKy_T2b*n5$f$g zsSA_<`=&N(0ERujU+V66dp5T3OwnaUzV~Hz-n}0F37l1cYl;HS6pELHVP#=mj)XZ^bR z_Lg5ts(?w?#i#hkmVVPcHvzrwa{{pVsR5Qp(0IZv2a^ZD)@En~FC0+(`dGH4z16^D zs*A*usOP&sZBLh^819T4*D|XkkWJi3&|jtgQ*){#z>LqT91O!XWWYm@9jJZ;xSAo1I@20 zC!ZjPk#9I2F9HSy$^Uqd8V_xDTIccSbdlUU#LXEwbtW zqaWH2w#A}Z?hRb_;7-C3BW7@?{>~B1D{lXwZ_7d>G6pBXiKrAEE&&+^S%HvHnCm^ zUoB}%etC0!Q{~lsa-8+YwLIvC4xtcI1iLF^ws%&@O)YyTb5h$v$UL6{ejE?~$El58 zbFo{|?q_=8<29O*Nkz*~g6QE%P-9h7x1YQa2P7fm1;@9TaQ*&O~ z(fo1WM_vZ}(PZ`wR_=_6D1VLsvNs5|f0VOEvyuuN{1e}(Ay6ziWVs__D5#a5U_ido zSbQ7+$utQL-!P(@pe;iuM!Wr?xymfc1xq_tlnnAi4TW#?Vb5>t6{hM>%-hU=rdGsV9Q6%K z%At<`%=3G)l1MFwvF|enc3P3#a~B8&Qo9ZcW7 zw5?v6BXLi@*4)QILbZQ|1t!d%HGVfO=I96POeYcB6aRzn-J8+6ibExp)Q1z(u83204=m2`IW8HlswE130EiG#l1ZetAkjw^ssq1TlZB;~ z;aXk>u5~H5XWyp!DUZ$??%G+{1oXV{Qqgy^6*cki1^`}fdXHf;&&`-%Bo?F;iSgVva{ROElTjCK@{w6N$H!5y#oV6?({L_0qE9-GyaM zC63riH-gIP^SP{=4o^7?9ClS#;Rzep(-TomI97hGiyPxOYZ7Oz+*rHg^Ux_Hph|u> zz(F`-6z>yP&+8NFUJtPI#N9&3m08;j9J`*YDNpfGRjQI5*)}+pr;S@ne9j#Nt=M-e2;fja~Zn$0UEpYp6g~nwuw_a zvMaVac?a#EoJ;*Putoo;^i0*>@zqJ!P`9OIak!6KHP<)b;!-?UATVRcs%JHhPVtdi z(o^+-H;hWsRMOn3^kp6HWAEWzSDA6niNLNGK7D{jj$u{PIq|_ZKZmAWrG}J$ShV7c zH|Ph3i7vVuByfC{?Or^ZHSkP*UhBEIMJI%yMG{boIbvpH%vR7}M!y=4$36UY$5Bh7 zOE* zHL#g8b7*etY2+~As>QDGNDNli8VLsR5C)@B#p~}?jn6mE86kXX@K!E*VdGW7*lM!X ziDmp5ce0Ke_`by}3B&=GZ%*i*hhBB{xia~&GCy-en_slChEBEA?WxW4u-6LHK%q?9tGX++Uan`~UIQ#_n83>mAPe`FP~0XifGlj34*6|& zy5|2oX^Ar7_usuyAMH6SCrH@+%};b`!4G>25N>fWFgMPy;{={kk5kD3QQud^p>me9 zWG~g6TYX=;IoGzOmKbL^S#>mzs^s7)xFy}yCTRX#7e3AB9Tj|b^Sgm4C6^$z0uLcTuQd0^waz|onTyn5Zv&gK2IXCe$40O&gDKyEPV#V?aA@~) z^Hd)bb#>#;fN^WhdgoKBa(kJxcTvh&KW39xelSnxWOAGjR>BcRsj6D}j1)iEvjavJA-Eq%iMu#qbnKBCgl47!^5DzJtM8saTP3^Zg8JLH4pY@> z)!JgHNkrW%w(HhvU*d;HA=f8yO`u;wOt(zd(UFV5_0|U!ur=bm#d;@$*EaLaO z0PLJ$t4EoiYTUkJ;l>+oN{FM)s1(iWf^S27>>vLba7ri8OGH#G=1ahQhO6hK7WtjZ zy`+z-MTq&9h&>Da1(|pWIE;E*XkrrQeJ<&&s-#hi(5_im^|Y_GF4&4+Ia&mRKuBb$ z$4e*UcEZ+fo7kG>2%Q)gNQZHzLiEz%pVk_UiVy*uhvz&;GikF@v_*gqeRdBG!x=C& zTJ*5FRd~Hiw1W%e0KG-&=Iub%%HHv$Kj!|*A#=j!ANh2(5360`_QBkir$#u+b0l3S z4`v_d`CP}2S1x_mrnGuIz{mTCc9yn}#;dF*b^D^o-l3xlkH)w+DrMPc$ugl9;AKFU zgRDQ-IGVT++~A{`X~bL-htLpvQ-S|ND5m$izxE+w|L+Jsj zXJ`R=OQ%HH3Jw_3{uYO|F=qtXxCq&31H}645dE{>{~rgo_rD;2Zw&`gZTt)kRvc2d z^|g6TtzB$yU53{}1~}wgcco`u0=BBlq!dAwBVyFR{&c}6pytY{5sREU94Xpv|7u_i zf63R@FZjlgAg>Zm)KRT6hz&X?sr(K9{Hck0^^2!7-n&^l=fUQZg-LSJmp~&gH%5H% z)R`F7Rq074GECzIB)L9|J$i z3gtREW4|kPChwJGCi>$~%!bKV+wPgybsrnejDSmZ}SM^uk|S!#XDCrR%bOcGD}Xf&UMh+*ACnOUb&T0bm2N{uB{ zLDW#kagiN;xcL!CWr21&^uvlDfV*xO)L@`>4VYTu_c27F?S+|3Kl1xJ0;Ut@T#+G< zYW~7Mj@Xsl6%=VjXAD8fc4Jkn*CdA7355ojS`6R!)`3P4vxiZL3Db{zD?UuUXOuue zqCoBiNl-~QcuHV?o5#ReP(MVl>CU4i(hH9v=NoaZ%`cu>(Im;sNj7#B+_8*o(b@2) z*ire&Fq2)*IWeE_Z4)XFTqU*En^SNmO;qxiqe_&a4^@m4?^cuQmXY5{5jr3<#X!=E z?xS}TZ7L(d?6q2xXN_77(C!UTJ1Ux^;cc);k;H|Ya^+mvcU~pUt(4j{>MNIP&AEY!x?q4b2t?slA3=&u!aj zKp@!ooKhvV_|N*(O=FNnXfnwRZ)&o6F=*MV6SibgI;R82s#cRa>Erx#Fp&XS{3kV< zFcr!kjERZauYdRB=n`ahB4xz(br66?KS}7Vro)5V=>^oQWz}DREcE?j3ka5YB;;Z- za*=@AEk^A^evd?t5c)qQ@hbnLy7FtRf08vwu=b^>1&c%MG8A_SwGC)0gseT>lZP(4 z*f{z2rqH00a=er(`1|;{El?gd_s;YUxXCp&Rw$6*Q% zC0nP64xaBm(B>^ZC6;a|G3h6k=6V3r|~~zBM++Dk9YKLzA&ZDeAP-vXL?GUh0O*D zl&_L3G>BP$CUjVLfl%mFiI8_!w!mG4+4d(H+w2O6%GRvOY0UWA>Ae&*vHzG31K1ch zjKq6VvL^HMXrqZWxS45ri#*9Q9j7io+LipV0BqmXjGq7$kD={#Vnk3xK7|S=;|T8e zuWbEbdQK+L>)ySrvgKc}h^-eijtzL~7jGf`pR-K60^fh>CeJqEi7j+1vFkZD_y3A( zA#+;5@7oke#lN8L+>^hW{I9aiMzQ625g)+!kkWBAdU+#9lqF`2LfQ2!r;Rx1ZVer4 z@gBSzoNB2UTP&YZ&i#EQ8w4Nj>Aj>gCA^b0N=(F5kf3}7S`85u3&WrB=lR36NLT5D3Z`=>&D8b@Q~ZzJmsE(q&D zj*c#8Xomr8^nY}JiM8lnv+0nSS%aGaOVWABrhQSfcGq_ZWU6JSB}$E4gi!a)HyuqE z`e#S_HK#D~R5rznAuYnXAF~{cz-Yyx=j&a27(iaZ8FJO$GNp-VIo7Ly6boi^wR;qH zr7F)V4_Pi2t+?)Alxx2f&AU`y=V= z>MsO>=4rK88TqISQjb(7W~ zKYU7j{x{1T4J%8b={BV6-{fS=JU;L$F1P<>+vow&2NmUiBSvAF?nAJR){qAPZb|0! z6sqe#mVM%acG~qg=b_}$o6;&rTq%H^qz|T{&G%lXuz0%nY2MS3hXFa-*P2WwyCZ@J z{vWQsJRZuwdp}yV@+n!$GHpz&rHlJfXD#X3xwNWpL!>J$2seMb$=sxp1X5I%AGdm*Ttz8_wrjGZ1^1>? zsoH6o`Iz&0y2unjp}&LXE}=jk2IETsLX^hs$vNW?|8~<^ke7Qr?=~!Mn7A$m?w`i? zzz90u%9UXQ1ju`Ek0OPXD1q1o^x*2CHqacIoEi~Mvm2$!H~Ck`Nb7V|pvN*-Lg)k9 zR63&iF;bqD7@|FucaRt8dIz>T5G+$n^t^s}amEZf@kgc{)?%K_RV2R`Mk>SgD&@kQ_Nq zm15a|zTOdCa(I_VuDUlwwoL*8NZ^ME?zoqzT{I8KHu^BHA2{Bc(_{Z5h8FR=QCMzw zAgB>#&&%m7VrcO^afLFC*!Oi!YWtLxQ|-Wvohr7sZxc&*_rSo@D~8Y>w1K5Y6dD3^Pe&W+gfXl)Vs8<6&u12ofGfULn2g9+BMgn4wF zP|$s{Sp7dN#os3X&3qEuq&JZu@^{Z%#K$(0QzXD8ueZjgm%o z*jj^i%BK(C02P7YtFpV?eqStXGJO;)NBI!nLCs&-ZR^JcEHi-;{?9(qRs)RN!1&XH z17I;DhZuX$7{2BWkV=hLceQ`-dSCR&==b^2TwrZy#$e5ubgua8#T_1FhaS9mD)~VD z;5`q+X>SE_NaH@RX{h>&(s^fe!Tx~Gv*2qv&i4{B*w(%rKlkv9=e*|fcE0Y}^vhGv zkr^3%Vi0Gwe0`VtExhOINaf5*s0(!VAi^Ocstb<2(YV<0e&IRd+|$Wr93LE4<@?My zpgma4v7?YCb;o_P=cyRKOZ?Zc#-AhiQYZ!OKU;phh-KQM zG_LxeZxB6-Z28=0czbNdc@xn=8{A53+d;dVW&k&4ruRw7ptW)WW2R))a*w-zA$R)B zOnv_pp1qz){f;b)1Pny}3A=W0(29E*<5v#|{O&D?YF@xYzMMChZ;%+%JMtg^6F&V0 zaRyNs_%e#I1#q=bZ-p4&o_Ee@D_$gZnpGyyT__0QtFtqqYTS%PW{aq80?!k#5!nGwn()WBP8dZPz{fycP0!&L9 z$7Ay;O`nG1ULjn;czw0Q5)#H>-{#Csn}`(EAyQYmVUC$&y@v~Q53%iidp39zM zOS8T6{qh=#vG%LurOk`+$=`pL@9H5R8g)~>&G*$c@ftMguZqJdPMRcntvV4J+|94ogPZ?tM?pkL!d@5y%{rGNye`rmx z%l38k9ZNWB=;p-cMiX{q8$XSEUr^KT+YKg#V#j%PT-I=7qAo@m=O>)r9&#c$Hh7Mm z$oJ;3IEUdfBiHU#K}T%}>_FE|RGq$!!3PP*jsWBLVoe%xlOcT(^G!Ast&p%~ZM$I% z`S9i3ym6J2wB*1?hB=#okt-3zC7MkQ;N=BftEvhO0mJb>=Lc4h7H{A$X>I;tEs@qS zqkAb_V65_^c}qetC6Sh#oDBGMgs;yZNHeM1NsFn2bsWcVkKc07#eSvL_C+xffwtiT+Z#eM6ILQF6nD4G1{rUID zYvhcey6u}MBU(GcTDEm{+71A&!Vq9-_8eeYpoQi9s!0Rf zY5gfH7_uTzeE5KpO+GSTW1jc^(i&uGUGC~pF^>xo!-_N9jPRj0i@7@2IIq_cJ ze&WO*h!F8KNy^;}1%UW(rw^*mY=qBh<770;Y_wlNHftZYDx zMdVI=fO*&zj=~Hs1j7(#u8fK2D%NKYjWTe!llJ|jXW4GO7kKv`@AVs-$?>}leRc9K zG+Ck}wRI{@(4+Vx6VUCw23}Fgp3=wxWV%Q9ni)g*7J1y}&ncVM99#A^X}@wi0{aMk z+5V`l_Sh+?wSPc@AT8vp;j(PNME9rJ#0`yyp2#81P58TGF9q>C`%_MOwQ6u`(ZxYK z0+QBYgKwlSwOXBq-yI2w^CHj3Ji1kz!PlXx4ViGXMB%zEk(NeXP3;=}<54y(p0G61 zcYK7O(AwbaJ#bux;(!gZe-*u_3MC(0+aH?WSf_LMZd^Y$S1oVlJZ#Bd#fWH-dqB6@ z*DEcMt?W@RLg|}7nc#TY#2?CR`(Dx4v6!k!`ldT3!1I7L9wa`$_Z#H)gS$I&{FNU^W=< z(@i8d`k{kq;dS8`FEW#sTP6}m&`<6WsQOtmN9ifBAxqK4;Fe}R#3^*FFpxaT+rc0R zffO48ha3D6ppfAAN~8i(Yrtb4a`PILNm?W_t%0(N_J27Sa!__AlnoPDAs03IAk^PY z|B*uc!aDt5ivkCRQ$p%#p=p?l3y065&qN1#)iZ{vTQ6bkmqIR-3)oiTHi0n|A5Z4Z z>wy4UpN&u2i?TJ64Rt$8Whz1sBs@;H4GOt1y06c6ws9w=@k7t!dzh01w%97E2l zZX|^@850bo;MpS7741w#TZ^BEUaF6nx#R+8gW3aaEsr$}`7OcFqv;cn(kb5D)2sHATcaiqWlwb#Xd>B4ODz{r*rOno6-cB`N zMa53lMifY<%$i#bH`8Cmhk0gNUK-uSo(Oxdw0%Wp*(!iITYA^F>0BRaZ{HT0au5nb zhukW;JTaqR74>Fi)c1pex#O2HY+~aTY}v$e!{p|-18?7~6Nh3pJ4t1(S2UbIsvRZr zR%p)8ZCmpQ#92rl=o)dmTD_Ir=C_MGI<73)a7s~rkd$Uy^gXP>t{$GPToT@S+h0X# z7z5j5f+av^U@AcoWY{k!g99Z7lHdf(gnT(J<9bVVBBLLFwNuf zrW6TbV!kcfP#>t3!fV2zEaTmN(8IW)>SB~{YY9KQx-4`vczG-o+bbh~n#kJ>8QbS2 z$@r&rMQBmJ^08;T4>LssW@7}FPft?JwcpCNOAWO z1HV<7u)jr=jKu~gV)aP^mxHfqU{Ow#Y-`;&IcPljmf^DmNPVf=1)tCv#_7BV>VG%kZ3>P&cO^gnodW%>C0|Mhn(p zf^Os*IBo_Uw_$Po|5cVzeDYs(4UwuMc%oO`MXCoPB+5qh{XFB1zkony8wuHDULKMe z9J}6UE=;YgtVF^A2##xQH69(oKkg0uGP>upRvIjX-Yy(M%Lv9!;3RK;Pe8vi4lB-1 zRyZ0cuV>641h+OS?aIIH50E~723zVWe{?<3hjfIP8uwf_r374wm5sI^U-c;T^)orzkDmZQLXGaXdI0Xnel#g*56Vca3c1z z8&X=j?;CkT2j}znX8`RhbgV40Jmk<|>xWer%xR;gMEFHWX2eWD>my)&gwUbhC*{8B zPpg8?8f50F*WQJ5BRRSfCK~MT7kfK`moR?D4zgp<0#%Y6o$m|1#vWcbP2)DKeJN#! zGV={TL*%Z}kM=YU{MM=OyXW>|%G0T9!fdLn6PwU!yJXt2rjebZv_pm-lSP^jWh15Y zR6=J0aEBlC?ME6t$rc0Fv(E24zYI1!1p4Y8zI_pI6s{}Zxo=H_@;e`}PaQ6Ip$F8d zdA|Yu-YDNoeJ?k-Z_`GuLHs#15bKFFAN4`F5TAnZYi=d%^E8iT0%L#^N*hriSpw2UJ$8pSxrm9o zW4wLCL%bp<)yA-t!1i%$T9Y(PWHU| z+*D63*T$aDPw{Ud1?rNP4FpOOum92`2FBVjS2k0>C-MNBP;;-S!oh$^j!#Sgwt^8_ zCj6ousIPe}&IZzyw)1NtQRh}3cAjNBLS(bql-Oq>Klr}~<_*<&;!%X7hCYnJl`*$O ztskL|T}j3)zKq|D4sTOF7{Encfy7s001>X37((J)DI5zz^jLSyo`g?vjb~(B3<|x( z@xje#;j238WW5&+1JXDl9F?!=%dH(9{Sq)y)Omu>F6`FIpeAs>r1^kw6=~2IlT=@_?0ms(w^l zPn``cfha$7=^wHz;!z)AB!k%n0$0&mCF=0x9)N!w`tV!w$oGorsn>g8V;TEwd!K{L zGk$$eZ85or~P9+5sN5lLJ@)tsp5TFfq;apm$MAy*M z-O4`B3m5a9cT;A8y;F!W{=_?FP0Dv~nM{OjeC9prrn>qORyl#l}wV+IxGBi!&} zjhlCHt7Fk#N1|9q1>q)t~c{()@({wK$0gOSZCS`$1jX5VoW>!39nZNd6 z_{0@NVSYK8OJ%#NTLzb6ke@7&?2rW?xW!MGDc`cGTqpC=ko$x|uhR z#(wB5M11tsCVc>uKk7^i^ofdHb!pGbi#4OKy3X(n&))@F?Lzz{?)&JgyVRWFVLC!l zFX-}>dl@;0l$6^)DrIK8JLO<$cH_0ko{X2?ou|4?FI==#+W2*Fe@mcKzz9z|M|;EOjXmo ze2qbeTMW-%gOs#g31M9@5IF~)m+$c2__gM@bW6w{2_NaV@fR=K`kB32YbfG1EJ3Os zOlKBtz+ZotqlUTo!wbXP%Jd0M-Q(@dLA}5Z?hZ6)O^4{PuEee+C-pvw`-u<3zQnoN zsVGNbS#f)ITl-5dwF@)#?M7a~pPp03DThp4;r{hDd+6h;w%_~1^bGXxXpe6?2jEw| zT5#nJmyhD_Ue$_^n@4Qr-`;=6c!Rd+578`;5ZWo8e#2a1ehYs&lhBb*q&AT0#IR|a z2SJ?`1Nk(2jxm{oH63wp9MYM6ycuqAmxN9IEX6rKZ^%wMnk^)4tVh_ITlXy55$Z`4&V!wtez0wsOVp9c2` zQh*jxg~>qp`;u>@&-bo-6kP|Y?F9=i3r-p($f_&4?lb~rt~eY2_P?cO{rC(>Q>xxM ztW>c-s8IBXnsjpUwlX>}J`il+1f-2W$^s2;8Z>_x*F`<6yH4~*e;(~;!lV22O>4nd zPov~Z;<;g0+Z8o`q%L-BP|*cWVwq)+d@^1}FutBo{=u_#tr+tW(J0Y{8`IZ#4~#i!)!?@pQZ1PW z&Iff#2nv{4THPyO#wpa@MZd8(etP~ql6i82!cgl02b&{@Le>UEjhhtpp}V~wKB(j- zQ!k}W^S3@(n*Z!6Ox*3L6rwP-S^oZo8MOivMxey`SA#vq1=yh5fZ3TwBJBxeRP^z| zaq}Xvl`r})hEyHsk$PVHug8Y-uisOMbbTgoaS<1sU}zxYo>i~p^>=`#K;ic)sW!O! zPPSbR(H+C7jyoI~rXHD@HO^%7)Fw+?Pv-O+c0HvoiUnoW^0H>$(S|}BSX8WCeA$@h zoZtLOe&n%??wPn*eu@Ai1a40vN7T>9qnQlj$;McX_LB1;S>b|fEAf;PKl7~*RQW2+ zgm7yUJwKhz(|~n(1yD>KQ?usr-scRqk1QR9e7|5?%&gLly=G1+;T5dY;;3t2P`F9M z+9!}zyjd2C)G)MHg&bn?V%~V8aQ<0$CD$e4?4GTgf|>32s^m{8N|6^TIg`=;Y2AYy zzA1uh@^@OY9p};54@8=T-wjkgseU`@+F-~p_85LV$gOgVuZNfoix$4xSKX9dnfa4b zICGg}@{M_=JJNk~{XtZ>3_NwT8Pz0_ZpW|wN(NVmjlzTj2yrh<)xt9D={o8Gv>hN! zpp#?0lxYV!f-Tq6VIXG`8RR)-1@WZO0NsuC^>sFy8;V>F7EIFllR_=s<$ne9zoL54 zZnupK^k>+=V>+CJDZd%U@snU=3dO^ML<%LH+1`Osg)3#6ZbXI)zD&qN0~ArFDsD{` z83REJ?XtS(f*~d*?vB3(k=8!fNB7x@UzFcf3(B}P&Uj>)EaS0YaqN&-?r%J6J=Zh! zQXznGMym7V?I|DiSK2RRy?m@il0u#j=HIrRDEk_CM(tCI1~bgCDi}d?-RQ>gx;KEv z0J;jO6oB2cw;=w4`340f{507Lw@+?=4a_VF5q_txS+#!nYpFf6)B8qp`^=FKopX0X zIyyI&h2g6Y^!J--KeFDfU#y_wbmm$U_SWA_h;QYPa0pczk^OgOP@AD3hE{mK(aY=R6~7ll+LI$x;(CLRR4$0sr*i+=hhNu{rY}@Nf@N!* zi)>AEW_{LS9rcdZ-aMPNCfs#9%eY09kuA9GD#qh?86l%ELo=FzokJ~m!;hU-YUjQ? zy6wqF6kd+x(C;Oh_lc05<-+c`d);+0Cv^CWYn5yXn*u4`RC%)1u)YU_K~)e7lP4eq zaOgYK;yM5P^TJbEoL6m!2V#4sB*aSO-|=Srb4&KkN6}H7;Ho_tg?Ht$2F3>HH`Go@ zEM@@<}GEB=gdrT>Ee!KX3WLj3htVEPSL)dxXfvzJ$D(OfecVoUM?_R+4_-&A% z`Zr+(D(j({6|yrj6IH%BDT7k_paQ=?aWHTUB6hloG-eVO8ySM>8UJ2DE ztaBhm6g4;&$W-C_^7mUNhJX}FVMH}@>#Kj|_H2Y2&gs25MYh0FYt=`7Bw#s^d6?m= z(b7#tv@8gP_fnTmZpLEMv^09^9Nm7?TeGa-KiCX^sY(QIBp_n*T0Li;pU)yD-Qc;b z;luOr&Lj*qebC1c?`8@69g|a{N=igC1+w5zPl9`bH+p0j0&mDu8HXz^f=KJPK^x0_ zt^o<{?I3S~fG=Cnq`PvlLKKb}DIn0}xMO6&wDxgBer<6r``4dL|38Prw~FmWM*lbW7ho@5 zh4KV>5e~#Jcn4wv@s}?iYoQ)rhw7VIytJ+NDbdp57jhHL_d)YGH9`)oxw)BBwHU_1 z$RxMJ0Pchgo)WU{a?Er}`);8K{9Mldc1h{T^=~@KO$`@mPF-89wuxfXr zqIQZ3L$D4}Hrw_z$OQAQL!>^q#7e52x<>Gl9*5+xP^+hjcdd+_DQY1{rKbsX#MyRc-(IP4&{3sof;I=^yXjANw$!rA1iL?4n&EEtRvC)r zyi-WFoW*lPuJWGp^kLv-t+x&V-mX-2k)+)}iqi^UOV8qS9ml797^ZDa*d6-=Mdl8f z4&tvyvnYnt#|t+X!dgD@3!Dn<800U>FD~8AZ1-fm52ljBFXkZ9NLH8C+C+My}UM_|iZX;l2$ z8LtoBJx!Md_T!m0dnPSI%61mLakme+YD)MnM{?Ss8%3^iGdBXe8U{}`z9ja$)a+DN zg3W66*k5#J5123Fe|~eTv7lDD4@$!GEt*U0*xB_C8Basv4cEPXIs~9i!JT5U z%OzH%22Lpd)2SUkC|X_WJjJnK)V?bm(de{>7(=7R4iDIC zY(`z3_-7m@>6IDbkE`j!Y4@^bd8%>Q#ra^-95JjY(>#rOi{Hgt+*1fQCSmZQ>@iVE#> z>w->p*(x5=tkbz;A4Y%fSslxaGA>;4eUF<6a!UGE4D>w$F=M;$ThpF~<%beC3TCp< zl&F6HZd(oHn%Mlh7P$nv0GR_YZjRmAxaVR5kIW%u!DszY^Ne(@V{@{M5=KK}1KvN? zPA=4%k@fJm^Q1J=Z&llTLGSIU8fJx;TX65BV)vd_8^&XQ|12f8wbkYjq6wB6o246u zP$B%*)8)vr9~MS|`tAdYE|BxY=fcBKge|a_GI+190?3lhpFX_>C~l)G5n2%oIK19G zVzkCAv$G_k#eHIOQW1zn;dBd`zX}y@QBa^fnJ|vm1yFO);{TQe=WP|XP5k=^SeNP_ zmdFz7P7H+>t#v|hVG0TTnh7O##WtcQ7>*Trq#SD}WB~mF5Q1t%W;c*(V8VIN+AY_C z#r2v3+j8JDyEFe-N(c=LfF6yRHiv#jC5&u+(@of2u}$kN%CnlK?KouzB^aek;I6Ep zZHbZRtx4r4B=;Sz*6z9%E`HdmJs&1jzG8ryJrm(LH>0kgRv0kcBNC> z%+KW0TAmp#eS@8R7aBKt0sZ=>spp;kik-*gRS!KyX>B{6T%;a@+4eZ7WykHngl!&Y z)+A+_$IWij6Cax`nNjyhhaeuR32m|cZ2^_~*?W^9HI+;I_rLmlt@;v4j&iBrC?T^d z`*qV?J4Ko(e)9zSl+ z{&Q`b()~IDMwIdPyKe)}`1T8ZT|H=mRU@(iv|6%5D(#DB8>4zCP8gS~wAEujh2AN)gteVfMwhT>iDX^G*j*5bhP(jwl4 zu&{i=BF&9nE=5(?{c3%+d0k=39psmqK7aL@fgs1|cr(N|5;qjO=A0kU?tdsWwog` z`T+4YRC6&`VAj;&QSnauuR7Bn2c6iVyzKgYK+e_?HP@6*K3?Y7CYEwv;ER~0m3GeZ ziX(`Txxo(f`4^@{JcSV;;|oe;S#-|lNBY^!YB}S9Gl(A(U?n(lv~Dq5sP*ct@Z0pY z?zxYE_6~Yu5&I*`3d^qx_~xGf3rQofVIapM|hZ`vYUY4Izm0U}L$nR4gon^JS6z2%HM2~Ow@S8r>9<)6XUtw{ZTUvk;#2FpCW@%GC@aGEfNcnlsuYh$UD0tB}R$e>__~BTU zW2JD8&LaRKr$DQaSuIx}aPD(%{ZHAyK0PSX`@g6jcAR1U8#xdZw?-D}DDMz{_1V0B zGSG!mMrkheiu*CFj-@!`gj}3(i4?a&irWBi23xLfWH}h9CWRl~K}-};0|Sfa8557+ zjZU4EmbVu-QHGjX!?aE)zyzR`Cp!6EN6o^v;m9lD^`h0@ne5d~|DM~!vSL*no zzrMq!yJ}sE#4uU3r`s;kPqHQVH7-i64jzE}OL2BD*zWAxQC;M20J6V8;D$E2hMMyY zEq;mMRHW;l!PP7KIA8ZX-Lf7iY7a{l?Yt5wA)=5yOJ^LjyWT7!% zjOPww%$~im>~O?R%a@NUj!oDdhMM^NH9i+@(S*?9!b!8&S28KSuTB% zm(^)gxP72iG95~7uL&pnb-whr3;jwR_FfZUT|QQmXt}oJgxrS2x(Gy}ZFz%7O;X5? z=R;KB(Tgwob!Ezzdf~G#L6aqin-4QQu+3NOVlZY5sNO@|2iNRKPX6Ys5=u!-YF3=s zTFf&?T&Lrz>d#;6F+w2Y6SwtxG5YaSm%ey~UNa26bsEqV^Uc!g@j5XVCa4e-nxsZs zZB*a+aQ;zhfq%<87EYlwRkYO(vz_j98qK_fWaPhR`l-*6lKT;6U1FBR zN!D=ex|R!V?7UA#z9CftGEg{UG?JxzEx!o}-hsuNfM{)q!>?^mBF3&ksHmnsWX%jB zfmjawCa~bDfD(7 zn&|}+y(jpqw+<7y(T(lc)&m^G=R2tDdPt_8CO{RBqW}tqJ;4I=%3n*t4!?pG#gky! z*2>IxxlzF4%r@wL2weR89frlqjp_N)6KA;I7dqj$adE~8kNZ)A6T$SIsg4X3B11wt z=|;#`?zHMdz&G}Z)2xS^+hBmMQH;Y|nLGBiNjq-|Ylut43%zRc|M-l4n^WAL)`M36-O982j9-rOKm@v@E9oUIS3>R7=aZrSq8M<_fZJ<`tet+4=)nv- z!u1XaNh-9O8_&8Ryx+NC-0(0TU9PDeXBhu&F67p_``T$cD`W~cpSAA4HcxH3@{qh1 zJJuC4o{G6^zVy5{uXc#-+v5(hGCE@~p>bOaHs0zwngR0V=n#Hl$1_EPXAA6k1 zDkykN$Gwq^kas%ZBUEFF=bECS8Fs5I?s0kx#O2|q{1?Id)kx2d{B(DqBf7`R3|<2L zt8`vIQ_tPb=%3&YvbPt)5Pk^-x=vaop)q@1d<{$F3s( zQf)V;m%sZL{)Y0tLEi&#am)0As%GPi_eZZaKay17DneN9S9$Eff7pWA_P%v7!7sKRt~Hw?sAllc)gZZrhB7)GUTYZ{A{YfwI)G z^4An4vvYR;F?DnsFduG_$b@N2_=`V7G8S686;XJRh1Ri^Cx808K;!6^JhjzR{(hCD zFPKz|u_Tpnt)Nugz$tWa&-QtFu`f4#@RZsi+QznPRCz1Ds`wf!?Nz|yBOiAGifkj(euow`#Hj|ahIVxT*Ng;vLtUkX$!tjKPS4*o#9*oYyOiteI)d5U%0QTAa zHV+aIxNZQedSh!#zqx}Yct;?Q{&L}-CHiVWArPRKz!m-rCJSe41ix?`Awt);96Gcf z{BiX^rTBXOe~0&w1RvHY$6dbd2^Ajt{plAuDUDl9sV5i+?d4g-<|}xQ9bUrG8vf{7 zB$5>={0RmM1(GyS@kh0J2=Rc{I}r%;_E-q|=G|=poC}jk(_pEagk8b)cZzErE>B5t zc^8Zm4D)@Y_wBy&Am>Ip)V)%0Yf$N*kh7=vVjzXpmC+chK>&ZZdtU!j0Rh>%!R3J2 zbxqSI!Q0@Kp+yqgxqQIybeG|$uL)BQD--)~Em%GF&&u0*jyjQid@^Zl;)3B4>B5<+ z*TrM~HLRIz?(1%f*#+s=ai6y_X>_~_6!DE)ifc;i=h>%guI&9Os=IMA2T>R@*%ZVx z`toE4q#{sM8{F0_trn%+dpex>DBLQJVfI&c74$70h>{9V4m%SuB-kWRi1%aN@TY9te;%zwu>x3qvU<%4f z7*mz%a@SM2(hJH?))#y0>Q4DAGXG8*y+f?odi7+z`{*75o=LAS_kIn%F0no#t%X6g z%P++nUS*m++?!uax^AaTzaSL{h<>3|3FfNcUTFuZgwrV}EtS!FJId3lxGs!iizc1z zv>QL)zZ1EZ6ShiHdQeEL-9ebj_A(e^Q#pUv7Lc|=uquh04{sSOpK`yUM*zW#tp{)A z;&u?~J>xNUq3H;)d%rGcT(sq(Nhh{IGiwBI!2`#X35@C2U@5K|F>5hkVx=3jyutj$ z(#ZlA`$F5nv*l5*W`g?tRg<)A*9yB3s_hGo`%ggEk5F@X7|$6h8tL(`gbheyjWpDs z49Dvnne)!S?~bqS2*{b&tg#Ah3x`dS-JK?h&XAz?d5QF=gC9dVg5#ug=-NtbT59G@ z4zK0ieFz$DGQ9lRC*ci%HhZraK`TKGRqp`!_U-6J3C@DzBpU!D4M0?HJdVIip)%}f zgA|6s!YuWHXE;!`f^B?ci=I}{)*5ho)+(DZG}}i;_Ec}mFpQ~ z#f~&A5I0^cbh-=!s$JmTmwNK_HW+viDY~s1pvwVpyJ!5RprtTVBLk_@XkubgAfEIM z$(*3au|P=9V!0l1|L7vh1d$VN_Mds0Zuqvae_staSyX}8!oZd)-39#yDMs#&i;COj zQK_W+H0q(=9Fh{GU)Dwd!^N2h%Z2OcxIY7~QDjtj_(mRWgA;6{oCzDDvjB9UfAB%$ zlEJmNXXwWa&&upAt@zX~=tprElcMSNW{-Bn`AenWIDQkqalhw#;;7NqKhT-FYv|9Z z1UYtJq?BB}*Wkk@`E7kNGBOSh4K7uM2@Y+?RDS0LEVd86J2N`Gl5cvTVpw1Kjm*p4 z+rkXmewPTGotY=xlJzt*>LcKXV0(&Y0&mxcvHiZ6lb|ZhC!t1vEScl5-eho7`IA|%fz~(I%&ODQx8<5@c zLK$kwKEddQxJ37E@bV{bJfFR4@Hf-AD%2NR;AFfW9z5FqBD6QKYkZn_c0NShpkb|| znicM_7TT5Nd21$}#C35sJ%%x<8DMA$t>gN-C|;kh5OfGmoV(8^R6H8Ora8BfN6o2m zJPL@!!m`=`NSGWEFo!xUcRG?|+thKo^X0anPCbJpm(VsPFnben1L;8Y!f}d&>(~1Y zNoz*sL!Z1jc6@eZwWgbds1nV?9li5OA(85^vHInn$ZLM^IXLUX+VlfiQ{rS+MDo3H zo6Xmt1zbd=W2>S0q4*R&- zqR}Z%ekL=~)N$n|kDPLM!0~RDa|d0oKy7CJB-iwhz798Grg5Pwv(yRlxbA9lRcrSq zP;zJcC%!t6{cSNAQ0WXuB4K3C5a!*xB|z*iyV8>AmQ@Dtj9raehy}WP%{UzNJ%FH> z{X4hnIL5zN>-_+=hn!2K;^2k_f|6z>@Pt*HE2JFnko4-E1VFDSM9qR#PWB^UO zySeQ*vh<5ok=lDRMPWZrawHb40;R9qsC{YlS94*-z6Kcy@l&Bq(E6y{uotnu?|rEh z6#Jg2^g(&c9LWc|Y!5?Q#PuwVyixdZ2Wo4PB?2z2621E|fpzJYKG7ZRQDU>RqjQ$8 z`oR9U>S93&_SUr$1!vwm>0*mpfAPHeXkW5dYMX{T;-JNnsqNz5@m9fB20K1%OuXPl zRh~7Fme^zL%eLNk^XKbR6l2Oi-3yIZO=BJ*7I8b;56(szwuvp48V{_o4>RraBR~%! zu1()MzogeEF@G53&ZiK~Q6%g)S!ywDxircg%An7@(Q%q6Tvuu=mw&y!6zFj&{w0!H z-RUP75Zc?`UmT;D)0(Ams{>U|R#rY5dCTT`jq5eF4Obq3t^%4LmUM!X=ri^PPykq4 z!*vo6N9^4+I=Eqk@R?0pyh?BenrV;tWYa{LiuG&X&w6^^=f-OB{%SiA_tLxu^*NRJ zUBWBQ3icv1@CGl0TW8~-q;8|!Ns_j6&nB*_K&uQ zSI~@=eZfBbDgZcJPi}uxJ`mXgr3Kmo)pkInZ^J-h=o)G6A$-@1IoG^#yt{bMK7|3F zwv{VIz6nLY3ePn!uWMFs$A^LCqKy66?SMo}3#u5Z-4Rk<4)4a^;N@FSPGoujla{Hl zO|v$AvY&>MzyQ;V8loSm%I_RLg`UcN%IKp@wP$6rD6|pB{ehk4Yr|Qq12^)$TT6(g z;cYd?OJuq(j^VspYV+~o+n>ha0T#YdO%()TJc*0J0+PFy(qhNJ=of{hGMt3&V$A73 ze9~}Z?Dk7c7H;Th58jR@-*I#_5GWhIefu_G4lG#NA%!fYP`GaGS0E^Oo%PW6-}%+P zT;h#*{OZ5k+?>6B?|-v{``t~%cG8SQzElxgt95KE3pgkBIhUf8pjG~^D`5RsThV?g zmJT+;PAD4;;}U>2v`kG+4KlRJO|TiD%e4Y(>euhe)V4X!UGx*ZSikogXsyX%%EruK zE%Vvo#a31+XuQCwVZ*aqJ8>$u@;Tl!1URgU#58#~+s54gpo9S3N*av@oB|EbYEKH@ zIQ*luEjQj&%DK(?LVP{O=eVZGLHqRgckQH2dCj$74U<*WV#^-+uhmLtC-P5C9Yq{d z2puVRqH9or*=H~bG_5P{co8njY{|1x6j*;>aAS)DH)Dd82agP)a6Gr#-IY5W!}&^X}#+Gx#8eD;jw5 zvl=|0%FK^#aUH zb$5DNX;Wv&Vq}nNT9xpR*!oSfP{1Na#BYZ1MV`E>j?z$wywBzgYc1VQfubc;zzt!x zBT;QzGaJiBomaVl7jiZ8Q^62eU2%NVE4oPhhFUnhKuiqET_tj`&T97!5n|6E1-8JW z@a`SKwBJFeet@;OuAn~}?&NSuTpBv6lpE~$d$?3gWoP`K*G&W^DHKJvOo)w~YqyTG z6OeQ1RmS=e$T>!VR(ojlN0yZq0=mV5p+qMD_g|p(5SAaeYdh z&Cm&-p_b}AX3n6S;=<%wVzEQ_8Pm00_}^kq1Dsr%5wtMiyN>P(jXWp!Q*ST{PYpxA zdU%Gr#&+8f+yQ6hY=*B12I%sGwfJ3~?Bh+~&dN{#1y5oTu0Rn9EPgovSB1b=4`^-9 z@VN;;0ar^7bt}Z<@j%rK}huQwj9_@>dKx$MGDwmco+DF1q|2R7o8#w323Gi>z zc_mXJN3zUFMrdoCBekfzd_M1f306+X*?!t7x3VfWBbLPUoJsI+c3eG@4310VgJBHa z{O#h#cObKFOo6LzsL8pSmN-|)XZCOx-m*q9^N4G{4@_?h-t+Rjrg!kt2{wxMH!Uiy zhbuWx)IvrA(w61fv(&ed9aftw#*NFS25)6J&#S=_Ra}v^3DFrXLJR6_8gIcIdURW_ ziuesjVd46VAz97#$*lEP-jM|lZ5!8i!)>WL9{wy+7Uv{r5*&KfACb4_-DR$#@j)HY zD1|!WWA7FLK`6Wz)7TLoakf6b7duv0P2z7Yh8>Mi+{BzW*zFQ$f+kkJ+x7g^Tt5pi z+FYPS8H=|-xI$owYFp6}R1~aR_QlLKRf%iCgSAoCO=O}H15I15D_6_C)t>)) znCRh>*EhMG6!MkGP)ypC#HG}z!*g2BBReJyFSVugD4-m2nO??qIIWh>>Sa9p4Q@@a z#9-7aDk?r{Vy>^>1a`;OR{P5q-Hx`j*AW1&=pV)vg|USc8X>84-XsRQQ3Znfk1vuf zInQ-0|C3p>{+lLpRJFIl(qX(xUnF_YJw=*5qV9Vjw#gXs?jwy|&_d_6%2c?$%{a+7&9fXIabxMeUSd2w|9q{wTq;0;d3``sF9 z++pK=8^|j}b0c%F#tG?1`uEQKh{jdDUUNS96^GgTgmCFhZXNx*`I(L=tq2I3)ZYGw z-s7Ss{f7>dYg_&;a^=KJQ;@h?UnI#V1KgQ`wNez*ddRye?*-eVHgJYxFonn4d4Wxx zGm3Y5_)8I5p*KWfzWX(|ap0QIKlXlq?Yva!pwIkzmMV@I*aw)Qz57h}QhxA+seCpA zHP>j%c}-C8{_44Cb?g%1601Vm0)KatX(?3ccn*G4?k2ct9I3!f`>cX*7M8~q==B_Y zlvU9BoB+S-ej|zV^XqBEc@gj@*TWmLj8YwHMw=1}TWQA$v2qHcX|-u#3^c30Hm)x> zvYO^^C%053u=)!{&n;ogED#6bIGD)Sg?IBW%0obu8bdYeaM-14)u1Z5uqup5MMN z&IBJZ0gN8+K>9ppIwSSg#hmNkyusfC>COF>HCEFn>lZneHIwIE9_KC{2Xtq}AH-xt z66wuxI5K+isR15;+(Ny*y?(POZK8U%qTz`h<1yT@-RThD{)Ok;8nc{BO0K!ANf1BF zknyP`B1JQ3;FR5(dslmd&Dw#qOwT-SI`>hx<%bqpQtL-hLps!7Yys#-`^27g{GnUL z{jrV+C~Ok<#dw<&p1#uLHpFREsf>55BHf(Q(rMqRdhDx|GIrt2ar}U+pF*|2BwZyq zZ7!mroNQN47wHxED6}QhcL5Qb6cgAmz~6k>^nPHGU)?L<1H3`JNrYn?%zjIYkoWGW zr;gB{N(JH*$YuZw#LdSZItcc<*#%ux9IpvXrIKPMnfe!vLIOJOWF@dZE;->+>p9j4 zCL|Ry!kOqMDFuN9o9SDD36>^V3)nG=#>!BJ&59pO%jmk3%Fw5_g7WhbF6i>%X@gVz zT@>~N$*)i@+@^b%hIzkvu1uVbYE84oFpm7K8Dii1#;)G;&c`=3Mj7gZg|uE^SOheh z8%6^DVAVg|XP|+%{AJ&!8P0-v%~%N;ehZ+ZO^lDrQ<-d`fG*_YgizsZrd?s-0U(xd z-EW`&53K$FCrVj+{qH+&?En3fc}i@nF`fWA_i1~UtLd_IQMQ+U{0J%}U#k$dl!vgc zTymx-^i;(u@YLXLx*qgcqJRSv(r9E(6`3<<2j#EV0MmD}M-2%{d7vK)P&|8-=?m}w zdAYZ&Vrm|3ucab&e7NwKiZr|puxowk5}U3E?P#p{JbLCL?&fz{RY!R78;91LcN}*P z14$P+B>xXxX95lN-~N4DNh*~@!l+0^Bqcj7ei4}>OSY+yB>OtdqWt`6!I&8{^L*Ur`QP{bf6jT%>6AJhXPoo>d_ULqzFzP5wL`purLFyx zfX>I?fw*{G`%UoL=u^9whRMV5yC(<%iF+jv?D1hZp8Ka2b!rF_(As-I!SsV3IJS`W+a8!GZ+9xitAbbX`yyk#y(62nQDHlE0xCQV~5GA?)IM5~!Osm3vH zQ-mDT7E=uh*2P}%*%?6Bem97&bh2BKIJn!q9dcExZ89WFr3SGql4(KMUSDPKSeF`4 z_04o2hnUNl`4aweQtw4$f(~3XrW~W&(}mJ0g#*{LySt3ZWw08UvB>9meT6mE-9@J$nUyK7 z=FeQwXOGrq*mLJ?B3lbb>n#rWj8=CPiE}xhAnY%k6%pe)|WZt%zHe{c zW!H9l>J7b;nJ#nEsv+RG+cI<8dbnTm2GbjogsK)U9||3rKnAuU6QJy|(b2xZ+QOaq zFrcO_fE~nxTH^sd?=iiiPIo0){#tz?gJ=^_W-tUDs8r()Fj!D`3+94kyV$>}jtss3 zXL@9%O1iFGNY0wW><%8leiwzL@$&L&N{?kCoysho3Z~WsBPyV@e)>hd~wc&aeb@nPoEKw!B>1n%?hWS*0ia^QCR{~ z2lt%KY)*uI2Tq*DUp{jd%Fxm%8kP9{H)XRR-}Qm3plSK`o4SLDXuazo=IRpe=2o&=SO$ayK2{EGRxMl~~eZ}FwY%>b@Rb&aJB)R1%}P7`g5t-qkm zL?rLGFD}$D>9%a+pN=c}X99b~UG$6WjI!R!M9oyt!mEq5izA(v<}c4EBr7oT+cRbl zl3d&VFpm!(t9?rkj^>fnS7xLWkBItr`fEx1-gM{O(T@&S#!wo>ng%MLT!ahS9_Dt$ z6{a**#ZR5`lf}dL9g-;R8$&vVMXodb=zq$-mkw2L%Y<$RN4`Wgeds#;$#^I5Ls(I_1GC9zOL4msJ{oSry!txa^~ELMzc9&2J? z*y4=+hay^(Owh`xt5qJn!k|&UQ2RsVJI^zm+f3}aUqo8&uXWmg@hjAL^T?V{?DXhe zbTqWAlA=@?K1bkmTlV=KtY21hh|6rU(>6%dz)85zkK60#u+$b_`Q5@zssgu|&&mZU=AAux-bzEM9#fn=vXB1AClO7=6}NI*uxn1y(wL0sezx7`A9BP#XdD3FD-8$*1L}e{`T! z4li}8Z2wf*4#%>BxXaw7>KSdeaaI!d-*B}S628DQ_wReSIKBnd$mv#Ikot!BRZ_C4 zvcdX57QL|5ZeQT=9%~9I3_Ngyb5QT}=6!9$++E+cOpyvQQqOd&8yYg%P3SEV?mCE5 zQDOH1AaopH9cVv24B8btuA%_0+%4<3LC3X@J7FUrPVSgr)ylq?`tdy-Q5k#=Rtq%41rzVi?Q)CWVNS-*;vM^ncr=P6I z>*hdojP>nRI(%M?{fIk%I=xedz>t!Zu;ePcN>uJF>M0%6E&E z9_ZNH&s!&jBVI~BrI%}uf+Sb?IF?f$Cxoww-bs1Z9Q-Ei?fcx2tT!Su-lojhE=_|W zszqf1g4Wm@P^@Dc=biWTm?Wf)2OO$s^&-E|9x>g=D#He0B z9hI+xpLaT&dzY9uo*z>2*yosSX*LHLtD!RA@FB;YG2+ie2|juLK0rT5@HGLBB6~y%qmAjuPlK@>=vRS+`lb8G` zjS{<7KJ|rirt>P9Auw||`UeyW1z?5^c&Y&)3F_qvfJY~VbEY&iOPQ+rU6+3Vm>L9?bD2@-RTa({ zjG>60f$6GU%hgw1?|J_}baZbXA>!_T86uG{lOnC0I?-#~efI8L{W1|RDh9hxja$Jp zr<#dX+G1Sy&r+{5>+O*rzE>}3T-n%focm0Tt-^`oPKl!!$!LcD&X&h<`(h$@70AoN z;A6J8I$tadfjOJ*dXpb`_g3>y0ncY*w^|yF94~F64#VaJ+4lx+?FxM%VfV7)=)_Ay z>BGXYuU#RZ7NmI|mfQA$*-+op%iBUn3c0|v_qB?wQ?`C?&QQ>Pmg|0(A$<0 zj+xGDjws5NPSDptADDVj@?Lu^n=d!`Xe0dl;698(V$cKs=V{1X6(o4+Hc{fBxfWow z_d^9t_j!C_%E>$QCYV9*bAEe9torcpH@p0f>gLh!?Q?z(7)Bw)Ip8#Lm8Ak9VP7xF z(B#F9GX=0>yb~uQGF<87VU25{l?HxOx=S?+WO#>1wvTP?HLSCmwD_HOr6uu{)%enU zB;Q?Dx{K;C>9iB?%-c+%QWHkgOlaOp=axeNXCjO)|G>KE6EoXBoj={Z%a!j=x3#p+ zUufgv>CgM^41<_93FPbj$n$6@BaRkBPEgKE7Cg%(00ZrU`f$Xts3(eD4>t@ST=5`l zHqLw)ze5)4m=Bq}uCgw&nK5-ZPF2uP`XUC8=ZWeFO^DLku>ULTB>T&Z$N_%>_Ywxd zo~SV4v^m@)Tt3^Mvo+~A*h>DpxVmpSLVx=qk{UW*0Q6Kf>8fbCq3+>|K#VKaNwXXI z#|hIO@0&U-S14}lQ{UWVTWA%aRnLDFz%0w1votu6P#(&xF5R*f-6LD53WS-#pcdt1oXd*FN2x4U zBe?khun3&{gUe05=V_ObCceQ3-YRFn=!asjOVff&aS;b;1~ue|I%qaCppLk<^=5sB zl&wS6OGLa5@zqNm)=)^VdgtP~!XV4uXPo>&N{Z9c&gg=~uOi;8{|+9t<^NnYL#kMA zuA^FQpVXgk&@U8jh7bu|!=R#?wT^Tsq-Lr){6#F7ec0yHrO)bFUXA2!*zG*>xXwRR z57;9DYo*5y)4`z!4&({6QbP~D1=tTh;92Yj5Rn44+)zQ2gHU7)l1+hOJtVON%pPX9 zPWQjhy4(L#PM7f6XM_jBm}7jralD!JFUBiDS+IJ^?Oy``}%oiJ906lK3FmfL6;<u(^8@qlyPVwyHoDGB0T4#^vlU42Rie75eR#Xw`hFfP!Kks^h zmD$()xin=zcR_PV8nODTR`RS{TaJ*k96Q+2MCneNaJ_m>XaR;qj#Df^=<*A1GZVaZUi7`F8`#msIUW(N0 z^x=g>vS{9IMQd%?dch@?7GE8GcRe}o(@~Ykk(RQY-j&V#QqA8$8YgLw?%H>PoRBJ^%(k9}Y@axuxZ z$F>tE(Qd651fCWLN5{-ju!6ISv!XZeXNf016uOh?|9k@1KqQ4KLy zKo$3{rT&VeEod6n_|@l(-_^)%Spr(u2BN75*}# zWK9{O@Up@(EYrQ!!m^LeMuL8nIrk~lMcvIz6pM8$<2X^G{Q7`5wz&3nc9PxGe)qJ9F` zWQEd67Wv);^kuYK3+&8v@KuGSs^mZ^XML5J&W|^Rr*BpdLeKqX1?0`CnBTR2>ByV4 z>s^4s`ZM+8oL=ZudsN4{qi#wn(bb-HRSA)g7EH8@@&`!1tKZ{VPu@4NUJnh@K@O(C)?G$|}DSK~)>?(B( z|H_zZ)?Kox089=R9BwsM$O(*=Nr=yI?RZb%`Lwwd@k`CMzdi79Im|5&+X*)>ih(4C zbl{{>^BuCoc9a*>xBZIH?jD<(*a?LfoG&IVIaVFV`K8JXfSrV zhs)!8>bf!f$Jts;sjGVnx0Wwf?#0UFZj2(kc?G81H-7pRg)Zo}8XnL0qMsT+8y&dm zZZkoy(j(d$gbpQfWvu|8wq0@*|0jOoQ*e((qhqd+}(-GfK%@9eF(j-ILtPFn;hW zDY42-qCKNEBA^qbjFN9IVBdNj6V|{S#_RkATcxB6JTqgzt~%Oh`}?_NLL99vAay;x zF{%vK=NGT+q&j0(@_N&Qp%t*?{$3#A6SUgi_;j3Ip+-~P+lIKAgUd!;5_qaTw-mbY z8@CBJJs#XZwtt)%-~iAc<_{6n9sR8zB0%mzt?<4$Dryvi8ncCF2k;jAAWO!rSp94x z6AY@T+*5*7*qm7DRc_+MmMWrtJd2oLI_bdGKdf@p4RXY78FgR8Wdw}Cq<>E{2Cb|nVeHHPQ2ECm7=wiou$+ai8PB9E+mj_+O^jD?#-P7f+N2=EK zQw6L0y))rne@bEPW2iCKI&0V;`U^fYZdZ~(TB{5{I&N$=`xi6BT{k{Z+iUbY^fcM4 z$46#9*B&+}!FW33O~11CVYBPHWWmDr{v(!D#OCbmXW;0qN3m>knD6)Bqh`Lz_$aZH5t7@Amf# zYYG^r3yqvv&zVYR9;cidt<2^-61C6q#s*5mvEa*B%0}+V;=stA2HRb2*DI^5HqA~d zj?Ca9nBa>$M~S>a=bU}y#X4HT%JlT2$^_iY_hNf}&PnZz=@5vom0sih&KL85Gb?*1 zH8}(nSxbSnJ10HRcXMgiRV>+z>ru+fV_-CV(T~2)bK$t z9XNKzR{O7l2h_0qGVMq2lTjncH?lSUNcUx5<&t1P97H%IURDmG`^$`sOHEJ=&AY@a zRf9e}noMX&YG7^4eZ##roIMhuu{)qQQl)nnNipcN$%Ef=m?4cjg8}oKtCV~90*_yC z)QIC_U3_f5dt9hu#-wZ)nL8jMP`Qd|+y9hYo73Z!$Yr5t-~QtFSRkp1C&0MSuypLj z;f>T;GvQy!&nB5Ju_T|_Y5@bEabL!?c2bm1?RE$Mvzy~j20P$02;VTDHj_N`LKptf z7gOYxYUMca8;p9=_aR8k&)o7UUQ#Z^ukj3TqtI`=w^wJCRW_yq{Z^uIEvn-_8QR@v zn=KY_0U1*zv3{}L|0tu|itGOI8HPk=>1DJa3TAG;_DY~lm)2w=5DT}pHd30ZaT z^{uWFiobK?{g`kt-7{L^$rZX=<84|CDo0~=>PW*QPu8-gi> z;{v|ZW>E3W9AtgWGzUb|e`0dzSQyCi@YzRJZ4Ruw-e%(VtmX2WnS%mGCQZ!=H3Mvp zU7_wWp{yhBjtOUHB75JFH7kRaHwbN-dAC3I+x{l60L^=LA1}a3?3E*=F*&uM`5RFT z4b2eeu|?3Z{W;2&xZ^`MxPZ7^mY(kRf_71^{l~h#_u-Nlk-%KmDdua6+RV6>=fnt< z7F}_?{eI+q;2~)3?jjPC(ug(q3uf_NUB%hQVZ?$A8YY&ojL`Eg`wwvo$$UBv-uTkOCPZQiA>ajv~`<^6&f=fm?KE-=GI zArCC=q{&)Vi0+DzDimm1f#|+4Ir%{b0>LmW-rLQm@Hd~Wgq_mW(bWaAI6HjD|IcRa zjEq;gu|ETuq9$h>0{@d>vi85x%owp%$C@&qk>^+yUcX)MH@Rc6vQw&ee1xU8d*GXz zdE|?AH-t=0Wi?pG3GF6M6+>~Ym@NsrClrKmhc1JFWkq=xyArBlg%Ic}}W)Z=2L`l=$mhwU^OHC_+-E zyRNI;C>@w5-pRao<4^gy0p+7nU@q-idjrJo?Qqwe{CvQ0Dh=IjkVEs$R>$1?C3P6Nb`*9ezhNiX0YIZLE|W;vpb#xB142XXfMCG?;Qp>>OOFet zvaz!^0QlP?5C|7y17B@QXYC3LJXnTkhSe^r`(%Bm9ywq8H1|n)qNn4zYlI-_do-6Y z$ocq3e3K0VjXfy>HT42Ir)2xC!h3TTXD)8JZe9&L74=7H%GdrVwN*O`FC!w=oz*bv z`b5})%5%Q!_FBr`Pt&7tEA0gpv0evPCErlAOb~8cZgr{RB--pe#(#VwcIN!I^5JxY z+ZE8&z6}HRe2VzAg=bdAh_x;4@2r5fUvLr!`rr)j&t(zMQ1Xcl?RS;B9V>iClI zz-fdDw_e4OxP@tls+q&uIQ|K(@PLUW|aWo#)6CRowVM{Vs zr&}|NagJ?sm{i)910rPmNN|PA&2o}tO*22Td8xUCp&iXqp(>muo9H!h5|)GU@lzgc zg$v>C+OW9SRqD>D+2ClOF|VHD$^dS_g~0ZRg#9_8+@jTuZ|seY05DGisC9AYV?s18 z&ugenKXl(|5m2v!Q6TV)KISHKdSFaCngX%`u~8Y|l;1uNqx=U9oB8s;vPqtbr90Lv z@^@hc)KCAe-gRTvb@S}E68-=j6WHo&W&>1KQ<%5OJrad_dPlZLrdF>PkxKkg=1ZIe zqylzD82gQRlRF1tGqH3kJCxfw>1}h^`P9noK241p%Lg<{-IpJHHo}WZVIB(v+`|tS z959iO9KYUr`OfM@wPmzPT{c(6f$ZcR(UTvfEhK!Yz~N(YQPDqCK0-dv;^vciIo=9m zrJtv34VaN)k1h_jTTzp58gM806;togM~|a1LOw-L$%6>W1~=fp!P-W~^RW z9I`T8ZkqJ2Abf`mdsez;Jr!$BL~HLE!izqctIcvFQfGYcgSZzk`WHMdd|^UX?x^{F zIg^TMhLx&{SR9y$6R*UTWThBfShjNv_UH6$TR$K2h~N9?yr%hw48QQKm-l|>;A@Ip zoCFWbg-Hjr1z*3fCva(kSX*SDd9>T8BtpCQQ1CKy&2Q~4c5K7ozK(jGz+YynSDnfq znf2ts$fXGhNVb$yOt@%5rjC^ypf~>!I4NhRU{JO`ehw^XKKv^Y5mnvzx z_r5FnNxI@>))UlYD17kO0J+8$GCk<=3;upK8+U0T(kZv<8uq9v_E3_MBO!fNZ`*@+ zI{c#C@tTqI6QWKPFmlN#+ys7h^#^0xmv(z^?*~1FJ7sZch|`_$3R3!KcH(F&KW*3q zsfG$3&X-&)%$P+M8C#J*l^^({@h?}@O?~EFT^*hD)=90CsxsvuJzJ$^O=IKzwo=U7 zB4gT zVShp>e}H-gre0dw6ZcE=VRR=fWOHL5ZFDyHFilnvJ16~GMsD3mk5A<7h68>;DHZSwwQ8!F!TCk7k)i(QAWvT6!qxt*v#l${OHI6w z%~%=z@m=7g_62%74;mVSUkKW_WwPR#5Wzm}nE4!W99a?kWTTxleX13wy3Vjkg)Ojc zNP$MaazOaw!$8nmO%Tt2#R79j(IB2YxpvgE^4_XJ?eNpePrxI!`0n0DolzTvbwA7H z!+ov=SR+yA{bp!i+y3UGRM;*Rq}g`vwYz+hHR*Xqh7Q3eRASylsyXf%eWt#H*?ibux@Ad9NG{5}WIG3ce#N&mLp;~U#za(N8;1+{N_i8kg5#pbLX_=v3}B9)!^ql;$Xp> zSr;va9UVuY3ZR%`RH1mHbnn~9_98nlBC(3L;+`Li!;!p^LobI|zA}j@g4w)Y!}L@T zl`yQZg5eO*YjOV;F*ofFRUrrxM6-R~!igfZVy zy%BV$I0dEk+WG(oKFA%{1Lks1@Nky{zIx``Esxf+NUgbt5_L`4ZP&3nLcMf1?F4&%%-*JR9DaRbzk!MTfwRC#F)P{P;m9}yLO0d!f zXFGHa)_}@Xwf7C?_7=0ki~PQ2;x&oo!BfheMG@=o;R|W2?>Up(wN$v{r6}fEZj=H%!;t@COa`fgz%upVswL{$;v$F3nXlnImZ~Y!P8|qiKfpPNH zz2TUrmb`@-=w1O{ zYS)tVi%c|KzQPTVfAN&-rG6v5UhOb{{e-DkbQ8PRf(yki-!EY-o^@|2^D_=%T2aiR z(1@g))tM^{N?qkP#>ckd?J~*1tVM>r0UC3&Tni-dHtrxQ!1SD|k^@X?;>^tc^NS`S zNKl?$@friNyJf6?7nw$bH2qJC=uUIKZjtlfZj3=fgwD`7AN%w--pp-o^wSOf{rWo_4S4Sa?S%*ZD*Ztsc#6S36`5OBDp`!!M@rAM@+K4=dyB(90iFGFTIUX(n?EMj2@iswpnYIRXK?2NFr9*}D!fOiArDH_=G%lnEDxU#v*pV)e#~br^mxkN54L*E?cDFm z7Jn>F`nUOsq+NH~-WgmG>YaUXuI1~!t#{8xq+?dY5DXo^FwuZpXnzM2&z8GhWVV*q zvi|a?wae6|;#{xL6V`|d14kM0Jlqk*xx|y?QQYGXnqqW|4sz`0*1tHZfu7GVXAlJf zPp150oHoGgD|qwzy=K+Hl6iJT)6c?kRkNd1y(ORPc=ETzCKb4e!~hp<7f<#A5ow3B ztDS?7WS^g>_QnjyGJz4g_d3jN$+;sy(8X&efPPF+ra(G>h5-MHmHXE+I-Y`N>?~z&!h-GddCLYLO z-_=U8;LG3U82#j8nsHV}<(oo#D>4Cjp7-S!yBDcC`V89$_&6>w!(2q!qK%sgm7vZw z$qYMCmlZO{Egb0*#*Sy8ZLRCapWn$Cxv69I84j&Zjgk}IAah7dXY6dnx3Oz8F4A<6+tS4LY2=;Cr?_<0cULU*pgz$kjDPah39qp@TI0sGo>MGhdZ2zkhINwI zW#4}5X4^(r0V{8+vWTR-is~X-5$64?aGNOuYuK_b_vZX0FZ;&}u|5igpB!+@wLOWr zsGV6vWV7JX+;-XQo8i)hnJSWBGtPteK0$(`-`ZA{Ic1#?UU85S@`8RmQ;jWygZqRs z>!w3~L%PM|8e$(8O?CY+c3gN_VeEc@z6%rX#0+FzJnAlm357iRZY5((ms3t2+e0EJ zHl(7DX{UthJ_f$X5Zdf*kSxRmxnY#~`MhN+pstpDbE{I;Cj!l|KY$Q5x#SFXR0n_r zwGx}TCD+_}|C-`|BQ4+yq|1MI=K8Rc-BstpF&3PBm-fQ0M>p!F zj^1O17tS{R0lH?V6L)$T2zLtya#ru{G!i=izw67>eEV(we!SZC19qV3(3g>@o*wGz z)&c)z9afR0z)j5*d=zR;Z26ZF*N^?m_4#*bZcuSV|M<*|3z)O=9z??7_Y3--e#5pr z5tEkZ4=Ou~7uxrpY3i3^c(d{i{t$|ensYDw=&4wtp{emY>}D&a8A?v|4JjF)*_f)q zT_n1fR=3Px(&6l#AHrNq#Le>RieGC6(+BdOS|2l9aybg~2W1T}Fv;w?697@ofmNEL=~S8m(7 zXWMjcFFDCyu=&`(?cJmEXL#3dEYnBkNf43O>Amw^?o*PF{NR=6mn`;e;DvM+i9+d3 zm*tU>et+{^Sbn<5u98W}yxhQ%Q0$S~ERSME0tZDhrzzkw?%4uicy&q5lXXNJiDC^1 z_~bB5I1c0Xn0p!2{6&(Q3`^_o_Ljs#JNav|;rb}CXezw=BJa^-CWPx?_WO+JLq7#- z4|1+X`Xkkio7%Um=+Z55NylwfeU;SZIRttVjcqU4guFQTqO{s;4q;naxt0z~oVwS? z2)XG*aFsA=*7oCvpFkUfrMEa(a|w`y7c+yNnYGF^%+gAvzRs-@{B(Kad)~}O46&$E zGHJFAUxFuVXd2BMF_fFca#XVSsCVpzcfp}BdY&%MMD?}%UI>Bok)kmZG?rY8aTkBc){^#rQozAoE@u8;5DXhJ@65%8;hv3a z;TvpurUbTbJAJv$w|@F5Z!E6Jy|vZh?b&2z=DX*AQ>x7}M9RH*KM(?@3wKp0Z;Pww zpuf^MiS>I<66vH#@8I6$Mh;oOMK}c@o`O6;ZqsLxV&6J0x?+TEW?p{2;aIowagT7X z(&H!lxYS*lCD)XrS{TPrk5%K=sifD1(??ivH&J)*Mz?}j2_w_@j69Zu2 zJxK$n4QLP#ljkr;%)9og^a7Xhi*(wJF`H-d7Yud`?8wbQ*NtXzSTC@UfH>mud_dZR zrp7fSP!E_zChu1~xO#h=5!=DB^`fh-{^CpJzvpjOFixw*A9|3q7h7h*#~*stqV{8rZk>&` z)t&x<1A6Nu0cJGs?v}kPGQ#((0>^B612jh}lxzw-_$1nr56_W6c~~;&;v;?Qv7ot+ zt47=PiI)~N;(E@Rv(*418iPrL_1e-&RsC`TcC3Rtfw z(d>{q&%v)Qc!45Q_XAy5Ali&G9?hH4`cB&9*ND+()S2sj46~O4B%?rPL%5P=EUh&l zowmHBqt2)^qU4rUWXB4D=z$TB6jZiUk)A#N>~2--vh^jV-wGz!y|7#=dXDLx(Jj-3 z2~SJ#`V7aVH&r*oZ#KSb|KXki(I>0ROT1xZs$y0n;r7#|wR+pAX87mA(cDq>bvQ`X7JDyGPly-Zo)Qb)O)StDH!?puU^Svgvr;ap>&s%C!a-1X-Np8k6>@ z!$z45Ux;A)#hTyj6+!lq_jok>b;Q`?*|F}!0L&U0uG%;9 z)~4?BhG!%?dT@Tkq~b%d+FuEn{%u-=oL$?8%)}Hg;3%g!Mfs(_?qz6e=WeF9xu z##wv~8fEC(+ge}9G(sgul`=JFf)$t-oGvd>8>!QDr;->_NGQ{xt;7r!mj~~8@6?(* zpg_}SYw)HJ5D!3dnuLY@ZYH)X^gxiWo{nSgxb^n_6Y2U1ip_tq)mK+m?f@KTC*f;n zDg+`^5nJ^!6y2iB2_6oRA_xSATm)%?phyKw2T+chw#(tcDQ3B(D~SJ0&a^-l_{aY) z(i!H$U+gCbOvd%Iz4*{}JTpQ=hlA5wP{s!`gTAT!z!ti<82r@2`%O2`ct5D*&lfWF zjG>>nF=h^VjfU8Ttq`86hdT56&N;71O;0se1OLPk*=nbvy@x__O2ywHuKct*RInf= z@Z;mfs7j^16?^eY@uG{ZQ^LYJJrUxL=9BjgQ!XjPo!`9O_4(cIqRv*TR6wCYUBrSmRt27>j}I2e1Zx%bpr z@XnnLEI`Bob@=~{Tm^qTjF`J;}^(pe1R04uci*Y^IymJ{=ZkHKYA6gpkj&ZF$r zm$T;@Ofl1lz~fb(XTGyCTHM5tLPj)=4}lHG^KsYs9t)id#QN7)ryuB1n6s(ylg(xs z4L$6}`Diwa@NPsGD_7Fr@`ye&sm-l6mHj$o6uTbcK@LaZQWgU@P<<^w&i0%j3;y5} z=nBR>!|;4wzTW$iK3VrWPSbisWRKFLv9%JZu+**7jgeu7MY>-^I3%O@>I2_-9CP z$F$iWNy78b4Nd1sM(%~5OLSrj>f?;lwn~yjMzKP&eOiBmD~ql-PZau_viWd3JEm?w zoNhl)i=ymqF&ghoK~3Z4oA@?zAKIptt)inR=mQ}{OUgjN}c3v zS1%InwukP4yJqD%sMh2-#i`>bM;Kc`5|HdHge8?&gMxOA2O>PCSDR@ENN-zi*W9K}T=%~o`b3J)t{y`7Q6PRN z?^*kOx$KqdDEVVz`@DyQqOH3R77g?<+8aMSDWTG}AqzrD=O{F4k<$Xb$Z(=Hg?=_p zejYW*n((>_BFx8ac9O=h<3teiWey&2@VBY@Z^Ma!ckIv><`lhVC+4L0mz}}zynp`A zE|2coVn{AE5WW0gpt%`{_5N@09HVl`*={p~XR?%g{(N@n%6Slj|k8<}c zPm~va^si|dJ`{ZWm~mbPa|9@FfDQ(GL(kj-${R1wc>{2b<^%bSvQY#0C7u+sEcF)< zo5qvz1YtaA**SA@oG&{nLq2j5oNqo5E=q#`P3HNZ^u4$r9~X^n^h zEdKheBi%4r`%O!aEfo0&O(-f$$Ov4kzR@6b(4;!WU28^@j31sul$O8>I1Zl8(Agu@ zCgM>V17U-{@K5Cq){DQ`2kFzav_~#D-t?q8)s2kNHOsl^0O+% z#!)k#pf;DgI8Hh|oU=_DcTmt9A6Yhw7Vh9K67s}CQ^ylzj)niuT_dV|T2{BU7)=Agz(5$=pNea>32r)ND9Lx!(RFJQK(G%4D?9KtZA=PwqB(f;g zj%%xl=SQejM<*rfPS13gnfb691P1(d<)m{q$E^9x0UY~1!uE+MQ=F;>*C)A)$C3h{ zc4}9?jRRQvcBco`eQyyZBc-wxgLA_a8#~UHC$%$L_EA-u`9}rI*WM5JQn~f84H7L) zwNF1c;3M~F((>(5JxeMijOIh23fimW;j^_5!M}vivlswx105j~kS3HJt2P936CGhv zqA|1AyiFC{@L-G2Kb4h#ZsrgHUj6uDs{eli#Xu}5?8JYwFL;bp5@ljQU`YOq`dwkA z5y{E`-51MN-}_i#=FsgM}N`1Q>oBz5sW6m?DSncGuNsEq(`iDH|r(brVa=PmQiBo8~ajPoOm0 zo%x4?8Wq2nUKnEi1W>-NhVsb~fjM7894`E@Q~n+qfO6owSZ0tcv`!B3X5XvlHv!3+ z566Hr7G#zl540dGcZ1#?v^j#^wT*iYOg!}I`Ek1}Vo39w^^(nY;L1zN>*j|#e058{F;DM#{CCvT`@>ED&dmy>{Oj zU(@XRNlQpWMe5w6Uu@YeKQD=@<}mFdI~F{ILb?q|Fgs-+s9)*Y4&3rb@L6R8p@D- z=QqmOO#g~ve=uVPPZ2z3acs%KKS8v|O0zn-9cPQTba#_Ke7Rg~Un~_>`sbf?Qaat1 zmRlkro{j@qK?_A#}cbN1rVEzw5fN+iFKHM*V)||cVm1~TtnupOh6|mB|=Bg zM`o3`qwMjD;DC#DOsAke0;Tx42hEt>)kbm`KtE{RIHP-kdgvg9$V@4$K0iKLRFCp% z9GG5`u**@zk4Fo7+BLi56$-0=ZyD>axQ}u*8j6>ms9*|E9Wzj*T1DB~KI91Fq|Fe{ zx1JHya&%@F2A5gcOD7O4>fyA{j#!ifxXZvTzA!&OpNgth&+=l~Di$VN9MAx4HmK-9 z^9mkL_j20|2k}5(EE3SHex!eI;{t0s=5zo0@9cis2|g4-sfXq50}rrAK?>-x>H18Jaa`=F?8%c7pA13#Tg>WQfbwrv#qf6Pe)nY~_(k6izAl zUIu^u;RiF<_g+#$y>UI-XY=KjVIk<6RWFJCGC%RQ*@}4LsycXsJ^p?lG|2laY?OB# z-5^jDq}5pN>`nofEf{O>97r3buDu-%$3Jn}XNN}b%eH{6;Z-1fbVnTrCB^rjW#SKo z<`O(cf}|fzp|YI>1b&YL5D(P(-%I@WUp?87SVl=`wj65xA-vx74qJt;*)M%zuIAA1 z=BTzFHaPh_f4s&Uz(o(TX!F6x0oz0Rzzq*}p@NUn#}h`+7#@8$;z5i;I(lzD0;akp zN|?9l{77a%W_{&%K_Oo-!!&4UJxjQMApseu^sZ6V$&E(mmCv&x+K|2M{nDN#84cs6= zNZlvmEoZ06E%HlF3w#^R=c0Bc1QQuo6hy^}iQChcAx=ClUDC|IhCcMUID4+RJE&K> z^I?6qFDdMKKQZF0>?+mk!*?<@$W5HP=<~{>XGHeZb9WgKENr}RlGjKF2iGPykzNEF z@th~}2Xt;Ek(FPB+j9GI!;v~7HKu1}p2)oJNz>IS4mI7>q@WfJjMlEh0vrx64)V2q z4qk9~XnBYX^cIK6xIKSb2f@a|V;UApOl!O$fwct4e7mQ%{=3GUvSL;`B~!JXl{6|b zz9;@3`fO2d^?;(y8Nge!-whIrt2x5{MJuy z=GvQCsf}A`lGJR-bHB37f_9A9Iyl7BPH->;+i|-qZb%+NwttuIgg8Cw?s3h*dw=}1 z37iCZE9~J(^aWr^(6q)8(BvzfDn;5FXhvfg{uuskhoaVUV5aF-XPdNU7bc|SIQWPckr&~WFLR?NB}Zx>=Vh! zoWjUFT@Ss`bsR$UlO$=!<>;JZ=mZLzQn9L4Qu9kjt>Wq83!3u;vQNzwQ;IzigYCRJ z9q3W`Fr#P4JZZa&_$gX7nqF8nPlvX?vyaF@OzUXEGD(E`ug_@U*n?uWfwNJ(6BP!M zMklX8Dun~O25zH+Mzd``RKxxJEI|50lh?(BA8avoIO1{Le@pJ{d;guyf(l%B3F~s< zX7nuo8dJFX2XYa0vciuiP`E06h_YQWgkS_a>1ge_Ki*1_xG-2esnO-GWxZi9s9V1Fpr6f3mC;0q9F<~hsW@)j&1CwTXqHxsJyl+4GzO>Ifc`uesiCz_9F7o^X zoU=Sfs8lKi#H)gH54HjH0|7oz8oJ5(Z9e+Ak5+S zdaNsOsaY=N3f}!c5_1Wm6KT}13fjW{tqlTJD;XaX^)-s!mY*mcB_}L5YkQ>Z?NRz# zV=Az=h46PAtpHo1P=Fig2ZtY&`M}!JWcFtVq{MVyRcSkP?*msr(%Vz3n3+E7%-4}_ zMy?e|6kJGGpRS_~Bn5-Ozuzqbvz&K450pNKVn?30vkhXC@B*^2ilC(wW%99o=oD z#kd-O$GqH*q5og`GELDd40cRo5`*+ki0QRcHwbH?ZD z-99V^vjtlaLuq&VKAe`NGOH{|(kk|Zy|C`FE!Z`1(&(*Uw^Q_x0;+o1`xc{#L9jEg za`e^>hA7wK-3r^0x`}Hs=;TGtg%A8uTSp`M5xIyi#eikKAMQdtzC4fGt!(3}J^iKO z-kEN8YYSNynPB>;IT9EhHGQ3Q(B`HrhJR$_9SDFuAw$yrM-H|9eH^RWAL+&TXN)iD zS(gn-lfYU}nXEXHW1s4eS*IXZ>uAk1H>KElrxgv-^)`%*$Y?R5K{dB>R>CQo@*aMT z6YuMp@JWoNp?@Zq-WN$i)w8N)Y7+5lCv=*XFf>#L(a`>sn-o^X+kwIF*P*t2rB3BG zJA|GjAK^q}-p=^#J0WjcvF@741X7pxmRj}3Zt<#{Eedl&JV4Bde{ za(ft`dpSy!l>^dqDxWh0G|lx$>HcY+&)Y1({x(+Xh`K_zxgVZO6c++s;~s$rOMM0xQ~{|A}Yhq=Lvpo3- zr*FxQB)3TN4^=Rs#M5^wXlVw6kRD>h+7eFMXfz=lIVZU~$Y%$Y#8_|(1D#5H#soBI z+AIxAOE3>-<%euG=|uTC{sP4|RZAm-U&8!(f9sEP=MHLIFpx7S6Bh)v`<>qto_F)^ zBt^b(jWm2SDExoudh>9o+yDLFR!C7PRJIlrvgEdmWsnNlicpNDw8_33W(K)SWtl=D z%T!1bBKtB(j9uBrKK8+2%#3Yj4ByN9{rUYq_kDbiZ~t}V=x`XX*Y&*4=XpNPL&hkf zFEuT*(+tveq`YF!mRq=>^Tp%eYUdLU1n1uij8C~ba%($5fydqVcN6fgI!Epag_F0G zwgIwc5g1?Af#H7u*k{7Nf{{t5q!Or@|JlER@|elePyA&*4#AVX(a!MDgbjJr#JJA%*E3SSsbUY z!AW={d{;CXW;ziCh%c={JkC^Xtp%pNzy%pppVOuCygF9U=rSIV;Q7mdQ{rT^v~v$@ zFnS9hxQ61U6;63f)>L)?lz_M%ySVVS9fvgnTkYi=Wz4}@qgb9xf=&07aqO!k9IbCi zGw_aYH-8d=gq17gkW`W0DVT(!EfG7|HQcho3cuOD*$mDW66^KZ&uou~0= z+|e%O#mwy9#5xhf$6ELx(z1x_p(`hFR9?K?Mds(=pCW&yXcJiJh)NwqffO{kd^9e` zwd8H^%~5Mp3xNnYe;_@e1D`*RZvV22_4KYTne*cqs6ZdSbuHzwA;y5is8!lE$Gh2f z_%*7xjhSYE-Jy$Yp^WhoPr{#V_y|6V%S4BJ2!SDh(nE9@o zId}mjGoCPdLELxzyF`JYh{PAgE_znbVp52C;HQHt!my~D{JJX}tK~Wrl+DiP@H1yzAL;}rh60yo}TT-}ZWdNAo+^cl_;Xa?>ICShh|{XDPh_3EZK?8Mru@XT}E@?)UQAn+q7CV7WY6vBn{DvOZdy-CTSDi^^-r;J%8;eDv(D7I>Q7fAO- zcu&w`{cd@9M`Bcs7zt56=c+>_-JWLrCSK?&_gBvKL;hf?q=U7;A>l#gA|$*yS~zzr zM@{}{Dch07)DKF!7D_nqYWliaUq?qkk6AU#!fbU18y?DKHaz)t5sDX1m6hj*r8v@OAM47HS0TSLFm%@cvba?859% z0aWfcfnB{m1Z6bz=h(P;PA{83DmYl=)h^V$CvwD0Qkb4P%nbGn<$ltt3(`ZYbSjl9 zZ@ZPs|HXnO#ve7=5Du2e2WRFtOp1-j;-U93GtpDA^w;!$q--Z0pue$Aw`a7g(zRFW zW_0-zjhx>c8{t8D!$<2%M#_m1T&uM0d9@GN7ETv|RQe-3SV z`u9c+Hk*{CRp2*+AJ5R9*K9`WW>CNTPkgX%cJ?B_n_YO!r z{;m0kEVI=dk*M;^t4$w9t{9&!2dJM)?Q6`<8QYRWtZ;!4ileQX1u}==S|diz&EDjK zt`A}m5fhG2?~d(j?2F5+Fd-P*6batn0v|D4o z@&+MS3nKt?`z^2_++l@yaSLIIZtb=*pJK$JekHdN2#DCzW0%J1qfpQ>Fy=`DF8JWy zexMKNK%vd0mQ|asW8J0qikZzo&<7oVV1FkzUi0=|#7<6ya=N)!#)abluM21|wXSRZ zuLEBK;yu7#^zD;WxMD*IFHGw|mdEOwxY7a%PIWY;eMjt82gQ-&24)dbIOB3}Sz3dL zv(sjlS|P$5DG0oDYvTP0%DaO7&Ks0q#I4hM`-~LbrR%+A-A!|P*%N1)a&GBuaIhrL z9pGbh|Evs*17U~8U|G`+Ak~ZHbHs4M?`Yq>Yq5QFZKBCX$QLF&UWiV8bt|`JfP=5n zTvYz&nFG-;Yd-G_H?4uQH|vY!ZcP_gkloc%!6Yo|e&+YLt>2!osW^}O3pPvpq2W?|3WP*owiCzAFw!P;afYbNZ{Ck&w5EuhHARAaf=xP9V3RAXm z*<1GBj}Pw;F*I=_UTPjT)6he?wL2oAIpypIAoHd z7a4!fIr#t!>}7z;F=XCd!aGetKy{h4%Ef9r+)3P4C+-NFo|bFI4*`c9ZU|6zqqx1k zjR^A5q)s3z;#hVVT3avg z(gglU@XY|MRc?FBXzGj^1a4X$)0C0Au$zYCD)?=#X?XZcJK>c}$)lcA>zJ+k3Y&o) zR}+Wm7Oav17=MSq_&TQWpwWjBihLfYs^Ul zfzK645s8Gb;5ajqf|u_8rKyuo11YfIuR{BtwUaM_Hz<#$?@p7TOZsNIo`09He&kxz zz;G+_GEyegSK;?YeyJATv?P<^>okizP&oUDQPobcOWJ}3J{fw;$TUB%9uTib8&~W6 zajdt-%x&Ao@xit!Lu{I8fWXXXOV^f8EsLDDteUmQSRy2OxVB1b~U7thgk5!Z7i`aUc3k4%ujK%uiD&7yC=a)rL=kc z;c)+qn5X*1-GD+7EkzJC42QDl-nt&vFd&GIKmZ(s>6q z4I_^(|8KHwPvN`%FNH5t`36OVZ7`yeS0gnXE83`!RgB2A2W(^_*M^yglV;ME3EQM= zI@;Lbdtp|ui*+Z88g}s5a^I7nZ$yU2g3mpCmP4ik*4P@{H+s{i9IYsX%*_nan_xJr6X2n{p26{k!9L&;nvL2P%g$&-A}bUs#3wWx zSW&2cyWOp1{=|<HVqJ@m_5^SgRjct<@G}T`6iZIeXvpZUw9#jcqUSt8}tN*xP_$Vlx@gK@PcL83++aHx4`Dj{m4tbPAfU!3B@Iz&&4kt?sDQ7M;6E8vlzP zqS*~!BEiaNrAAdw=7Af#U4CxJ`m&P3;a-bgZK^t>VhNGSju$Ube45iAM^SIhm=h|b z5X5JM+gzweW(~;g$ZMA_HJ8kpMOzfS{knKZ+=67%-I}4UlYyqcB2^yWgp>y?8BhhL zV|6FyYI@8U>~6lQ-fL1g^phE|o=FJdLhUf{b&lZPeQ>)Y0Nw097F3mwsQsytj|JJf zy@wkhrGRp+5!XoIi60BQguy;O`QcyZ_3?k5*8+6Kr5sIeO4+cq(&`{ZdBT_DXp)#o zIH9j>--=nivsY4m{!5g^S+fvY-<~hEE8^T4;&9C)73Y z2Q(Gg_A@WP-r+fSoOizd@+aXZVB-8Cv6|PV&&OcL?92E{EM(k|xYDF5qz7IF-+z2( zbCWG|4Z4|hb9zf5!tusQP6@bj*sjvzK!5YY>PH>M;~7c zv5>SBx*q_0b}s#_cf>QZq+Y%^TuK!OU$BBdQh?46@bOPH(+7l|5Xwtw)garP z{-1nZ`X?d{4kqVh3V3YTZw%{hq(3i_7@&DupD-4DO`8pYI1W5R#E{YN}+q<^gcGA2$ zKMtJ4;}InZBpmz`rh?yIbG@5uqo}r!F#1SjWK7`+X6j(TB(m(D1nx_SMCd#b7Iheg zpL$lDAk5mNE9!k-x>oC(KgpWMzGRc7OfaOjM!QuC637FhKIzfAbV-*;8qw`t>wVuj z;TXZC##xuJ_lj6?lMiat_}8r8#No zx)l9nT5L=*G-uDWC1ABG2_f?RtSt~!_s!Y16u3RlZbT64*Z<8}a%suwVMJ@w-w(|O zBIg|kf~Wxw%3gnL3eFas>S2H&d3Vw=tpuGuCpV~;#L5qsjddT^_}eSLFRXtc_39j+ zooig=67Su#7ci32iq?KaO4Hk1KwUw-ZT4m=o4>JLFQoKpuY)2!qV#fO`4jINq4}Dt z+xZ_$eb`2-!Za!!Dx@cBzc4@Rt?h)K8DT&+4`B*3NPzW>q%;ZdxywjSyCHi}h2Y@F z%~zeA=7T}ui%6y)bQi=!YLU#cz207OHH6BOj(^GV_E!J2%DP{O zKnjWsHI#9UADtoL>N>U<(1swdq-L4($;+)0yMk8`Upqp3j_g*$YM$%4#!Vt=jDf*E zLdiILLS9CD#*AdQXrAhh9+QRg(-yb*G35T~XOBgkz&=hP^=sW}dLcKteQPS*M;u(`_nMtjJ0DIcNBDyn09df^5r0z5wfTL_E7N(@CP-NhhC2=j z&W4pw-N7bj+C+DIT@{GMaSAgvf%Ph*u`B1hMUn8XfJ$nP&;EdJM=U@e*~s%NKzp;vM{vq z>4@Pc+^!hznGu(-h(Q8%+U?5nu{_kg$_3)NYH6g3d9N)ZgSO1I*vmXhQ5SC3V?>R} z9q**Auba*fFzuj* zR4vtP?+FH_-Xzd&oeRV?F#3fE5m`S*;so?Hbhi(w%npD}6Ue}Hu0H%$vSM8I0gBuP zq3nO4W`JS#`oFeqWotE;H$)G9bK$+AeISk%KdqIFXRol*atgpkUt&Iq2p)PEgBQ@* zIbE!&=o0Q~$@h1sAJ(LV^IO8w%u7Np$$$BW3s8i+q9x7{JX)gz_@PveXTq|UcY9j- zV#dv{a&k=fJ?f`{)BFQMbmiB46GU-plt2*Jr^($4E@LY2JEC__`z!4~AR;dUaICUW z%{oUeDV_*c))WM8+;mdNbxT2gyTz8D%uOg z=%QDee-;b7CLFrcVXkSq&z1WA)qK@}$Lm+)#=7G&9z=W*n@p&W%-yaaM$BdoX_WYD z8qB~floNQc0yNW~J4^tm1(-qi9>(t`-*@<~g#ITYbkO-M8ZvWXs7?Q-d~&GryYPq^ zTLqU8j{w=nf-w__@_UDf**KNvLlWI^ANvX`?t%6NmOrof~Giv}*xy1@Y6SPHz&;7jPH78%UH@Q;4n0kgv1Ob$%*12Mw&GE1go+(8Na2&ZpI41 zL|q{M#@j2u-dUi<`eD?r)03eIdKSFrK0<$)@QHTPiGGbZ6YM3S%u2PhN;vvzg;9#X zd_?iyz{R~kOQzYOnT^^Gawhxy@Kk51LNvivD&6XW>ec3OfvX4a|KCm-* zZOh1Gywe%&x}aYDEwNML_vsh0UdnG2wngE>uhG<&=ZG(V(|$jgtBMNzl%MO>)t=bv zpt~3aN4ck!@IPsCM-%hmGc})gs|MD4-;<4{y&9pligR6AVQA}%wKoFGGO@h~vr5&b z^fiagjhF!J{tp&Uf*#H4jmf>>7PrOlDlKnNcX<)*qiu-UU#f@khtfhj^420|Xs(AY zJ8q{<@zLz5r@A2*9Hm36I$(0rNae8A@kp1f(hZYMt=4PqBsi31!3rg;SbbV!Mz$M^ zRe9!y*3|`JMe;0BzSUW24G@KNMyr@$oOZ zJ$fzbf4heO-qj-ZpAEc3LzjBk)1da9x;{_$np|W-h``kG*oXj`*g(Uz-X}!KN#oj% z!g4d@_g$Mh363oDDo=_-06)xgAqFWm4pLG1d0(ZY8YgoXMGuzWmcJKagX7xjq2KE0 zHLubv6zk;KUi%p>{8wHE*?ZyHKJHn-i6}mN{>_1ld$JbG_>!w(3UH}_sp9-m$m3W0 zPEt=JaO*pz+wq1mKKgb?5HjtA7Gm=!q|ooTvFzWL7}uD+K8q6h1KF2nlfTKA zF$)}WU(8?H3SLP71uF+%fLuIxtyWn4>4;zP0*4PLALx)bEoPIK$g!wY5N(;JMfhDj zF5|GDOo*`cR8%}jwG*-)xS(mvL7MUQ;k_r?1T zkDkfZ$LXQ}-Dvzs4;@pKNig1nkJ^&Cf=`G4jBpxvyn<|f1m?26{W<@9#C}Hh$RGXv zF{g?n;(&72K~uL|G8Tt|pj} z(8`Q5KBmrl<4ENp$aChc_Yw;s&9^Zly!V@fNhq}eL(q%31cFNyf)bt*<*_4;>r*w4 z&1NajA+dUYgq)w#>K;5Ip3X=5i%mxn#pspc)g{Q{i+I%dbChXiyc4B=VZ59(tofdd z#}#^d*wf)$zu|Y)XLAtCA$R4C-0q``()e1Nca+|c;vg?JjC^p@qQsbPD|)2+x%4fO zC5-Pmy-y>iWx~NQ>^$W*QrWXwp)%0>PRdBKy1kpgkp`PI43|?iGF=_-^vbm>iBs6# z=e7 ztOkEZ34TaYyFY49o0YQfQCPU^GWV_IohRM3$H9%i3~^`L?~#)Po>oq3CYUy=K4*Nc zwcpHz2{6LENT?gukD%A;Y*vy@y9meT{LU{7xSSvHX6e_N3OMvC#He_3IuJLPU~(^_ zO3Jbw?F1NQ1K}5ha?Mt)+_gA!_}y_ij&NN4FPHG? zZ4!L{dWe&Yhdryb0M5&!v;Wv8$zJasw|5RI-kmpioa2%(*5a#2T~?h9rnjC95OCvs zHM3f;;YG$1mlVHR*DCTHN*{tRQ|;Dk9=Axa#JazjA-CkGC}FD==$@pnx-Hk7~j$qH2@u#OfD zE$a(1{{!cb!wpxtEYGc$#L4^?WB-spcr`=ti+X2J(h$0I=8#wvIeLSpJsU0ak)Q9s_n=w)UKDJ*TrqeY3t{X3BwJLHJ9bcE_ zAe1iCUEO01c+?0ZQn3L0Cr0DT4tj=&_Z(v`S1aq>Co5+=&iqIp25{_O{2a&G|1?Vv<^z{xv#N2cqc=H$2c zZnq1)#AIbE*XFvLT64Ahm1}aD8JEX2RNZ?dsaD}c72AVnpFN)cblD%sKp9d zdA$Oi*UVlSDp+Uo;MW27*&vKsSzr2QyfJ&oy1wAdsa*a{q5(0`Rxo`kKztxR7XDW%wQywBph zeZ5&>PfPm>Npbs@Z6-}zjvkwy_%P-v9G&W@?N2=;9Q4{6V@;0!%0bVIUD8O$hVEMe zP8G&R(XHE$KH3q}Y`F!i#6&;z^qgi_S{Z4LvU}!3C>;z?OkK1S3-Y!&DR=y1I*x16 zh)sxUq8A%HVg4MdsGi!Hf-L15ZE9-zuC)gIZlHtoZqj3+^;wgZFc-fUSD&CCd7gcW zVf_#exKr~^UOooRu5riPf~|B$i_4Cl<|7f1`V#Ccz?OP1{toWY*6Z?6+uD(An`(bF z{mLs{#)!LGV=y-J2j|0hUF9$z6wn$X6usn5Xc+bv1{Ty}vEmF0RP=^lP>?#?XTcAW z5r58=kNomWqkVOoiE?~xA>dl#o990To!t4rZSWVA7(I2yZ`=gcLf4;2Zf~zNrvFvO z6kyrl*2~zqzg@D0c)2EpF0?j`D;S=1A_T+~)sF;=2dql@rJ+;S=9P2zsRdLAcdc$+ zN!{Ac3*qO{NjLA->+G>F*44M0>ZAcG3@H|+Xa5;2!5+Aun;4<{GIRVi$=Ve$P^iZW zys7TTMf_11kV9cE^CyQ|=yMt?m>Dz7n8f-G1C9q(P7BFIMxvj_JI3dgcyg7QPT5W2 z9Y}<23ZLb8zfU?1>)*BOmyVfwj>)WP6+SP={$ezuF9LR9|B+k9kY3LGrAQwrC1Xl> z_OoYC=^9dZoUsDO;3}nqB*#S`_4fxAYT}yZBdW%SKic3!A z<=QQT1;z?RrIheC0t(8Wg#(b!OaDuMqkX$bUsEk-CKje^7*=E?14C{<;JQeivYK|NoKf3v&O4$Q;oxx>)bQF;|RPtNd0Q8COddnCxUP zhobmCq`i=IZX2%}XRlXe|7<0}rHQ7@BaQ?wg|BgWzKavo{p6ZXq8J3P?$namJ5XU^ zb?cvI?ilJ`;D;;!;uDj-6#T}Fh_rR}n%3LT4TDEC@xgG@%(0f5L82D^i=MvoZCSRL zhC(Z1qvxQvZ#|@tgS9gv*sX)XTCI`)4`aop?7)V+LiXjfkp{XnPkfW1?zn81W>L$} zsXAu3@K0X;!{Ikwo@_4dxm=RD%3SW+_hrK_Qe>qsTrPs@D-(N!RcMb#znNP4FV9&SF9 zBg`r0J)6juyrL_AhC~A;SnfVREQ@aX^zg^f>Mny(1swJJl~w>}3W(c3ZqrUruu-Hi zneJ4lF3wF}jzX9a@!3^Ja`etO=)6Tw-BdQ`F&+)?p|Np=C|WHrO>ysop}c~8e3Wb2 z(gIDjNrPbU0xc0>l<3w&6`1JG`9SLQ37Wa^9^9+9VPVryZpX)vJ?C> z=$4m4w7Q&{jfjzfr@Rl>0RY5{y z4fM_sKin7gHer}J-%Ago=W>%(@^!Y8aT7MClPA9{YHwDV0fZvuEueI~X3G+KaU(IX zdV@A)h4hJAs6j+*82b@C3cA{EPdPFQZaqSK3Lqi?7_FA+3U~RNh~9;v_}_g zOMJuUqS3h9hDeBju_OL1ZhxDRu5;JA+6DETE&VB&53&l|Oik+UotZAt@#C7!61U$7 zsytz+E!?{)_<9K5YY@i^Tc~rWNPB|Q$n+VtWwF;J7TPmtrI$lAinGr$0$!Idy zjz&TY;~tYmDQYHeqODgQ`~bNY^sslku2d;{$N7jQ`0C(`^HrtEPB#!6R`ZQOU__9`>2Jfxqn(STIZ+!x- zI1Btay)6@D@$Nu!;@yLPo3a)}g8tZ~3h52w{;Z2eE=#M$C47~8RBZ_0=s-#j`}TFg zw=%|A9Qm;5#Z`I5j9~ru&pvR4=V>aMhUh0snktF}hdCxohSwKbAL-^R=09-vcF%Tukc2}L{>R)l`O{FYO3 zOieW5*~17!WX-L#dp_xG7t5>&Cr#?-_R5jL0jltW1Bx*x2fh>vzg!&-`63x1QFG(M zscH=6B=_Tz`uEnV+8UBWw|S&0qBneML$!#IA^Q*?Xy(Vf}*G82NvZoM~5{XUvI3KMOMen ztDND627gpN9-c0Ye#84+UoQh~OlOTg`~i{UuT}(2%D_0+$RCy;Y!D8f_y436B6t|{ zCMaUDRP}dnkR~oMlf6Xx5iY?WBdsJEaYk%L-`PCAvs+nRir`P54UOsTdxlP}KfyaO zQFM*=re2TZ!g(2HfKCWBNY}iYcHO4V1|cQ+me#x;$qbOYR^`EyF;zhA%V)kEG1#fs znAbisI-^|wz-U7J>1c2oss-L&`gBBru7k{|cZzGGSlSm<_jDonzxe3pD2zJp+z=v) zcr1mBP*N|#QjD~Vebmb~qz6b*K-zi8fo7-W>1&*{7k zegKz#Vl;`w@RuMi+u zcT>fmUTVv!ymnp9c(dYyG}X_|Y+@r@Vcwubo$g!b`^kc;JMy_S2^SDc7O0LE$y+F2 zJH$wkcqH$vaBmkY{YD%X212NI_qXq2A8cT_e2f@=QQMAFF z7s`ziJEo-l=q!G#D4pe%X%&7cM~JX?4usG{+B@Q_#|8k4(hbz_E-x<+kuP+e zA}*OAn25O$Q{-OY5Kep$ckG( zKKtUnW_rf*)HlknNa4~uT!D`1x9g8t@MGh}VV=j6e&rpA0M#w-xW|e{MT6fq3POd9 zvITU>zIC_0Zzv10H9Xk-lm>o36TL_Yuq8o0q|BX3%1nF9kKodRSisd{X9h3X|Jt8Bd&lA5g!nOFtN%2b?n$Dow z=*R25oN*duZ^hkx(-%}YAae0T8Z&8Wp}Jl0;6$HneTed4_nyDJ5Y3v3Rs`i3eL#)_ zxt9M1>mY2Iwt4+ZipIdO;Ewxo3s$H}D2k&+OY(Ku9$~+9QYIp&hG(hFSM2a%ob8i5 zU98NBXF`0oLxM}rsy-Fqk<1iJN1%d5Wd@^mTRFQ+eIuIRc>b#Ec6B-%8&O!X zaprIn{kq%5MJL*ySwTgF(ucP}HDSZ?kd```-wC7`wGC)r*<0FU?qLHTGp{U3o+vl- z;W4~=mll0Gxqy>f=t!UR(65}SJY8pf(1P_w_si=6!HW_JE2^IhS%@^QG-|0h`(>z_ z#KG%+=;=SY+Ras6C;V!{3M57`4$|Xt8qP8Bbe5&9>+%!;EOyBibk}qXwPMzWSp9w# z*mm(QPQMqp9c4&5HyMM9pMxO#h~Z8+3e3>e(HEr*%`k@(o$*@BM5Oml>0Bq*IZ@rSg%dY->5|CPxs8u?9& zVBV_Q?5lvORCr~pvayoAJ{iH^AiWO`zpRW)J^C9zBuoZH)J@O!T&sqY)#8A^ zvaz8yj1N%Iu?#}R)!n?ozp${E^8y%D(E4_Apkv&kjez>5T4%4-3aoE?xR~HM(|sX2@#^Aa2PU|9Ts=Oqp`rJ9SI%x$mK^s*nF*h& z=Pao)I3`h_fZovc5M0u8-@rZD%I(5wCQO6xLjc%$&fh2yepka|Y2E$Go1w_|Qkb(Z zW8YuvDS<}oKmSIp+V1jOUVnC*Ji>mU`&iT`3)xFrs|`U))G4&^t^R?CtFl}N&J*iR z-$Z^;ea?p9vMj0~UOmn|{U%Dq@H>YIhvN6umV1W_XH^UQc7k?9`=%4a9r8KS7iGC`-7@{r039mR<)%D;(glebR(3#fjsJthGr&lNx zpVb8L!Q36+^SlDHD|moGrN>v0wgp>wU|Q=A{9B66f?-lDgY@N>5rZQFMzTKTa~>VS zL~-HhaHJx2-#A~ng zS`%q+AvRf+OJye251+^{ha01KRzUC*?R>0liV~+?brDvmfZ>FvD2nu2Y5S(Dl=X=7 ze!r%t``{e8!zs;bAq1WGo^RpfiP9Wwtw1{Mb^%uO@e(q$j$es-d!cfK)kwS;@D;W1 zg(WJ08SID`H4FdVIJvqMQ8gf%WuYweBtx1lc{638lnO6cU*NvD>enWL(xJ&Nr}G_8-<5AUU~ zruj)&a&+mG!U$KS@biv~^h5!=6Z5l{)o zl-x7PZ1Rq5_w+51C2S|m<^8MN z3R-P!|68W_2?{LyI| ziqwV@d}2dnBvyiQS5ume_SqX{`M6xqi+IOF8Vp- z%jG?q?0@i8kLkQF&uA@hBd3oUBDlfl)e=?dU&3_f7#}2pV|pPR{ID{>+ez(YYRb8M z62G!aI*}(8%}D_CogWU{K(5)dt@~EVJBmJ%?@;R=D z29kWv>oA5Si0%Q+xX=# z%#t6ME;I?}`>gBG%L>n?`={ehF^;;ZAk*C-m{3ICb2Le0?=*c7vWZaE{DliNYR+A!_f_Hxxn3i4D~(2 zAZ`A$g#)+(FP3ju=0%wJ@EEb0))J5x3SPLzw!Zr_sc~@5StQvRTkGyzX)$d>eggH*R;qgBo@Ok z^$?p+3vU#xMm;4t#hXmr*M*i&FZIH`7J6};*xISkgC4x!pjbHVp&wXi$TrDJhfpq0 z5N|mTC=(#>_BkDwvn(o*CEG1bh&rUcN`neTM|1IKUseiQ{+WD~An4Q58=@mnWrAg|Y-W&3!RP0x)did2$f)rGx}W^3+4~POTE! zo77V}(@R8`2SI9`zis5xo8U7|cNO)1RJ6K{+FJUIGAC{r; zki~s*WDjTo%3=1-b8wvi5FMcI0k*~=Eg`L7_2Z8g+**YcIQ3n}2VS!A;p<2Z5gZGm zL?M^_0t&ZQnuJivKH0FBVVyS_@yx3nay}Uq3JC4>BB1hZH7XA!(Y^()R0E9z5O4cR z2tYajOMXzYcPE3Uu?(G@fnL7xBiIyT6moj&QUnCyzKAZYe5b21|CI96DYOfg59Jvb zRz%D{MNRoxxg7aEt+~FlUbk=CTg+9yiy#!C zi}2jzCcNI0w>|mh5X~Ulsf_oFr!DwcxEY~oYu1b~>VwVW%PR|-AH7!d#j}11uq5;S zDhvFtlQ1Q5en^$18$!Ak5}%fPHM5&e(PC*yzG^t2&qj(NE_PudSccm&N9R~qCG<1q z^QbXlQ#GB`P$y$w1zkvmTCAl|QXuB6Ero6rW)g93tXHCv-+T8u(ba%rP+P(XvM-qv zz?-IpweF9xDls@y9<^)1_-r<$i|?-y_N2Fh+RI(nj2t?#ia0o4PRa+1%r3aU(i!-y zMwjl$>JE-Pr0oeTk>HGM3OpkecqmxNTmQocyN8hdr!N*+I`hF+Tn=co z!Mt;`mHufS2>GXeynSZ)H^MnWbu%f`tD++%Yk#ITZxAO|xK4Vls}`w^z8qpwH(WHm zhDZkP%%i~}gUSqAx2`S-5ehnW=0DA+p-rpHCwrz(uIYXqRwx_Q*&Q0RKKirvb62uj82pvBq4@RC-19PUX2o-+}2{> zS0E!KJ%$xct@0m2I%fNvx8nG6*ne{01CGPnn%v%1UZHmp;3W)(gz&E6(;?tS2==8z z=6}F5IRvBJD;asE>9zd%D;+q~ieg-5IFEnrgnb4nTxX` zRyx5LtZJ@Kd>o0xmmXMN3mevOAbN<+VDxm;>^n|y9b7=Xx>E&hO&Q-msm)a7otc7O znP4N9(q@oSx_{vGX!7B-xsN31tQIkU-+{n!o*UQw25H|mXHnCB0rJqTNT}khg9EAP zV>TJs)g%;hh`vb?q{9m>EREKc=`T)Ag*HnjWr-3Mp7TG_dX0r+WMJsS?$;n|LlV~> zcjj?*xnMI#J<(jj_f9SLE)(HD9}M_FZxf-jNF|GGkyJ#32O0Td`);^@{yl^nwl|~i zI8l~(JfJ{1Z}H&Z>~gPX7A)^5Pr-Ubq~28pKaQhqGH{DIXttZGp{1$c5Hjv_&CCu? z_3v&EiAcu%gT`ehYSTzjI;}{f&I<8RB7bKzV=1X9oR<66C0%jxMb#XH@}7FukMn^^ zC3@Kkby}mJ>6Xt4I)Lv;V4rJ)3_7S7AOSMYYM@Z;WKkmNG``$FZzDrcWE0k`9A*YL z!1bQ`KAMwjvY3+{6wgd6-1YBTPaHT1^|D*;^^%OSPn2m2W(eUk+vLQxtQ0H+>Op%a z)^7R|IwWi=vMvSUbMf`ujW#l?Ko_H+BGXXm)oYY);e7r*qE6usfUKBF)GRvgJjS%$fQ zF5oktF}V-Mb8;~e-4MsZag90Waqilk-2im^sL^qtAV@b&PiQb z@QAi(uO49!gB!7&kFtP}c5Bb@3TAlS9SRy~9f6PSt=}jre*YT&3qN=C%eU##&Qy;y z#k#KO2WyR7_n**1t1<`<-CXB$KU^3Ky{mE@Q|pDHc_#h!$g)A@xQVOa;u{cCaTaCa zfQXr zxjM-(#35e}JL%M;8pFl4GiOD?*7pDd zi^1A^SwygCyc@NA?Ck9q=9*gR)~f3x^qAa<-dd;DUvPb_cE&ljzq=JzzLP3{;XaPR z$QN&L`rUmmTp%Z5U-r7&3e7L>{rzG4roB%>kqyJ!DQJut#;xqDQ@>LyFr46br+BrZ zePY6xyDWHTHPG`c!%|M2n#Mc<-UR9XQ*Hvy6^S|b6H0b`GDcYU)J&3W`zR_*$wV;2x;L*A0_Jn~ju4~GK(r_DS*yG-JrWdJO z^&f$laGmq?A=zBO&cJ-jgF7azP<9=w%Ct(fsiW%MNTQ%$i3-(_g;30~67-nz#Y z=t*m$Ku^d)V}^N|>ulSxs1xcHbF(%6n2p=5phvmjzJINsnQ9>UOsKEn{n*X`%-Z~f z%jTa%#ROLKfclg@u>$4RI<1@#vJNpgrHr}Z)gz;>@H>p0T9*!S5=|g+)j65@{33p! zrGkETQ_3%L=YmT?Bfv$2vwd%-+_T98TGMFKrMVX}-6LJX_;cnlev4ipV&B9?LmeOnr?F%lWn#&>0>fXQz_3Yrzxh2q*CDw<;g54%Yq^arzJ3L2 z8roX52KuKV-ui?{?!9x-9>Wh>`F0i)B>9Cd+kdbV`navB_%{R2{VW$KJ!QE(*X~Vz zx1KS5CZ#wNtlY*7%y7WW?D~fYv{~u?AHLo^9P0M%AGf9wDuuG%Wl33+>`S)_*@~3x zS(5C=&RBAnvP~hBWh$~%46-kS#AM0X2V);*Fc=KR%ou)`&*yob@ALT`-{ad~C)t^EzmJlV|mph6r~VW-9xB+K4IcWbvCo(~)wNaePgG16^FH%&zpKEF)h=S-x5 zus5vu*&8`Wo!&P4qwbN=3HY?QTTWdI^~SfHM9~Q`Ae~T?*}8+NU@G|ANn%)^fW70{ z^@keV2n><=Ow+%zpm-3SUy@VSto>>i%;r+Xj8-76J!D`ncIbK)67O7LwAlbU7oc|o4twXAEW_MZ@^m&D z0uG@G(9ZlB{T6aXqk&Y7=TYo`R@MIK4|b>_*gg3tYIP0^jD7ezBRaup}3bJ>!wd}TV+9eQli9Hyxw zM>pT&g<}k~A5^>uO4`vbqEtR{Uog=B*XP%P%9T*;_XR+*%zkvf=K zOQR^wOIs1aPp7UZbQtN>a||5JC&a%l<)m?9&R06Hn3gvYJ67K@c{~FZL=`WQ8g%P= zGjh(ol&0xoyCFbighzE2O2FwEX!1NvR>w3{Y2il4*`3bJOs8|up+Lhs4j>-syg`2&%NU;=On(b{%WT9W}1`;cC4MaX9+RwS#S@Dq=iQ zbGcvTqN5DOW8%S-CMq(L=}%kV0nn?`__FfajvIV&=hSa4<~pjmX@B z&;z(L<ZvX! z@kOg_WJfpBNG*1oljkYtMr&GGVef<~cDXhf2>+s@Sb*~QE`iN+XCq+msTc1(zD}H` z$+trn+Uqhe%N9S1&a>1BSn=y0Nhenue$@9) z?8x{QI=OHr&Q|+7z6yH0Jy(eRfZPG7Hwe4g2D{KQpib@8h4$)gHs>2{=Xj!a40U7` z;NuBaAGbfl>HpA+w&sw311voxM)|C8jwt-1w>%$iqF{@V@4>h8X#ESUfwZYEDs?LG z&(E*TPtqfoZ+Q~NwoRFiFvP}g!mE_%fHMmkbN~&4pt-}HDv<24cG-jV{lC33!HNYP zB*kaednKV$o3y8tFj&cxu*P=XPiT1^I0k)vHu`uBb)OE7Yt1b&rmL+?b0mV(EB{_dooe)^BPQ%|s9d}a4%l*04fBGIuVuSbh! zG#BHIIL9I*j+6H-*);CnX35xwYn-V^PA1QxTNQ18_=;S8s3>12zUSmV{^tmb336`8+ixSa^gl7op_>-UF^8t5ew6DThqn08Z+5u=;|t zQX##D#M(36LXAXqL+AU$W7b1dismod`Ms(jEZ%LSb+X(ha;+MIl+eKX+NJnE9dG|Y zWL^5{oLJ-5_y!i@u(WT;I4wg6xis+tka@0mOoJ3{%+V-wt2)+?(F+W%6n|E7Y%gr* z{mP$>fr*{%-_NR^O?jwh4&YJ=q9y1EBwbHzC05Z8w`Bi_+}{e96|Q&KY#u3g|1-B^ z7$)(h(MV;j)MMwR~I0F%|`PwV0xtYBL9pp~@rY%PYFsoZbB*a8w zt|`P?sj%t-4zk>^9KmRz87i(1(f>3eH^e^QwEAx@N|IlUkQXmmTv4ip2lQKa}>b=H)R$$dTnkdnw<)+F`Gx0 zZlA{tOCu!IzI_FV!2e^eXRH*liv_*$tS>l^p@vH38ad}{57gaEy`A+Ss(6|$bLZe0 znzU!E`vZns6^_oP{bg3t<(y)J>YxRk3^1yp-Dq@ezR}z1vUxXMv$~S*`$Ayqgo$3b}Bp#jA~j*=o;a z3v7)OpmAXX@9>2OAC9BQuh`u8Gji;FF}^;p6NB40+~@j9Rj> zUAX2}-O{EnM{5aiAD8LaG?SnNw4uv&fCtB#IhQ+O@VW(P~GTXQz# zhJj1~7bc(S>1iES?vVaHFdu*(D9*0ThTXnB@4uFN0K%)CiTo5Xr-216!QoDjR~H%w%v9Yby}7M(&;&n9gCnZmJW-49{r>R+%3hR0 z+?Q$h#w1p>t0?|VX=jrUY^+CczG``o>y|X(E=D_fzdNHguN?iNQZCT^1imSJK+V-} zYVbph-ry1Z7F?VZ4R(llAPVLbwr6eKL`!VJ!jF;{FlD|8}u( zIQAc&^Xb-Ni+m>Qp)2Yv-t3vetmFzGg3rKH`lp#0#W&XxhK-e5bE{3V!LS{)v+hzx z^fb38esn*|*tA+gO@7(!Jn)+T3WSrXk$n_Qe=gTk_OnRSq1GI>TA-@=N42FZrtBFh z|H6BceOgPZjQZ&i#Rn13n1dVdX2j!IsO~k7_*$$~#V;9rJaLxek(i{yrI_!JemOH6 zqbgJ11zgf7J}MJk5gkY)KkPD>_r53s$vu5Z*BOkxF{1L3&j`bZ;Tgbl;vVRb-C7g~ z5@(Yq9u!~d_$iz4V~sEsS1M)Ip75#i3x9Ug$rUl#-c+_;;|AR-PqX!loJGqR2jNw9 zG2b3(=HjE~c|Q5hrZVFLeDWJ}IPrBs>UI!--_l3z;Z3@x>y6~jx;X~m^#c=6H^j;? zcmKHMp%wOFN;dGJD|ry;=eO~_uZudPm>w30E&Lp28EN9%{p3U2zx}a6;g)j8wJ8)X z@t|-TVq1V`2_$o~>Kko;BM+KuYXv%7VOhA z>ng+P;QScfpaT1g6AFvSlpudIvE!H$LOt*n1*}0W4S<(=)L@5!>;Y?MyKi9${0PyW z%Z{SGCE#S0(OEjrVOKw0yJpictkI9Q#Xp#EZJbvlp+dJpXIFVg#bR`~CY_sO8JSA+ z5bfk~U&b%(OFB1{haMBvp%}%|!lSQD)Nz>+yD{2RENuf)`9{;L57I`Ad(EEdIT%v^ zTJZKEA#X6H!WLRoU{dpMr{8z)2@rn9eJ{)oCcGz}!X&};)Z8_qRG*X4(DxhB`!}=H z%xpQAfbn$D`t@G3&2!76s2G46CVx~BVgGzXE<#j(hK5U??>JYz3yHP+p(%V^bx*==b=5Z%$c;|otHkx zUVv|7diE{ccNKXjyg&F0XBYmunYyEB1pOpI2zLSdB{c84whz=eBPnQym})|GEROBe z@~+0GQI^!+m5Wc-Y_tX@weQY0^S|DsNZONd4PI2O_SH1Bh3(xFPkPsh6LQkkiovxj z+1SKm-n<=>odiYMg`4QS$RtYP{`-b({-qShuo^i1yJsj+X~&rZFBJxeX?B{No`y5z z(&mt~S!lvEY2CWRsvpog4~qe0vIUWrug`|aHh=6LB=LFc-3xoVBQ*^NR;-i3(QE&k zoB#h`0-)0pK zI#tofi83HquN@n%7^87cO^p=xPBtOR{$rnV@kwKae_UqPirpX1fb1@&e2Y`|dtX=* ziQ+LQ0}|Uw_r={#8MhnBp8%<^%qJdN>b)Jk(Qm&MAXvUDDO_RD41C%FxHgl63D|@0MD2d4uT6_FA<>mnh9P*9+pR3c~@3G%4OVh zemGo~SHaXizJzeKSeggA0MOEbGf0WvFLlQ45tEdFZrGL;84N#%rsK)G_4d&oP<|3P zOMry}h({j+)`W-V*(DERefpZU&{uRoo+SMZv7H|9D5Mu*2x&O0|NdYYsQol;9x6x~ z++I-OSU9~mr`W}4$5qqckPTX5JDwPCd%Q=~j-1vh*+K62hnBupCD;&Q559{#*w#?T z_0*DEJnRTW?hL6CdUgt0VdpM_?J|A5JMdiqiBS`zDe3#hVMpu`pjT#K#~9)!FZEx+N0&PGazlH=MAR@; zj}nxK1zX#v&v2^~h;tbs*&c;o2|NoM5%I2uHKp?7)1jaCHFrWy@wL*XbyGIZsuGT0 zQD69Ak-e)uaXb>S_;{y;xfcjT1fxK0*{5cmy4q})PY)S?M}8h;5_)AR$uBODfh>zWrrKHa8+-icBNj`EU_<9ce-TTG%Zg)pH1FxLge= zq$61>K8ME3hbuks__blvCVVtebxpM*!N@`Dx7v-ssuJXwgV+{pumMo_AYHAM1G$=E zdbk>VG4bAxuV~B^2_87`Ke`?806+RPX?wGgHOxjq*(B#Ht%W8V-?AiBsB98`{wyZmA)%Xmw=~>E^ z6*yImS7gqyN3zIS19m7$=Hrjup6l8L{3$~!!B>shQRSaKFOQ3#e9f@%b3vtL*;ER47TF<9JwAXrrAtlW}O zY4~yv_T(-;$goAf*C_cRaBlP-;7#bW_Z2Tn#3T@aIQBunklJ<|OVGHX;#jU<`wj8) z7LIcO12`N$z`7mSSAw*PGFH$bY%|3V%XKcd1>%DI8FcQQPWd8z3|H_5vQ6{=>PygW2 z{Q^C(0HgbMbLx!{&K{;$*xi#S%E1Ww5yf z2>S0=w-~0~z^Fb=QIyvbuLj{CPL3>U61oouKG6leX0AJF&X2d#gZnP8uH+LV9{Md? zIG?oo5YbKeDq0woA85AOIYRp#^RCnatpl6~`ZSmoQerly=yRsT$ZVpJD17GHv}?*d zvO_rPJ%5u~MvSi0sp;q$zmCAQ3g2K;{2jbSjfCi3zp>g}@@RXVfsGPRVdgxeejn_2 z)@Q_=Q;C10w0cu`U>e#awO|XOpk_12`#_>^b-mAR;gR-T2^|9ui=`W4_wnZlo!G*_ zLWeeT_CxM;%JsEiS-XDpu@7WFP5s&&^N88=aX~>@s-oVA2SRvj8R}(5R{3D41dL73 zoHQlntVCvqW(2vE4o8(xhfF>0JJ8)xPcagt*a@8osWDJ%hhE`XC+3?!pD}Y+=@9T~ zQ#Kw5x5m7p1o&jGWRJY><%K4apJVE@pME_VUeN+=VeB&9pwdASv*$>>>tG3wZpnsyl@vqA?apMAzZ*tW-KFs2c@(>+K)iEqJlnS^GEk~n4ngkLE~-(=<%w&H zJ@AF=+5$Cl0=vvkaf|)C8`;Nd-^Z)VuvIvAe@+Z4ckY)v>&$yH{g#0Iuktsy?q(kU zi-jfsZ%xjCxi(HcnbQ)wUqvszDX?sGis=L5$b@2Au-#LBFZrv-G-q{hjX%H~KN+Qo z#JbabRYB-|2|!5>^^M>!MFaHvLnP(Vj9@B^VBz`ThmM(*cR)|8bp9(E^n(uyqVY=^Fv#70#j%6jpo=o zLO>ET2#?D6fxA_20Mb&(ElQ4+vp$=&0)Jsf;aa+*KJ8r-7T*HSCAA+S(FVpcU3TR5U!?c(hmG^<(3s44?#u!SiESn~L*g(w~WUZ-K)Ea8P zntA!l*>9N+V^dUvx>f{4x6c0**{>oMIf&$+n)rS&@j`Vhy|JLNkO)#PE=d9B$7^FOTXj>5 zS8N^Xg!W8N@)GjKRr@dq-X--l?bUr<-5k{CO4F^~F_v5PF#6u6GN9;b%ohayJ!eC8 zm%;CT=%o5je=1GUT+=Jr@ob~soIz61n#-HJjdLNLX4b?F#dDztAMlxE%z#ugnI^86 zV7@jZkob`8?$rzl=&n^76pUZMLzq>a&MFlj7-nGL3^+q>8Wds!)~fl`t`KE!MbjTT zgF0u%yP?YHfYl%yU|;HnXk2Zi*NtYhPgoNVyC~Ja35`)Dt#(lnm&Ok0tY;H3BJ!CB zx4=3R21&%YH_iC_uKu<%vPl|KTKc^}4j&tWM`c7QT`wvj$iPT68@UX$NRg4>ukCjt z-k-f|?Jx8rY*CtK!iqc(n-Z80nE(JuI3xoes#t&}$5^cT1$!(_>-p+$esVjQOu=}; z!}GS@XLnqs#64xD#Hy?6V@TliMr|Qkn;(EASht`5A@VIW{ZGqVw&NqgEdK0`Ud&$@ z4dd|jW=6s;)w_L#?&2(UR~cm(Q780TA1bw5$3A0cLZ_F>^tSU{ zcg*!PjkAmQBg9X>W!EOP1+E~9gL2JJ)mi$QXx=faYEa+2m?Lh&TB{sAbNAAo^5% zJJ?--9b>?e>$Wm{0L-{Y+zz`Gp<(cLzhcrmZjuH=Q8c9efe80eTJj*EJE&!bnKAKo zXgP4yYBx5GhxL4#%7OnvAbHOMTh6oNjY>ov)4dsWr@Ze*${MN1)tk2_DWIr!6`CKIMgAJeSQU5Y!mEF@`{I!F zO(0`lJi3!yPXCN(n20iu?8`Kq-dl_?}mrKBER5wRKo8|_Kl@3yn14g-0 zKt5DK$v`Sel0~ASb$gY{t}}!OJ+9Mh-`2v_(E>dj&$Mcm&QAs>m#9^0G>ku$U8?sJ zc5hnpvySTh);$-r9yve~EQ#w1oZ2P^k?V|XXjP>g7%AsMY|PFM2L?n2nI22)9bH>Z zMHKO19P0HUV|EAbCUOV9Hq^%Lkl)izdk_y(C7z8KR}4Bc8G52CT_o`nmxajv=Cx^C zpD!w+bt{!w5 z^U>^!_Wk=ZrtC><$A{hc9IaHdObgv!s3l#TTkE#B#f`Et8zJx4O1`-qQ`Y!KuO+^N z*9=6Ubh+~@7_HBkihF3t*)6frIY!&mJZCw4?TE9 zJye=N+1JJ}CH|J8sk4k7jZoAkEA7 z4@UzLk=%t?AUANU)1&oUv2peB*r5!)VK3P5{ph9X?2A)VG3lPT2t$#zfJL~)T7h=m zU}SuGXTh9uy8w%edC$6Yj=4Ex8e1 zZ@Zl3(fAk$3V?C9uUWqb_c1_k(lhRSE zd9Yre=xkkG>9^ydv#E?k5==yeN{-#$=pY)TZeyph4+p4QSvLlR4}Qptl1TFM^4m*; zh4poH#V}DFz%yfPOm*zlK<^zSi{?$F;_bJ$KTVjywTFSOaY~1pbYF|o-#d1ZL7$CW z{=Jhv=Nh#}?t0-cB^@-7Z3Uq)#rwbbm{yNz!V*haK47`62+ zN}u1cH$)<@*%2?^t;X+P?V335!dix)y_-f1vh6a~aq-AC(VrWq*N1?sXfQLo@uSX*1*t}0ThrOQ0co zUwC7oG5va<<|>7bE43M75A4(ZLOR=|#nUClO#DqU=ylg*iT@7Rg|1P@BHkW<-19OXjk!1(Tb;u}fZd0{^s=(@cgjdjn$AYXBMrKLjgZ(?y5w@5}>f&b*w% zY_#gA?Y$FLfjY9WE`yyr0(1fAtPE`o1GIk_@R@6z+`CZ4-PX|Y>e)D<+YOHjg$$>c>#D!k z8C9;%*+zVJfCxKH4JIS-?{xFhedbU>dUW5Fi|Bc5LzqUcMtVR4TdD7gSp@h|ogK0@ zu+~1=4bCi~f%Y4Mw;J*5AFeF@*^~%1E_L9|lqiwTK{WC`o!gUzS9*Iw?*>)2?yp4_ zp+sOB*TzlJOK;NrzdE18D*8x7ThHYjECHkeGbvM-;E(bpeelZin^>_@3&SN4#+|R; zK6jLm`C-JSY3&n({8$M4nQ+ybE?#yH!>lE`IpQx!{kFZPtg`UbZalKF7at-NOSpYi zsNIvC)gfAC6uH*;Bo~XcIa2A46`>n5`lRURW3Lp4Pf4ZfN125xb^g`at}b?P1RZXg zCaWWbtvK-&+5T;Rf|y=ygSEDHRte0V^Es0y>YNO@3}MD7_Rg+!Lrnbs_*W-=X*AOL z;ZjMSbj4mI#dJj2Nq?_F_%JI-guqgl3-5+6Be7MA*Ap?kDF@aVQy zN{MqgC2y2=|9`3+yr4ARUoar~7yG^Ga;FPQ%CC z*_RtP~TI%{#D+W21#dgQ%w?ge?*3spgtOh^w8!*iJj~g$!0ADttI08QL^0y zY-t}OrTOWi2&t&FAIwLD^WeZo|K9;xvV0DrLbXU_DX{(mxBp>&*u_ir!Q%MZbfw}} z=eV|q>&Ha}X1CL?ID|&33V{_c@DE5<&(F?boycWWY41jx#&736hqAD&L*k8)Yap}u zXhcvHI4S}`A}R2ZC=%0kX_yoV9wA{`f*qO~f@5Eeo7T4+?CnLYpb;rkz^xl}eQce) z*=sCKWOmmKCnL+8#Eg~JimQEXp;g6n@fn2$+vRKRytK+2$!xq3{n~jVL3cE}Mw(el z=38%fqD{%cP82DBDWo5=R+Wn~Eq_-hztN+q+Z0-oF?Ur*D*Q(;@RHFG^FW>NxWQs! z-s5kpEbtD_bw??4L`)LJaoW`w`=exBMOu&I)gV=*uylobyE~qY8_%wAoxn$!A9OxZ zac@d^fjt?O?WiTb{?xK5p)Fg3FdViR=eNp{8@$P} zd7H6uBS~_zeYA6*9@ed`mF+3={+qh#z;)?7yyAlT4k=JKo_{1}yT3Yp>iOG%tMLwh zg3%}*ga!YQ8=_>_#&JLy{lfw8PrpqE?jzsOa2*Vh=)u_RmOo?#4;GrC!mmvet~;cO zZeQDMO(WJbGUOc&*JY)prQp$P8jOh&l+cM_QtCv7CaX1uo^N-=@wmsHu)3NV9MkOgWu+22cr-IxcOVbFr@ag#^u~PRZF#>J0W+&1k+_bS zI?h2DWNUlpyH(q>2W(2P@wXZ64%kBKN?RbEcD&+xRKC>n7>l=soZfOy+o61yPvnc8 zEPZ{;l)ufY%y+i&>r@WOdA_~nd%Ke#+pGGP_UCLUN9GhriTdQ&2;=S(O;pa6M}1`{ zxMoaV9DdJL6g9^3d{2ULMwBO;p?Hn%rE?+tPbJ zvJwu>-EsS<2XpOXLtQh7W6DaiP_^$?U_P-jILX1xuVv5LC}=woT10jyjWEDEbb`75 zM$aUMOolWeks>kZAs^O}I>=b$!C4swux14q^;0R~tT3td-d$^c<9c zndkJ-Ti2}39EShA(TI}Q6b%9LpH*VAr3FGpUlmB7TWrkOyD$ymax~c(t zPsU@M38O5|dg+_#^yj}H3G8Xky~RlQo+mupZxF>sA~MG9kDidyNp@pPwhl5hla^FV z7r5k;lRVet)#?!&z(rWBI=)~w8E%rksTt~ff*etVxrRn2^EiJ|%ij;#qx{;wXB+5Q zu7f3wX)j37;$3rhpViTCaCLkE&(uVJ9l^BBlbAx>17F#SN~rnUg{cb7VS_`Od-u$y z#^Oj)m-6;|=uFic=P}NS0r+aIgJhe$@YiWNv@mje_=kSI`iQ+FGUB(!p7)56@dve?Xu5Oud6NvoSyt0-sXG{I9+m^*2zvUc!HynD4?7 zaq?B>uHeQvcPnAKvC1egAoz$3Eri2*k3L zt$J|13_8f$KyOpSwWUr{K24z|l5TAVUTg`dv008_`8&Mvh#WkXWFR60hg04ahl)Ga z!zAqM^eRzyGo*DIjaEAiY>pdBq2%bdB868zZ7hHt^H#h_hkZFgvOcT)EP zDROA_nEfIy+l*C@wvC;7EPdAbl3-UWy8)~5SJUA3YX)i1^RNS-x0HrtgTilNRl77J_T}8Xgw$ha7Unb(URMj&)HFSs zp6qRR?M~NxM3H;)!;Eh{+*8C1`FQfw_Yo*8I-$~pKUP1Q35{mg;V%p4KDLX$P_f;r z?HQZR2`E3Yk1YBd(7YjwAv2={s%6gFP47oPnp)Mp^$(0coB9<%y*!h?}PuGDRmyhatwX zU?3wjPi8ldvL{yKE`xn)*4Jb%1PONwV$;D}zeH4I|VZY+5JJ z2EKMBj!w_l71Va^oA(%nnE|H))tclx1PwP0xv_^KB?mTA>C%`Zh6PQMIGfu-J`_5m z-=_$(c5wr*@~Fx|dF+5T9*H{@>Sr9(i)U;tPIY*sxoAv2JU>mjX9%x+`_)3M4kx(X z4bhU%C4|UglbI9$By!^4RqHw>icDrmHW%*aTnx$Gm?A$m{jpMf5n)kemMhw+O?}}y zzuO(+MXwf4@;^ctr<~kjtr2d2K0iJ62&>jw;RdHOkYMmSq>vq63x)8=uZNd9NM1G+ zUHK8kY7qHrXKT2>@hkE<0!Uk)ftH>}XYVBDbn@F3G-cUvty*FkO_3>q&;?;NT5JrR zq5rwF!HfO1Ys`KBeWM#5AQ!`#9!Ktr)KYC7#GiW$_H_#}s< zVQ2bRN@HTk#VAhq62te~R*AV*&K(_pSo!%g8w!? zI(d=-#-!Ao*E*nrCeG4871ze5uWF4IZ$A?>_{f8@?5$cp6EXj{TFjsM7dV9{_mD%J z2ptZ-{3d~uO;$3=8u4J2Hv+@~K!fbWf9)B5H$YV=c?Li7 zB{&n3C>ioRa?sy5B0s{jE$yOnt?0~bn|xZG^PTv6T$^G(jit;=^I62#Z$;0|r zLh_k;Pc0&zzTWt!oNAj`B|0dlubb`iBaMsUamJ^IaA|72p6!w;GG|k40l)nbTZMee zU;U14Lb!zUHnk3$zs&(nh611yC{$}==3gi8b_IXqz z**0FHgmqJarI;3#8rbVBGDzg#%nW%VO2BJ;5QPkeHEBoUZElUiATE@)Y02-R$-}rx z&7)_wv$ABOM4U@MW}oN?;x?d}QeZ=@(5}eNOpnQmW|2Xj5^J=lPS>=%Hrwa(AG_(- z=|YGaAp!kPpSk{>dD~%VIS&C{u%&V50#-9B{MlyM0CEMXnk!nVBgE}z@>s3HjP;Y6 zw>55*63UYma7#<|VZgMzY-S{UIVU#?kWUVedLY>X<8)+3RF)J1H>l|)sHv~@(6Xtq zamc5c5fmXdbbb1|z2(NI(d{s()0O?El!|4dkUV-45`sj+wtS8Q(KlHmFXvwn+JBYl zbhac@*njuoOHo4Sei?%VqXEgg>!iO}BelF)PC~w)Iywg3j9|G`xN-V-XejALs$qiho$ z%e%aq!Y?Hp&u@1+6>MyB3$od&&8U+;`~JjjU&XuxUAfY8zk4opfGxV8%3bukcG2e# z>qWskg{}!?kUyW`z4Rt%=4W|Ak`_9jaKFVk`Ze1Fg|aSoTjEf=X>VaCqx`PB?;Fli zlc}oypkehnk9WMji7(2vYi#AFo4T5)ra{l%7dQn~SZ=odTq@el0`h9PG|I%@3^P@b z+4e+_fvy1`yTy%w`wBY2jr1oce#j;sA0f18%7t0Wd!iuO@(EvroUf_aV;OYK$fcfXoaqar5>)}IbL>L-S(jjUuDMcX6N)fapf9H!9aKwRy9jw8C zqNx+Hdl$%l597zc2Tmp{B@q6-TdO}j&=(dKE`1yM#C#@a@ZV-)!D20VkSQ#=oUyrl zz%^knmjTSaJj$(vVvcmeZ>z;2Z(`RJOEi|JK1$L#Ay?@J5q(iK0lF`8fx`CD9jehh zxPRMEGwGeKB3r|512mq|xBnC)?Pjr$$9$CSN+O#g(?e$cP}e*1&m7$LHzLNIaiHoZ zLSk3H12$`+a;5X@z**a0k`^z&%BSW{gVYC9x7^Plq9WYmJjDdN!4IQZr{= zJ4b(0uT{y^t~u-22InhB)0fM=IG|jvnR_i8iY0zcFBe8_QR*UUPx^N(k^`oQ+L{lE z$(rU*+`R^%YPZ8==h60@`9ZInhiaf=c0_6cdTo03lEn^j*Ng6UkUS~ft5lfm?_A-E zC0^n-N9^S~#X+87g-}oSiq!2$TY6>Csk$uU2^ueoSoO6PttHi!vSZ>f3w;E8-0j1Xr6JulAi@PXXC21eN88uuJ7Ygunvz1yzV6t$@Sy|i} zp6_~HWLus6Kgk%Y=BOMZ^#3&5AFeHtOnI5K{(H*a(n;Rqq^b3lA=EhDm_l<{$0Qwn z=3LpVOi`+Z(5FgsjOZQDjN~Nzjgvcz5m9E*&ZLR$8jf!31_k8pb;#cqoqYx zdevfBxLWRLr@N?J9xvSeqg~uELc(HgK$Qt`j)8In=DC2maxr8Fj2TB;n(FG*I$-^B zeyb;!B@U`MF%iWpY9ou8-wDHh8w5SH1mDBb4GRzdMj#NvpinJlHG6Pa0QyAdH$uZI09pXiKUMh#OCSjlsD`}SqQcwV~>(E=-U-e2WcJ-sk@F7;AuS&hns4z?PsC$ zrO>k586zag?qto(47^m#4KLO-VbY*5O7%7(_QT$L3No&(MtCT+RP$fS*ZV(o1uJJZdgQMIZW+z0!%Iz(s%ueraja=bgC`LWs)+FwPC zePY`uAT^VsDDQaC6j5uDdpk+_{9XOptIBPcY9#M$%n)bW$m^f~2PgwC7=NC!{GYLU zA9|0iG5*AF<;5{a>l$HZud!z4L3}rK-Im3o0eS#+7-<|DV(Kr8j0eF-dx`9p(iih$bBR> z$E`8Mj>7MzH!Zk0-tV5+D=+hW-w=K4neT@Mv-bdVt+v%9QY8iFLyjqU36^VZWKxaU zDfePhR=IQqnafU#4wc-1kNAw=8u7Xr>O!++p_m4`fjSD_%2+QslE#UcJ+H93 ztYU3+s`9;)hl88%3HoE3@f7kgL{+koR53Z(Y>I2FE_Q#K!05{*zhW-z6iLmgMdLA0 zWxu3VNbg^rk=flebpktaYy+_{8<+ESc{1#c+C+uB_CQ$w_1uwj5ebQmhC+{ znD0~@(!H(u6E|JEj@i3W)q6XA=0C0V@X|LLoA$RFM>Cu+bvh1KpF=s9CaK922kI5e z5%+SpN7EmFaHfoTje85O_XM6IxnVna;t)O+i*=N&i(i-LWlyK`Fp?>!(&W8C`Tdmt8Fey>Su8r!LJ4=i(jsUjYoIKLpUbmIiVM+2rN58)Q}SUT8Z z)sD!XlR$aWKWT^k>9vA~tT){lh{0UZj$ET;ZebGwN!zz75c4pT9n8H5VMaQ}%UaSF z5tIc!UfOES^fC?w+s45T7u`^Re&(*fiJZQp_(oB7!vkJQtDmZEX!r)!%QVm*Rtk5K zvwNUs`{6E&xU{IS%n#1$-WK+Z&>v$Fk(j6d-IM=c*4;V*+`h(lH`Mw{qlQ(=)R^C+ zW8$>55jgJOo+#n8$+%$ueGyW6Oe^}xsVt0k^LGlwZm}LRv-H(x=E;twy3X8{)#Iym z7S}JT-ye2rve$W-^E}|&Re>Vxwi;{7(L|^IFt!s;8^72U_{yv%eDCFVzBm$l1HfbN z{byTsYx6EJ9beS0bxsM6UGuR0RZOc^GP(Rp>QVW}wonxvHor0hBfDK|z9{p*G-4c! zMs9sJtcbjT@yD33BQcE4Koy>hv2C9NrEGglomK#4e zZ`p8|k9`Vvu@qn5Z_&`lG4LI?H_C+3tBQ*WUchaSnBpa&LnIF9ak0G&OCBj)z`})j z>vcA97d$M&ilQL}C5gv>R958&(=s@5>HG_sF7S|m9^+evk4@UlfsQbljH{yzsFEdG?}G=d z6_yhBG;U+cRdioTpr3KLeS;?obNaT!()9{XMT{3 zZ^FDPbTN~Ds5%lrzgJpgT#H<*(Z+Fi676IM@I5IaL_m4mkS~gKgxW9dsoEia-rX26#mF70zL5fy#nJ2F# zOuO?Z>P^0c(!x?1unj4yuca_1TpDq;LpiD`m!MaXT}bE=^2z#~n9{Uiuetj7n!uW- z+m!z1olRq6{8tLk|Hs#R$5Y+^|Kl0ak|wf_QpS~;jAI?8P*zb_$&7^Tj?FPE3FlZ* zIYzdM6WLqEv5%00W98u3>zL;_=X{^%dVfB@&-?o4=O1;;xZOJE`FcE__qnB#CtrCH z5o60rP|1s({!u-0+%(vrT5SF8IOXeqTo9TF$~_okAI@x{0}}aP;u;RfZb3hp)|jO- zOb940T~Vj46S0Y-#Ja8$#Ke`pa+rAiaHW%j1q@C%l&mo2pwj4T8ylsF{QncS{4?vF z{(IKb?y_!DQr6j@&@~Ww&OIz4ryr`ayh+`D%kus35}N*?>Z#X~;KLz=n8$iS##J5G z>)%`#0>c_LG$Geh=?!1Vl!8y6z@))~!)K=?d9q9f zzAOrEasBP5J5#3Z_?K6Sgst$W@rauy^1ogd38&gD__A`y&T4dz9X!jMO06PwUN>ju z-}L2$m}Ao`w+MLnmmKp5?o(BR2c>sznN_zruT_xd8g!ac@7~3QzK%y+jfX@SL4A0u zRNPtTiYnQI^}8OQZQT(BYlMg9 z=(TsDbK~c0e51fV&1}B{xi{Fcmmr_(g-t!j!K)Jk&g2BGLD4(h%QD0HhzzXhpBk!B zEiq9r<&?y)jYjZIKoBfMu~> zznAhS5`wI~p~kVjl@zkG1F&-DcL6?Ja1o&8{|nc*R;X*ZlQalo_EU7kgJkSdED z2CV^gj|P&=Naf~of+||TrGd;TGOajaR()d zdNex_v5Z38)fA4VA)gnAm03AIe057{%(vt1^n|m~?5Pnk?+))!Qmcxt+!xa1yAk;) z=Sw3qZRu5XaoDulGTKnXTVPvT&C~7M_~D@Jn83QSifPqm|6VK~JXJ7tnY_{ow+YgB zC(e$pq*VDp?`>B-K(oYO0PhRG;S>8S|(CF`C3BMUXDc{`V?mSkJngrl}ZQ1Nxit50tz60*&8d5ecpozO95ovDq|)xPVue+qp8d zQ*=XyZAgzc!mu;ihd|4T42F`Bg%tB}E$-Zb#qGl>uI39R)D zi~IK*>6FDNsf5NH;zf!$p@L2cX$+g~Op#?GGoX%mmGb1vw{e|Cm(Jdxe2e5DHQM-3 zzME!wdb;%2`OS-7Wp>v&`@3Kg$oGe;q3Ff2Il&F^X>?zd!xMsKrw z=S}(WDxLQGvQT!XYf6VztBSGtVNQ(a=R+wd=bAzsYJXjomAf5tv{-%R`;eR5`YPhmedWUo`i~3~e+3!9(ZMUcnie4?Ryl9o``gn z7=DEHqzZ0nYf8a8kTi4d3WZs2&ED^IWsi!G`@X*z3kwSu^Ar!&Q{6+Wmzk3J^z?M2 z{Scs}!J;6>!cAXe6>%JEV7n7$>DB15Eh)$drW69qZi3}_Mn;CQOP=qmin?=^lFnEu zYOX65sytIOXbLe76{FsG1luB={2Ezmxc*z~2=2XqxAPmT3>AlJLu=zWP5T*3qLBNk z6Mq#!hukCX0R6CUUCx(L>qqVZ%ByG8RD`jA_<#5`YX%%!#M>wUAStgdL+b@17XK10 zzN}OP>E{hg^*h?+?%}ny)U_Q+L~X&VByC-D(4?yOy!xIm?Rd zQj6}KiD>_*a)CnHPd!QDVJq$Wi;I}+u?Q#`M!xEEfu}^#SOW{E) z`^H)Ukj2OXz7$|O^h68}Ow{76#7EM*8_5cG;rKfC^V@zgiknAU5eu&=K1-`rO3$pl z7f5AC7yZ2uZ_L_LTq-3a``m)uZ)qA--q1-JeYwP=~gC>L86DXAj-?)2LEiCl>QAvY3o4>tQM_tjYl8fMY5{o+< z_c!#Jcq$Mn)>b-RO!t?fxetGnCOdSl0VxF&d)+~)X9S0Ay1(9L2uClfE;LnVkojly zPKBt={1_C@X!yNdHRfiW75-m5_lHg8+{2;i|BJIzc68Zs8-c8YHL=%P@8@e-ZY%QF z_U46DTY*mD{Kf%aicte}_L{2>p7K!D`p?jHMt?OJ);nqz`3=%P()(W)XKU83#s?Yu z)mK&RKKJzW)Wi5=RHXxa)}s&Z-#hf=e5lPio`aTJ@L$6R*?Ao;2b70~CR1gEuj+N( zl;h~l`(I^IDY3$J(|MSnN?~O&)^U0@UBSU2c4;)qgum! zy*Mg4H7rR=C&YNL%(Fv%n3MKuQjYDR>Z_QgoQ2d_aer}<(CB0h-PU8|VPa0TKwI3A z#Obhu1Mv_K7v9@kabIy1{*4a@jz#HaC_CnnT>SZ@e%+ipgX`NBMB$a(?|YAa+y$=) zNVzfg;aIZ#2&O6XkYm%L138^K+Cm?W90_|LV;2+Aogc=LTu7_H&~xpa zMg{!YFX&vs%mAH$vDM?A@Zi6;eKXj_w~F7OeK%s0{{RyoSiJ-M{8XY~^$G+q*ulOj zI$7=O69ksGZP0ah7r23S(?F2U>9{1k6yQ;rarB59hx5sLCW z0laG1@T7@jO$MGN)GK~sELA+w?wJDE-S~PR>w5aF+Wt~ls|QvB<9bL~{sh)WDSU8_ z(@AO}ovt1CHq4x4>mFik^Kn~kqg8Xa+E;C>rpvkKXSAK`0xZnNsdk_|tTFi;-d8jO zG9$Qs)Bn^^XL+@22mQLaTY7y&oqw72uudBU;&Bn@q;cJBgj;o%Lho4o5sy+{O~()w zX;@O?a-e1q-|M~j;MpztEx9*#gDb+)txxRaY}MCquE6@qk29mC=$sl?(t=u$=p94lhfk%)XT`ZXQUM z4H4zjDANmhJYm?r0($IXX?` z8=lqbXzYOo#42HZ)bky;{KjLl8*#`eO^)Mv`aIvNc73ZreQuM_uL;B|dUKlkykdP- zu%Xc>q&-EKd(<tDRFA;GUCop!fSTbk{u;?W6g-kx2rqyS z0f-&o6wFm^e7*ykQZZ8!#26w~jl&z(9=(G*1{(QC5)<>2?B*K*m=g&BO68CLD?w-S zXPdtH|32o2EznK%oCuk6eY{wc41wQ6oxd{!7nUh-bqRX1ZEWInZ{SadXZ;g_1{=_X z_`M73D!$2LveWfpU1yQx8WU@dLUOG?5C<$`+<~1Lm-Uq;MQWo|g>aB1{6no!G|SlF zO&uON(?1PI&Bo)qn-W(T1+VW&>HW0T#WhBAOMOWrl)tvCmiSG~zhG^eAWgWmc981h z*^kc$gxjM{{|%z0pe|YNz^j^NTsG@BSDCXClEx8XQn;L*Cv55Zte2~rT3PwSWCk0f zyDg7p$4Dw~5CYa^w8ziC#iK9(CAL@6mb{Nn3Uw_!)S)Q^u_&;IO*fa$GUAQzh_5)X zcj?ocaouVx_Y36=hJ6V4mV}2-EF%$#*oO4l8{X#IKdRmaiJaY&j&{=(PBiK}{#f!s z3`HCltO31tc@#N6L_w^%`Y96-xI5A zd1>tf-oFesV)TgW7mH&=L3)O{Uk>5@(XMJdfl?joAd7Xbx1t{_a4b3K;_wB0gCxc$ z!w{{;P(b?8mqgnKHw>P89Mji)A2fpB66C`qNTr$H5*? zq{m=&D>(~^V66INPgJU)rint4ghoDU|GtEBM>QhJj&F#-SOxtGU?yk+W)w_wrq6_^ z9n*DfIm3ze%=)9cY0O6#ri=~fR6!WR0+<%!+X?}3sx99&-D>9+sYP7bLpEbuyB3WX z5sJAJ5<#%YMWA+B`{Dfm!=kOG^sqeDog9ilUZM!=sjkbZ;xzY%8M^pAb<(v-kCF4x zEfPcBUBqXn_J#ntM=Z3)t2^rxPlhHU;JnABvz_2(tyjA{ zwER%Y<8jo%)Vq&W!lXYf2n~f1-y8FAS=@kxan|s)+QN6*8B!{_Q)0d)&Q_-#f4}S# z{&CQ%Lu#3)eNpG;-@MvpcQ*N?PLyaV|JB2H!r3D++S5|PFksU&+_|sr@OOEYP(~_j zm13Cc(J1Y_Vbd$;y$F|D82(Xs?TH40N zwIb@)k6^)k|Jew%r1H?X5Tl>c(y$UNsolCZt2T41LfPFa`njvFjR@|SxcT316O>7B zC!vHv%&p+@sH++mQwAZL4stURuT1cpN3k(q;Nmph(57iuS;+WM1r_RgI)rh|f;BRkjIoK!d1iXP+QM zRNY0T8U2mv3GO9eiUZf_ zEnr{_q4Z}k%T1U&xpN3|jMi`6Uk|mP8e5md=7ATFQW-+6BnpJT<5gkYb=w)aMDzJk zy_?=(-yC@Yoo&*Hj$UrA7M&^E3aDo=zjV3w@V}0^`@hI?NW`hk6jHFUS_Ms`>FLh< zR;otmBAke7>M*1>rq}j*@1u7gHyU!~i4}ZkvP0ok+4W8jX?!qNUGc2W_F^bQl5rnD z@i1@?wGNl1+2V z(me_9l9q$=ytgcDR_(?(k2>GC4*Ls%ym^b4QVTHj?5s=J$^8!&HdDKzlLuhmzT#>5 zmT+B+&We1yY}E6ahoF{(jQ<29Ppp<<|zHDM`{RMTEQPs3J)ky?vOvb z86e23Z|a#b8Jb)h{gnN9+{C@MRm~uw8CU2XYuZH1v&9$NKWsH-6#MQ{mRQ}UngfXF zLwb5IeOOh&I%}h1MIhGPc^?WnEM-vpaarKZAJ(hXJg!F=QRvWw(1c{fwDxl1;enf} z`ZwJ-@Sbm!p4sF_cf|++_f%RVaHN6WyLG-w{u3Z(9$@YhAle=*-Aq7!?avQSnSstj zPt;lOmU4HbZd`0MbV8SXt{{tG^i{LRT_D?{SY9&04(td3$z!VA0qu)VTm^}Gz(%$n z2tn{C6IRkh+3xuLD&LF zu=&M92nM=HqbJ&pdO>^zgR06B;dl=X+ld^@+|g;pBmSk*9zwcWnC4L0@Lq(^vlAa_ z17y8P6#KZrdbHMQ+(bz{dEd%t-5Xh+WRAjC-7vePWx3dZz3^@YB<=CR+Eeg4No1c| z4KvuCyt;;{rmN&mfAI$H$o*F*u!puMg7PBI8cG%`$6YQ8DRA%k6;QE!2UccInp=sc z{|sbXcts`$gxbN2bZCiHqR%=A7QDL_3}w9z#Fj(x{17i;2tU_35KXJYU4mBC+b3-x zmqlk}BRcBRbI?-X%8<98sNMbv?H6xz_)Xm%N92|C^P{lm*t(*L)q6&o?hR6vXD&PT zZ(`!5J~u4Sb;6L3VJn&fo5MSU=s<|*)+*m&i{YzphJ`pCQ@T&%{j4%*!U9uhiGF$y zU1|||u%U8k+roKEF)A_%DDw#N9F;EBfA3UvKfqv2tl(c(eduFN6@REEi(X|iB~m5^ zM#1l&{8;ZBLHSH^s_oaB_9=Snt8LO)$TEcV=z2}qhi@oWRnzYd`SZ@|ffgx}u^d93m_7b~f>pq*v;B)%x9f%4tj;N*PR^;RGA26p zL2T`yH$%-58@xMgchN%*w+?H@l4ccEQ(6~=G6kxF*70Pg2MaHevft&|3b|&D$g092 zpeli|x?>Fz8x^DV?&lw54QD-k$n#`2W|1M4Tw=_Fd-&z*T65-CO`PqmfV8@!e`m8w zL_2Xr@xPm6EsEYo#Hb;aa<6koe<x>}ZK6r)4TqQplwbiSRY`V)~ z9do2b-DpkJTQ8L;zk{`{V)+}bUn;<3E2&#qzW>2}ryCl;`CtLg{DMu(W1t!H6;z)f>LD(aV6klbG;89A|a;T5nR}t(wvf!{@Q+R{@ z%$~rPn`y(dr+Se}E!Bx8=f^w~TuqzP>`+r*t|`StwMPcjiH&%%@?12N6B~w^t~X#@ zt-x_d*75+^&x;1&Jr6f`2ijxsacFAUZ_4r*RM?vw*kr`+c_}Mo%NMKHnW1#;{iXU4 z;~rPepx%q^Rd9gP0vGvb-~D^Pqeh3Zpu>*2F94}#YwK0t?U}L1(mPKu$bU$4D1xHchf!lt=>4WwkMnv}q_`uT2KIPQraB z(e~u>YtsH-9%S?&|6x6SxiyKrk`OlN>8kkZFOtK55p$yuW;$h;ial%7V7`H?32oJ? zns>K*F5SL4 zfB61D7(#<^_xPH!gy+w75xxf44b3Tx=emG4*IPcw`Kw&BfaaVoaFuL8c zXM*ZEmmZ0Io?5n&xt{(Bf_TmaGJi~&XcDrr$WR@pgDBON|5LsJ91a%x-!fO2@JXpf+|hD{ z-rYO-wdX+3#!hcdK`AOpGA7Ra_>$ep8{s*9mTo7%5Iv`Dgd% zn|nWvS)ZEnB;Wt7oT*41z5jcokygq08@QiZLJx#*>$Hr^JiU6L?ckStS}SDsk6tCO z4_@GTVv%Wgt?A|^-X9in3hn@eOL-$K6;Luc`0@zP_fvim&jrpdLth;Yyuam!H(cn^ zy3T87c4Epxqk_~)=a<7j7e%2zljg3Uv|kOskDAZAvS-**o}7C0K3W##IZmR?4sm4k zuGAB(?$@*3y_+s`z2;ELCN8VdH4+mu`_NFT!i;-1o0Q@=T_wf(JY8@i*j`Ok)^d(q z{2+;hNRlo>?qhev_RdhR(5StdzkdeQ4GW?v?Zu<||LC1To_-~9?e?(OIj^(-4 zFNQ2S0#9jJpJcG_isw?c5&sL|GV|-xWt#vFmv#b|Pwkjz>tnDcKf;R`RnrL&Ur47qx;mJjYbi;}K80%UaW!ZE zdPi&w$xU6Wqa{{r7X3Ihy0GQ^$lAwZ{o$Z>2f>OhPCO#5NT2Q?r8N1)eu&X+-1)Yl z)tQi@{$Ms;b2jq#h_X&ob-c6({-T}>3qMi^_GSBwT|HY88miKco>`3g>rI;GB!_xblM9>ZLg5GDB$ zEc(9L9mFok?|US*mn2iNE%pOXkV|Q=0^k!Q(9I&m;gIhggI7yC9njO&QU@y$Ja-x$ zxqIhL2&C|n9sN=WvZV->L=5VYmne$-u*%%XH|I@hoBhU2eFV7gs%q})rG7-1V#R<= zG0hZ1Sgv5Q=72W^Y^d=d+2VmG*EID`hcwMJACPpVZAS%_cHMOP3YO#k{~YBmP)egj<#?>%KX6|@7l^1+jW;F^WW68 zTP9(cg)?7Ur*2n1{@C6UE{tJOUFv^n8_r|4YkaUpI5p^`R?E7X*IYxrngR>Q{Z$qo zmsBhFv3;*=m(Q~7rK!plL_S|+J-p}XiF@h7dwkgXuZCJaXOWzvE;Q&otefys9QXUB zB2W6U6@w~%OsmCNx7MmvZrcE4g~$o``C^%Bt4EZC(y0$X7`4C zr69;<93qw+L8GHb`P7O+BCfdN*n3VCyn7zy`m&_{6Y>CFn96Lh1obw|LP=R!=kiBF zzOR_$yW#I@7Wcz(zlawzE#90==57>Ez4RLSGKl23;{^K{a&c19_jX>|#nkf{L#`&~ zMSa*io_M-R3v#|Hs-(N(X>T^-t1n`lDRyI0>r99bT+E}^HGEd-`=Du{Cm9^?C{VBt z-XP2o0YYi2;9mEInm0Fb6)%%dFSj_qPD=T(WGY(k)ANUti7{SOEk+dtqEfZYleS*# zQZKYGzUKItuk7@-Q8;>9r85#GXif==SV2b!MV!;+n$ovhSJ@ifi}#7&T&>=cFFsf` zm}7J(+;;z|CdklR)w)MJ5xzHPdCXN-`f?|JFNgRTYtqqXBaV@E#q?-MKA;#XP2&P8 z7-oM9W;ai4vhB#1>UM;0kP+edb56$*F#$e|O|#bLBkUx#M-jrut(%8dQs_(2As(mI zyfZs069XX$w>nT74gR)*Hr6h_#r1ZwGq)xx)y4;xwX!GPTq zK{?d7ZVrw1|4{YsL*pnK)((L$L-wbTb_;>Wxo>6P{P{;7rHa;;;GJj-;+E0Ri z3wgASl#G#f6&36(J+~KX_pp?UoU)91<6^5ojE8c~n07}%WqPweV> zYb=f(cG}S(u8jKVc+ZwRP8LWBTAxxcn$jJ9+nj7Lr)&BOQkR#PtE2y77Yfk5#$#o% zJ8#G10@Hntbpl%{oUg**-&>KB33g0EX znPN|ivCtdh>Lx=VL$du`9Xb>Wq^rO&g_MCf8CBQ2LO}5}~LudB+i7c@OPv zu(Wtca9f3=^^Owqft#JMza|TNd!zT;P_CTun~Be_9uk=!RsCkU?bZTDBU76I9>@PA zH-k4&T3DdNKkyqct8_nwkFHmdoM7M5%#L#e<)DX1Bf>490g}k$c?5y5`=Xdd$ zS?mKJV|PkceuRqjFdKm*xgo&DARP7sQ2K`oK606*9KKWgpR7A@fU}CJ`+!~pKfA8N zn*r|NtZU3%xc{*8;M1OwxCS09He_@vAqI9pir-?U}CL% zM*?}(Ij~2l@jcvhyhK_qrC0dWWFe_{@>)c&PQ^FipKBmKoV2(VIP)&)!JGNn{t^im zx%Uz87EQXmzs!>dQ)jx#F<8mfyNy3OdfWtQ}zAf+eEwYWf;{vy`8ed+I6uUHvvQ<~MOG2+B3hA7QlXJmN%h&p#r&3LkD- z$jb9AGrl=jad+jalSm3J9)H)pLcHTe?TUgDAD^T7SB&{__1Oy^Z`>vERo1O09U^=B ztN~wPiOoN`kci;m;!moqSs=*u#^wi2O4 z-F;~K@I+0loe=T5H8u^OIOZ371Cq6>W_<->sySZ&jyA&aW$~9vw=OQyzrVtTIvEo2 zLZ<=*v~{v&^R-*7j(rmfG_|U<40M5r^1Z2@CXni7wrYmdHy>RpC!#@?>T1~pd)ah- zk3`1idb&1ipg-O!ffgMkE)?gm@pk3tD2!wP@k!5aqy)bq>Fyz~%;scZIt0G>Vh!J8s!-i0oDir1t{Mo^7?^0-8c-`vCDy3I##0z719 z80p_uKT^IyS|5+wGUk0*M$XLWr|kvTFTZhak8d2Ft=Gw{-*kUa=1X>cFJ`?IOcS}x zKs{G*JwF^qgkaz?YXUEsycihL;Dw>>5>Z&o%tnWlvHUIjv>4kv=PZ7+lwavwM`!_@;yPlU8l~|VEq*(S95haN6b{Rw^Z#ydh#~D$|xlMVwOn|?* z7tVk%=&dI#q&SCzW-V;eZP=%5rKYv- z3{u-7xum>8(3SWXqG|77J%m~#6YOj^_fo8I#U%eL9{^KS4a!GWbU^df-wozEAtn_Q zXBMh(@BwdryRsGi42@R^*E2`EB1p+i!NSoc7u&=4RdMgEahHpJ^N|EzcX~I0%*5~v z4J(-7?Z8UQKFuWt0=cby?n>UK`?)SNt4`$f+bKT0Z1$Fq^&*wqdeu|fog|Ur06~rk zr^4;syt_V1nHm%XFq&*@VEGzej0%U&^D`=x*Z8g?_lP>vklEN$TO*SHqQc$_q6RMC zVs%&N{hBJNOKe@4VE)NwUhw;i_z}(s(yL|;Yx@n zEx~1n8QKB#7EB5iDAWB=J%OlC?(S`cpL{)ksH^$p)y-JEn{}ubQ_Do8Ry`G!wRo`M zJJ^WaJENBRzsfddFx$T!m5*c!b9 zyd6VLkP%6YVnKY%A2;V-twfCBOOp*tSKaFvJmNQFW| zCyT>5f=f=Q_oZEXd${g9IXS~uGTW`tIsC)1R%feoSc|Te)n!f>ho&#~2Eou`V%Ski z1%h?W1&6M*(}pOBG?j`UdILCJ>b0aZj1Sz4F=YJ%d<*_(9_T9duIKK7yxgKspYroD zTO^Q^DRd3T^=aAiMPSMtb6KY)(gf<-{N;Il1A~<>g}y*UUb$VJ)u^o3uEkASj~A+S zC$TJE+LI(1n=yq>8#A4r;xoaH^T22TR1<45D0uMFw`+??&obJNKXNLhGA}6^2QS7wJqMbDH?r|ePZ+zTS$_?beD4Xj{yXWM?_uka3I3pSj#{h9l z9IAi%_&Bku-e^vKua&jutiUY~v#`Ak7$>Uw)hLWkM$2Hk{P#DdbB%e`Dwu zP0ilme|qzBeaop0I!~*^{dbwA`rW{ z&B0ge%4jUWG|keiVYSkCk8p(>)vA7*_^BK=FtAv{panCktS}R26+e$RPW6X!Y_7j$ zIs47>#B-Jx2W5D(Os>V^zZNvDTb%G=$oRxRJaFM*H+i{2qxfhV4I1{HB1l~m)Oo4d z`BE#Z%+5LCl6}&qwq=dYg6FU})#?2(M*wova`Yhf;)9*eDPj9DQew<$zIeT*s+Sf!GQA=Fx_@={Uc0 zVcSw_D|6ku=%uo#U>%qT%LqIx#x~9BK z;7K`x+8IK+E;-NQu*5kQ$9|dhZP8gDYJ%^})pc{3TgWnFs>f70?&RoGXz#cR1LzK! zP6%cn8{ol!6@}?6SgIr8ZRRVuBhKm2_W}J0)Tyg})gapuYynI>t-}s{IkVA7!C-mAvH2is8McUnBr=nihI`WeaflYf7YNZiFl3z(4 zsc;Oux;Ajd5ZYbR;D7b?)%lR5?A^c5hIjUZRH6F#@amYw4R%4%lOkPB;Nj%sbKK2xxJ|zUC;4|y zd6@kQU2s(bGr(vQOWh^t5{7|Y%{qiu4$?bl`()fd5Deg}0e6uU51I82N#`ZL!RJ_2 z0>%pz^nC)lRboU=&n>|p+~VHHw|a=}M!MDVq#Rm7> zDpS?|FC!JGQn|DKwRztX&0KwbDy|A8@R}NUt=+}9shp(M*+9>@8IRO5BvlJfW!-*kLq;-v@g3*C(`0oKz7 zhz=y?8&~ zrh8w#S*m81uREApuU7XN1ukil#y&{skFYhLs35QO*Xrg@E$nC=k=9)aNPe@N^J^u2 zXJgEe0g6!c*{kj_1h}WCnW18#Dc4Ekh?G13i!MOrS z$w0NXatuhuz}5N_*p?T816Vh16NIF5p2#|u;NlWdhSA*CXo|ijx`YeLQReRT8Oh-K zOHb=cgke?f7m{77*+0=N6YZ~+T+|$^x6z>YRV~zsOa{LJ*vgp$xopDfn*~s@fK|?D zQ15??W_x>kLWjQM0E9jO#MjI=wrAy^Ko}f&IAGI$q`^LzX!?u_79Ev1ijhWBRmT5# zymp_+T+XpftnWED-&~Ef6aN~Ai1!)ZxYG1nX=EAv+I7X%!=Wo%NW6Hq;&Fdvn_QM1 zEB9(tJj_(nNkguKyDa4w;aFYp@?rp@XV>6;sxesWX9QgZ23YJ69g@>ySF*;|;29)s zUqqLPxAR|3im-th2-7pqhnPpgb(y6c-7<>hT5Zd;GSu0WO-v z7p-$86ZdO-B;90uTeZm_O{zbx7nCpfU4=*=MS)neb|qw(WH4M>WdUC1vw#yF>#aOz zEr_D90>JX>wn^Oy#2KwDb^bzviY zv2l=@gsHAB2$_W&K!y`xs9@bJWDSbx7~h!DXU>GD-~3Y)gxGXw@bToc{zf|oq+yHI zsEoinBQ)~|Wk1fi3yM-7(UUx0IN=tSN2It8Ci*lwHM}CFWr5RZiZwmdEm9tG+&cpKt4$ zVBA^N>^YVk@a#Rjf#XSa(-^h}^OF~|2s*$N?ORF+$8{0I*kdLN!#Z3~3qGB0ieDDp z%Z~n$gu%dnr6D#+@vc=vw=%V!8P{LDqxYfl==|6#;$5UBwxLhGUO|%iwf#ZK>M$CF-_(=WqJcuQ5l>tygY$=B|L4h!MWC5i7{fMSM72q9n6 zj^h1%HQq!B=HrrY#YyZrtXBlwsdn}^G@Rx&I{oMcJkR)UaTzgP)b5bo!6+?>jqi#{ zGdHZDO7_~%g)Afw0 zNvm^vVzG%hVn2xAgtk6ih(=sYm)2fL&M^Iw-KBe=&8hZ*pCNR@lHN{^f%Yk6#z9m>r`KwfAQP^FHXm`*i7JuG~3__8Ho60)6vKKj{IY% zJ?WxTf>okwqzCuK_Xa$X{y%~zG%FuU8BK+tfN5=e<@_R2G^nY-|IhJCY1jsQWt@br z&nu6mVXz90?-u1I1jNklDwPGM8$;_!AI3|Y&{)m^N6u-y^X4E1qH5g8slo%rQP1Zm zJ#hRS^zb}QEa`d5a+~Hab>ECS5|O`6>3d-QjZGL#&EoZZ+pn*SFZUi+_%RBRsnz%08eUHDvEZErOKaZo+K z;j~}%cg9b6hN#2`+G&@%GbpF7akF7st#yd9oIksuG5HyPtYNPoE{c4sY5BT!BtuRs0`glfOj&$f;YpAPv|V+bU_3@cvbN|>B#ta z`5R(>xIBUH^`hrqT2QX75N>OwC-_nUY2~|9Ur}@vyGX5^wy@L=ed6YKnOD!%tqA!1 z>p9nC3-8=MM;7!iZwN5xRP8SMWEAuh6F!4(=Z#()IO=VX>d>6hQVI{qMp9~<|0=X` z$$VjN8>d_P8~$?cNn<*W0M4?8 z@q>d;M}vV5rKTczvB}69Q^Ikzb{~dTgcgtOY_< zJ9wx2v1+r!+X51V60ntjlmRjoz+Sbq+yoH!AfUgPqB4-_#T1N!Sqg}0Usbo;2e{MK z9H?D(v@{VzUJ_T|pOrwFQIwX+fCg=ha(fap`-_`!^>tL{D*(iS(B&;Gj9voPJaCFd z!N{~=ikCo8!O6{Ec9lz*;^M5d`-rVvAXEe+g6wHkf7Fi+8X(>|=+xmZ$ts6pp4@P91BC_j#$~)FZ2`bmrH@jMdco?u3|RQLRRVdcMkZA&ItLMz*WtX{YzK&nfa%K)&jg;K(-Vf7JUaBk~cM zP?A~r1t;t#*NAxs+rWd)a{QgTVni$D!o+>=&6^mKPDxB=sis5yZWZZ+Ul!ymCI^Bf zmQR4L4$Y=N?^0J-RFskJ4gS(Ne<3HcT<>tIys@Uzl%mj%cee9sT>8jyurj(wgsV_cmZXxK5f!?21}6@&L=tKXU+t7gqx#Mq~ocS)pp;VJ=~ z3Y!JI!wiAw7waVCDfF1}5mt%Z*E$;#LUpD_{?}z2NYP&WONz!T#F612 zgB1vJp7gBTD!GId5LBPC_e!_hWXxnrQ$^yc7^yh++eQZ*DlQ%Jx2~R8S!B(q<+3MM z=dMQKyky!vE63a*77uMo+FC?;1RoxnhpZgFXBY2rZ*9hJ%Qqu^P3fCX!Gfxtp2f0@p7$@I;**i@fA5%GNX}NEph5o5sdX~4zf2=x7by;jUs8qYt@eIaK zgBUY|w!KVxT75FJm!cSlqNqF=nB8U18m>rGPh62aiaoNZG9T{)d>t7j#`*Li*=tEf zkP+LFYjIbW-a)5QGV^*;fMNtx6l$mk6*=!LwlWhFL4F%E=oUn`J&AN|5KiBi+UL4p zBQPTGeXBZew+k0zn#7Ag6@00R1;+k*^Idmkv*BzMMO+KJ{T1;4m;t3WdoX@6jr4$1 zpLwHi0?LcByH32@GgjGrotKxF8QB7?f&UZz!c?_`em5ZXy=#4VPFny#-XJFebaz%9 zkHj>^0lGH@&_)EK=j_M@W&d!n%`Ea7=m_Z!hOhS|T{rp-lg%EQkb*!Q-wpDXn zzD@O6df?7IYTZ`H80NixO)U8%Ja#$8XHsy=xfZtA_1rk~rsj+JV3WEl@7kentCKa` z${l{s|IibqJ`;N0(B)con(&QW3LldQkpuHJH|YAgE$>3>(=*PrwV*y0%s1}5hMrh_ z#yQ?Ex+G7+$1NYXpkO2QT=W9eQo)^PLsC{4-h8y6O{@?Nk#%?!pvCdf<%+1tIQb zh@`As;}FmLh%Sen`O#MBc1ZF4Iv==9zCm63r3s*z6zbW|9!uzt2uogVgS^K()=Iuo zc~BC<@R^~e{z53wvJfE4xOkh2pv@bHFm(^iXYcy?^fNm;?t2>u6-=eHHx;Fw}yM zo0<1^jSflxHMnq?AzF7w`7iY?`G|+9fT=0jZD#!touqq^>&Uc}--#zq|BtUX4TQS= z-~MfpkalD(qD4aXy^YFNX;IcJA;vb@&DgF|VJ1t~u@q8@vF`?n$u?ulVC;jzU}7*B z%YDxGcmMzQ_j>ZXp7f-vu4~5UbH2~xeH^bt;xJ=YYHcY z8Ri#HZTr)fr)rSMHG4*prGbXg0qOQPv^7dQLxcK$j?ipjl96T;fXBNNfAx!keE@I@|*ub#VViYTjf{X+UOM zvBZCWcYvN?IxiUwmE9yZnEm+jJ7X%U?^U~K;LK-= zt-w~=CfCCxN2FAU0No8aahYgCwWfpdpR@w{-$|G1FPA260Rp?Wwsw674@V6Zs5W2` z{y)J|1Dopl`hq_%*9-SgxNc@*W|KAEcTHbuF<2A06s8|tz7&yQ(R5pc+g>HP2Y!8CHkQpV zjB+YENxn7oWviH<@;lJj)pYjuu+u75Om)fbrMkZx;#Nb6vD$vFzx-)v!d3M|B68}8 zkL@@;^>xYoeueTZc{*(rO>G&GZhK23JxigThJ7*8R9zo&uHCggLg3=K+K1TwBtKll z8XFz!);uoXTe!AnMON5=$>mAuI$9f6Os*sC4-lbl3plTTeD(Fpu;`$+F9 zpRH;#B$)baori4`xX*D}Ph3h5N~&TmaVeuggsQPeZ3i@WZ1)R4EVIG>_+tmDC#6P^ z*IvmU$(wo|cH!GZ`g>{F7dZqp-DxAu;ilratnbsua*vhyIcVNLlypy#17c?Mt&}o% zGS~XB=70SF5#q{*sV7&|_31y}pGJ!W+pB9POi!Qu)MxTAoBFM&3vML^?dc6RFYJ$G zJtEgyY#O0iFun^9VUs2Kj9>a3?<7DqBi=7ghIe^6^UEPDPAx`ywU(6b&2w=}eR$uN zQR=8)tr}ykp5D4pEy!!ju(iPHwv866o`eq(ejC*C>u}fw_y)0`VCe1+L+?tk;VGbD zn3Ss80gu!ZwV%?E(TDt)>J49(0A6X09nxCOpukP|fq zW4f3hcj0N`SJ(HF9qkZ)Ysnp(NRYOPp5I~0vR?v=zeXcNE zNTR&?azdBalC%zyL5N%0_(SycWRO0Y+MM?M1OrZGvkgAmsT!$*lZ%=4#Qdfw+zGB} zbArDW9w7WWo#9(Y%<*V)qFyD$!g73A%wUzKr6xv>b;Byo2lxiRv{+V%TPnSRDSmD5 z-DLz9X^w;CatS(j1pjUfwHTg0m_x4nxHIhQBJ7OO=SKvNxsaEjJDatnLy!VwZh3dL zat0$CvQkI8H8qsE6d{7ux{q-uLmyEI3(J?*n`sp=vR#MsugZ1Y=2*Wy_`oy%6709n z*o=`^&*Y4{`>lR?gAh-@(dI|%!OU|VPL1T$2+T-;_Db6SBi?$u_#;WNFkp1v-%#Dc zFR^?{ev}MOZt3&c2?4l7zqm9) zVHwZfa_p*G4gaJ_I{pXtl{nUQuC|NL>=hdw{R3Qqy8yU{<@&4dN^{ViJ<~O+xI_i> z)&I~PJ~55tVk0?t=%UVmidwsc2cIYQ^SSC#qmGM&YWsJ*3)*vo)TIdW!F=hjYAcD`iZLv$ncb~#5*RsI8g&AUi`bu%QM8fWzLuDH z?ktwX_i}QNh5im6NEo-67CzbCXFjcP5@#;>N*EVbC*3F=RXXj*vFVcW^zU;oJn4a$ zPU7}jUBDP^N|`h71C}H348L3R&j%MdWwzGkGJsTMIDvdP?dO$LR|YE{T(a7fm7&j9 zBdtq=3)Rx!<2V%aeir+gE%>?|-ng>ibNF^@@W8EK4|z>Pm4{D--EVvIENKJAeyCT= z{H@4IpP?()LJ`LkzGLsSxB|Z7g{8|UJHDHUZ%_CK=X&*i4^a6lRX!PVs)_Htb2YuH zET}^z?EH2}2^7(Mz0%P>UxU+eg z1`{w0gO6&3%9PIkQ$47ut>L65_sn-^ag$o-rn};flC+8kdVg3&i@K+uSwzTjL6xwl z^@p9iO{it{qwc1@cFSJe50+g|cN@W(X9Bq015)z%%$r$Q?I&k(_kV9zW`%3obFk%Wx|bNzuD(`)Gj)kkXfJ)|u^l(#m{#^ft)dB1 z#&wM0G@?3}s-B!BUU;P{aeEB))q|`6VDJHcCgHdH*zauEBMc>Mspm5t4EO4FN_c|~ zTWSi+PAlkZT0DWVtI|jMwqL`BR38MdDQ8@QCP2lYXo3@m5)qBMaoqVkamYlLI7!N6~7XI#KIv#&NTEmf1mDNd(RyEPNYKLJcXQwYtKu7R>cB zG^~A4#?Y4-Uet!hXU3E|T3f_0m8tRXXwTynO}8$zJRusjKkZU&>MrBKMQwCO26cM8 zPoM4y?Vc8&P1>awuch6 z&vc0{kTXLHnJu7srkN&UbLs@-u1ZVM{bh=45P=L{wYqzo_B*04ZninK#gmB|RKcH- z4w~-w;3CRt37u+JGV}ANFwYwf?IY*C4*zZ6 zD(y}>bYHGr+UfytkrS8rID7#Eg0#12_3FWyx~3o_^eydVj5<+PJK+eC^4WoT9l&ZH!Rj943^JKt^=?Q z0e?`3*3YDrf=PD1;XVz8=evJjIdcwDLc^NRwnlHbp6>; z0z=b2gLL~DQBCGv1L8^a4Y$mJr;?%Bta6E_A$~tV8{m#Jyzek}I$meKIwf+s&t6Js zZRETmZd^kml)!JSk+`+*ygX80!&pHP`I-LOx{mdTYsCo$w4_FCg;z&}7A>PWRE^BN z5C^vn4Wi+#KGx%u4i-ALZpmYEL`db~Qq(^aN6QJ+QxX)|oX6d-@Gd*me5CxpKIBQfo7!B<+6EjGCE?FK<%r_l0~7N-K0ic`su}%7v$kZ|u=yT$Muie# zi&+$X+u5Gt85?p@|JG}N3I8-mFeH-#Z=+8xFS|1$b$31i-{gwHUVa~2Qk2{y>NS*= zyi!)jfhrySqT3gx@;*QObKzbx#7bm!xqUH;bTqFlwFPAd&efiYd(Ngh{K(1 z<d+1?P{2|67bX1yW9O^0qs5uOKW{yc<9Wqt zS}dV{@kQ-hm+HT#5sq8PMzh4UC@)C->^H1&miutg)+fH2dn5M6U(@tFFmG1rmX^G^ zoo=PFM|^85K1vy^-eOFzj}*KswteVaspG6!77$*kt}oz~CLW=@M2oJk5IDBpLxXBb z07pCbh@F-6RPyvkdm+>xavY@6T3d$)lMqk>s+}-@YMkvBPoFI1n~>;{K3GSgMmA4w zZm`=Vu^h`bSJa?ZxeirE*BP#Wo=1e{K~JCYyXI_dn^r z*eD+K2`-KVPJf?f3^T)F7z`ZC06ui)iW^MgZNWr2VcBuprT-XT|7?_llLKULtx(Sq zf=dfV`?)Zw(DQyD9kgB@)=6p>!PcMpRIo0B8#=-G3>((ZSA08E_g4cQ6sMcFVSOpq z6f1`gx{Tj5xo6w)hBA57Bf;!h#L*lF@6Kg~00d2@ZOFpT&1=dn5a{uBZOhVZrv zk!t-p+sx1V_nL7>DJ*?=rGW1;`|?XyhHvzumV@RTzK(vEZi;EhLP3(|3wR_OD0pkr zUM{|ThkdbznU8KG8@J$Eg-h}UVRMoFwKS3SDSR7FmJqw>%s<^i^FI7Vc2t+4sE!VV ze4L$BeoE`E#!`6D*lK-`AnIVhdL1&wpw)_4MkNnNR<+t%PWa(^0$NvUJ-L>-yNe&A&DVIBsJ>j>NvJ&cHqbY*XIoQ`oVu~Y75pCv5i2CGfQmihe zgYwbA6w&m^hLDyCR${=K1e89RB`uFJI_!#05Ts3+cgD_2<4KI2)$pfb#i`UNtbtDI zVk_ZGGJqzgB{6#~$p72)eMN}dWuln1dj46&J7aDK$dT29AOB?8R2nyusA0&yy6wSh zncp#CF{3K1IRca0O1kuvP1*AGol%3#t7x#G4XS)ra2QB?O>B}p<}&P`iyFmuYu}Ee z-%{3fvdM>{z76Vo>WNEAgag3B{ijA=u?e=Ut4Vq} zR=>SjV`$EMHPq$t2{(Z{7;fS~gvd~aV)2eYLc`T!u0n^*COtz9zgNN@G5>@7aN4f; zkAya*bEotk&P%-kdO)rnt7p?8Tfe8m`aTs|;e&*lJV~f@Y_6`JYnz(*jjKUtM6x=` z3L^DXD?;$9Lz0lHYh0I`mysnib?0^2ECX?)6=A%=$q~M@pR36)EgUCRmqIfRE%f`9 zsNx_F@q4%xINpmWNR&C^_Wo8v5StbhHBI`KH41xnxDD?jDdwk?LHj4ntJ7t+hovKd z-3<5YXr}jFuabE%c2*H5|L-LWEW((pEHnY=)J$lWf$bW&dlx+Z?iXr~1V%!?rgD#? zCsJm6R3-#XgynxHu9hQqLV21r2U2MNG(`ab#0ZYS+3E#nRv7`HI?HtP*T=@tDpw?g&fd3d|$V9dZ^O@oe2zYatR00poBVddWAp!^^6WIVBai%vF z{IiJF46NiWkYxK@hsYY^%P1SK9KGj(iuYOc;bhFY`qhrEe8K=^cl_FV1%#nupV5Tj zcDR92e_V2Pm>;T#{oEsL9(P3vxh9OS+^;JAHq#F04y+viP-k)mZFy;kycjQ;?k5hn zct?mCI8JVf{3xhd6(PHuu1fi6la(1YcCT~xxu3IwK7wfBMKzsgvz z>Bd|S&`_b(aL5`f^pYW^-_Qsj%$4cpf6^lu+c@m*IDy8hL`3}*|M>rui#+7Vv? z+bRg#WxD5Vz8DD!BuCxR(Ovzs7IdtQl6N1Gw|_1J5`Q^<<0G?=)MpF4)0v4507Zp? zmo6$=ArPn$zjiDN%LLGs+hGmN;Y++C2LVG86T~Ezw&G03vFiI44P-H2@s^DotV2kh zxJRuM?@FNDOx1EE3EK6>7f%&L{mVA~`d@1>RUwv6lKWM*+sN&;eW-o^#OY&xb|&`4 z;+f*CNrqVN8Wpf7>k66ICHjtY+)5Ki;O`oXtDYY&`UtnO>G zIMB&fUo4#`QI^r`%dWCVa<5y`maJB9bC#N$%IU`(nq+cWVy0VeDRdwXJdCj4t!^N` z;A8PT+SP)6SSHA86Fp*ij~TZWs? z(<-Ohhm9{nv~-5+{WuPJE|%=)_}d99s+*h(sQ97z=Gj2Dj;yADhw*?7TmHGsA~(@X zn;|(K;k>wcgjeBix{7V6$kMQ8%DJbW@U?7*NF9A0Gu}CcYP0&8MYiCQ3zQx$DVV1< z;@kxl)ffj-9mtCyYHz6OGOfa3eFg4;%px$b<^-s_drTV(SYd&@2)KuvE=HA{x!1fR zIm6lU+Z*C->B9@25u^j9!jO19KJ4vm?N;ex^=y$Fd}jp<-Ve;uP^PyO%QA0Bi7U$1G^U(a7Q`uP-Cw5Y%l(Dz>r+!r%lYyM&@Hj3gG3pzaeIxWrt zwVk)5j@=Lmf_0Vu1JxaW|1-!3UyP+`pU3yeT_!9ew;dTh8WAwB!x)vBH)}!BR8zA; z6P>u=ZYUM-Q%!3US1Yx&3P~_Bi8*b9N0_OY{RhGDAJa-+HmIcp%Z%}lfwI)MDDS|I z50qhGd=Mcd!_(qJ*w2<5ZyKM#@vo7~++BxI#L!Ued2xIx)+r5$!e^fp-bm-tr^_R{ z<|`u_HbOQ5tSir1>0btxf72MqUygoNWliTFS65}bod-9whzQ&dYP}t5E2hcYx}nUK zZn%@P#~5~ev?Px!#Dpaq*sG}3`uT~qOb68N_{OQ z!2h&pMXpQsRI!J3{Gqy0U98FLUq@|!mb}>4a;h%Q0>zuYtM45UH`Kpe_hnNq$=u5r z7Al*g%5~ls=RRVP1}KRWKAMQ8si*W?p@$(o8}nx~qCz2lBTq*Hzio4FUv&UTzD186;Ut9cO?YABg6TgqW7ptnlU<)P zwe?$o_oiyq&nyO&y!!*4F*6Sc*rxcgktD~_lhTP8AVS+^ya5Y5OHV(~p3dI6-7O?J%9=O@25+5=G zM0n6L3bZ6YTb2L8NE;L;15 zd3?G+a#~%*lBiiw!5_kg54`r;=``2!SY7Yk>$Owcqg!%eaaE6{)%PByhgTE*PVcyB zZ%yh}Olov0?vHJUvRtAJ6rXM3Zf~j)EBJ$IUP8Yk$0BPzD6i{~17f&OgOe6fdnnACSz+ipL$o$fxt@er4!U1&59zcxb?ZQe|FTI{N2mGEAdwd z7Z{6ZK9IeW)t=uMS@ku9d=txq`_?oITnui{Or;y3Bjvh`?b*I+r8fHnj}${Qqsr(& zqv3Rde3|I*Eo9SpXD{rSPcob|F;Z8nj{PDkj|7XynuZ2uFmIb#8VFwMKw3j=eSiXwX2uP2fsn?lJQ7nFwR6o!MZs#WJH_Z6hS4)@!v>C63i!)m7 zjUFbG^b>@wT9bCN2wnx4kT)Lu>*u_%y zYhI{DVx(i*>^n5lHJiG5tn7{fbc<^Iw*^ToLY>ACeG z-=i`1eh-FNwTWXBi*g#p;DrD`K|ShJcDVk<_o6a|KYeJK?=OA37uWg{!*_75nij%l zC0M4XUX|5m7aNtteZK8yOcQ?0OYUUG(36Wdk6XUDt5uAASS51>ZYAf~$Y#za|6yDX zb1pQO$9JIK(OFdZ7uN3S@F$hFj}AffOKIxJ=_pw6!+zry?^A(RYq`;FhHSFtzH$Rc z)n@JTA>rPBO@l0Kr%r7(Kt^5%wU2D1yr;WiDFM;19}`oeY7sFN>_oMwT+S2G(|Q)3 z&j(lD*EsKOre{K2%epx38HeV~o||DYV{=z~ytbamGjpeUwaVUG zN6hCr{z+utKqV0Z7H>=nBKII@g%V%yt@A{!IO~;e$4DflqJxA>hwr2!3(Z;ZU=hlSJqM~jw%u4H2*i3@UxVur(?kwp^Wu$~GEaz{uv*5N zB?A*zo0D1Ux(VSUMa9I;g@(+ITMPLv7>^c z71$S(9%Zy=Hm;sWqOQIZ5a2xi_sU7Qn*pdua>zr^cyAR7EZw+C8`xZuP{3X3+LZa$z#{0F9b@}O1DGF8$ub<2yjSEA`52e~{k zmuG%{jnPg3AZk(D z1IxbfM!b9zH*&@?paehdY79JB{v$d+DI;7+NuVIQtwsaL|78`YXleyIxnPW>ZhIkyAOENfJ`e+*hAHlone76 zs`)ZyGsqYXGtl|DmFt5cgzjDb9cZLr`^xmr=S5LKKwi#-e$B6DU;D4BpnZu{mjCBY z*;k*>+UNe2rq?1lQOdCXXM-(sDP~ z%y6w+kO_y5xZ~R2zkkcD(foXB^Wqy%@2RS_v0Oa03A|$~%FEbyeD85PVVUHEiObh- z3Y^k!JPP;Al(RiLsC7|rV-OI?5qsk;$1v|}7s}4Zy?-hBft|6Acqn)1Xu=A}|9Ig2RbTkK`^^AL;xY=Q9{w)NPoO8!psTTJ~i4 zHtnUJkvN?`+cxp${{5ugBBT^j=LL)|$kA1GFzFCg&bjso%HME;g_2Hw>gv~m>GzHI zm9Ut7GtO_$cv52VwZMdT*TfMP1M%K3&j^VT0Skg{}bQ(@wX}P_9gf)0H(*8-W z&uPt*d-3%fKG}k%wJ;z{f#XBrMXxaN}SQ%|W=igxEWkYa+LBu__Kqas! zdTE_&hM9OcEPFjgjr>eS)Pwh4Y4DE3Ti743ceaEv;~{?Bx)ZTs>6fh>1;4a4%id~+ zU0MtHWhM@_VAHE#HiX4jA?Cc2uUz&BZ$jZ86iWVm?|OiesZM;%`N|e z-PnEyEf*ieetoh)w11ecvw2y_nF%Ijom7K#1f-*x><{?gG!PWN8ZAS zS`6li>&*t&sYq4z!f1i*y6YdOjxwfTFM)@r5mZ&d<9KWLHzGOj)Y_0Qg{!1m`#Ni*tf6`_7IA zgqJLA?u3^k#PT=U`I^@{44K{2v9=*OYj1%o*_q!S^n#p&Zo23 z0bhf}5Wzobs$ZO8JTZThXV+tOAcMQi4I}I@LQZv}J04NJ*2O*P>2B2bfUI=|aSLv` z-O$i54h*6&fh}$myUEWDGDr0OFs?uP<8riD0u}%6>!9fb&$T1d9vq=|UQMs@vq<#P zi{iO-oX+q3K`sW$DQua5~lH;et!P`a7?`}Mt3kOy9wucwYn9z2loFh{}vXN!pd zwl{#?F!jko>+4k|ct^_wm%#aNniUF}Bjq2^veIbnftTeP;dnQXy4IcI54SY|0YWKG z@1We_yeZ{fe4yybi7r)g^I18FTG-163aTrnqk_B%vkBAJM(?$XW`8w9QhvI#4X7L(2v!c1n_}b&35?`?@*Q~eAk$)zh6T=_`6|MJ^2|^@SQ2z6(p`g)q zBBA+#k^SLGjV9lln0j|xan5daU7=tD3kpSDfM&wD+WkRs6krtTXEvUruk-~oG?srF z3Tf_X>~9yGokr&)d~ZI@F?VkiT{nRJ)nF4Rw*DTU8*?Z-HL1SZT2XN{11h$wZLe`E z$JHSC^x&-3K;L==_C#hKr}zpSfrruz6%~f|M2{P|imZ0-V~_>;q~^v>&CxGdcL_T) z2D}5YM_AHu&lR*-=Zo$t52Zz{_b5(8j0gX%3CMOca4o73Mce2HLS^$rw8Zvh(w53O z#HA+d0<>7|)H$2--TSD3fp2RgBwxa$WKsVr$Nedsf*K zC&4uvzKrLWkdjCG5O(5ZI*2WS_=rG5d+7-TKHiBsI6DF%(stBv=f@aYTXxY4coYH9 zzVVs5%wNC;k|}8i1O#yWUmLj3xkNH*IfyNj!=o;I(VyKQO!7aWA{uu{XZ83FBjY&QDum-o*ycF=Phko zrpgGU$2*wrf6qUjwj`L~&9)m-tOo0rZm}Xq=4%YWh$~HA4cAsGTBe&_mU>}>Iv@jr zg4JUIDM`k|*M+!#L(`>RZ>;LD2j;x#Lb$6tPIA6`R2(6tlL)1EFAvCYPCC(6Q z3CltE)SJ;K%iZWLT8-5)VtPwD!69u`q;)m&^Zg=JpY|4gQLC$ZLCKT>ms{_F<@vA# z+}*e%tOfGKi@PBH3{I~9NLS!_w%J=v%1(z`-4(yB(5I*zngMS?0UqoFu(%+u#9SGh zA5ys;vX+X~$mx7g_%dXPt6jq;W=bq1;(48yn^8k?x9P|jhPu-pWHoF?%TP%u+J&Zr z;-|yFUx212s4|PR|34+Gf#+Xm?@bOC)uPImyp|>tR${`eA7FJC!V(OY_+M%+q!DB( z+E+N-Xxr}bdgGdFj+m#DD{3xAt5@U5t7t4eWRI5V2bLf<;36bvm2+25OyFYvf&;zI zoj_(-+7J&MVtZ0^ui0v)rU6sPqbN6BoJ_LIV>RJCSJh~EL?}vHHZk+k=dCKV*R@)5 z%V#$mQg!i>-WFkj%kda}=;ysu^D+@up*nU1*-iW0R!+DgtJSwErHj0DEiEx!;S+!M z%@pKWp9~^cG9Gr8;f^`u?T_pX1h0FYiiKU~2`dw}aZM@Go7*7!W~&TkTs9QoXPoYM zKVF-BNB+mm;*+mLC-b_prFdON;yM=NBF=r=Vb`2o=7md=$eR7*>(a=IorqwyIx>sP zfOP_j9zcg*8sc}nW#uok%ORb^SAEa~wzjp0+q`8_q+@1OJhnSNVb8wmCX=AKp5!~J z)-`}I|;Fsu0CgJOJIz-!{vg*v_?nnr= z-q=WUt0o5h_`<xGJa!nI!*oB6{LU2M(U^6Zv4eS zLt#0LNv*0=<$Ec@={(i5xiJX6&Hie~>$-P>*ZdH7G(E*^3jxz-ps6b;@U7I$#qb-% z4PK6Ea;&Jd#p(5H*54OKQ;B2<0f!vd)Yo*j6Y;SWY5Ta;ixMJdDA#i4rw zn^hL7V+J0y>0h{NeM5BX^z8XrFIqc>$VtrH%CgFY9-h4MYxcYD@tw3O2duF5cqYCp zX4`Nj4d#y-cumwWRksX zYzx1lSInH&AcX0`2EU7W{Q+w(e{GuFQm=>F83kPhr;WN@+uSXOojU>DIt!LYjOW(0 zXIVrI9pavwW*wRY(-QY3Q+0PP_qzghCt!1YpS}??6#*T5}y#3>D z+6!3wC!1ribD>`Ir!%N3do2x&vms-b1IvVcriicZjcd;y!)}B?{8nuCIzj@h&;&H_ z9mq_?KV17B$e%z%RB$N&<=W5hyWY#3WV35w`xE%<$D-t|q$JGyS)@++@|N9hfe7rW z^M`Y#>bA?UKIlXElMnUEHs13!&i-uA_VT{TfRN)Yb*aWUtTc-gM+sQT-WXR8{Z;)F za`A(-9$S+SC%QNto5S1oq=b8+g6yI0Ig%)2v+tG;eWHDe%PiLG;R)qAi7+E|E`er< zZvVL53ZJ0ES&vy|m{Tl1FsJUR#1Db|K2hcJeJz_>{Cja_W4gs(baC;tnivjT`P`*K0Sr3GXG;b`INBF$72AIVwz?8)W$qY`f+$8964fBMEx z+4O2d;#B6U`d~+LNR)J*-{03$cktB_T4r?a##;>&FjiX2`7bfvnvn4dva(rxq2M%rchszC>R5m%U3@;bZlfQ6*hgi z;G~!l#7p+XCP-sF#Oa%&k-gi!d&VEM9aWz_>DFOvo|n!oKS^Hj*L}twGjKMMeQQze z_ES&4pbUEX5?3_fHt_$|__7(e(PjQ;C+Kn;MsVLvGvPQi-J5Ds)_m76@@k(jpmY~Ev9dzOa2HN z{(aE-7oNjfF>e_0Er`~3y&8JV#|VDs0y!?OQ^s*&21 z+lt1%=gS^@QaP^rN&-{y)np}2r$F6@uy{Cw~~0uV_XfKm@d zx@s2lc3z@#i{zyup%^_y^H`m~L8OaeHfu=?X=H4u8cw|Zt~#4+TId|V*J8vNNuH>nK7df=`cQW+^WPA6NE zHQ^h(YoOXImYam271&?c%F^=BaOE0S_c0bO>Ixd^saKdWemZ0lAG7(aP#HD8#Tiy1 z#D;4VcAVsjkNZ(yI2kaW7if~bU-r7}aIsMhbuH}yC2hAnCbuqWu|=hs6#ToC3}8?; zz-+&sr@Q-&`5l30)E}L)*5%bFI1h|6*jg$Gp)yy!;1>{L_E%LU2efC_Ni_Y?{X#yR#aX`yl6$vma?bP3fz4HrZ!Ic{D&5Ep4R!H~Ob^gDg&{ z=vszl@=Wy?j?=cn0((!V@3cIPzSAd$OeqP z-j>oNHs0QFyD?NYRv-U$eQEDP(rj9ZafSU*EsKd&V3PT2yzk5mE`JS~VbM_@1{4t1 zTin670@U4$^ipO~@0U1F=7$EbaoCO+?qRot)nec0i8OnKhN{!->Pv0dS%wcUy5iUu zIu8!GdbDhya3Og9H-SZy)?;cnO&KQY{x;G>cPf}pZ>S>jsz%( z@8D3)l-iJR)>M2BKjZAK9mks)kxt=VwH8#O6?=T(Qg_xIIBS{Q5hm*uST~uqR~Ss; zjQ3M;7^g3aIJNNyc#eGT68@(Yte@(w8)*11Qa0!-za{PO5%m{J177SDS*fe6lMyka zx?yMgpZ=M5f7SV<>=ydn4?l)K+wm`T*F~#rhzZaSO-&HP3$0KTG@x5ON#Vm*oBFx1 z;b;88=5JISBt9}q3WPWoeKH~SOHqnsn~v@p4TI@et&l5)S8e(Tz(ggg8@i&_Y+08|v85rt;%#Dr zm*U5XNzMXpWPHL^SXf=&dI~{i8e39Kt+hdOpYNcy9PLQaxLcjH8*OKUKQqHaK226@ z?_2rleR``H>sQVL;_-6MDm%#Ck|CXP^@TSUijO7G zgF#*qB35aFo6(4aB<-cy#X-Dp)&pFzYf$Gh(t~_@Cbmp^#-@alSU+RUc_M(%vcy+p%2G3_M0;y>_Z&eNAv_R96LbXDuV+k;G$6F?Z=?60F?KO<#!{u< zmU@>=i`Y1E^V2ZTd)P?aW!plUYA* zMEtapmD1}+%ZrCe@m{nIneNCcmI@KDSAQ%n**&0m_f{k*KbOIdoutQ7bJ_eFmXk3F4z}I#VH%wILh{W4QVr1OnY+Ci zZ8GG{#+Qg{Q5l2K^Q+B~(t>_!G6?b%^nJ=e*bKx<=INmIw~iBiyw)yvYrGXShTPwK zB*NIvnY(j$-q|`QbZ+7^x>7sFdUVOvQn0eYLcD^9m~H>h?mMWRR+dOt#Ee}n6s~kd z(o+-)x`cdWYQV~fNoNL+C-aAa8DT(lGb@L^@|gEs(&63&B)K2%mah5O9MgFm0^Ja% zO1Uz!JW_NsC09hy>o?A!kWIQ5xE@>?nTgdg=+5^s4LTk6Wv;e@KHGpbBR-yY=U~1O6}~;ewLsX^ZH=crDF%>wo(I(Da4-b-^Drm7LWH92a~t&WTuzqW5QPB<&wqyadbF%hs|-7DdTeS zW;(%hZ@urXbSj#zehK!sG13*B`H_%T%SUrOOZ>r55$~eSJzstWIZfne)6j>)I?Lk& zd>8LDI33AxpD6ah0XoSU;?r%>Z;)t`vPahy!icqQ%<`wr6nf4^ajb_$WLb>PIBm9m zg+_w{!O4R;`eg3SXEH}%P&qq3Qyx3+*RXK|Z7GcP#UlZ$fs?hw$UZj>GzCLgDX*9D5XI#6@ zSygyVS6imzAM!Q>y03>Ph}I7NnmQV?>GwQZ?+dh%m0hi-fHhXGrr6dGC4Xq0L#oEV z?X&4c4&XPl_%7z5=pP?8$|I$>BGiGN&0=kj3|v%S z4Z6ry{T4^D3@(#BrkkUap|>J;tgj-V0DYDE?flD$gG_qqiU>n` z+^u6{&&28rs!wG|L-C%({M+hMzqepY{|Y!ClD5+TlMQ4&L@0AR1mr2K?l5NQ{K^=l zUTh-RB_y$)mP*ukqV{GuL-=p39kc{_)HBh3Q0}*+k73q9zlCh1CjTp0`<>@D95p>2 z4|Ff{uRb5zsyWJX$;xTmSmy@J%pl>`aIW7kVTOCkHmmAJkebL?i#L{aL8?IEcK-o# z_ip75uasS93GWZ5VJUJ`Kyjv&Q+W2EU!Xjc!;^$cN2;r0U2)knrcYJG;SmVhNiw-w z1JCHETrh{{Iz2*G`>LBfal=b^!d(C2MphhCn$G19)NIO)L}Fb z{sdPI1?aZPcfH=|hg6@+v+NZ)Z%P}}n@xN-^?EMn`8c8bTc3_WPRC);fJfwW06}Ky zI_XZ9Z)7!{JNC}8Hw*}?nE|pWkQSYgOoeS9uG;Otof?gcG@h}p8eR1=b8k%=x2&IA zMC8+Cr*5Lw=4>Y_Fl2y97=Nf5nJC%4^yyzEFHin|P<%3X7^&xc_n?LQnp^wAC92GC z0pQtNCC-zYEEZ&1lWImtgMkJ`j=1<azd1ti4J+5D!T-`fCXtz03lRbJZyy3M) ztHD|fk(u`%6FX_B^FH6hFMZ}i_Z^}FNG41d_#>at8_E)Sb`c%t-dcjlbhAtHt0|HC zH2qF$TYZHPv!C#t{&2E0Oi#%%FNdOSTkyjh-t)t^uL7FwtYxC$8-Jf%#7Nlj9pq81 zID6yjHtvN#!X#3wd6u-I)Wef$0>>R$KVtt${Ugf1)x$~)=$CA-l_O1bI8EJWy>Pm@ z-th5N$&N_2KnWmFw<6yufpf=iS9c4yw~&uVI9{UODyfDSYG_o~4Dti&vc@|*0G$ue z6c?8Mm#hLfkH8S}I99CDUtN++*WH$;cU)AV|vfKSm_0KWMsO1UUFaRGY zZUC|wGBHy4j;Y2%oyK6pNWnygvtc-{xq7X2u0UXj=dYcr6lK$+V0-pQg~*)pCADXN zn`E@8@hP<3{&ODGmG0+y4&9=B0LJO!qi*kUY2<}<+LNRkC2sS&~tQu;u5tn|q zwOXz>9jO?s&L=)AV40l;$-%4O+T=#?ader}&OxcpD0@0d9b>-u zHGmIJR_lA!Y=9q`x;p7f$Rt?cO$nDMf9h=Bg%7@$+Py{0t-;^Xayccc*>T&RSf?{m z2l+fuppmwTZyFBO2834Hfd?m|L_3* z4%=fvOlwrW;H2vdZ6pDid{F#_mxLdpCSxAv@3YSzX4`^0ZGOGpIuJ-`5aaq zZ`N(IbiIV=*}?u-9;i{ObZMLUs2R)OcP&H! z-)}M(pX>#Jb-f!=(JInswsh$a<^No5>|EszkiFJ?#snOijj+9F=v19P?(m3TY{u36 zq#JCx?}R9y@#B|!gMKNTT(Ppw)jnvM^X)eO6nffBUnYK0xp_^Y>BetTU{%@Lj>STX zP{@T12D`1~nK#j*UdirmVE*^5H5G9kvdux^ENr$HaUPHje%W}5Gtpc%wkkJ?<381Q z)&k8POu~%k1>sBJmYnZssO|GP#OVolNWn~AB+s*`yZbZVd*vV$J6dw%!QC@y&?}wl zF=tfVSZl+%6VReD_0ESOS!bhS$O=tw2#=GNmk4IFdd&v&z2aJMTgs8nnFOQON}kPJ zqAkIbLsa=ZN*ydT?V5<$WBMwLAk{!eb9I$m1+P#ucpB=AdpzDz6JmN~zl9H`X$T73 zAVs&mZi@1A1MCKlRVBb`0O&=JYbQX|J$Fpk1WxI((E#`W9NVg6+6SO54tZk?pfimJ zC7FFRIPm7V#qk^A3GV&HQo&aC{hGCAv^ePN>iLN=b%+53tF6>q$7onTcjJTh=fANc zeduTp;h4!QR2M6Lb#MYHlq6MgU3K>AX3;G!ToiMUFajDXU2Zah^x`jz+e9e2Om5c% zxX|3}4Labs7MwjxMUdfM`D8XLX0P^e=N=ROT|kp$nQdm6$S@ArpNn;CZciMNz%R*# zIZ5bLX0K7zUpz0uatvAu$`sgD_`}}+XRvsfl;#|_p72Xi7Jo!#tz7gUm+v% zOK1*(1DoEBT!TXNt`(7=lu?nsY?<0Zk6L9$gCXrK4x6whh>@L}) zLx6LSv6Ko<#(y}15O0mZGVdgDpbRnohPiv0=^91!^d0;hlT|KkX|Jm7FjxIw=Tq@t zyViCI!D(d2_EH8J**4_LrWXwIbej*j5EEhZ(&Lo><}SN0eBXL4d{h+0`9lewZO>u~ zDlG+&Yyi3mEcJ$x@KxG%%L4zUBv_&HF9h2r2?b@*2+Nk$XzCt80Hiu|{N$z$ z(?AEfiY$+_W?yVlGqw(m}rV3wn<>%vYL*m`|Ou9t17kiO~ z3fohntFPwF)-OcQs@)Ta@S%N*=_naay2`eX;@s!)f8kJFv;MJoY;t zVwJFzZLsdqu?R^>2l87pgx>Bw2XlnwrV=rZW)Z;SYHzb#OqfBc* z$4f-6+rSESyb3=?%mNSOzqs*{?G-I8Exh5|)8B~0KHR(deMNwJ4SbBDB>~6~N zkRAbW(B+(w|1lz31>O4(a?Z_FA0u{d%T|t^0|Bg%O?GL}x>H3k8>diZ_8^(VT@+Ub z-3({Kw{^9Evo1Ic%xJ6lkbXKrjVvsV`&xFc%0%LV4A(!hN}?P;AS}jD9^8NR_ffZr zHX=@1wsJ?s_OVk{Zs!R;N8YHO&Q-Q^jvxA46sjs0MV683214w_!W8q}OD4wOU;JA0Pzt`iGw&VJO&2%i+>ey=ctX>K;#lcotZgCQNC8`#3 zNdortl)_c4hWemNyTZM*fr&d^Z5yn)cs+RP6N}cGPk=Av*is9?bO1>z5TX139J|0y zz4>^x4lL||OZ52p10UdOjz^Sfl_IL(q;vr8^;7J@d&(*hL$-XSoI_8_RZVU`{q6P$ zV1E}~#4=57Ci@ro1jxpJ7^4E>_O}}aGYY4#)f@T7+LrsAN)L>z*C^4g7(OSEx^Xpp z5Uu*X=`Ak6%iKb;+OMB@^yuqvKi%-QsxIm~rMvbXT8eKHsIS8|BfsT86h4~GeCJQf zyhKHU6bg;k75j;UGx#^#AE56^O}Hz#JDG8KhNfz~v-}!LAy9qlZwxp=pYw4yd2aL* z)FTkl?FV#yfb1IJZmMsdnc0@;X@U5(uR;Prz*z^kQts0hS-Uo3q?G-k*$a1)p2Cdx zF6rC%xC%=)YmvL=R7QL_0e^qm`Vgc6uBfE`=t=MlLv?aL7ZpGdxWQ5%aQM;x={x!5 zn5Ou4$i$;*cyw2Ph7>Gxx~=>>8c>-17v=kZ($j)eB53b_c)S>oru@=~l;x(rzwqC= z9rjrR$N714t8d%A9-4UKLYJl&vM1W-Y9saY_n$(-L|j^jELCMG1Hw7u>j}mEimS{8 zxt0|^`}1-{4^e6X_v{EysD0|Sr4-Kx1vfo59tdX#f z-XO`)7fy|OPB(yPLpD``#FZCZaeH4@`UnS#aUyKIEtS|`L^dfnldk(W^IE4%uU}<) z8)yf_Xgz+QkQYNYwfwSwA1ZMu%U9eYT`hy}`h1S7Hdh_u>et&@mMa-;3HW~awb98+ zSS9&u4lOFn3kqJ>HZHi#-Ea^)5A|Xd^VR8dW82cZ`yj#PNz=&*`h^Dzs#C$H%-O-c zBBM6auG>jW+Ec+vaqZY;n{V}U)n!gEDV927b}aMeiT7iy<8P zFU{v4PH407g_wQNWR@8b7B;haAbP%0HH7ePcZ5{nBbct!8n)+CA7uQz+UQ2A;DdCM zh|Y`L3Y<9kQqTf&5$Px>-*)y!rsuG~D>fAbr(GbqM24Pjud&D5v$Cx-q?RYgC&!PR zZ=~y3Z}0$c3RG2EpUbfi;5btG6OdqjRsibf=NIv&A6Zy8qL-lI)B1QYyM+?&&Ho(5 zNh`%Q0y?woC`Iz`CMjlbDIR<%%^yU*mFh;4vFi(x2GA4u(9;_+WF@pFDpx(=eFa6s zi$}yK17kM$6fwuzJUQE}Nj{I!VBf8>CC^f)kNQ+lHr_2RN0%TrQ<*x339$)&vxn-` z^Z03h-*0YMQB+f$TH&Fo+s+Bv^^M8u`tpp1*1=11Y+qIF)XEbZ*e%Er)e;FG9owLq zo$KOU^^|OBUQ)L_H6vp3XlC}X3AEM)cFib2uFynt1B8t|%0Cz>L7*#C6|{tA1_;H4 z?rGLT3LG{>5ABY66FDmR;(Ri^98O)0JI*J3w}6CmJS)UICxp)rT9yoA4k zZ~35kpmTQlQ|eoBL-&yq09v zj?DxJvIOOZ!RA$IkI6r)vMp)Tz?k3|5D6&Bj>FK7!=-^OsM-s}s&Yz;(=~FbSAyD~ zkg36A%`jlj0bZnYov<u^UNx6=f~dAB^8#P?yDyuQQ|(j-`_HSe zcNP%8Z1uhnkGnk(&axafZJxL2#;@{)hjl?0)0o)J@&slF$UNUYlvWEXet<5-8-kIn zJhYnlvhYadt9fX$&4MKJ4O(b}+ow3DRJLCZXEDJTjVgh@rb@jvNC>0Mn#gqP+D`MC z`+^xE=P_UIyzX)c8D8-T$*EKO_gte>f_k-9QyT-jIpj@JyQNrc7Ug4svk`f zwTT;y=~32w6`0@zDjYmL9RR*EBsN)34U$%Nh&lL^Ey62;&58Loy5stWZD(7)_XSeo zhR#9;#xGWnwAp5sT`1Dp+6sgLVYeys$8t?V`w@m=#lSEqu-^5aNC<#+_dnNg>SQ5kSW5t&V>WqZbr`n;IVcRceAuC82z>}*ue{Ll zfhk}{cSMqcM~-6v=mcN{A}${RFoDJI0X68I2~JN>#1rYZ7let5kOkp^VKpb|`|?wV zrb;#@WFNN6MX)E2`VnI~_&b9rrtLwHzUz#fQ%R7q`lkfm2k*8!JtFYpyM8Ld3EJ0^ zF^lz={>}?Qb#O#t#VHJ$N=; zYRMG!73_*IAy@XVW^JHs?$kiBp)naveaMZJT?0867l1(s3AIPwvt z?SDrB_d>Dk{mPY5#1oYgwL?Ed1(!?J+s-twi9=dkk@RNEgY3W5WCN?7p;Rjw=1~sv z?rbmDJ?@>5jtu@j_38|txy?mmjj9gZXGC=O=JoSKwp*8AvJ;_p?5@>YtDiw}4`-!H z;zndQD{Wa$H@>-x5|W&7ZHo7wkB^F$yiwS$FpN7SafSc4ZnZq4#nm~c#$jkH9? zmon56gmCSA`9{0Z?2LN!HQoxNw-~ndr?7<6Jw>I)%y#2qUg0fW}q za_z?EPxW^BE9UP(iN3;0CgY!|5|zm$|GAX+TxjGVxQkrN(R(!gcpQTI48BLJ%B5W( zd{+ooCk)r)9GmeyZQ;3WYmXmso^d%cZ1vEhZcR@~PBh?ngKp1jS34!46o*E6^tNnx zK??ry{x*UA9-mFN!tgI=^?z>wqNQW)((!Y5cs0v>00b2S5t+w!J0Pfdn+EWu)Q2X5 zTc8}}>p5Ge#uoO+PWJ>8Io=_=a6vQ5D138FHN{%vSxp2bq)&56pT%Gm6~8yrbz}sk zWrE#&`6y~(C4Ft#{@O7gc(0DjcM^Jc#@V~R)++hheUe6o-&h*gzKs96oPkqQddQd3 zju{#AVIlj0cRk9h=x4H=a=dc3vm-}In@6XTc39ti@tI1+oud$GiK1dvS-#OgDCeq+n_DgF`c}K>j*5 zXqIFZ-ExOKpuK@QnpQJvyW2X!Z6>=OEbR8TPiDHkX?b4R(C)Y7McwgaiWlfv&J(#^ z?B6kAvh~B`Tquzl_{dyn8SxTL7^g`#4ZA3*={ckN(Zj(GA0A4pBF66L4gcBl(gaM3 zkB&FmGv1c}HCzIi%z!p20dvzQl3@8Rzy20p7WHCz54d~5&;xT|^mIH0{*3Qjz?S#* zqim8*XYCsH4u-3e+8nZ+zHOb;ApLpj)>eF}m zo-K1kM5(b-6>yAZ(hzeT`~Oef4}5YM@-KJJ0Z4}fx=G~9kyJ_Vcxs<^V1noS6Uv$$ zj=cM<&*PN&CYh`5$$Tiw!z@b>j%P`@oz`@$Z~(T?B8``sd2DP}78ZKM&3`HESHWvK z#_vX-4eh}_`rYElS|N5e{-@)~@4T`K6qQ9UbLWuZmkMIO@12SkIPjUye;ifgtjDn> zprS0Yb*Ea@voklIxvMI4@_WF5+qGX;61DlSNnvmD z^L?Q;Ql92i>0vg`C0;u}r@;=nyq6IG7(Iz_s%bu*f|+a5US#DD;U6Qr|S z;#8?60%X$8G#YW&Vd^=HhiU4}vJK3F!tKxrIZ)&Kcsfb%l_TxiMmA4lyz?}s2tv}L zO4^I%Ni5B`3C^iRvRIDzT>ZK^dJ(xxWbg9z7PIy9B=xGw->VgA(H?A^WvCjn488BT zG+yH+z7$jIB#mQP>Y3;|%HVNFB{1T(#+c!fPyE4S8PO@@x(ztLwL-iz)i*N5jpc?F z9~8+vY+-SXuK>t4({-DGvJlwj06V+m`P1>N_`l^#yk}hY)Ty)?@90qq4$TH%oTdw@=G|(aZs>xv)6Cx+Aby|anH#aqFXo>fD$kx+mjNl zqoB#rJB@j0sWGeinKF7P8O4j*YVK|}sd5&tY3uTECA4Eh)a#2APTEwE~eJWA**73Y!V_aQ?b zK7$zglU$^nooxF?@RWRpm!Li8NoP-&$l{#(fspK{@i*kGeMKq+?w(OE!vhQ>qa43zWs?0^mKGZPnwyrm*B)}X}JoCOdtHgKgiVJY=7RM zxq2g7Kz7J_9o$SZ{!48fFrh!@PaHede}ax496t?!M!-w;eQz+SSd@hLpyBxwdI*qw zj?3xe6pio5&5DX`4O2v|1j>1>3{L(e4F2YvCD;v7jn?iXDC>oAY|bn2 zUeIY{V=dtp9#LFEe{8RolH3kr{u#^1Im^1X4euGJ0{I^FWgFCXX(W+2->%`abzyN#-EUI`=QQ{SGV~krYpF#WTi<0T-VvJ+!TD%@!8%U=lHxq zLK}6Lo6l394Jv-de<6;ZD97q(3NVSEuwHn~WXyEZ?&oD1kaxA|JLX(zMLacjSa`Wi zhiP0gZi>xRFny@yMbrEgqbx3$%bt1jw)n=I76K(*)-zmGHdun1FeQs8S0LzR|;4p@k#V(QdL4G@vK8%hbGxbq*1^-XW|OF zXCOjo2S+$9;3uDkDI}<-25D7mCh24%m3q4G?wDV_0%Hf5^!Mr~l`!hWDY+H==4get z@nNy*P^9gIkKp69l=BRAS0GYYZs+VSrn;dufc^n39$w$3*I#I-7|3l@HBHr8Vp-b+ z#!0}irUl~9&3^tt@ZzZa(0pt_?Tj~^Cl;U;V1VxGSQB$>nEmgW#<7|5I6#5k2CRAj z)8#L_tCCaKn4K($%;7d!wHnBuE_-vT*n@&ot>DTWAjZDxZ~XqyU3fB6mRDB9%6F$) zyL(4IU_p>3f6R{qBCu)|>CW(ws;IC!PE`e@d9xeMgO;t~++*_iI}eZ*bqooZAoIhl zgXY?}&)7QA6_8Z<`*9^6PD`PJU?M{9;VFuc+Bwo= zmQm}$c&+%i8-4Lwu|K6A*Fu+pFX-GlhS@(#An?*2g9!Dh;qN*Vh^e@%S}O3c0jCR- z6HVYUH`W`F!QiZM5vXj>3k@LFcLO&)m4MQWEj4>kLi3{w^`M|({Q*sBUcwE~_EnD+ z2C&`)7Kv|dgK0ptZxV4zxrDWXs3Pmc32_kicoIBlTphqIJo&8Jg``$(S@CB@JsYkw zE2>_G*{>|eaXA$R^(sYPOyIdcsS60EJnrQRMSsevq0J75RYo)gdmLHw*;yCPYz@RM zt=H#@QHg#Cz_h--T@`t-THFj|KOYyv#~eOPSnFz)H9LNMM=GI;@jo0mKtl0nrhJWV z;K6I!j8|#k&P&kU^}g?s3F!DY$AXP$HJTDl;yI9w5d@?SmxuuXgv|^CAbw&7$g!f0 zcw!pn!l^<&e;Q$|S|tPjXQtCnZoBiZ+3_5gM4mqjd$AJTKB$>h5i4<~Rtp|HqcR`9 z)<@4E-Ylvx>hRbU9tiF`7Dxc08vq~Uu{o3$J=cO0XF3s?q9xV5#c>2+i|#7$u{>te zJ5lca^S0l$KxMdCM>N+>+xT1Q(M&JB`z(Kjz*6pBYg3-fe^Kv3n8`WWd%s$YA$?NN zeBd^%L>uw$p{&1<;R6fF7GBddG0062Te$d{w>l+}b@V1jFhy6SiHA=^w-ZRfAeia= z*7oI}S!b0V-<4;L*RUr!&)YPR2Y;9G9~GZ6%#DLou4CCbU;Fx{-E|vW67KkwXSsVf zFFD9LT<`LX@P41nho60QDZ5u)73pLSf&noSNQK1@>eckx5&G?V*>mSyWd`yA- z&jys!Hkdi?ssZ}jJ{tbynx<~z8e<#HQV>lJ9vxiwD}*fIpmq@C@6d!zu2m-tV>1oGHS zcWiyOk%cp@9H)XeH65#iarRh#{Lj$MsxnxNr&(mcbd46o_9tXG#OzyxCqxE!how>A zYJWX@gBlO^-emDoQUsQ?5M$jlE>$7wR5SU{gDPAZ^8i3xIT`FyeiMO@keiIAB(A?^ zx_xjFc+|YmBn`if)wU9NLCY0d6fH!7IU}Yh>`y+cS;ui2)D7RSG-Bm|5l#b5ym)WD3rv9RdXK?gJduZa@ zhcml_17#nLD4Dj8W1AvU#@CnA{5m|MfDFW}L2S8dL+xvQzrKiS`>tzyh|N2z98#N4 z_~YSYLD&+|&9YKnkQbu1O;}mj;{eD5#gxTp&1}hIoMe>0~lK&n1}53-$haFBI&y58Yc#zRsuv4;{b$nOO|iMz9dfc ztJe^rzLu-Wi63@Hk8pxCe6$HD)QAC*5h~pt^pxxC$~zq8z*E|p!Za07g_oqj&%Q?r z%ZU&f*HFa=yEHGZZYDe!(@qnOMeRwHY^Zy5l(NE6&m%y-{|FUoTO%@)>JU_Dw!djCA~b^v!WEOljJsTXk4ufeUzFu*ng8*5sH8jj-JJBJ zs_tI|b1e5AGJF95gT4)( z#XTJ-_-mvY=4bL}v#d>NiDs zost&bM#&3gZQxU{2egpwQHY1adkp8jqD2m57rBlBq*8@+bR4164eS`<>xpv%JUvXe zNc7g3z;Jv!pajk@vjH-q|3}Aku~}yrNEDQ;xL%wqBBv*I1bH8#ZCH_IvYk$LGj!34 z@5y03#j*Ym99`psyI~qvy94X z__zji=4wc$q+Q?se4SA;MZVgSd|Q1p(lmGHuo?qN#i~*tCIIOQT4|E!c-)b-UC$U- zd^3)QTeQOWR!YsRi*j~VG>8*jD(J`Gg~yQcn^U=hFkPR%`Ds-?qUHc>M4h5zt8Nz# z4K&8o9|pEj>rEuJ$eB3`HSqZHC@KD-Gyz4b(21aBXb}mS*>d;%5;Y2^fl1x$ zfZS52H(J%=_a9&o(f+$(&X0qbBBS4~X*eTDMA z@94}2y&mQ10o*2i)9ydjpBEgVw|{pmZl>X?Hn>s26t6U%J=9E276Y0y=t9MS<2`5F z0l)P7cNuI>m5rUZBYs2Xb@~53mAJ7hU0(U-`)4LDTUl9gZEb#=$2Y8H(}*3SvNjY| z;)StS_xWEYynFEU^<6$ba%27_s_*yTckl9>e#>W@UeVeN>t8s94WJKuG(X99l}|mP zL0(|V!QY2G8J`JeJGHVaE!@0yFQY1IKwie6ci`>-(A0l@1hw6BrwKp2wwN3XTu6X0 zzjrl8HdBI$74_Nn<{W#!uW0QF{^2jUn+#_jb{m1vXOo3!*&Q|6Cb_-@jpVd|0OP2r zR0KZb-BJBR(sPg~v%RpQ>De$g*ALeUDIG1)Oo{Q|!u9$c9| z{gDni8e1)SGk18v%uhxHE<~UjpJg?y-&1R_HH#Gfx|AGzUzGX^bx95Ya5-t`YK23! z=NgQYe5jd6-rAqObB#+Ztv~KM;@qs0HZ=rDnGqo7YuRvQavMfCt`kE6Os}J7r<<(G z0H$ir`Wb*{Yzvgc$2tnYThj-t4I;S;6?*xCy)0MN@R#u)!Q&~j%RmK^_gfTO)zj1* zlt%vveriWW?ILIEdyp$OuJ#1t>C$|yP}}gqM*_I3`Qk9rKbpMVx^o*%yn#J+Q2|_9 z#mHRe<#YlA`I%D00a)ISzSDk@bN`5-IH3PXRWR`Ybl9GN7FkPDn1R&#c_#_$8a zpXIP0kv$WJ3}An;t1dc(=vMbC3@Hn4BZmd-z-nJ_SN-E|JFl@8#L-ia-OgL;2~H3z z%JpfMG(1YDKTA;`L0X~fM<4c+(^rujul#qLFK)XD8SNP_k7_)@yUWx9r9aRh?k~p_ z0jfN1=~ZQ!!t^1(o7;Mt3dTObjYk3&9=Xoa#qX_RBUJ_!sWGeKbq((G3*7-##XZbE14J5a3JuWHJ83W#dU$EDE4nKqgJ81LEzhcT%!D zyLDeG(JZ)UX}MtH3*BUwsrkpfz4MAB;tM;n_GhG_bV<TbBiDR>%GfB{Fa9qokoN30KNI*o5WvVqc5=ID-jQ? zW=^QD)%HY{v*oThMl`pzhsT=kI?X@q!(P;zD*rCMp6~R+D@JX3VupuWD?7?fk{&lT znM&7g}SNih&fCdm` znN!3P+1{3+)YYW$IzCui5$2w&Z&@ozT2Ylm)DJ$Z8M{QS^HxouWH4R#97X8*JG7@h z!KPp?r&x>#;WygQR830mIA}biA!x8p+MO`d7Vl4@RKd3q%dB}?Y+O9KN~-0()a#jpF5iucf4_09MH;vKr|aU#P|m&gyrK`) zubPTQ>%U=>xz0KBkmc&d%i=Hox%^D}m2pby$q(l~C($)9G~I7= zuc5sieKc5y{!;2>v#DB8)*9(CfJ%3YSM9R#h``v4y3e%3U?CBKfq{KpW5K_ZDG9*` z9?>}^iX8pt8Z+r{v9DrA_J6-9%|cJ|Uc3*QKWynQ@hCU2Ax8F7KF5edi#uxLLNYCP zPHfhk3=0t=ho(fhUx>pdSBN2b@IEVtJnLCZQbDf^ab!c!lk;5O?&z) zrZU!j3fqfj>&O|b-$M4#zQ*z}x^}(BBKN3^7U1AYnvsdLg@40o)VIA`Y%ZXeaD5~P zn;}x1*5a00PdA(g`8>x4Wv&(6VyDe#2g5$lYgrR)A6Y09)HhDbga?VJ31lD>P`K7x zpV6lg*mp2H1Ze z@z@;~u-2ev-hui9xnJc%vskscO~qDegry(Gaj)r}jQ4eSS&c|~W82m%xv}dNNYlN| znXka>9q6Q+3qkfVkW=1NQ`0bTQ5aB{Q2^3;GmLRG+vkteavz{9{xnBpyukIGa`=%2%WS^xomw1YSr zonp2^2iDcpXklmCU^Dn~77ZS0F#v2l*tVP+9`)aL*EA!u#q zYsP-wIFJ;{oEjv{oYXf+WBqe>koQb$85T&#Eg8MDbZNeB5bkHJ4i0C3o;{U0;Od6m zL$vuQW!YA@KG%BqQM)Dg!A{O=vvZovFX=T!Y>X1m`+qB({Tgt8JyfAHxyT~u`tV}Q zQ3;s<<@C(7`U~pWzUFkea)d)Zc1Umvv6ga4qayH_h!we6^#d$vJt|C4aYbeM^5h z&7$v`qmm6~Ls*Q}&^_!LJ!=Yut>=)aU#)~muMhe@wtL$*hWo{7w(U}8Aa$*{jrw_| zOlMso!>ALOX!u7a;VaX3Yk6Nt*=!~u`mFtZCtC(JK9v5esvb2ABSVK`Q6GM7Rl zyv@pvkaNyLgUK|>gS$TPql~w^Yzm(%K4eo^5*mvAMR}#JAHc?aR^!z24U-sY5sM(3 z@pxu#)6ZVMgAkZhDlJrnyDP`J*jWEjnMbX@Xt?SDYlTVEni|fU#o~iBi<$X+fBU(T@C6Pr=I(%}QGYgk z>3|(Dm)zCYWYbElz4sKcLoBNsPDGga$*v-fkmtjZMz#h~!_Ej9+q%$8Rh~()b8-?Q z`f2Xd)k1q!p8>C9a!-M4&E%{=pw=q6-$fzE7|=M*HrofaHMRw)0zIf zzDHK10DHuGwuk7fVhad=D@~C&nJnjOv+JMo!Fe-+W;Ko3sC{z4cHpsw!d=&CcAp)E zeSzPsI83iH-t7+8!B0BavVCDYk z_CVm3hX{T8zt1ypuvgm^$C!uy?~J!)mej?a0MXU-GB6`Qmp=R!do~5SD7keL&YA6M zJw4-O)&MevU*E$sbP=>^{3FnQ2SKWQHoe+&gmrXs&~&TB`}drJ3GyFUg{4C978qde>y1LCOqjoT zMX}Y=zh?o#2yr}7Inx_r=;&Yb@nyd44Jm1%fXN|a&F>#QzpS~&YQCsV_cVMPVYf$J zP;)yMuV8feVAh?(Xl;1u=Pu`it+W%<5wal!le-HdG}oCZLb?ThLc00(6)VUa~Y=V zGzyz4>c>kJe9>A@s>b&L@L_h}3nl?Mgrm{aT}5ViE2uX;>IBDM#fuGT#hQwb9w_hp z_U1Rvu5lM0bH7G7l*sMAL#oKmKg#NO;L}H04TyKp9t2I9TZOAgY~3|DI#OSSLx+fJ z?LD$8$~KaZC}MCE&_wNt zl!JQT1}}M>;?O*x2WV%;bZESOkXkM`VDhn$p2WBhOadWYjeq13d#-D9_%?#2T-5_5 zW6m4;8O`xymMjFx98z;1ob;6L-=6Mx-s|I`n!M{3yQbZp`jzVvh+q5_)QKeF6*S%I zf+BNRk1_P{4nx)vf=`Zo?O@GAqy_zIvpqALiU6-6E9j2(6$}ApjZd00<+p0a!eu0MUZb$@?CK zVc!g~Zr=46Y#;;!p83hiCxGxqO;vRgYor++GzsrY8~2DrZwBa+F+Cfv>pN6&7+d9X zTJ0nKfD{EM!{<364Ba`rKc36~EvU<};d=SNKS(!WIAZ-~8<2Sg5Rn;V$)jJ0eXa4M zB0lh^!=}w<@8Iz98b?jmWwJ9^%ov?#jc%R{37h@DGyP@M@>UR2;PH+9-&c3Vy#-b) zu<)+J5tEAMDbe4_v4fn8*=y6Caor()kHXtLI6#lo;ZqU?YwRf-7gxP3eg~?xUQ|ha z%XTGFL%)R0^!Mo!zb2c_HBvN~x6q;?y7qHQVri+hc0-EFvYT~~4D*GtG|6Ps7iij+ zbGc+5QUot4@hv^k|4Eo_uk3r&()_`Fb&`tx9rO@H?w1BkSt&PCML7#Dr#DDgYF)YbE_msmoF<-tqwWe;fs<2tktY)_ zcR#{sC-HpNuxV$rJGb+LYIL7T806EJHl);A_V=h@v8iC14og2IW07DJ$+@q6kqPoi zwpApFywYwaynAHh8V}#0NFCKJs2zq}mxT!K@yikyW3#7~0F4OndjbT?e5dT~&JQ@>zqhxKKWq%5@#IFKy1v+|UK*w1bwS-Y!qm`zm)4rM>Rket=CY(Pq3HV9dA$zA~ zW8)QN9+Xb)<=kvaprlQ9$B<=mBfiN{zpQ`%{(bgBL20nuN>l6E^=0`?0`o%>b)+KZ zq{VAe0C-e()Z5Ix*uOJ^qa4_kmnFBMX+f=DV1pTdBUIRZ)Tw+2M>|;u5>2y$Kat+o z+v1dczTQo#!xW1481%iCl5Fo%#lAyaPP>G+yFR;b6|={XdGHD2-t!i^^~%x~&(Cx( ze|WQSW;+y#=chQv44Qd^O=f@@jD*-WIK%Kc@cY+!ilN4VZ-8UHJ}S-oZ{3pis&FC4 zKau{b&=aCCSZ6oAT|HLOd!Ns45L-OAmBu)kZoJ*F#?DrzHlo;`czb4bFOgoT2uH_n zi-tdu8vyOK9LO9?+ciVC@{TK`0p+=Gz$J{KQmJLPG@Wwh8V(*O@q7~fLOcH3aAK<^ zP(p3awYLl1VIlbUuR@Fo*Lln8?pBYEYwGlgYAhEwn=nV zrEtO2jl7lrcZQAaKmO~Yj+A*2_N*_UY(_!&C9(|56WJ>BBCXZ%_Xfulkk+1O%tc@4 zsWGEIw0IA!0dGUYe%$6+_{c_n`CgLuq+?(rM>5xuwO81}Zz*Q^RvwA+llJ>nF2FUiE@J!@vB6*9O|EDY)eD( zIvQep@%2snR#5vU>1@SYo)_*m%4`=)fXGPfQ-u@-hmph}DGmx^umya#=cpAnXt@jF zFG*HfBmFVPNcpX4w9v0w<0tX;X&yZ<)$5v|Bm7_9rx*s?cYxFB#v3iCy6-f1`AMo5 zdJD)2+bnC}O$)C+OIlJ|-!&G}C(mNNm@P*l^yk@$XcX#~hL_Z8w|!$C{FA6D{l0t` zjJH37=~VOPLCCDlJ)015A$_#~$B2B{cO;ubsjSXFvsyu^^jwtiQTquHm??>GkZ6Vx>W<|nKO9Oc%(ijP`^p@ue+;xiA&HxaMLm3uJ5ve0j$ z{LkcUoSHR5ft~d!Z!rrR(?cTs=z6Dr?-(_tWicYCwORx7&7uLpTo|Nd@f(O`Ck*H7 z1~HBf!zjNk|LgOhp!4>nK_ZYjS;RQ%>SjyEz~Yopx1kV*{WEstsD@w`_Fd6;pT+X7bD8;X7@On|{_y!aE{_p8TVBB25Y4 zYQX5aj1|yf#m)8ROOb^S>{-Uj(N5|WZr_hIn!kBZ1`&T&RDH`0;=Q=R$dRk>!LR-A zwR_w#m*)SgWA=Epf2N*N87kDP-Z=P)V zA(8+DI&4a?(vxd)g(pw{I>$3DGZ39`*b(~KM>$md<)O{>PlISL1=SIjGZI^R_bcCm z=7JJAVeQLI)hP}O=_wOl5*(b~yz=rzYV==qX>L%7?ey;5U9%rIqPLS|dGk_HcO2?! zS#Lu8)Qx(au9PI7Djr?+Zt%bIBVF91Cz)R8Z1cR&CFxwbw^_Mm8XT=NN4YU6y0oD* zNX6U-=9iN8*80{&L{GpPDmk9*YqKXZ0Uqa+Y}6Pr-8N$)(ZLJ7Z!t4vfpu9R`L`0% zFA89ob&O?HSK8aV|8TC4%Z_`S$%4)W>G`I>u`Y(x8qF&yvD)L}Q`!f@%6(17=IHP2 zo~Vtijth8nkp56Ee3B+E5Jip)xJ-=%xm}QR^306g4F6*A!a_iIB|kZy(=@N&)YB>3 zDC_PU4wqwk-h&=!t1upt*{-b&*SC&gW&{T+)na^ z7<%5CX4uX%j!-ZdT;Ahc-C(dYJUlGQWaJ+>8P?7{dp_|d^Xm~}sy!)4ho!J6h_gLH zCr^fEE(rUQ0FK+nGDq$(XSZ*1o$U2z+{dQPl!zW0TUkGvS??W4FJ_4Pn9u6G-Fado z1es0|@s(Z}#%|RM*Jed&OA|N5pZH3eq@n$rrdjo#XKyN&?&5iaK7%8^U7ljXbd;$W zx8FYWEn8$P?frsxY2_G)>^Vyfs+x?%^u?-;UC0QC-X$D7)gbxl;enqfE)P3==1m0! z%OFR*bI-(Z%eqPDqqplV(uK?)P#aKcQ;Tp2L3us*Dd$e>+sxKqv;vkw~#ij1@amXksL{-(eSY&>Fl zUllaw_KxOl4fZ~O9ehoN83er5xB{X1AjqNy=4k}yv|=sGhtTrt(CmYXv}-Hv)IxRy zYnkeboN1Hh!L*i!#tY zsi(0I(|UwmrG^n~IPQl0?*uI9z(PlaY3BdhXUsK;4u7s+$Z~9pvv|}_Xx=I8m7%HV zp$NTxjv-EgjTQJq3olWP(8_5~C2Y#y=A;|Uo+&qnf}r>7*Oo{BaP#@z7`1iy%9g&p z7)>0^=uZA(sG|7i4ij85+B{alp;{~&&KvdZ#E_l?^A)JsWemZe{|nohEk9re^|~il zT#JO5ayS>)bA8e-$;sf#V%FPx4Yzzy-<1y5Rg;qq&xJ7-r6f{flfKS!dkvudyw9Y3 zNa|SZ43ezm(NVM;On&R0?X7IsKYK!2Z%M`8X53pn_gP5C-_b8+wHPK_iZ1paL(BrG zjb6>NRxJ&xT1h9q2i0zi2c*IKIw|<263})(@d5Urh5$3q5M5BF7R0dGIcEpktO{@4O#v4mOsBZJum1c69-lOzOdkEXu%a_IiTSY zx(9h?cAC6WsxM>(aSVcCWLk@1n(fNjoxHAarCE$TI`{aM#3BebjP> z-PFpNG0y3DH;nEk9&c)cwG$mT;RM?bWlO9;@7L=9yX+?JMoh0 z4L=IXWAoXAMTxyJRg3hmaI&i%5dgfy<4T+7V7I1sQ`Z~MtV-9oNjOiro+WOtm%zp5 zgsIG0mMG;Xp)f;?_MLHSvdw(s8+eF0dTm#U6jFMPF`%E_SBsOb%rYCY@1*^tw6h~1 zG(u>>`s4k@7Oq|Yyq3aI;d-Ug)3AL^k2GRpCAJT#QbVZA%!(mF>FgNK*qpt(uGK~| zqWKyx1IHL_sNpZbgr=r-nFe1VU2Wf))mkOy35hx2-XkEZ9R))1qqkRR&T4_W!`X-3?3^(B z^)HQGU_FD8C8^W;wKeNa8Z(Z<&j>A?Oy8mXG-~ozN6;~nZW-2Bd1NNnNX5U&nKbDX zwxZBhwHVrhZEM>TMC>HR?LaE!iYOpGf4`=mJZGtUO@(?jqjo&KJ@k9)XBll0r_hFU zW_XGUr+;gRDUkMm@N0$J|6R*!Bu3FS{k4%p{{1o8tqp3fj&p}rLzi)47ncQ7 zM<_c7%^A4)K>z8fPWTcHwYogx45u60#Z5zU%$~IxMqkP{NU0#AOT#SVPoYgtXc>*B zD}cP0^wOuyHX~+b63k+K`O-SvC=Wh1Gqg>eJRZK3G~MV0X$sMl&q0Cs^Cx@FR~vTOl%uAXXa)t`U@YK8Q+0kuGE)#mmTkZX%e2c>!Oyzck3l;iyAB~{F&tv z4HiEce(vpyG(iH(5?L5E8_;(MpGwc+iygN$Sz_(9i&7)&esO;Rc6akRGjtHjS153Z zF{1_re|DE;H#r1u1c8oy3$KV>0WXG8U8T#A9VpvNIR=M&AO#+uTju$#ImX!XzBIpg z(yf;hMjf#?b)#Bw>$~#*R7XzJWGv5iFNK604W+hhH1DWyrR}w+5*P*-ik#jS+z>*0 zO}6Oq3HUK+8y4(pcQjk=%zpeK6M6on3HS8b6LUEzIGQwmJQw?mwMOlW&ee2=&3l~_ zl_KyU*DZZV^X~ySQUHD%U_XHRrhZD~1wgAXv@PI4pQH)LhKBzAam<%D*TTSFT#hNxg{w#E>Ui9y_};Rx^ZI!W?=z z5}sRpY5M}GkR`gte6_RHT(ir*WX{vYbaee5#EvAvKWpcVrj8dBgvcy@_q(I}UFVk; zQ=M($%Fv#PGNzSA(o}LQ@;85oRi+EX_?qe{NTc@Q8BvQNksFpFN^D+)`kx%z@%3pT7VTAU>a8jf}aVBiO{W)vIt!5IY zQxjD=;*C*`0+cB}|BGg2_?-tdnNCy*is|Og`drl7^z|3Fix220=dqH!(U$w_<8ktj zTV&$~MOL9&w+V*!#0~06af#R$DyJm!bxX2vRTU2XS9b=*DD}?l*EI`!_n$-iwc$&Jx~h+g|hw{ZCt7+Elnvym{j7|Ikzipx2PylNFP*VY@b_Y_4p<+b3C#U{N1OW)urfQ(O3K8E zmEDd%%x#3|e=Yqqo^VOFHs|@qmeq~VM8IZ6*d~i69G0K4IPsT>w>Cg6)=AwpVu&pl zbymqebx5{vSnW8$qh4algKfjg#aZ#Bb=c#oIRbqb?{)#2*`LUU?Hu2Se6|mRGlfkz zf^+2J-^e-f6|G^%U_9%Aj(UdLR^q-2GMWW#{yvkcCux-Qf+2SHtx{)XL9jq@pDg+f z9mFebklU}TGG{zCTuS}KvPiZXKLcF(FwafAIk%-IaKkKER)%=#=UF{GHU2nSNC}p| zaJBc9;A%J17|2ae)tHG2LX<(bE`pIOmn%mnHra25c%Kh?MBtoJ`wbCBSS(}tC0&_$ z8gobG<_9r~8BbheR}sQWv4uK+W=SU@TfVqn$|(i1t4>jRg@U@|+lom@akqKBY}v1a zV6LTp^6usqcig@cw>xC<@L(qf>U3_s$-=^7iM`JPAg^$WY&u>EZ4RDTv7U$=XPV-a zVZU2%V|s=>O0>GNyVVf+VNGxQ=>^w?(n5>`1-9tmp$XTRK%xoPC$dTm_@}=^2#j&f zwz^y$MZ!8D!0T$KHGknc;LtG^l61f*IeW`>^u;4!_eHE%6f@&&w?MbiUa`ZuDJ|@Sf(ClF zHyBNb0jE+gRy*v?pWVVw&E{-Fo`pMVUe#!Vnf5GJZXeY8ZykTUGsWHVpC7GD ziJhgXF=-ABoM}73*KkKT>vcVh?z(TwdT%$1eHm`>8%Q^eP>VO?>`31;yV8i1v0>?cl^)2D6Kk47BHs{cVS*9$LUrp!YJ7o; zV5=Ll4c*e`SizAjVZB$#Qy%gnlwGR}CI*okPmC|h7M3XRI?7_(olwy{f4mZe^gj~1 ze&T%IDtLa&ki}4KM3%_op<*SEf{`ElA|IxOk?NA%B;?Brkegm?ORR6VQ2gNQez}+J znU-$_u6dja9D%GK{zWMz$KTCMOG*dMI>d1O+o=Ji!2OUDsff3X}_-R?SgqEUFeT!rVGd;m&> za(2J0MhtnpDc@mQuTV$^2eUChahWA_vgBg(GwBqv!{#XwN)3I5&`6ZyDguyOA|ntO zz7LR6pdn)}06X*@Qfqk40zL8o&^EX;v=|Dl_MW<4vFLO0d0aJQyL2NJwA)Co4jat3 zythtK3q0|jnA)rP^{-dN;9l`PQ9nXth{HCD&l>IB%l!*~giqR({i(Z@!_G_us8rt2 z5KfUs0~RH^NRL?&ay0K~=pAOfVV$fFnOM=rr6U|w_MY7u%p=b*yeglUlhfN4A0I|F zz(QKL!oJq*tP9W6A2)t2a1^;JoRlxDFyde7{Ac=QW@mlY{n$S9uA5!(-50OJv?#{- zq&pPwyHL)n`&d@VX`vx4dChUtXO+V;v0`%cHfyZe>tq9U9}*97b+zMpre}M977hI=&>B2KWEffwiRn}XUkDa zdV@&~`A(#?e+p|o7^!(1QHpLK^I@VwuuGwl&67>^P(YLJbmU&KMz-(<8I^eXRC3MV zT|!QU18XJeiGeZ4`abTu464Y;Sr6Wg4T>@IwzdEt2_Vkrb=(IbN`c(d5zg5Y8C+di z%Gs8eK3wB=Y-^*wt^oMoOBg9$|FrB-2Ir<;r3DWo`bN4&CUUCqz4Wh?mJp&;#HbKn zX#hEXY0B)ZtVjfMEW8rFrofm6cYZPzn3(Z5HqP=o7lJw@RAweAH=Q8&$$@@l(PUqG zI-Z!8nvm>T5U_40RuY*_F6c4YB2Vpqpr%f9p^MG9uCCK`tfTb|Bef#Z*iY*&dVYtP zTSUH+80U5$duCeoC~8)94AM>8>i&h?Gu!BQZajnDKR*ZGs2M)~i95ekAh!r-6r#;- zz*j-nQNqR`8Vz9n+g@Ny{PF5MP)BHUS)1EpV_}Ecu!1{ni^d@>;5{mjQ&gBomp)On z2(kVcvbj!%81U5v=&5LfA^;O(>FVfI6c-ok01#PvdO9HI0eZNP9)jm-SRQ#-ax4Ow z$U5BzA(UebPvF878F0n@kh<#_6+%w8*X|Wq=}zuLx;j&4mAK!C$(%LfH~Xy?@HOb9 z-$<-FZ8ALU!LgGDKe$oY%DSEkv5gv^O~Z|vx}R=zNB)TSp`2yRpY3~K0ok(PW-wzO$Q@klGs{;WDDF`>~lCkK1EQ9G0hka+Fc8TVa!QL?(mRJ+vT_fnIN zebu~ZYIQhTDn@&VX%u3^5kWP9|ADROTInj!sUI0H?p7vf@0Z|0%~|PH%%%cJkA^UE#Jd%O8Q42aeTc!sFGogm;%T^*e;_K|9w zX*6oz?VE6(n&V~wxslM>Ykg+|y7Ap_?_Lz201pZL$X8K{+=+d_|oIo$53%s}1 z=Q!457U%vcc>M_LHft=$bARw9-mKbF&kT4!Ud)|SW!}OH-8FD;>a|wL>64bfeimWQ zn6NlCkm|bDm=rIBJ!Gjc)8$q!w}lk_l|_6i5j{u}VileUZ*JOa2ef&op5}GS2cgKt zi0n>s_CAFBhEm$uPY9ERlV#}(r3lmTdVNA^YC@3~Aw3nc+AzKdps-ptz{E&NP5JlAPUJa%PD?w&yy@&~jb=;=AlFLIP#2xJ` z%iJLoCp2ZQD8TZ)7?o4`S2ObHo!U2=cdqTqLBayj+jAP7>;hg4O}(3`yPkI6zW3!A z)O)J?hVJY4jYK~{ya423UOWF{32<0eQ~({>ymUxMPw)MgFJE+YbjDfe**{%Rc2iq) zw6uP4Pl*nHVHV$=rhkU9>2(=%1Lq%yq!pc8>R<-7N`C8`lf6C(I@D6*HI|R2Gdm*( za$PsCDynF&i@KXeYF`;7hCym-TjGY{i)ifQkf*g@DFuY>Yw*D{#7#!oj;rEN?Nt3u z8PM{bBz%9+i?rF0k>dtLLSa6Etrp+=q_(pg6=4E4rihw#t4d!OiXv-1;+6W$rZ@H(RpYaynY;&tPEfJF|5I6KBu} zPIW<2Bw7LTjZwdAq1*aQaO}mQH3oXGMbyhf`RZi%&c~A|DKuX_c`2s+`4llyVg>4$ zRG&!p*ztYBHdQ-2olb>Rr|8{ALNWZPdmA-uH8Xown&9Fu*C(vW(-1QpzH_=#qnStZ0~VP@#)AZ1d(+lI$a5sn1l z@Cu=KeghiYza7&LtCqW9wx!uxZ5) zi5`u(4bLm}n;X|~Bxpq{H{?|RN7@Nr3Qf`B`oDv=28j`vDOiyt-nX0RkvT6QX@ik? z8toK!qOH7QJwgw#+uCB{a|CYxV-?h$CUYiJ^kPwtWKo9tx*IpdhRPQJ{l&aSxrxTv za7-p`NJpZgPW7d~2VHp!%0>QJ=r*(SH%d~M2c*ZR@IggL)(jaL{DSYI>_ua<2k*#H zJRq6rq*XUPkhqK0H=%LRRawcDQ|)!!vR`vDyvKw;P5nvTphRNwD#lswqxg>*79Q=o z|1h!`4DEhZ1R(ZJ zYF`DtF=F?!WSS93+!pq?f_7KE{~Gh#ud?jE0%A-)AE^7T!4#PR|6VX(u@x)BO4nIy zWDHz=_B$I6xt@jBOvSwJb-$_K1T|MRqZ|2vQ_tC8Vq0qX+Ld;_DS5h79bA>zH$FW& z^Bu|0=>dLf@STu$jZ*7dY^PzJPnR(Y)>~r?MFh+?QZ{DBE#3FDemE>85yZ59yQZ;! zN2d$k&r>wKFhB9n@@O;YhHsTVGA>X=M^G^@!rZmED)FkckEwZySvasI+iu16UQI8SzO z0Sj>p5V;QwH&HW>&;9>{QvrB<>JUGn+Ekxttanw`7Xx*cWzC+$-30`B&QXhR+gltV z(h_N-pkWMsb^YFk`E+#Vd`rf5BY5?6|HzYtXS=gH>ZDbxt>-LoHQ6UdSvs;*E3MEy zuum6?$X|%G8NuW6V}N8+Vuyrdg>%}+c~7R)^M4HRzrNwo?moXaAnEWl z#+X(6v?l`M7+Yr?W`{=Je;amL%1J8DxlslufcO{ORyX>uNqPtc1?iMhqq3%NGxFgL1I^6v;1AsC@jBg) z9uuT4cd*ttX6k?5djoDe{xUV$lqX5=)#@A_^nBI3q4XD5;YMw%Vov9JXX+`-YHMDt zrvb7kneNfPcWg8tCS$KvpShCOxViAx@+>}TYX+TtiHJob*V zvTjeJac3vt#N`{V!Od#rni;=@JU`exnfs~Lc3h%0acRfPXDQ}#Z5g$`Mw;b@Q4R?B zSmB@0d=%?CI1+2cqbuDSc<&VGQ>`o{2T4*6fqtu$;JKnzN`kfcXP%bpsJIsHL{Z{; zOJCaiXui=OBzGZDWI$r)SFE^Ppor_se!1Q85^Gcf`BI^@&=l>Zt1%+K==eq{TU~&_ zatiwmcUXU=a(@6PGo9THLCejOdRvurj9$we61NuD34;}@iBtHFzD0$v!3RmNB|r5G z1xGCF_CDF$#FlnNt5h+#_YGnv-y`C8L3Y5;yY-0u|ZPa*(EBIeZ5gO22gU%WIh zK1-FD?>I!Zm-_f(}nc=m9sPnyEvvaX#&znV%Y-2*GZ+MPlaFF=G<* z^R<_MFrIQ-GwpJ-V^P=Ou|47Dt(Osg9dKF?YYr9dj-19rVjr zCE?LmwS&yVfslyO(o#m(g@EBuoho1x28z4s8pM$>oQy7R^Xe}FI4chi4|r6Ry`iBY zAc_wdLlO%y)O~B*iV(5@6R}SB9qKJ#eI4z#4c`=O3x}V;jt4n4tY9Mhzk)aO8p(5^ zxLf)yqWKbIwd5H+&t(9pN5^e_MDMSocaqUNrOHvPkodqcZQhNF=P=Xh`G(AGr#G4n zQxBG`KMy=IhC5{Jz_D!-yuP{;Qo1#BcXkT6`j%T6y7yN{BH{3u%HYOk~$?JF}Xs9apyOza}Mw44*s~M;7KeVD` z54*g{lN@<{t7hC|;}xxxTqNh9H}fURtm}`X23KyF{M!A+cftjk>H^y82cc4PV*eg- zwo;S%U0|;xWh8mW)GpZ$pKM?W%@0mA}ZR9=&yLScHUw;Uc^(D~7QqbLtH6d*=-7fZdDJ9S?3 zx@mr|f3LE{lHy`oNM@MDg|(>Uh$&UF>7vIb5q9^NuSP3NsZT$1q_?d8>O;K|!SKZG zEiEjWCC^VuX5-F4Il z&q3Z{&SzAF(njYycdH4fP0Lhz&{Xc8Z|K*aqA`f+PKxp}uEIYS-VwPCf5uu5g()-d zC|5CFVg4GZBh1)8jPlf%daW`ld@kj$g8+ZvrHuW3Q=$TZ?}6$DXu{ZVO(s;Y}`jyYxyvp=34WfKLH*_4>>tXpQvC$G#U{{-Ez5gB!@ zdxdx7MU*&2IN+tAm+ll6K9Uyx<&NUYB=<5_jg5FjvyX21ETOnsGsv4EeD!n5FleWM z42rKvDo)fInJEY6tDCudN;09yPjoImUtFLKS8eth+-K#!(LjC;fUDzf}$oJg~YS>xmeWO*hMS+(O*#7W$BJ;nU=1 zo`2%zl)r*=QgA4jpb*vUM)avEq7S!$lLe@$DaNt7{v^Q~C}@?JP*r8T#r#+!M=q^{ zDLc^d2~l4#{Gb;qGYIE4%NG<60ke9|j4dkqvkl``+`SYw{~`ay*uk%>r>^Eg{9PCM zdHOuY&B0Z6ZVESphW(UZKo&1miCw0i{q;ruhe+1jg5BndV;QnWb@Me^f_k<sDtHm` z1@(ukyU%gc0%@*_n&?3aX=wLJ)CNN}w#%u=43Kf0BPZ={W#3}TI)sQsD9&YjTKlH% z|1^wzzR8w1#T*(l-nbaPSa(=wYs!)3r@@l6s+JfFc=lpkTXX$hLx51dHfj~v%A+KZ zh8z6DUxqsGoQl=w1`Pp*mE=eJ#9jfEj~Q{~fJmzr0`&=NyQJ9qJh zEgt4kW;z>p&C%7aOca^!pz7aX|CJ>uQA(HM$V(Wplbqc)*6HpR)j5Dv_BN2H0}l(c z1w0wx&DVklSq6ZiaUn#k`mi?4@j=W*rN!DMz8xmOp51si6%1HWlyRE?+F z`U6`lDss(aiNFTLS?=F&hHOjh&&BPf)-2(#j(HtVd@httNRIa!q10lENm+0U_nl*7 z)Dn-Lr7z6Tj%(bbDxCat@n>3QqZ6bYzq2c5jO5g`Jp1+f4An{OsTjg znxHQR9(^vYs$e_BxfIw?MuMB$4!bZw@p7j#%3K~6EolS}r7MG!ggT~M-~HAM-#6YT zWpd4CXXmd|7e$4#kx9EQ!Oyvz);pj!LdR}TA8~&@g#gQJS#A9J)ACdh8;pQd-Nh{j^DA=0bjie{9%fZ?m4`C`drol81Ih2I1t-_j@?EQaQZO zkdW8&v)U={Cf{xrlo1yCLNCR!Z}IUTva3R#59wX*Gh399pWO=^HhHshi;tp;^RtJy z==f3$d9^JFd#6txn`W1Ac5p8(Zkk^^qlTItu|SXfcXp{rhrV2c96_*Y`MeyiTlugjXefBl?bXy zmg^VL8=EXH;2Z{7RnqNiX_XNBfpc;G+_#Y3b zC-wpB43M(#h8C5Ip3}1ycnLbg7rPgI1UP>t3c>$okPjPRjnYP?_$)KV-|h=kK|#M5 zTMj;QyyP<6QL84KZrAm=9{e|l=XtXji@$PqWPTC**flV3>sMwBhWeb6E>>GGs=W=l z)Pn?P1nIm`{n~YU$evRG>w-6Yfuo4mmsGwEfsiF_NJ!Dtw5T}Jc!Z5QnSXBgEG(~t zxdI;Umiy4&Q)636>Q(%6E~Iwp0U?M-Rx{812Zi2_{e5+>Fh|mOYG3cG0woFiY-^-0 zNWy23k2c|2=++FKc;81VM*GrRVX0CPY8b3@) zmeMH7V&~E+n3jn&6Zo)$6R!Xc4S53>EJ-;~5S1mV|MIB&tMf0~CEe99*HsG)O>{I;YaGyxu z$`!gG+pR!gOjzD)=RwoE*dtl1g8_XK0qMJ9solUEtda6{wjVLI9Xkapi!G`J1zOrr zTOw_vEiu>I-Ekv}hYQ07upG`_Pj}oS1Ag@PHIxUD_OHsV*wJ*<&Qu@tX zS3*-D5;%wyw5|0y_HXRJCg<2pYhHtY1)qSj#4tv(a_ZLjPGYcF4Q*nDdmYej&C1PY z-WvFV;2bLlpL2jmW6sFthLS#2n%S-j-&QL`-+_C}IO|8QCfkpi&i`$jd>eYS(r@KK zcc(!5H<0Y_>>@MS>~?2`^1k50V;i**Rs-oUd9OU=SAl``7PGC$xGGXbd(Dr92c;@V zB8vX4Qz2n)SgPBwHSh$ocYrC^l%NwJb9WV~oBoLJ_blG);k32|6nXWN*$LrpvcY+o zF#YQ~z^HlZ$?&V*Cml%{Pswe5i<&Y^B(~o5!UYBROicY|_oFQ*zUYR4cIr4|}jFk5cztvO}^1a}>L85PgMfl%hT^#~8c|6P}TbP7ff3{>LcqX7F1 zRKfwEomo6(76mAgxYRH*)qHxktX!QRGQ1;K{MC*OIwJ#4#ce_-aja|mTVOHI>`_I5 z_cq#FtHE;-$m1d6R;xCe)AzSW@}&d@HyVY}M|)0t=IVw%Q(5}qUdE6jNagnmkf9xI z^JqdjtGkb7zE%PsM{n}?eXKEcU)^hYzK}k}VWsc^ z9Tj-R3ONh*n2N3Vkx4MD{#|UdS&Uiz1u*ZLwppIhHveX_mve0!pji#@jGf;aw?EhP z^2u(|OR@aI(PPPR`*K_;+J<&Y_sQ+vm5=+A4}kb=TWd~U}=fkS^EbV zw^tfIMf(wIx?YV6Wh4^l>jybefXfje-w$Zz1{RnIM_XJ70Y}srh+NKkw_|4$t#T&l z$IO;RbBK6TY;f%C{yHWbF`S zO_O>g!t@HQ%-^7&H_QST%T42Q&jbuobkZRON{6dHi&V=(hycRm`W?wgeU)NPUZB6@ zwWDd`y9K*YoJ0IPFkY*j>B02;D-7FRJ^J5d6z9P=iEm2@O_0vfo8GvU`EDB<;Fhc- zmjvSeV8Y#S8SM;3$%wi?`%=Y4qcE~QPCnRjY%39Wndsu!6LIAZZzr(g9I zzO%Xa5#JdI1>Xz;yQq~f;VrTY6+;VDFJ_%$n<;wP$@O%k&qW`3%>MR~leLoR7{Y8M zf9}*{ddZZEmcj%WLQZdz)Y6AjhBvZCt$ zF8fx2EG)0<9(+#Ma~1p`PJ0M;Ebv2SV%=db+t&Ixl+Q;0^S95fK^b?z-bs?+1`2gf z+Ij=ffrqPi61A-ZmeYck>F&0Xi#<&zEqYY~{Tp{ZrpjX~&Fbu` z&5@jtW@$-9!lCDMJnHI$2nVG|tE~5gK{?laOwLNkw}A1?Ot>BxIHV(HG#1+*)m{xC z_L#Fj9T!% zmC&8P-F`<9JXx{dkOrKL=!yOZD>@gvFk!3~SZLD~ThOzs{qoNKfj9)9oa|t+4F@pd z0lj=zF|5w(ML(SCCkte#!Qlta=EX&?0}f%IwY}~9eAd2)Xwp(N=v=tsIh;z-D)9o8$$JS)KiJZf=e49{_qx*S2^T%XS>>RdX&CYjTE`Kbq zNCe!PkWtF#N`LVkphY+s>&f`)mH(#buiv_IR4B^KB=Sa|P+8%G)J|e@G9!uv62pL# zbCGnu4zjEH^x+Zfdpu{duY}!;L@U>{A}b0@*89_R%bws}9`ZX?n<3tj>dJTvP4ORF z<1OT0tpe7{^0)jdDr-l%`EGV-j^7@a$>g(vmJGgJtO^Ih%s)2 z5>@mLB49wAFb~SHS0iN|(b~2N&W=B|;LF z)JMh$i3=1d`0Ac2(_*@|SMtS=`Gt%KddbIXp^2L!I{iwx_d4D%nrvY7Mv$~@Mbf6J z%QFmt2NHF`8asxh zf|0BAkUj-CszZM`lWNtN9xW_Cl?2km*A3MVv>DqHKUyPhgalCrcfk*3(kt@m42 z8MTpdULFo(;;u3TzI+%+nsxq(s~wI?63>oDxPxe z|4CSEAtqqDJ!Ci2`{n?D#DSl}Q@uiSD&`}QN3I{U1Kh3oI=Le^bVh->P&foEfJ3W(&!aB0d|ahzSCXne+)A~PT8g@Zj%)^D~Fh^>M`)p&#P+T z9u^-4$B%KhwAtE3x1Om?t=KoeVs&ro^*!3j&G$N!Fz=6_8$t^iM;F3OD16lmTJ6fz z4}MubujtpOLy>oYM2KPfpz~)a`IJFW^W(y!RJAmq|ETdJG}&|AK&RR zPM;4?&jy5bHb5Z$AEZ5>nsc~=u!+XAY)iU!wt8E83(-=zR|2SxHD+q zm6~2tLXx>>J*gxj&1~XqBSg}jG{J&=X0uTV;Pj|>@3q7Cb;8RmTsIp%b@8k3veRNN z67p;sx>Mo@0O+*3y4qV$oB(8MhqoF?08s=pGczk3V4Pn3YLM{abhut-{}-}6~v z;FRrNu5W%wA1z(OAlkf+fcees^v6S9P3Ca@;aU-){q^1&~1!dlU z7&?nhsqKyZ!18#Bu0^Rqv0VhCmAqJwCFu*>K?0r&)!&`_X_v;W-^6fB7M4%+Q%t3W5cFyd5eMWf-3=m%O}Zo902~f5Ydrw4M_SoahGIi!TQ#YgvDJI6xXuD{ zJ~?kzulH?(f3Bf&D`+?L-ryGAdI@vwNWc(t!|8XrSeX(IVotTC+|)7g5gVr-c)!J$ z2}9ZQbAzU8j=auJP9q1}S3v8|_#}w<(AVD&oX5M=)5R?9hwpzh%e7X<0WQab03aZG z<$z+&rLj!A{425S@C(6+`aB)9`P=4|D0t4hf-I3QUJjGzdRt-#JY;cSqf_0!APQ8L zg8Vu-%7Unigd^U%V~>eb036x(;3MY?WQUhC4cX(5n^AGpA?`q`HPY^JG#Q{BM|d=^ zr;@)@GT#Tq^GVc63EbIiu5a%1e79xq{z`TiGSVsVXr1`c(jc{ULQ)$aS++b7K&c&p z{#(2?_y3!JLNH#5x9tMCSEKPO&nc1G(q9Nmana1uCHHQN7;~v%kdwDh}Rm-!(?_T^RUhTKi6i@Z>yts+S zqo4Hl+;rWSx-exbC5y@nWlcXRLc!XB-FdWo*#v)?4g zo&c<}z6vV-2tX~^b#Z6SUCV?T+*etR8GO0dLe)&DUxYBx`yWy}^Qv{H$7$X3vXhIj zf>XaA(RScnhahq|CG4P1yx-bik8OS72JX-1d?5+>!`MXkvX7^S_$GY0JDD){DEB+i z+xk7_*p&F60Ak&$K><|P;^He|kAe1k;D!Xq5Z=y^u|JCDr}NbP`@ArAE3?&MV)>LP zKW;M8Pg?RE?JF^mgp`B4>tBaQ4oVPYL1Naot83I(+!XLHJu3%o_=PpThsEiiixm#LZe(xMPpLrl^JuV7r^=%@Ohn~ME$(9$8=gOAJ*+&+f0 z1sI;Wtn;qRxK!#kAn^;5DY-+dpsbph-e0Vt?DlH8+HWfJ(|p$n#&xDWN{fl{^`KGH#%uLAWj|TU%TJkHiiS-p z3x(l<3(AW+K6w2E=g?&XFNq}TulWj6Rat-py7%gjn*{Fe%1DY@5JEm&b}F*HVk@jN zOj{@LGtr2Prw17}#~~r|+hDsr6~uU^n_=$FYN6FUHL+RM%ph3Wf(XUOJ2l42fAYbS zU7ZnpQL2oi4s+TvhLGj(Z|8}8j)5*0V_y*9ttKvz#kzTzh~2jkp0H-WCP8DG_k{70 zdYOk@*1qd(QkZ-=DgkB8w%QsPzZQ0RYd0H6AkZtA5X6j!Fe6xtf1N=U^!8BSX{YbJ z#liKP{DNr%8-gpT1%fb%NFw>3UqrOL?Cx&j)=DgJW0%UX;630i`}@P=+krv_ghl`B zm^eu216JQrz&oDsMqAU-7Jr*D#SPu$NBU5EPdP?w3FlMYVH9I@K5Q7K196**iu_63 zjwG{Xsx)KGkOhe-J!Mw5)9MN#cH1rh6?64$(DL&aeY}Lz=PwYA)rOk#&r$H*zdL@8 zj%U}_z*mc-HNOgszw+&48Buw66?bb|N7-O@R$K`hfCdQ$_lzJTwUMFojZ1WU-Cdm;AWU#FE^vikaw*EV zb*@LbA&egVH{r!pIv`3F!}$wtT)Y|L>}smQxdN7H4PYK#B631r$~e_3EuptG+>^hqeBAkWY(3tB@*8={YOwzlTR zJ&ACBOB#9l_gR>8Qmh^6+he^~Nfd6&m1)X5PfMX1c=8!1!IYy*mSi|7ZLU2K=11O0uAAu-ApExlZdkj(Spi8`0Rr({{e({WfW^oZi`Nv2XRRy1)KH z?arFpwS5!sUTVmmmvdxumT0>luY2=zd$2}kv#H&#ekTkW)T^AGwjJh%Q(i4`ed%fh zcGk$0;IWC&YgSlz%aj#M<4CsxkyI9i#b!r+-9^v=AaDf&nZS7vW8^1?C7Y7sba#w6 zBCVJCdk~)bpKC+JW?K7y)=1-Sec&SwX|H_y;o27oL>y?Yzar0sEpfGgY=fM&w|^fR z5;b)(L4T}gy%rwKwR?Zl0iaG>&&7ZcU_eLxzm5nv5dQ;ciK5jQ>=?1@u(zteWx!QV zT4zxz`>wf$i@)&j-_&QLItkR*r-?&*p<}(U`moke$m=@5cq@2XeypS>xCCz9o7L21 z>XTk_2>k^Qi9BYaV$(EXPgnf9auN2WQLm9%d*}}*lmJ;5@b_S*5UqgEFAzxO=ubB6 zBV;+1?2J5vFSo);#Nt&mYTDVi+P&20Xr+O0o3Gb4PSl9{DA-0o!nu3eaarQl%ZzoV zehUi4St}@{(3vaafKUpU-CL_kn}PxYVH6Bej#>}ERC&4^N!||b`Es1##G0xY#O~EU zm=bY_S|EMA_U`>1s-w>hOVM5+uE(6>vT&~S$9*$L0GbZUBrvT{ZM#CYTsiKv^u)AEZ^0Ao zLgpl2MZ+uA@pwMb_pZF6rPx1kh78c2V_A1_IJdrN_OhgZ!>0?TS=J)Fmp&H4=(PHwnt=>CX;dd%I9)1+lcdy~*|4z}RrPxFNCz8(s=F}-yOa;t}xEzbpDL~F^ zXv1Sd$fq>;d!91iZVE2^7(gqJt+K2WO_WrMr3W8oP1pNaa*kHOm@*aLT|nE zQ3K}Y3H*r&_sfg(#<O!RLg?SPdHC(s57U4px*s0k0{oSMsBhl zqJs9z#F-4X^$j$i#mh{Z=W~HSLzv8bUmz$|RxA7-3M(n&A{J;1|49EJ_s}VPIE5V& zehbonj$5l{Fd`j7-_2-!s-bxQR9=YOk5bTSqc*K(L6i7?a&Hsys_TpHN2g(;N7EwS zIQg)(Amu8Qf)Jd0bpBN(7dQT$!DlIW@zBC`XNI-YY94)*@(l9{$oVBVrAw@7-$u{R zy)L}_?*DOh-ce0p?bb)cK`fx+hy@5LMN~jg=~Z-)8Uz8QIsziShnfWJ3erOFO0SU` zdQl(-gwP~FXwo8t5C}D)eNZ z-L1c6HTY>q;^&-O*mZJlT7ykW?Hc8 zwfF%3)#1r$k?x95O$D}b8%*mr&N4$6)m(J3B^&zFaZPQGpuY}03%jLBm_k^~vy22< zjvEM8lu|3H`x8}Tmb^?wGz543KCzp-7Xw^W5cZ}1z`zcU1!qX< zW}UG=FRjId~wVv6NWZ6)c;wXO^+IlK?$v z1*(GS7W#tMeJQ~{APp-)W4I6l46snm*}o6J`wy^>ne>LhzfOu-ujPYG#?aK+X1y7e-6uc+Hs?LdFJ_P!Exueo^wbzLbpIv>gv z75n_MVFxpan7;ckU{hc9l=|!U0_;Z`j$ykulUAHUjT#y-ByA)1rxt9-Ur5AUzbDS6 zg|IBu7M+OLUmlexbb_R2z%tjRb7te#I;3wZ#QO~DtUTb8B*flYFVj{9lssx|e%3?* z1ln&pp03v8e2r_NPS{ZO=Sfd3EQjJHDaB`Z2w44*#l(sZ`=%<9Z7j1P7_JW@nYsu!Br1#GA58d*hOE3Tk}2LFdV>(aS_2J{y-Pq)q2; zNt`>`cDJ^_sa8^mM?y7?C)D1!Aq%aoe8n{2T)UimN~UJd<;}iwY1-;7a)_OoTZRNP zriZ60!A_6)JF_yIJnPWd9naJw-%LP}?+UYJu=QcF*m|qa;H3)|l8xi~X&FO-(jQYc zlkDd9f%r0v9Ub+IR(+>#i+s@E72Q0PHw$k>g_K^3&IaX;^18YEvps=f)|F~I7uLbw4bKYVH#-GTbVwW+$i|*|kg;}ePy2yfDAZYa< z025XFQ_mv(gvfN~-{>4t{W9GO(bVyG5U#18QEe|bn6`zh;&S~BR=5+ZU->vt0+mCJ z%32mW2ox-NC@(ge*aA4VtZh%2RMR6C8i1uS17_|FV+i}b42Q|_*QBk1?*>jpI{1hB z``646s8of71yX*Iomw*IqFlSBSVSK(NX-o$17(aJrQB=}yJZ$rJfQduZEWr6;z)@f zI&rDTBth4<$qmrtCih1&_C}D@JR~CzGT1%u!Esfo1!f6V$M65C`r_S&1>19WUtYGF z;^4;taaPUv$svZB1^0`I3%OOGK~tfbE3sIySgqV!eCp^@cUq=}a<*z(bDMXVIU$Xd z=jf2XH&oO7`Br88e}F*N2mStoQ9rm)6uIv6kjIy=dF5#HirQYAnCdDIc>YTBN}9-V z9TU+2uP@1y!#Y=P((`AV4l2bxS$P$;D19;U)DJzo%9vMUDySz4obe|g64-AP@=z_9 zT-Luz<Ln_*Pi}FelLengWkum)k#>)mD-mUag;uJYPfgv6Q$+SsPaZi2X3`cWwAAs zoxdLMJn~%Uw;26*GKkpc+n@)M%~J8)@wzQHJI&R@2hqk|+(vie-dnM^YY$efE!O3f z4nIq#_8>nTLP&@tiKAjGwz%)R~a69k9Q$eQm7-sooPkmZkB)b zK$@pNdm)gwfOk32xx1HUBYvizuj;83QQNg@X>@L*@@~drxqi#655V-{cB~N5YwzIO z4J$Oq-B?K1cFkVm{?+!^x86Q(`ZFka-(wdsK@uSJnP3Qi1bT)9)01D@6n>@@hEty{ zk?-cM7q<}g$}W}o{)V0s8huYQaJJdvbL`2kwt`4r>)`6qj`Xt(s)fr)3KIvU=Msjh zCi3u7kq2X&F&HoygE#J(uzUZ2w}3Ro0CA+6oxqpmTkt)hk*cl^>Z;@AXhx;isdavse#%8_;Uw4dZ4a2JVHP(MZJaHH0T27$8v^*bt?1Xl%!vXV3u;grgxShY%HI2 zcmFLP4+h((DEGB?2pJDQL!(I~!T#?^GfeKlIsXknkna1598&US$lUMnHKeLNXC`IP zlkma75zZ(A?(>i-&I9RjuO5|{nwSJJS#w^c~EiF%}08SuG}cwf1;Tjt{L8Q;hKL%Yr7cbWLuv!Z8H>huCv zUODL`^N1MV)5b3xIwY!Kfpe|auJ_stgQ8J(on?J_l^tEP?niIUHoe?`dic8@+ZBy3 zlDa)dU(hV8OU2mD9C>G7PaUJp%ox{m9d1#zG*y<`^XyrvW6qZ)d>R|(B%Ru8?z}P5 zqpHGPwNw%(lsEpRp(`p7Zk~CtYal~DB-A@hH7iGs1iydAy1L5Lw^4!1MNFY`soTB~ zVN~p^qZ+L&LeG^oSN%o_qhu>A&NS&FN)+^)qdI0O(OY(FZb}nc=TlJV+rbnWVKW-x z1I4jhtIioAoD@(mF*#=|dLrIC^Y$M!lFWsVZZM5MuP}c9&SyFA!48B)_#tqu=$B77 zG<8K*?gn%X0l>+Of^8LQ2RV5%ZIikhQy&yq&)x9Z+FZJyXwVR}>)m99)lO(y_Gxni<*{WZARntMqOijeV+$|7d2A}_lKynFdmEtY%S0kp=e+Nfk)V!H5 zBgZ?l5j<%(WA8a1TasGESDVk=Z>usaa-m7T=c`WY(0EMqGv^Uj8S_Q{Ui({FkO~Wl z$Mb$i0HewCb-RS%s%uEF67`##J$RdEa1(&g4=FoX>IHjAu5_6Ir4*dH;FH7lG4oYx zQ7+-$C|X>GgYqVAAwAPxY(Hg7z9DbS#m!pJ58wt_nA&H`o4&-}hOM)GjB>LN&im!c zGq)*&_UluvFF}BIBRVoT8*F-6P7T2STu8GCTamvSBDLeGdd}S{f`J4EYQQuE;H1h5 z=SWvU!h$is<&W{gfwiNHx7tfCHn-Qz*~aPTN^#XTrHQ$Jvvp0*T36cFYu})hO(656 zkaYh>B-8wmFS$BXw!aGo{!_@^&(^3&>K1}(Q*wc==;enZH}wYgAB+0zlqS7Q*AZl% z>v8JW2HvU-v|`pMX#R3Sn%T$s3a;<40Z!N!Zj)cQq1C-=zzIK>7ieKwfAog3k8A$1 zfM8RPipAjC26%gZ)&B2)J7Qe^|LYjF{>lea{~bcVjGSfenlTq`8kvhl=zTOGakYhV zrgO}>d8LP+JYi1aWh*Om6L}ija380jhPHjdpBVM`R}m5A!y$j4gP7^~=L++;{;BsN zkk%0(90i@L0YHrbvdrJvYwX_?cobm)57PBS10JhogtX08#0k0KQ15##o=AV`r2O~q z_m80wiXr+0OGxY?)H}s_G0y>cbGApLQfS`PK6Y(kAxYN>tojApJ1E))N6EplVMz^k z>mEP8b=AWit80!9h6{M?oe`84?asN}N&YZmq}{UeKxB@<(BUh>neXeJ@?KRja#c>$ z=+z6v@L>&@sNlGRW(r%D&&oXk0*~fNuCr6$H)k{2Qt=B-w!ffE@*Z}54L^0(AW7TL z(M>q%rfF}}*iZrI&xGS#j{pV%k?UFrKN+B_+CuznqbK`KX8G;8n-)*>Gj6WOm3l+` zKJXei?u$+?GVUW@J{cW+yEbdP;ib(KUlyi|jD($vLMd(__@5Y=VAK`4!@VG+nV92@ zz`R4by0+O3gV^4qCXNQ8bZ-d_;(gy>fzLFYLFyIT9$uRiKssdUEp)CWIZzn`R;Mk! z;4=g!?%U`A$wZEPuz}xG0Xq`x#-urEXUr7t?*05Y$xELGJ6G4JBosjriIRtdU^=|> zUD+#V5B7@ugVhq_M{5>#{fo`6du9xuPa(grGeL54a^ zzXbdFSDYR9z4c;Ci0SAodC|_-G~4UB%V1D9?&tRj$}S#@tbleBh${-+8}%9Pt3N;A zaucIUwYLr_Y)T7DH5Sipaas=%*br7qbcUJt6-X$bIF>az9K7WlHN>qQFa9Q1ddK^C z#*T}bk}(FR@GRB4{via1WSsxtd>+}Po>|y=^-9I#>V27=edfvg0m?+>Fkoi`P%M7v(o)1E&;At8K3`#BDFt)T5BqED?3|V<-p^*@(PJxz zpu&1kFPpdIf4cO&*vHm@)oQpU_xH^*dFXzI(%qmSiA?DLes-kTrL!YDPOBQ}>2Ys5 z{C6~L{#CBfM;4X-HAJguIf>XR`ZA8hz>fBPqc7lhf8ckgI8|3dGai?iV)f>o`JRiM ztO<)bb+#@SYQY=cB3zk)9)(V9_k6zu9WD@fA=Z9bgP&^<3j&C4ZBTaEcL1Og^Bpbb z!9#QxNleVoE>@17d4G5Bj1+j>vTcFBmWK?XFTDX%21B%jJVpjt6E4gP2J2*8qO3)r|{0EC-0O`!q|dYOlgAv`=P@jPs&F(dSiIWc?whBYILsZ zgb-9}SY3L{RQe-#I(C)^wLcJSCxA}aec2J~bC+(!gVWj$=n)stmDGl~NFCrUbYr_I z(Q+*yt5HFUs{xxBHTze+J1)y4-qx)f+Ih1(C}MyTYwHnmsP%+(X}cM_TlR3@2m9r% zaj5X)`n{@-AAva1do2cVmo%$uJQkaNw2*-+<#nHJC!V2lmtRDd)KXlf&&0S_6Q`4! zBKLAOepm&+hlH9qR6J%aebxKGIb{L&zyq1Z%B;^44Y_3N`Jo%9R)ciKy;j_!U9z$8 z;=b=@3CRz~{QRJglPj>xin-@PN{2KYpcqzl?jej~}d#}1^HY^Sni zIcm{?=-uG}`M_HuWg?;ql-}h-so>Ca_8P1;{~4JEks>*Zc4BSLTsr%RMkDe4Z&XQ4 zOl;%pQ7KjpE=vepNR_VL7<(Js50TD&|G%5!!a_i+cE`07kmt3`4(;7fc``ryBh^m|X(lAvT*{YsvQ*@8j;D$QWMXT8M%hEQFFYQ)@vmoc^glgV z_-LaSg~oX#^}w@gg<>`V3fmRPO*~=;ypG>9Hv${?pG~f6;Z#H}fLnRFIp)Llu2(hG z(@VIu*ju_GkfAN%toE%q`Mmlzap|pM66SRjpO5H+_Bo5M?^}cAQ0syx;GG>ELp=7JC7_m_u7k9ko4^ zdVk}T)Gl7w$;qN&U_Pz|*7!hniTIuiv6y133yY4KpKxcd4ywO;xz%M>IJH%5HpO)O^MjkdE+?^2eR=`!`OuK1|Ij@r@$iY#*G3fZYpl zK2zCVjGki+)DaO8FarFC_?ZEzYCH9MXL|X?3%|Bc4eQ#1_FT+-Y}X^zZ#(_U-bqgU z`!rPW5j=+NXZQn6HY1W)Xo-1?y-iSGDX$QbBHLIQZI>FXLNRWsC`_>$|49Jm-^R5b zr42BT<~e2TSNo=K-n=DuiisnwsDUI*xy2?_EyKE4Aepz4r&?{+fjV6z;@lY_liOTa z2X7u*d%5PEbz2R(}!leL7YQh&Z7+XJR;E8>cE zRKNFWG<7wh>6P~z+dRCdQGG+RTlA#O>a#{Jc)mWxDDAiIfyZjs;03VBdfOpRN3I?3vyMa-N zm3=0Tx-HN=^BS^K2HCj@Km?KD*qMV&<%*bBISoUFXDw9liJGm!oF2Pm9_mhP#IfH5fQG`$F68V#I7zYIDka&=E;3YaCGa z6?yrW@9Sb;3Cq9G&f_rm5)wcKaChqODNy+ny7ZZj-V$stU7%R;Bv}sHvrD7cCHMmy zMw>@DMD&_fX^$9cSZ`29p)>pM^EN;C!~RHL*=l--iL=Wdm-&Sk_Wk_nt{U%(q-~Ek z)tJC_H8VX}kK6nNl&e^M%9=e=9%7x~brG*UFYc&cTWg(~FsQaC8X(jM@f5`P(?UJNr;Tr_G0obvELV@FXwJ@c$(_8?w#$Cexx3?- zpdfKKd4=cE4A%pw!#ZBgJ;OzT+%TPT!*h#mc#KQ5{W)E6V&Uk8mt7Jg%TarM6Y>Um z7nzGqY9+qG%I}+R4c*#`*}Gv~&u<~CPA}h^mAVB&@r~T#^wW#q4&*qxO3xb0;|C+Y z`{}C4%jdK3=ddu=W(llV5B_y?Ghbp8Uq;`q95NtZ6&#Q~>nyI7F}a+;FMlt^GiWO< zcQ2VtzJ{kuz+-5(=Gw;vLkIgEdOWtCIp7I<8TKuDi?oSB9yIo|9SO#Jx zYJ)MWHay3#XVTOr6*~c;TA6!)l(Cy!n24D1(~-WlkSl_XANLN&5hj1Cq5EK{-Lsf< zlQ-Hn>$N?a&H{!eO6qIReGa~WsaJ&H71hAxf9pIYG^5JG$AkiVIfSHYVtdvMj}0mN zov18jX?Fl02@oDZh}K7O(-D(vHEuCIF@jh8M%AzNfFO8O+UQ1klc{%O|64q$KV)HS zDFb-S{2#WdSV)gV!aaNJlZ&S&Joz+`k$hcTnu$2 zav#s6Q@88TJ9SL|Mr&sEMxcsOe>*B{lxwsV57hYtJ-rO;Kc^Dk3y3JF^nJ6_(U}iC zbvcytVN?6d1l!M0LLx_lh`R3K00DQgQ2eP#@z6FzQq-2G$deb}iM;rxqlP+O@a)qje@^YR;!Kf$ly$E-EsXpGc^_=*E@w*XUl2QVo%eA)m|VA zov0Oks?R!y0)(4Yxqs?riof_X)m`)lZ@$(X@0I?I1ocB4HlpJX#8e}nuN4=`tUInB zs`OkQ?AeT=tnm{`VieRaZ%7}&-044gmJq;x&tq)j?LiZG1FlKldht6lFS`!)^1QN} zVf_2IgQ}q(5=`Ns%b6iUPx9jR8m!CPO@lp>`XVtQtBwYX$|Q?L&|W(?ZSROL&AJ6+ z2)bv4+}O&PFksj5N)HH#xJLIP?MPbDlF4tSp5`db(Q=C&@f=46L~E>df*IR2*Y*u} zU2s?E;qj4co5MV=ZIt469#si* z1(m&IZD#fOVe_qB>!w23++fp?#Z{_e4syO>g<041=sF1Ka;oj{-RXxz2nOM;;hLj= zC#=;UI--Nod(B}q+);n++^N(a_~QBD8()R5 zqO`?7QPf}E;-==1p8<%wW|KD5VlE{$f6lV;uxWcR)Q zhol)K15?tLD+cO!H3co-RO&~hsNZ?P5z}3DD!Tk{2-+@Mb#IYtF&i77*1u`ge?vew zUR5l0?2N^x1msr>+d@C_J}sxg&RC+>(4i92#PNx)b)%wdfO2WX?b-uftJ)tA-w1u< z5ME=XY9`;*l)7~yRoz1~Ic4_t$l-Lysz3F(C^#PcTs7Y-(hz)wO4x2 zNY@Ov6^P`DO$>Qr9m#gOvvv;3dnJ0~91$fT{N;V5(!vk?ar*FVm+{Vftqi0Yt#JDhnw_R&Iw2vf@n+8DsX%vwfz(3-tr}vt2EcaDhW)F|NA5c?>trkGElSF z-Y$0SRcsac#%w`@2IWPzUa^@&!(_aRw zA?1F1xk22k_of@X0_r7W(nOr-%4*boXcK_P41z@vC|y{>Z97t1`)|IR#VF+7GVMqJ z4oX%7@y-^NKt?xPgTFt^RM{v~vQeXErtNw2z{GfyuN$zc)>E4-OiaK}Fvz>=HdQ|3 zo*?v`oTE)s&x&WQGJIFnt>XeME;xtyW^{wmKsBhIELZ8!>#@PTTzl(kh{vHt&n>3f zz}3YNutaa8DouSg?9i)vGySmZn(Z$Rm}#pF5-~a%IM( z=^v^=J6G`nMOwe={GX)EY}rS(v^ifOo*}@4myGQ#LY|Q>9?0FZJilX@cIJk{sx1GF zEpo1R?8rcMS2_OJi>7Ns|EBr_75_8SK)SE_{-Z%!`a$}^08S0^n1+cyv)_iH+dLCz zW=;P#v${Rm)YK$srlS1?e3x0V>uTQ<(N2uj=i=qu45VqshTPVBe)Dm>x_HT}?C-pj zJy7Ei8AE_PbA(j#=*5!_(2e>}C zuP)AUwe(jFZd$1uFNA74aNY;JH719-0nYnlxBZ>RVm977pd-MJEA7T7HPl@TNk)t1(nbthn^-F{dl(I zrK$i$AwA&RJ!M>XHIQ(xz4OFUdH#G=w}#%nh@=~hpbjr;y~e$c^|o@JAR-;_c0Y@=`4P2qNg|c_Cl1i@Ycu@uu^oS zJxpJ{Mn4>{U4LCnEq@Jo%7GEu5+Lq2MxD_tGx;JgR03W?m6R2l*4gxkzP z3^u0k_k7rS{%ZtZ6O7GW1KO;AOoNeC1feTnEKyICxx1FZ+@&&KB3F3!Ehz)lZnCe0 z)G-rkas}|rs{*(DYyo9j&YdFv(>JQTRP09CR!MnaI&gETJCQPcvGSAbCKXKyVt5Y8 zAUJy`@4MQsx0?}W0;{S{gSHp^LL)N{omjioLTaN{Y~HNlUif$GwEo}Y^_x>(X^JYG z)7-t6m8d*RS|+#mjFF2_IL#KaGaNYvzKh;UN=jN=l$d6H=i!rnUwYod+r$++qpi;QG~mupzgtcRd<%@z^CXRo2IllU zUU&6i=VH|rvrS_X;NH7#ng#CF(IJ(HkJZ`qw(+d*x;h5c{+}aPHhF)?$T*L{`j78; z@4snzyna&^!lmwXGQcmzUF2h~{TFaY)n;@z6j$zCO5e z)J$nVrS4g?B;=>_!qtTrh}g0&a`pT*N>A%+L}}c2_f;7?W89VzwQ}_|+GyO)!f!QZ zRvnqRE}Uct4c2~3QCPV{YT(}(NbYJfI3Z=75pp8op7Zgq+tPL^5|543IX>0lPYA_5 zxv=Q^T~0=@a_Lh$n*7B+NFwEl<%WQ`RjH%iMDxK)ZENg-oKjmxtnf9!i@)e}05%|R zLCb31l36DTQsJrqqBjV9`rt&c7}a3N2F<$w2LMyT92uLFohl>$vf6n5|@Oc$SMgYF{qI4*eYTL@xh0HS*zfvx3dJRh*aL-ixr1Xct0)*_xH(| z+EYxV03Z+xUz31XNZ5phxQ+17WRl-`r_T5^mca$RQ|p%3D2}^IWHGg&^A|!p`!Cal z(VCR1p@wzW0>on2rcRO=Q}M3LH+b@n`ktd1sqgn6Ka_#`1q5u^OF@9mpL%d0r`ER8 zWn?d^l-Dq28BNdmbG5Yjr;`at?_zk@pO)49dHLMIF;b-qQG8*D@=;oP!S{P6k8XW?}Ug))XR!PBAFtqZ48S2HU&Oo>Qinlfb)djwbwbvcc#9;96i)Cw(S} z*k4b49=OnNdxUB;xD4!GtafAYQU?9f9%$%t8?-hoqmuj6k8QnHx=%*W_U~1pb|`Y_ z-i53T&kSga@T4F7S1T#sT6sl2wzGfUqO4;>cZA`)e41JwXp_!dAtCok%-)P$6p|*u zx3I&M+itY|RtmjJJ!@qWbU|0XtoWcO7eYjR2w!kaqwD=!4#B3d!`GXNO4sI;dF8vk zxUQ?T=@#J~3KB{&quTaw*aq?aOsnAWLmf>8C+460yLWQP`;Y3>zz83+r$Deq-}rd- zWhRCdY}~ZT{JjcVQZa(aMdJ(xwRv;YIRn_%n45s5+Xa5Wvl(e6qtNG9lAygVKlcr8 za7~rj!h9~=SB%~D@(MZHdL(_;#3&MHy76n~>77ZU?Tc94<|hs~`_rB6hEg%VQ~8;3 zccETGH7cI7d-ePy+;iR8o<|=p1m+c6b?9w(JyWiwQYuf`a&1q=p7L=_jfG&RaNet8 z#Jpoxd6F~rY<8)Tl2uRTK}hJS>nSny1{`L`M&3k*)vGJHr>b$})482FBt=fV8-*!& z^4&m_7)~S4*u`s>RFd>m0-FalVjds0i?&Pg`K^xT_$+iH)INs)d*ngs<*U$upbLmJ zZ}~XSbY69#&_(|BX>@=ps<108FvmR;T2Oc3*Gb{D z;H({6>a_(c?>IzAaNfoXws-6rAo#|5F0&>~;NABl4e|h1ud8R1Ay%_#bVkw7O_VAw z8+eY?*EJ9+45u%b?3Wv`yNN-*(`OlLWL#;1-(o){Q^aBQ@`-|jcTh;w57q$)B&GQ+ zg3T(%MS=dqCw1PTi%---;L;{)o*M{E?oKz`d+aV(&YV$$cA?kegXL!aN_J0mSavw& z*`2oD@+expm))KQt?zMml?G;&=Kq!5VIN^a>)@hJ2}*WfM6KbG#!XE{6|mrVD6kbN zv8{v8S31(v!u(pjgLB32G zF1oN(Nx;_)7Lo%PJqLhCs+1+yfxtzAbzp()|A=3J9A}UDe3~%8yp^{*(Qms61bP+~ z<$p3ujWul>C6V|UL-V2>|J0?fIoxmueSt!gFLB~V`j<(P<-qzTpkmnXB$&T>z&OOUFST<4m~OjbuN(H8TmYR z;z_OVz9U26>f|(8_fy{7Y60QFzpJPJqUNPvt`dCVx46!agXBA79MT}icl8UMcJ(LM z^|#bE3ZQ#is@ttR`#j(;>;CxqnMn^g9G*EFDJG@7fQsqXi#>6pV^+&#;(?j{V6_+{ z={L>JkX=Up#-}RdtF74dck?}-9E9xbs7Ps%)wYbzfXC2>*XV88!uG$l)fPYOiH3X< z`x2aIEPBWIDQG`QfV1DIj49%J_?zJ~k~iym^svTWWe9)lMO3Py+ktD}Ine{M!0E=l z+jh5sSiyj)3t>U{@WS*k@Ag~fTeiOkA-t(2la+GrMA!EruiJ_eoDa-4szkhP=^P67 z5ITa*Zc<5Fw!Jjfx-*v;TpU|3w#k*Li}*qAZyFJ!WX1hnAxp7WdCqq>w zIccKIMempD?2!`dax^n8;o>@ua~=`7bPbi5X1lJEnmZSKyx>)^vw5Z8Ev6d}or1(T zmzNF3@BBIH^g&k@-!Fd!YMtfsQ1YYAjJEW()r_SHqOO!xFXCbIp;xdy-DlQsJn#9M zldqvuhC~_+(s>O(1m6(7DOv!p#`<^3msG!*zDkO2j!N)Jp3lNi=F&x%ad~6*kOGj} zin)$UK(W1JwW?lTFG4q&gLRA%3v&w`m7#x}gWeLHyqAQ)&)q?ynOyQ@SGwou$Ba5V z%l@%TPm-l|2m*&GtJb?Q4r)}m^2}S-BDkBdby+^Zi!)Nt&+mvu6CA0)sC1yqYOE z=;?K&=at59` z90(#zX(*}ro9vz8(%*bX*#nJWn&bmp7b|%di|wyXqoh*9q}=lgH`#if-Zn{YaQ_OU|};xM;=EHoP{zrKOnnq{fR zTnKO;Tb@A$pW|(4UKf#w{52t%p;;9iY`#?_Rh?#?zbZd7}2gjXMs?Bh0{Tkf*0 zU$&RsBoaNJRK3hNI(MH#O^Mm`Md(V(tm_Fq%AU90E@jSK$rPjB#K9Xh!lCob#yWnt zOr<)Sv1|1EF}d#gdVMr<~FyJdO67<;h1vUzbe_GH!Dq_E`6uNpiebdgI-PnwR z7ZIJ_wPfdz`6SQr$EB0`i`r<84|*A=^xtb%iLY3(s|vSdu90c$+0yofWw~i!{i!5E zGB)Z#SxaPAt}W4?(rzAbwcHfvDnT@culM(h@pkrHcD*OFRwuDY)vHCgf);LLIZay)zY#~c_2 zNC~0$c(NVD(YhZaa;|)GD6a+;=}Ko;Bd|ZMDSpGIBwk(Dlz%WnEX{pH)>rF`s-MoY z;uRT?tB5?Wq;_FhnK#xyfsz{lwenoz@DhPMtYVgT^!lI8c-S$c+Ujbc`DDuUdY<6I zTceTqWsBh2A4b8R=_5T>tNP`R?dVyv#>t^np?6r~XM~TwB5Vq6V_O?v+&^Zk6kD+W z4A?}#!96O~V8}YejkL~d8~wUcKfw+O5GoYa)FuydiM9xlBG;zjF@)?%jz3_Nda9M) zH;K93+Xl>@u(d~3JiE@_eUweE79%C%Vlw&7jHk_G8u#Ws7%)1H(|E)?jQL77w5G)uR!bFhGXAn@JBuWYzN*umai$0NJkC%mXkvVl z${Y{Nx9uQ*+PMm}f1|PaU|nZUCS}W>UHoX~Qp-G8Hd`pELx9)i=?8Uuxqe)9aplp* z?KA3%bQ1=5xAw<^LMI?tfm;@g+aO)JmEzq+cEMm;zc(c0HJxJysEwCDCippbr%%@> zKtAZY@eR^hKMt0fZ~KdX!&5jQN^G&i_pc-tbUI5ba`C5`O$ksD!E-u@p}kuPxHHzDqmvpAl> z)V}h4=3N;l%T$w7F%&Oaz+XG-vbEeZw_kL=odvcXAHc*#?E3AMPHy-O#_46bspoQ^ zP9Ib~TLqwH^p_pJKNF$`wT`ZLrKJl*b(5`;mL|@X1oi{GsY@ie-vihy2>#UZ=@c2E zUjKKI_3E7^GO_l*>LOn=^ftKuGT1%VmvA&y@H}3>)q|(^-!k)&|AgCuYx-0Ocr`nm z|Jf~eZi5IJP7v5Zs#tCbJgf{`2NId;8n9h=%fSca;8+kR*|q=|Hpb*9!P43~B1xI{ zD)!WcOQO6gBk`whbJ$%`$QHiFE2G&a{3ma$-W2bvb`FDUWj|y`B(dM@u9AZQk?WCW z=0OM#%39A*;bcg1M`zpL>=J>*l5CaM3Q2P8JJId0trO`kJ`;(Rx(u-^T6?1Kn+w0a zY}xxL-zkCL-|)w_2DH4o%=?RL7)Kv2=j&-VW&as4x6Rem*wquGUp=44G@!^lAS>sM ze=0cISzXnY#PFJEydbxaRTjJ5*JiC^G^xHpt>zCr*kiSb*piejyF{_%dXu+F2Vw97Y2?8CzC*Q4LpEI;oyPUr%3YB^#+Mu+o0l7i3HNabMr^t8_{Zwn}Z^B;?zk!~$b};YnhE8tnASRhb zZs}%DH_kUu|DdRkcxLgpV%Uq1+%0za)G$vvLOF55vc|Ln;uo-qSfAABd+mHdX>-3{ zA;M;Z%irxln8mEj6NLy7N^G}RiE6+98-`B#^F6n|mCtsG-`9jrFiJQ6gWr>v^d{M4;3 zUgIcJdeZKjxLAKI-;ez;ym;{3o+|bZGnwsRDrEVff|yFR0#dw8$}s=n-Qft{jeD7~ z1m|wuP3c>hpAkE^*b6L?gP5IQ_AUROonN)Hys4PVT%lfxk6}|v)=gAOF zE?$W*pSHA{)dRB6%GzZK5>NT#<}@??KUCnfa;5!)B$|J1^!o=a!Rz>IihTRkHWE7S zHMi2KUf#V`OgFj$<64zwV?EN3o-J#>Y9bTebI4j5SV@2)1}Gum76*$I^hEGlH)G|k znk66)uo?u%{U%EQ1Ccs{q;>aTA_pkFAPj#y+`&yM^=<6SD{_g5S12T*KW89 z^`~}aU$!PmYFroNljveaQXtjB^nz=tmOujQyoO$4TMEazUC@N3!n*tfpM!jJZqs(V z)DTd{Sdi-feO-g$d?0Vsh5qJK71pZB9waJ3N||-N|Fa)NIO|VuMXe7s&F41fG(3`P zcT^?#pU)tEaNhl@UD&0NHqS?{S@LO~-pxag{60_E?N8~7W@Jk&rtXL#&Xp8aUf5&q z@gZ0Fkdu(TEaZCHC}%CB;z#4(L#|&6)Fx-EKFQV$c>ltvS@?#a_uU_KbOl&&%;%P^ zj4aE>7SuIr-gZ1Zt2d$D<4}a8z9hUE6_tVp?K`581#<-{4kdmL^mycdB`Xf}{@)WD zAN}T(CAh7%&i`W8xT*O#D8!AJ{-GU7@qZ|n@piDPu<#`mzGw{Dn|I%zM}kVBS>%nB zZp6UzTZ|QeJW6CU<2*ta`&{Hkt(;f?VA?;5s^wl1zL9mPWvyCSdV%Ddda6@=VRly@ zsdpY|vty&G z<^^n^;ctOaiBeTR;neC}zKeyP)ApNCo70WDK1cFgbZk8jf|SnUs=2EL;p9$Y&bVPjrF-@Gr5Cpb ztv~Q;mfa=o%27fCjni%!kn(`>A(Qn~OSgLy7)EShFgcEx%CgMiwk|NV1gM zDR|?j85soI4B_ipkP^^V1hy$8GN?=l+B!x$$rVPT|%q=D?VqcL;(6c0d~d1yv2CZ}*a;=1uY^(VhmC z^T+8<8*?&HTQQzW+$?t3Mi)Dad@d2?(-&h#+kjq(e6;DfYxF^Uq8Wd3t6<*(ai_Yt zR#kAaLHU=G`q8oLAtkU^^OC(2^RS?U5ikpZkLe+W@U4Iz=`=#w!Ay|2U1kES=fNYG zrLQ}`A}E6nA5K~lybKDJ{YK}`<92j~#!h>W!+vtw)Bwl%KTm1E9!!^V899Po+I{!- z%vp0L_(ot6f~-6kTq{tkcg3%h*zpCx=aGBpy{hI-Dzm$pE{7I=QFr|QMA<{R`a6)peQvCEdWfmY zKD+X4+%nChzHy6`QCvSeQ zo!)=p{Z2WGCsIEZn;PbZ22BF@pO^}WCA~kqJ+po4%FF#r^vf^!%~c1ctCxQG$kar_> zQ+{-vFho7QL(^V=T~a%lyv6ZAB&}*XA@U>m^B*=VM4Z;WJ0a;B%J6JCL5lBsM7Hhu z21ar~;Nw|e0=UE);OJibC^wPs&d7ByWYN~iC74BUZ;w}SjozVsO4U3Mq3hN~Q52`b zoL_wMpO?+4O$h0~I^(Rd^;**SXNp0d5|RQRhzw$Ks0F1C9*uNEPsmXnEuY~!w%Mlv zzmrVCOtO|j7P1l(3hw6i`DD{@DC55KF$kn9yU84(S?;nrkW7%UiJ2GQF{r-FoZg6W zk+&wH4@C&j0427{A5=sk?UmSNi{O;yh7sivE6XW|$%~_{ee9aLc?eLx4mLqKwRhmhaC%;=wRZ#pFR0oCP#2^x!QX3OE2TcBsQ1T@vj9E-)kW)) z0^L}|kD<0(QXI$I&qfBBK-D{(FpIcg1pqYy!wUh2(+0DR`xbGo#Wyr^(iV2UNR6pI z1BM9J*v=YER{brd8dmPCHCeP(HFk-2YpgCbpVR zhxIPcJU{9*5IVH*`uh;Wl2Svd9(sT~vzO@n1~f@kjJQ--N&;UQbDzqDF8(oS>AUtL zM%`TH<@$J}7R(an_9~Fu;LrP8E&q?MHxGw;{r|@iM_Lf)q_Rw>EJ=uD--@zkl(g6j zA^X0~462hPOZJ`0zGfW;gHwzp#y%Nqw!v6u3}zVfy`9hZ_j#Z9_qu-9)gSZ^y?WjA zyq}L1FVVP8;VSK`-)ZZdB7_MhC*HI5`g+6PbH_6A4(D}0<0^6j{@Jwo0T?3Qk+PD{ z&+q)A=^oV3UZgJ{3~degK_asApb}Nvk~_cPf3et{mx%e67~I< z_*O!PrSEt&Oua^vzsgkfHE(|uO!WE_gZ$a{eG&pTrOeO@Dn*^{5We2Fpz~Bov5kI` zkh;U_$W-rNC?|Jyq<($;wB@dff##mv?gWO! zmH=!ExMlw1JUJT9U6sW01q>pQ{9K4%=48#nw zdm6f!kkzBU+23vXJegfm45HBeRZu6EKq=ic07#z0$B}Sz@Yrd|43hOIl}atE*H-eB z)QU}tQ47N~n2X{>%C!pqgvUM3e!PqhlL?*sViAuuMD&m6Gv<0uTphJkxA$CDNlYfY8fGny4g_!j0KZ;$#B-s)}7V8LatHzA@i6`pI>8Pz~i}<|S4a@n; zzpX=c$uTm?HC7e=OpayAHD{9!c(0EU5NR#yi1vjex*B{A93kcaas<8&0Hfnepf-wg zQuG^yD4M?WY;kc(Ny(8a4V-h}VhfhEOwj!+$b`je;A=?!r zz22S0&t|^9hH>oqe%YCfj952k^P<^YNK zzqjC}#J0DiH3~=VSF(+FCTW2}T1bbWw5FK4$Kp zPo+I1tOt2u4nFe!b_d$h7LfA<+XRkN6?DpyC-?DNC-m24KhEh1gndkXXZv7?H-*FE zlQ!QinAMbj0$I31EJn3!fyq$1N45-P63h}?#Bx(-?sa*KUQ5lHh1;Q~;#~DtyifII zi**G=*=SL2nd|8}GqAboJwL~N1M~fOQ$COcS?prPUbSX&ZM?2BlwVv^2^=&BHV?(+ z`&~ZltH#mgvKTAlW_?s7?Ga z1alJ>ypJtSes1FovqBcTwd+-6Z?C`=t)2M1S)$FoC3~~MdkJ>%yI%%4TMH-6*lZp) zR#6qE0=}ThDlOGV+0REK7`(&B%NNt+sH|IeTjR-w`kpB$@ALJlM^rO#Gq(Q@Vu71$ z%93JiRPU|T%vNK|=85Jwdei)BXdP8#hMH-J6f{wO*6#T%fk+NnMhHbyvnp zd6~%xMfiX;`JtfCe}oS;u;N{!Zc^otTG>5Ur{DkbAFw=hb^K8CY-Hd-0H{$eI*i5l zIr}?It6AYVUOj4bYoV>7u`R3fwwtw;h@-AXlqdL=5YnLbt^x=A*luHAdt5pR{Ts^C zW#qDb%S^JYUigLN@gnQw)25T(Plm{UB3l@MBoH;Gn(^xHO{Mof^E*cAq)Mseo+Ee= z=)r@?y$a6NfmQ!#T|{tp@#^_Lyk(g}!N@N_ zlIF^W^(*?|e)dIJABfuBur`gmO&#kWzo!VsP*CcKQ zlg9Gd9RGDm|9@DqYY}bWlFlo#Sq<4Y5^h>-N#wRs6C{5^BVyKQXMM*u=8vd59dJ*F zBL2b7Gl2nqy3(pbFejTH1#DmiJ4h0&bEl?u=I>%(LAolkr8}_rS?OtkGE2)cKmo8 zOY?{cdwythZ$tZojALb2f^o^6ZPk)0eu1^EsS!G&NlFmjlu*AErhJZbGq~feIff4= z|MXzN$~?VCuY|K>lpw3G4|GGcY@l^>@Hh->;m%H6)&q@~uhAxSlzn(S5Dg;%sHebOH+oKx3eRs$i*yT$<0Seda}0Hyv{dD`%az;(-wYA zi~HR+e6ebu`ToicDrevQZY+?uaJcrsf2Tk_8n6%wM%v*N^>O$2{q3!O47c5?3O{Wx zoaWH7jx{@M?*Yl$vS>pSQ)K81Q>sY#@9}YEHKSLqRmifap3J$z{lzb6p~n;4)YZX% z(kKo-i5qF5J!TYxrP=o2*IxVt4^#*V47^iryJqRN&ztQeGQDvlpA^@u**2Bq?hIxk z|D@+DrnIhFgq#T-tx|D!=zQCiyaH-qgEpFXSG=?LEdUwTuBg`nRTE+8%_@h=&Y(sx z^K*YN+)B4K5?KgzZaca#|3*|IYmw+Tu*B45giDI@R9ivT(*IU zBeUXHbHRSWyu_0}!qK^R+%I=8Gd#a~}%vHhetB%>brMdzLtXj&cZ3pT$jun}?2HBfB})uu#3-2wfb zDLd+8F?}i(O`|Wvy+#@yX;@{?*=D*HYE;o&cFWaG#zt!gG#eW6h$Q*!x41@pGu2b4 zY2!cIQJ??Tj+$}Rs`v)=eGlJ3pjYItph{PdgWGtz@0~2yfp6Z^=Yt|;FRSPX>C|Tb zJjeJML;s0G0I-H$c4Src|3M&6H;uVWSzJ473tib$i#q1J-B^4{*Qs%GUBuSp(t{S? zsIIcJHloaWYUs4Lp5v= z_O(W~13NfUhea)+mG4Zwek(KYN|*KhYprL)iuA-^uuUOeWv(8Ad7$l!r$m&ScRW)6EZTHqC%kwX$#UzVK2gN77 zYggKZqa~@q-RUxNWBShJ{ce_zoK&5Dh#NheoYGV5lA~VV{WI;D(|YY_*vmO7n<8vA zP+c99I&n%3XhSp|6Um+}w3QNyH z2vzo&%-u`d&REnU-K;q|Xq@3l{ZvyIzdGr_)vmGfSCg@W_}Lntk9Knei!3d=sNj8R zC(E?ih+TrSwEN>VM`L>?hpT$k5v#-Ws+u|7)-nGA9F)MvV+>Ks>LQ2 zquTi~I*eu!?Vts>VVM>BKwd zXij~+F`wKdw1^PGEw~ptXk5U-Oksc%xNK!`R1fNMQ-wh$!>$@#K1cgN9_|Uu-X7}< zCtpuBtOH&Ocls*!a22w@oPD@#!q2JTJX76yf9=@2X4Pyho&+LR%D0!flM{9iuFMUt ziqlhK*#kU=MB(<8hQi%Bm1iYVw@{adohWx=>yick@^%r+EXc@AZuBc(bSEWs#}4|g zkjmxJ6G2de#+`H3|5>o%PI6R*Ud{guZJ=A3o#z@I3JfvsolMbN4nyJQ#DtN4eeq|M z{WlLoDlqJ`bGsE444O5A*z&{_{0S*5?#QP8a8TbN0yL1Z0}Q?NQP6-<1}fx^0gVCs zJ0q1tS*M#q8eMN)G`r2`I(p%m|Qym%9={1ad%J zf#yv^)c)Q!K{em*eB0kyHWVW3U)P^@Xr~6uIzUJ2dJKa+1dH!|B$`FE{yACfUc0sy z6wHd+GTAk}LTV!ZSXi;oaDdjKvQoHx&FxsKUP5d(G>rljH9Di;kTOg?1nTq&mKj{`X5r69V36JcXtZ|@QWZ zRuujd)<}AiJ0qUy;#4$a*S0U+XA0A!h#Q1fIV`{O?q`@l5KMt!pgS=Ju>Cov*S%7BfHQTFnjk#R1Hbiq%@AG^$@AdAvgnbR%NrK(WZxpGP z)KKJj%M0MEd>gXUzXYI3-e2vy`q1G}bJFU!jiEg+d4k4T zn5`dzPG!#4QshEZd^Ia`TiylU=%fAP2w+_HF#}~FN1hJ{jqZjB zSfk+KZT5|)dPPk!YHC^+t!oU#B74A2O6F_X*hg=KSef<&k*@Xo+wC}{uQ=L;*fVN5 zUiT>(Q**LZZAF9XKtyRN8GBC;_I71qFnZ`O+qy2lx>{@Nra=0i ztrg@sl^6RryX)Gg&*CWKzB54=-Afg;wQPgVUKk_~ajyYM`2P*cA9|efuiYAmTCCF( zgvv>6@*(7BD8|nGt(X4hP@WU$p7$%I{aJpJzohyPHK%%_rrd+c$ivZTntSm|OHnby z#8mKLDdunqhgb#f5J`aB%=!b{x;uC{kSAb_v$rWL;+S*9fAzlk;x|T-fAHXeubNZQ zA)wBJP$qFAv8tX+INpoj<6RKVY~2q8p@wl#LZqH8OVt$xXqu8^sGk2TJ=iI$$4#}N zf3e7Zgos{EErpWwgNlpILlxQmO>_+3n4Fc&%x4vM4b}4&HEWM~9iW}1Xu4mPscyoe zxGWWR<6(A}9iFWXhUgvN+Bq(;WxI6|J>(WW6>|)odA!`Fg|$R>tfv8VPh?!tlHMT4 z%&@P&z%~$7?$_~*)bP`)zVohSce&ydVq|I;4*GH2+O4#5u>tOS;V~33D>OV|-al~P zK!)>;ci?f@-wm0X$G3~z_(|Rz8CnfuIdbq%{z8ZpTi`4IAg*`P}lI?*T(Do{I*mx5gs&J~uC^-)?n{R%kal^b-^_Hh=%6 zyrSkVsZvqI{1Q}3XCqnWgKwvIkH*I<;jH?GRdY89H_J@pPKir@#PSi^303o5KZ&lV zq7j)w{l9GDm}&r1L(&44o_&zXwM=vM?m( z*6ipXjuLu7&0KIqTaWOJBvp4;eqLpg;1t#M^XsIWbLEqx;#IIf(9$ZXX_K5kBHN!s zr3Wjr>~m!lr%8{?dAlFUgZ&XyPJKRdwSe51BLEVfAM6F;bB)|J?&32MEgmO9tllCl z2o3TcSsinpu(p2NFY`p_*?IFJyfl2_Em2gx`j=X)^{&GW@x>vu$?9V&KnKBYT>>r& zjG3dom4SB4;vzL%Y%7^)ZDZ~@Jm_bP7S7?ef5IRhT87{7UU}L&FSGJ^&HW%p z-qiX)d8vUddL$46sn`$ESR~t6eHqekbzrFm7x1&jDY!0!V%$o&tGYDJD|G0Rx(1Z? zFP_`J|H@?Sf2^Cd?taUNIB$(${UnG#6zV2X>k>e;TNAy`QP2L)20oB z5_M10D0TWWG-T)~*2q10tDUdKR_+4a+_V`K7x;xPC9ppDoP6=JsB05v+kMF#VDNts zdohc3$8n7XlRGtJtk07F1|w@36RS6GM?*-m98eNA}N zYOpLjKC00*5Kfb)>Ek|i3|`O}Cm}Mzg%vd1!Wc^@!!_Av$6O_tYnw9X9hQj}MhW-R zbcQ{9cA8)yBdnK@HU4-|!+t^fX|B4`s9lL9V-X{n4k3v_we%dy>dujsIJdMQX)Yf~ z&rbQJ)-jDcMa{U@F?n_E-dGnKf2L6rISQl5)CA;6eb=znNz-u>65Y=)6PX@J!%4Ac zH5yp2s%(AsvOu1h(U}bRk!C0gQoWAKm;qz~lq6t6ABnQP$Tuf}By)O`AE5=GQ$X1M z17mx7R*D6`YM87$&u31{%?uFOmXXO<-ZSu9Zj>ugzvbpu!eO|v^*V@Dsq$_N)0wj9 z9jo%0mNIeodj;BP&d;!=IA%8h$0XW;y$K9(IzRS&uXU;wYJ0(&*UlM z%=mKEC)PW8#d}NUPnsPz);@A98wik`ggU}hHH3A##oO0}hd!m``?3E0yGNkhg*%W- z3{MY_uPRe+$VTs%2Cj}eR=WmH%}WRI4-w5)8;iq$((X-N@Onz5&_?@qiofw`oKL4` zkncj`e2gsL9e4C?{B(N2U%7TvKuUt(3j`;?UX3QR7u|C=M@+Oh)=sK3Pai2rK`;^U zx*cVsIR8`0x;&M_!z4e6X|y_TqJ*`WGW}=82E-RwvBBq^-yFg0a#=`*bWG+2Xr}i$RJO5smB>|B=}i5igiInv)52IaMCg%6N2L-xRKJ!cX#RE`J|2uNe-RVBJFLzv2^k z|2sY*;mtn`7mr7ShvB9di#Yi}F<~5EE4lJPi=VcU?YX`7gXbJR2A-T$!yC~pc+eSh z(1{BH@64P(8pxHW)iXgwbmfz#I;#qdeva$_R?stLo0K`?6HQhX@lm@~EQo)COk}cE z5*=$4)c_Xd*?0@Q81y5(iK2m#i4k+vz`(DS#q;?IRg-moMdA;}? zYr_G3qN4br>vs2)eQ)lZG0)h3foompABQT;6;G$)8K%C@gt~+bHxRQu)R?8h{SFi$ z`ZvP%IX@)C;~XI3e`cro#9?Tca7iABYXD?tz3dd*-ZU) zQ}rZkt7i@q^Eij2j;3~;H|P!UFbKCo$l)0^@__|V5>;lNk4N`n=B{^_wW#sQKs&W= zrP>AU9QN@A#fCY7@w^sN<$H~;tfpEf<%3MSNm8Y{`sk-qJWr;2L_^;t4;_%H9kL(3 ziHiyw*LM=?m!v{;C+lD(c(EtZs!mf9Z$%+@&9}TIGiA^s{4QZl9G|x+p;%l28+C|F zIW+Q6hMH{0l@U{;1i7&$-+QL~ytYduY1_Mux@K=-1#W!oUT1YZWmAXkWXA-ZSEm?2 z?EfJ9U|x&}MBh`0{k6%T2O{dxJt5A0j`SJ7k@sRXdD{W=NQF84_mO%td~PetV8Z2q!Z zHOvy6v#UYGf7E?s!NLF~NU9a6z?~-{{kJx%1TUByyZ`{W=as~vb3TSlb)ku-3MwB@ z?x}(>M9n2|D+V5l$Ns>nxw7I8z?i-gfm{7AU&~T_3ov1Tq9bdhd9!E%$AaK-Wol1N zxntLr#NGN<$_d*u<2JC-bG(kos~fTtgYJ>jlpsrYGp zvLh8KnA$@+dYo>_^I_hv$vEF~f(U>Btw3hkk+QU15^|Dxe#+>*c)1o;!CI`rGGOeJ zFMAi(Stwv1_IAeRW%oc&B*90za2nOIUo}tgStShJIA1>0q#C1^L^b;mO8$qxUIjcn zHUxWgq8Zi;gun2vfnsKj<+5|AG0Ue|;U0WRH}(WwQSIa({fhKml9Skrt+KyL_joGA zQ{r?sZftcC$~bf3XE!}g#Bm&C92U?bDtt0gunShaa3x$e+wWvm=6=(SnA+MG|MFS8 z{5MvXCHip$@L9qaax{iYoZCNrkzj zJQ)g{?(N$befL7FW12cdSa-z@fwc6h`HfBlus@5$PCTuoyQuGdQidv$c z?Tc6Oq0ZeX-;FhzeuQcC(89OF#9W_dUhQ)E<3H_#t-@_O6NX0>K~J3v2Tf1U>D5$9 zy{pKVp~_WEe4Sx}3AE;3Z7R5euJ=a;C?eB4U-^Q}LZK2aEf(y@1tc9WM zGOXS@M%~!be+hE*qidwLJaa2pYgeUe*A{Y5vTG9UIoNNX2qBr@+ePOa|w)Q)7srx;W-BboeVK8lpnkwS@ZlV&e<(>X_Y?TX;>(hCO;%^=$ir+Pk_QQ(%?G3&kP`DhLHq4f6E-eT`Fl@M^fM2Q zgdiYP0VJ%If^!GPabsqOHc1B z%d{&AyE0W-9d`rOC1V?mqg4Ry$+TF&CU5eh@1(sKA6(>?-2AVuE|t+U|6-=2|Fu0Y zD-9ZZm4g-f7U@msyNiy1qwFXn`_~qc%j&KkJmyD_zfXQP`RKuA`jp6dV9Q_B*w)h6 z9;l$>E9mQdpyQ`;kxX?50p}G!!7CI0$+R|Exa8%AUH6+a{x$j>yPt9$uM#7!iaKxz zy?79c)6rp3jGpV#d#$o8h@XBL^|BtMEX{Vr^wZxaUsam5%?$n_+kxRsN&{(^F?T%{qPK(}X@}N$JMj(#dw-PNfm=!(pS7*FoizExWd& zX0+dI)ut_u?^fu`%V7;o8nx2>J}h#1>LyjGb@Q^0VX;^E>MCR{X*=1>ISm18_EK zyG`$Igic+1Wu!w#^4b2^bsN$$0p_e64O~J&qg_v~>d(Ch?s{x;wv8$IyN>E!PP6z-7lPcf=A9&6%-5qzNUeEGQ z&%GvBHyobLhXn{LA3d{gi2a1cl^ik{mmukOJku9MY!*?bnu946YX*fvBUa$}TK3w3 z%mQ`O&w9fn+yU3vy(i$se=o~toR?POzR8g&!&$S zhNGiF(RFz=?T?fZf`aYa9w$Ib_lhuos@<_+ zozNv?>F253;3zu>tDD)!_XcHHfQ0>}fg{0Lqx|+b{3iWb90z8+SO@MRpMC^=AH_9+ zK%^s~Xjd3%=w@>2^XApjxt3{X(J8taitF>#^2VJqf|Q$slbRs}TmPw&){{HsM`9}r z=}gGsQQ!o z75P^AwYt(en9d@2#L~>KeOH@29UO(ccO4-rg6M9=D`{($f{Zn+u7aOBB@?fg&{uNr z)tBu2seVdnupvB zCIV$9jSH_+NaT8HavrL_cQc7BADBtOnAR4Had3)WG2Nxk9}-(9dM(SxsA@;MV5KIMOApK8Q&LF_aAarI zc(}Hav9{JAl#=UX<#a>fGO@NJSLRe$B+tb=K|VP$VLcPfNv=bELq^Xd!V^N>qcU@x z!W3CAdZi*)-`M;{_?V!XCVplEzVve~RQ|hgvt8^qaqg2~ZL9OdE%h)RvmBT1*P5p_ zrUz~Hr;x2JHPGnroFI1`p<#aB^}d+XM2$Vm`Qw*#5pRR?T;A>p|9m6=k+vz%qxsGz zO4xcO1;!Kb?PuyiH#bwNdVF1L{cRy7#(aU9-)ie=_iu35H0U*gHj~-lLhMAtjcH4I z3AAqc;vdQOvrttOY(!|^_q-PlMiZm`$TdKUY%Ti{5mkR=4;e^*XmjGMw@^&}8AAqc z$wSi4qmmI$P3`^u07ZWb9S(uD9bqd#>2l7mg0P6rEeg)MA_l%{>kEVZGj{+bJIR^a z*MhlUPB`aaE~87S`F3O6TgAZww>P%PO-*|%|I{?t*>?-;#nIXEM8{m1`^Ubax;ak# zo1B<$w8~GQ^#HgTrKjbfhthzBmmdvhO6sVIUWXJ&QT>Fy>HdY1PWOsdtWb6y=O;~AXcQMv6fmpO4+5G%N=f51KF>-$k~H_kQp$o~7Oh$a?~y+c`V+49 zH$ja$bD?!k$W;ek^L!BGiaxf6Q_gyfy2c^2yx_Z&{vgKW>r}v86bg+#>T7P7p7Aic zffmc6*WYX@K4RyO;4ct&;_r8*Wz|+!cB_&`nLl>LAn7A#09WjG4q51%8NvoMd-+Ku zmw7hF!lG!nNH%mwK3!O;Kk4m35<|>At@;9^|AyeoGxh8WAY6wc7`q{i5Hn<0HGbRX z^PdmbnEm1LZ0tMAMSbT8!#lUuHWm%>qlexP?z2d9g{AU786BVb`Ov`?Bb6>UT09Pi z70uX_6ovtWUH40IIlKyWGB%DDc=jS`sE$$N8nwD7aR(XTSl0U=vPzBrzjx(r?s_nd zpIz$z37I9C#BlQDZ$*1pMzDrlR7HJRuX97rHEllg|5Pd_3UgSJ8~7=P%|mxs5x~d) z+>!00Wu4e^NNm{$-%kVjGi1oC0cH;x+j$E+cy&3JN?2v$(@c@fZa@_t93hoR){Z}> z!xI}GaaXA1!|Q7qyJxTTkMDSaPPtDQd3e)>8}VLQ9^2YgO>J zW|V%>=8dcH=Xfs4ggp&ky}DJRT$ULXFWF$|v#M^v^gXGp4kkk=>g?(FGq>TTd2MK{ z{V1-B+i<0FbgOQq+a>zM9o)bew*2z$353qw^HUP`zE7%lLf?2qa%PhpH?TEPVU;V9 zTz_y)A7ubX8Ok9#SQAZBlPrZbR?&T!td5^%;kimB@(&Kmc*Do{`JxQ15=b3Z-Qg9rW?SjWEC0P1glRe)7Hx9m6*=OBy#0AB-{RNGXf z@8P8n6*8I9uddaKax=<&6ZSic(=(egc>)xfdEtjVtv`suI30=TI+yMuHvO~NR_L3* zSwkBPM<8@{!Z1)$0gEH;Z$7l~Q7@wV+N|2|T5-*lSv|8(;?%)M4AhjFL7wNHJ6^Vx)E}ZzBK_7eYs#W$AasAc_qgrSNu<(oxh4y3xIKa0roe3YYOw-*RA8^bMZs|rO)_N0Z*1k8{qo_p zcEjxHwD9ExC@##UbuReA$+<5vT3-F<;OmYV0D0tsLZKlCK=P@>Kv!ER%s^j#YBn4> zo#SU`PjAT5;G1}&0^8|4+;iy<8-*2qC&X&C^^gA?<+VXF^>O~b;~5lE6hguhr{u%B zIMIGz$=sDu-^CWvLfftU`4QEym1%5kH`j>mWFrvc?Vx#TaDL8Z_<#AT3;z}U3#udy z;=Y2|ZbMdPqM``DPjCD&7S(+%TXy5%#v*L-I2Uawuw@;-d8?U+1EB`LIyk<=8Y-qL zhd$G{u@&g$B}@MWIs9e4dvvdx_Vn`lCtShZ>e^Z9ibo}$`no)d%Mo-zt)y*z4u#q; z+CsdpSpp*5f9WZTE~Q$CT>Q(1Nr+c>nB~Rw0Ro53t9$hlZupz~Dr3fYBg(Uj@r_0vte6zP#BCYTuR1IdHE~s}kB#3tg?q3dhNF>d zdM^oyz9|{LGmlxMbz{)!76#Ey*J@glR-3K6LRIn$sN?vN#Hts!8`xTLz8cvbX#oXR zOD%%}2J-!J1}tnUEv)5=YP|yf=Z{;+%->M*lg8Mx9JAokN|;ZcPec$~Frker$n8}G z(*E0rrytnXk??D*+r|hzp{Wp-e3RsP1?r%j|4+VsG0pG$Zp$KF$+m_UC(mvq*gG3) z**>!{IJ~%=ggaLY;C#p3mVw#R^SdV2FT<)$_HCI$2ej{rHh zkVY3&I7Fv`is}m7A@#Mm{8c%KlZ5>Wy{KJ&X2L4IOq43J@12uFO!oYXT+QZTgvx^j z_Tm)PrP*W&X&{9<2fg{1^e{nvw*lxP-FMc!Ka%EPFU#&_{DhWRLm>1&m@!fY-EUk) zS~|{oC4*WM1H>Dd=q()KHNtx>-eoYvgljpaNv+H!1IF0}U1ER?BkG5>ov!s+669)y zU^XS&buTic>eugcd$+~b9?bPeV`(7t4y?*AtH)OT-Wnl%I-{wLd1Ad4qZhhe6{%n6 z33M27fnz0wR?vH-T?2-+xhF~>k=hdUQvD-Mb*^ZBbR=#+!rnnk#ttlckCe>c3?+RJ zG#G0<$i*Cm9DzX&`mqK3Q?XYbV%qAY_$C>3u#hVHXp?Sb=YnYLO+v{ua=)kIu62$>7@m{5<;M|MFtvO+>&0PX=@Tnhou7nA zz}*95f)pRirMGs0eDyUV3J{4lb#*KJ6Bd%NWiDb+fR7tvzwD*ECe~~sHebocVk9Hd zKK7_llD=1t=)!tg-Wun*9xffveP9%5e0KE)RfQJwD0n!sPt00Xju37)i-S2B^o7eg zy!AWnXTD4BlV~Fdv|t=);?vASw{RR2KT>9zl#R<)e#;eR+Wu#Eet49dFc5>NQ9s;@ z!GYYZqZb?4-Q!wvh%{~nF6_+06`={iq{QI{L_rF{J5Ko{ z!>M+``E>c8@enU7r`MdhWZ&CW@c?rE$Gv$Z3I~3Ne6>M>*Q$||>zwZpT+3Mqx%iAl zYiOfp&!s)(J5<@|pl<%-tn<}mpZHm(@jQAROy4xvpY|uebMGCB!clza?D`g-5(xV1 z4)@FZ5g`|uN;Wvx(C>+u-%FNW`x>ce5`pUv#Ggzt=kWfFN2Btz`m|aU3O4-D4^~9h zBmCi9?H0QgWwk9mZx5QlAnpxjj`?_mY5~RiKW1`M)1&Wz+L#X+*PKtCNMq=6A!0%R z2L%qn5pku_C_O3@)||i>I5+XDM^ec9oB<5R(QgF$^EO&?ewtxD&_PdI7+X)W(D`5d z0xNVO8*@9}%ZR!KXGeyS7QvzpeCRM}(ueIWd;W}{kbPV0!gL3>L&Lb=7FDkEUR%X( zz--@ss_3kQtC#qY>W=4796s|87okr7z37`Y_x2Pz;+VgqAL4+T2T{46-tsiN%4^2o z>i9(YmwQ*5q@$HaZ1?>sIMmcjqEpA#wQV^VOsNLv<}5h+|2vxV-k22_F@7sdJjZ=z zPh#*`&^mh6o_>pbYfYmSYBO8BL%2-2n8~%<+}zmV%iTxaID_Eo>hMn#nsqWaJpx&< zEreh+fv7nPS_jP0AJH}W9m7n~LS;3itwyWgY9xSsL z$N}_JWi67C!3v|vMA-t^NLE}G=gXJNm|Mp<-6-gvZ+kMbXYEOd<1VS&+QxZAkQ|a@ zkQ^bF2-k7xyNug69?ViMpo=tuC!6Kbu#DOk$A~1*&Qu3% zQqwhWCbSv<&?kMF2*>;A&tT;4E~ooGNKYsu8}0j0MGaNxZkKR$F+Q@q(>it3AAA`o1TnWY9>f`$Rm&_6JgVR6Zvb-7jV5xRBvZ}4bDaTW0T<8MLi5I4+aQZCPuLHxv@AeI z)?)=lLo!zbJ6ooFqZXPh37(FUKRlf#oN&*iRfY+%(%#KoztzT9_krnpq-6nCtJZ$b z&_|h|XCQr!$0+J`UEk(kKgY zI)+*#C+{|W{(Z<~!tc^oWXauf$AU{VnyPl zkxk_aStlTj(oZb~rfWPN5@mG~TPOzSUb(;l2oEdq)+6egcxE6DCSZ>X3jfF~^o74h zp`BinXD`}8xa@ynFCaht7{xnpt*jA4PX4g`1en9J}Yjy|DeZ&fJzDo!PjNK zMGprRWfpSvE&m57v%c{E?A0^PCIul{^IT>eQ*)JWHAt&Nhzp8E6COZbwDYzKKCVR*xQG*1UJa@OYw*HZdfg(I< zV1cRhWAfW%z6Dvfl4O>98%IXl3NVWm8+b(QE;QwSZ(8A&GdT2#wmA)5&r>(!FdTtK z7_nOh+>VZL+ISs$Q?yYqH!i?FJ1$1dR>?|3haUJm6)yAVMwbE04@(`6!sPkUDv_0h zhn!V`XGP0Xx9xfGZFg6bIiBJ9_o1O;$!FTGy4{%li%?`B+5=Y= zUtUXSO)mSc?0fG#_d#Oog{guSQIAUt(5K!)`AVYMV=Of))-}7sesN{wlmn01$T^=@ z-;=tTnmnIbNAph)2yy6c$xrq@jAr8OlUWJPc_+-Zl2w=0iJ4cye|#JIYdck{`k@tF z)MMG$@|BFaXEe$1PT!2e?dlNcB8&uHa(rLqLPb5q z#hmxgU>~7CaVjE~o`S7=#KWwuL~pS%cZtOzT-~hq)wxP-rgnvCST$nK{UD0+i3?uX z*VhO1U!RL#Vw2+rGjgsS{8cmWUhH;orH#PBIzg%sFIR#bq`i6#S;j3BCfw@HtF2A; z4``moV^G4UjkX;r!37;A*LePU=c+Gx;i253NEN4E9? z+#H$S^g7%0F5<2%&X*26%t(Yu(g#y1iLgvl9ced5f5Wz-}{Gg;ru@<~6)Wgr$39~ZCe&^sLEijOSPM>cN&hgl)03qc2ap8tfaS!&JA z|6JN%hQN|x)P7*IMAg?9g1a}!Ck$Q-GTbEat@hylMkO5x%o)8$t{1$;d#erTltd$M z3QHtMVTM@cb{sgCk>k;L3ZnjSSB9&d9}+XplwGp72Yl;6z?hLbO;rgYFsgR4x2QL6 zu`kk;=tkHLdDELk@Qc@OwFygC!&}fA!P|tOzHi{ZZL*%Vaq|!vid<<~MJ3zPPhiSG zSUL-PJmgif$3?xlssGJU zRST~IocoW@1FfF=7i&HQJVZibt6_MKG}kMiTIG4%4~-{?`@SFn*wZsKX!)12#+@#r zKsq@wj&I^-;}M8B25NA35knY_!>tWPRn>#CBO6wgS(z1J4(5u}g(u5B4HTEnB+eAt zvbgFRu6yAiq6%zh^;M#)dK3CzTxv+%7QOy~U^a6c+9#58GEAEzLDMEGCZ5u)L7~X0 z_~v=?{J5;&rLO@U-$Zdb8syaHW(zkaxD=F|sBm(MW?MlctP(xXi_N$jBy)t85y6jd z#PT3R#j|vGG6gN!QGLQ5EQYz%Id2*RI|WouNtV0KKc6)2d?_}{d=c5JPPZZd`G7~{ zzT5lX_uC5W9>m(mUAi;yRaigix%i>YzW(jszwtHPote4h`HE?W;>*K-VunefLGzWW zfH}v-kgs!*6DN;(mcqU=pMR?z`TN+a=-9gYMll`>Q&jV#@47QE_{KE&_k2Zmx1%Y#e%WDUBd`FbxNupdjjaH{}q`8eta90bmo|iD0zk2T&g1_TC zZ;_7W*uJl%RH5uOb040xURL}?qawOTDiU-<5J~5+Gl^fsP?6zlQ}0~u~p6jvl+cg4~SQ- zYcH>*!-n0A9`T(VSr^cHTEJCbz9#m>YQf*OlBIVDTXY#Nyp|uT8^uN?3A?5>0a2Rj z?u7Ri=#~7wHjeD^{2_CH>?3?`@g1CSb_Y4-?&!UWCdnJo_EXo~k-x8xn!2;-0N4AI@P$=QqEm^v|HOOIb7{WY(!M|ZeAaCt9+DMv zc9l;`8KfZfY>bP1Bq+*}D%jGseYmoM9(r{6pjRtsx=d*@;In(<&(5Lc%XQFdQH_p{ za0nuR_*ezBT2C~1irP2Ftr44(_i}yu#;YNg{ zgVpC1`|AD3sR7^nanTBW9C*(CSF$1-!2M}Hw7mWJpXgt|;&bUamdM@w+!oOScJXU@ zM&H@4B#Yf@WK5(#^zeN^;(uo`acp&5XBgg@m+(b3$T}i8n)WoXN}X80BZyVMetpA~ zazzW$nH%(IEWhHwetd?kerVdZgA;llf0?nX)JoMxK*=PU46K9DYv zdlzof&JLkxeo56S)Q@~B35MHK$F@94TW=h@wF3oP4CB7Kin15qGEmv_SrSeh8*^)B zMy%m$yN=+R4ft$?n7UU$z}_~vD+L1@0+N9x91}$yuNq|igPAW#`Qs}?!G5hwS ztYrpqr+-T?*bsNRZ60r*aI1%>H77z-O-Xv(FI1AnXYeiS6>hsnA|)J;Yxk}r66bj{ zqnnb|^#sAQDy03Oq^FP5I;o#`B9A$twuH{`S2hhsZuO5vQkEWH<->5yp}Rk!zrc0* zw^FmDmW+NDtlfxK8n1R=vQBiZb@w~tT8h@m+SchfMp8{O$-+dhi&Xf^!sWoWdke{t|lWYP2$$Vk|n5!@Jlb>Cf4pnM;?cF*I* zP4}0nU~vdoZy?M{SX1?ZVI+~PXm4U=VZB4iGY=^)?L*cG!1Wgl4h1C2h1#O~5N@2l z*_oLoGDe@9CogE*UdNr(AAv0|nk!)93c9s}=d)jBgnxUc{r$qcssN|0s!#>y(-f4+ zN4pdXqT2#V)phOGnqEZHwVu^4tQv%rY@-68P=2nQ*#S~gR!-tu;VlCjKWaYWd#PfW zn{=ZEkGY5$2SEwAttsJtpTxIc*M(r4ZMBv+b}U;EYTz_CZAH0%_~mg9S799kd~XZx z2jzvd2G8WfCTF+EclE)$ZWB#`H$e5g>SpUP`;a^VWxl0d@uXg~$v#T4R91=V<5K^m zY^`Bq=!5-=!3BroZlj1?#zW_Oi9=<+qy@^=q=m>64Iy7_we0oybFZyDE;i8q-qqE` zX9e48Z`q_`Lk|6Iy`k48hmy^; zhx}X#*xDB7?2k<&Xcx>RK@AsuSfD0=wGS8*h|!O+)cl3sH|l_QKdRxXfa{JE7ur3i z{=c(3yfkwEn5M%2J=PZ{b?}K-oQIdpH5-a5G(0<5|0?0F4191hWPLzHxHxzWk+m{w z6zaL=lxb-{`J!4SPswjHPl`GwqD&f2yPEo0wse*yw)w-mw)Cm({4cPv})H#ji6Ok zdqnJ*ZE3C6C@O?fF{Ably;>BNSg}Wo2x4y`@qFCh?|nbV{T#>hgMZ*7=leWg<9waZ z8DewdZs1?#iUnoZ!?anqdXg8<=6kml%$Kq1v#8kLsZnE%Q`-!_$sPGg-+;#E1$%4g z9+kt(02TQCCj3(=iH-wvj{76dRw8OILoZ2PyEIQj5DHrRS=ktBQi!Sr!N|-| zFik}H@@V;({|bnrI2Q&VaH>&yYA1%0f?$3mo*X20X3iWh00nI^iA7A*e%nNDUX5s= zJce|?uRsr2A4R%e+dFiDdj~mR=uGQ)z#MN;kp|PgUQS;3-=)|(UK*@emO0ZaoI=JVZ1)nywxutveo?)0GRJOG2atEQ2mBudoPsO z$>l8*`W!0A2#9BQ&#Yei5@!(jscKmkg;yRf38cUxQ2-hk_Gf&MYETktZ=;(Luw0qR zpUQF+1umyZ?#8o100BVww2a}+Dq32J{K_7{v7mR#&414K!=XU6!pM&4L-F46GOXUz z&xo!D10p`~rG`)^0PN|ICB2hsANKOjZ>f>WT~^WXhJwY|O}?lG%p=|_4|XB1t3y5- z4D9|D_BKXCWu~vS`X*K--&>0$f@3_+UVc`EaR##0;&k!^{yJILI{vP8yiV=#Jnn#) zRu}GbY>$lj*u}MtP4b(88H<2$h8w7qVDF%om{@A(WYl1bah<1%EU~^k4P~C-xOoG$ z&iKas5MDk&n5$9085F)HDW!X;N+-KpHlJflz!qNH58(+XW+JeO=gL3UJK1dcy2k1J zr!l9Y&xCvYPmAVLY)teW%Qw%{*?*gE_WMkW$1=-W`Fw-NXYT6BKVj{9+*eA=R~N&E z%jf$j<8Sz5GA4iap6I{dNO=jtLrq^Wo0Dc3e2@;susz%5Yui#^T~) z)Txf(yT3N244m{z_^rz2R-=M1b+kX%N2&b2gqOq;)ccF8n*%%b*N_Q{X# zDzYH%;o`J}OfY9u62D9wzuSYOBD{arIi?Je#n(BETLpN@BK=D-V-YO3EV!83Dmt$e zz@4>5WGKm`Zfi&JoLAoW>=undGt66$g#=91glag3oLKe$_UfRI9y-&NXn&!*D2ROJ z=i!|RlWe!12vwB=%4|8mjM_*sRTZ@uR^uFLpqln2#Dn&<)VEqHfvl0?Se$%*O5;&W zC6Y0yF`YaQ_x|Ld*cC4^{!6oDHtYh40QG@QJ2t6x4tfe4d^VL8ZWpIxxX@f+%Vss4Uf2d@W|4oh^=e6=6DS*M#yzhp{y}8`3eRzLIzl|l-O7_jY&9MHo_#ymRnws7x$DXxUlJ%cd-aU`i-Atw6W^QZN?nQ% zBatjow*i0MVxtG*sxLTGUyR%ssAcrZuwekQtI#RAT7;$oWX|rB?)3NGV(a1?fekj8 z+k*n8)n7WMLJIc&@TGXSjj61Y%l}?F&Q|)pjo)4WHQzoH!?jY~Bhiv@@@W3cj|YOnB=$PjJ~5y|&*X zPeP}}Qy&V~b}MD*1ID7|la2io+RRDs%wg6{L)O%#OuBL40@&Jl2UzQhcDD~+ej@|F z8~*CcqJ~1~PG+pC(?|H?v*7T;Z-o_}*oj)mFMs2_L$F^812K z)zIx3trhRtyD2nT1tn&Mr2YAGuxcF&vJLL~ivLu6I%fZC-tPBspQ|6F2{ z=P9=vky2t1kUf3jI{HM4W@VJjbLmR`BTmkHD;IdAzvXTLs}8?Rb9aTf<)tIMI5Sxp z4c^s1r-K_?-uhD+M7Ev@ItJoXwxEexv;!8vyp|1|SPsDZs8QZQ!fulf<7mDx zH<{b=lqwRNw)t0HxPSAOQ1Wpq^2P*<@Y9t(TE6?J`1lCh#(Gs*_h-b?iuG<0quSR5 z#^9y^V$7DA+&F!2R!9(E-r!rm+}_m0g!6kf{HQoG`*YLwloTlmhu}+5HAbq^#ds^o zuE@*eichOe;9^R&whJ-OyQ`Of{IdHR7y_>;Wqc&gq0BK58W;u%xysR@!%Q;YE=Z2| zwp>p(8i8+eYi)9G0uAB&CQ&9#)nlr$<|%rmTtGpCXi1#6k~_S9{ZZ$`t&zKhY zo`r(&xJJs_eJ)(t3d`0nxe~I{>cmidi0?E(?u*|5k5#?lV4$H^Q($;#)(Kp|6$Mam zR}wonkGJujNV+K=y9U2?>k{==-z^I=$47Xxu17O$t-u2VEz@h6L@w`)iH?9_OPB`2 z*qiMEtk1mWp7$2vFuslS&Hn2dP5&v)_pofrBz%g(WT$yvtw*9zEdtL~0hUv9{N;ng zNtV#?HPFZ$(sm#a%#q&vf?wE~n0KOzy9MrBBQ)RTRSh!@6 zk+f;>5nY>X;Pzjij%N`H5Ecsf9Z`=s@|$c4_LmBM3EUgOY^%1;6`VuRO#;O&(|YU! za0e=?s$+{VDlM%-p1$6u$;|aHOsooM;7uwuD?uQN4~Cpt>SPN*%XmRMt?Q@0~b&wgWJ`4E)`i_bvsHxigoz!C;!ktLE5Q>)6H>oRxt=)ytvr*DXw7|H101zVnSY@5wTTo3nJKA z&d^8j@;_SH1?)F0=h$oZYtBwl3$mu#Bbgo z;Sy+KZ|kTpruN$L{ZzExyGCk?E0WAiPPX?zqr0>Ax91^YaA@Xq;Y5y+5v$Krm^^5R#GD>le^q-!aL{0xA|DAAvR044_za%Eos^+t?! z*!silpfUbK^TlXMjdRrm|-T;Mp1GE7;<$lb*XW?1T#ik`hk8PrH{& z8~{Z|8}5*aPHUoHjk4Tu9|L=9KH-We1Nq>=fC=R_=naEewFkPp12kW4=epXteQwIT zOb02;UE2izRUngOs1{Ogn>F14Bek9Y8_1NC3z_1y1zU?6I~`fy=EtEz6GtI|K~;elG3JnCX0+bN)G5Vj7AmW!!zt4xTVq3dFpVpY$)C@5dYJ_^-gse0DMOxyk5`5hlRhL7ud z7?()H2w|p63ySnJY*)H#lg@ffEcW3Tc?7Sg=l}L#k$v{qpXcSB5|!f)2L|2 zRJ^p;qXa4DoJBbEke3o#kYK@XpA24aYh=H8_cs&05`y|^ua9J7{CS@Xm(U}E+%efjzcitXk{6lt) z;$t&U%0>5wO$%?oH-$Dtz;#zRK7Qe-L>0wOqZ3P@mF#xeCP({+Io<0E3VX>oX0`$Y z^~L}}uFbu=R?SnRlzMdL+o+ZD`OC4rb-Zc;eiiRN5@&1@F$ytr>dr+Hl?L8d$Xfbc~y^(Db zw}(_1(JCBffD#zTQnI%UvX`8KKEoKCx2qyEo7Sc!`sOxOu3iP!z;2}VChF?Ne^8?^MYigik?j?n2#&I{?QyHu za|6ZYpar&hmWLNU`c)fb&kOv9tZp-dn+DTO#n(=XJSH=Tjv`Jb{~|aIDQ@VKxk_zQ z<7YE!Nz2iTOD|D=0_!QQ#dWcJ65B4_*n;CLApU<-)qE{#|6R_Aw~adS*w;ULH?D)# z+rE1Iqt3FvfkFYCew?4X{0FW8i!QW#={qO4DE9_ebad?(-3yOJ#d{PElN=TP{5Jf@ z8*Ns8_1OlSFok7iueMH8K`2p6MJVwE$d~w63zq9AhcmJ*#20eE<|Und6gSG$=YFM) zPU>J%RLLBi79)C4z<_AX_he>!`q(@ovHsL#og0C7)~mtQLGvJ$(SMK!a?4kc<| z=+2XQ`U{*VT^vTdhI0}qoTBeRa>%k`elRsguAKFS1gkbZUcfd?0ymrPFt3zSL?i4p zsE_H*cHj)6kHz-l$*#+#bX@)@_a^WH+);tL(oxR%q_4B4loHPvSBOY?KzaL7T-GFl zReDd>g0nt1q-uU53PBHTk?HeEsP#o#3~0u#ZX=W;4}M|fS72~9?=F{^gS(M~b*(i}la z{svXabz)KZp}&_GXVkYA?riR3jVtGX9_)#v0etnyrt>Ynvcq}UmKjvuZ!rWjXN|C% z3+VU?n8U!#YDVF>E!K+$>S{+7Mtd1)sgN3-ewx2G3OpMUP-ErZa@M4mfD=C@r4M^O z6RN7JPO17&fEe@-PZTn230Cv=2-^V2NejK1-bZ_@DqwIz|I6p39hddnyWV84jtAWj zysDZ=!-?azlr)?tPTWQV1_M!V+l3YlOGrjjAPI71dEg)GI7uEm+Y!Zrak161IfdET z*QY~C*kQX&=%x&f*m|7SdXXpCxKXB1c(i$;yqL&um}LXXnH<=F1;e^bQQTL0DUIlY zkQDzKNJhT>i|+Zg*BXP=M#Hs+$~9m2vhoxS%DDdz?$XpWTi8j`s)>xa9jJj+UVtmP zc~{fcb-Zh&4E6sVpp*2>Zn^BJU1MIm;9Ii)L|iwSDa7JDU2ST}s1TV9hmW)MtTVVO z9Ome9*M9lIjclsl-_BzB-4qinK0RNfzH8~|t+kYa+V#y^7D-Q9pO~TTbs15IjHti4 zjWjkR`d{w+0sig+6O1^pXFv|l6|l~r=Thr@E**%4p%7axd7{DkLHIUv ziW#e`!JQXP#nvNJjHrdK(lMpv!ApzxNpuX-XD>c`rg7Lfn0`s%E_L)HW5icM@hCBq zL9F@7=FlyM)FkEG<|3&PXc5;t;}Mqw$1f54MJj8d^g3Ny>m}!yv{d*%$lNYm@r-o4 z7?2kpJW}qW;BFMSzU;r{CoIvjP!E%f6y{*bPK-Gpo|nX5!UQTVrPu@l5yt#WRJIN6 zV9t;S4XNU*_aD!A+v@@8BN%KR+pTZjxf-`R2GD22bB*@fVGMUJYR`46L(RZINJ7y{ zNf0c1f&fazxNwuU1)`e3Qmxfh%lAQLA!B3l4lPNkwf2GT6Jwv;VftKgSwRB{;{_j0 z5oXcvcpM8uEJy)@>H>B<8B8JSIP)}|!irZ}2h7ZVdL6m)(1ctN?GK6d+1 zV{N)6ldj;D&N*ePfk6_0p7f=&v5ablrWQ4cnAfAAM@;3!nmtyk-s)NhgeIPI)6pC& z0jn))J(J`^mN*u{$#g}9kFKDrrAGcCOeQrJ9J_#+*GmkB459uUbktLzjinIEJ&<(0 zHHq70F0{qi_Ddf|u+0*Q)A$n`ah1bKWXH*vj;+Gwjq$G4g&V1avS`1qxnXN*!vV~V z5{kEG=~n(4bi|!5oBJn_=skkpy0=)WkfA>u%Hz#(w#CLHn<)$Zh;*RG3oHEs))0ll zdwog>lEC$MUnmb?S2>RaYiZe`D#;=Gfdg2N=D}ePq#5~>3+AU&H)>zOg1o=#!tO9J zRtLe@ye0bZ0ypvagVZgvnhp1$G!%7vt4F32I6VzWbnrPIS+fo-l^zo;5ska+;Za7p z+p4v!($_H2{;(!`+=O(WAfsy+De7gt3+ynEFN0-P&{7?dl5&R4Sn?8?k%S0R4r{) z;x`hP(APh;?O~5se;L0aA)Z(G+#>;dPTtX>Dthdra z91q!ywY8&ayF@C)bhfb!7U>#>nu?nb11oR(7Z-LHu-+GYoP~X)|NMgeLrY51tW~Ed z@)GhJP|1maQqLO5Ja=7AwNz<}=RH~%N@0n3FyBSZw}gs_X)E^3*(rw<_8&=4#;>DEtdlkh6$^P^D!VjpywtzCvIL zeP)TUpwF}c4T#sc*NERPx%Be2gWW`b`u#A!whcEu^2?*R26iu>nBWp*j(q5it+M3d^PHjS*A)ViwN@ed9i?R*sZxxC0Eq(MC`CMMwEPxM?xr%-H6 z3~;iw9!4@mW@lsEWrY$Q01pU|VM2G0q>JJ8F9eM|QEUC+dv3W$)zVKz;A6P=xE0(F z{gi~*za!}QGz?~IIxU^>SSH?-3Eo%}H;wkZF#pTx(2~3yA}5rnY#5Fs?NmVLJIoZz zo9guikFuMdn75;f4Inx_-fl%4`36(S;;kZ2i`r63i%iF=mBQDPp-?L-M1jk==ctB5FvZ|9YGNYXY0Zizx-M`7EUwb#wO*!H8&T4i@3+(lW*HT)>ziw?Dx{|Q{b|%EH##lz?;xPC z0hu8k93(}nRbk2MD#}%pf}B$x&AI8G6E2=3 zi=&lGl6d(3@4x{%yhTMrT7md2*M?=`$QvbeR z{j*C>BX5#pm3+}{FB?iTS-F<$?pYcvoWt%1x9-ma8+->%KpU>pf&sn{w-LAz?nTwy zVaT+cNrA2!%gdNi4c(Y#=bSZ;}3f9-Bk3$67RX1+<%{yCmN=1;gk{yK+^ z1#CW1Xt(*pbveaPWO3-QZkgCEx7WwR`ne>$rdYw@eRr?vc~&fj?k^lW2IL>{Vket1 zMuqbg<1CJ}4YyMb|G+5q0-8Nqv|Hj`jL2&i43EAS%=vt1#Ezg+M!DxG-1a8u%nx{hGl^Af>)T>Er=bskgi06$~dp}fN`K+pi@2H+~h zDJlj)CVzde851%S6kUy1s5|2W zn*;lZgX#*3DA!J!6qV*aZuL6_&a|^BgH*I&?y5d`=es;SDfKV@K2V)ys7A{DU9Mm_ zuXh1D(*9iD62Hxg9OnKEU+Z;h=or{FOn~mr34r)UfY}&0Knd3ZawY+UE{DQ9fKi@@ z799@QAIbSMyf$GMWP3tkFeQh0ej@}dJ2-p4{!C#=_vY&M960dov1lUjUFt)rK|u2c zlKO^82eII|{z9*QM+RMsAA&p+i+(sAW=e zClsOq?2g(kK&y>--RI=tdw(EZwvZJ|##{e3a43$W{+oGDJqGL?@JG^5xhk@Tyt*RU z9UrdwrlmI6i5gc6t#3O?HI1eu?ic$EW%@W>edYHIVeo9xx$l!m_w!#2Ck;}8J+j+ ze=NL(GkLrmNES|$RPEX;X1dD#)6LcW7Gt$=oA|B|tCg77ZiW~~D$BR1Ag!xP7bf&O z6atI8EVlFx2SSJRR+p3dm}s2Oi`&GV7+dhKWVm;V^TzKaPb}%VKqBb`zJ8}Cr2nw^ zTG#z;zA0&2D`~s@(V0E;o&j_1qIy?66{j?a6Yyj|Muy(ytfz=_@8fLQe;7?v8cA6X zmYeyryvRA%ok?4scgnP~>lt(!l8$>CcRuwT6R*XbZI7`B;^PRb($(L09A5L!NH)cq z-q2Hh*(qtOZtWA2k4W(cJB3Nvo35^Cmq}Yx;GJdAp53|j7#HdJ1JmF}tjUDJ3zZGQ z2~$Cp6Yt}S@~cW=?`)6$c8IM~B+2i&6InbA{kAzfjizDVNIwWw5;RO3e*?oIht{!|2JK)Da5N3mEduz@wqZAa7`WejIz;!sya@bcfvZKc zi;LHRGFCPWHb3bO%|$JT+&vlqhwzF~^*i6}sUO`zyqfR0%Ydn34`aRS_`I1E^l%l` z2q-OA*rUlLWYnpj3BXItcOFO0EOU)LbYcb|;$yYlz0VsS%Tl@-OkS;q(PP9&xXft)d;GzgU z=hi+sNWgtvnLDo$iO4ou?(tgi6UA~ht(breyHt9{l9 zCt!jXx?4USHD#L1Gy{q5ifU7&$03>z#zY@T z@>=}6x6Bd8n0XLZv~Q4h(i01C{}R1CIbdz!6+fP`*| zhXJau#@5e7XoC+i`P^sVgV>Nl#5&zypS;!?)giS5`A689?F>!>&8pTNrp1tjd6D0D zBCMr(aq}&;S-a^15HAM$1a^`4`Qp7MT4i~NClP!|jU8nIdRc*3^5a#L-l%$0p)DJG z4!ef{=LYe>^<u;5W`_hDW0M2-$@h~HFap7tWN0|Bdi1*j73I#3Z1^}`;U)9(R00;usD|KM7R0=<6 zqKLu`IOm?rzXkXd#j|Sk{lHI^7$i{+yO~P|A%Rx({82FN4hw|NSKn85!7on+r5i2} z*~R`I*N2oTkbgQXzC;cC`+5CdanU!q%mY*H+}Zql)g{r}l)PbN6l6Hl z!;QLhaS9Hw*a@Q=Q%I3Bu=xy?`h3E~L~HTU;grUxrBf0HzJRlng6<>`%L{Wnvo z*1dJ+trg&-D8yY=U#y9`S3JgB{?Mn)h`(}1Fx^@UA{Xx?$A0Ri1mHgZ=>r8!^}{j9 zs$H$tzn<&I#>A&t7Oy|%qK!aoEECAfU+6|4)vept>MqY|tajv55-A@$j^hHmd)kF* ze7DEN?N&^%xQ}WeVAQ@6ufxUV?d!X95)8agp_^$yU@1+uHUjBUF1???K0E9CoO#a2 zGfwz-8)D790=pLPjf$r;qv{8yRyQXb7`+nusacx~FHTPRK1nvVI6>2xq_+>dQ(#Jd z@?{%=5MKY)dCX;A!!-nX=cdix1XGD)fa3h#Q<+}Rk)YE50NMV~A-cZ*Ow0QpC>JdL zg=87VFvd`iB?9Dym=Q-_n&SPyUvlWl?#`- zc*K{_Ic%pmkKcNWuFl6ve>2(alh3*{;LWrGy4&cgwCV*}> z)|PyOZe{kWiB${cBz0*=)=a+DmG)jSjOyM3q&^@#?6v&;tC?>t#iA9y73rF!8qr4< z$1;k`65+O*_fLwkxp82V9p;oenYgY*P~H^ zkTnkTV zh=6|Qd8vLfVl^p@xR0SWr&W?ihp_pH8%_gN*n|fie3UoIUp#M^=lHew&6UWU`RXpt zO`W7qw9zome2J3Hz94{W&~Pwhc0&sU*`e$Jq8S5iy4*vQ2XY|ia9QfW80QkGq7ISM zIuXCVwXxxK{uOXe3i#z!(dE}wW$ecHL9|3{B<|wb0-t(sbpB>! zYsf#eU-jQAkv#Q#W>nbmiIP$9;M=_RN85n5Y=sP;=^&4k=#XnoU)KyI%wv zra_`u%)PgTY)tO5Us=N=4ah0jL zHlk&v)9O^>VbfU;{v0xN)1eX*zl9AB{7`F#-GM@-ynAyg6*E^LOL@gw?#0_tYuD=2 zGmh;Jt>Mu9iIZ8oM|jj*>jj6$+I+u!zcO`tE4%TpU# z>fYlilk`s{9CAWtgh01@2)5VDP1*ftcjRj)hN3vG*22AyJX4_iM?3j1*Akb**7l30 zeg?livdXUfz|*B!(rvd#!#E*!T*&6lNUb$UAYKvjZyL%ZFZ919A!)AR!u~q?hIkq{ zyxik!6>{3TomqG+l^Fg9L0gyVaY_L;92!TbtNpasmqixell1>FlV50Ix=qp?*G=Y> zNIS|f77MNpP1-VVgQu%Wzx}M{SV{cdC5~#|%G09cX&o%)C5G+*#>pa}-`?FmJoW2x=-C7M9k^$Twp3~Hd7LNEhYRH8N#}d zg5Kg*ZXFDh`pR(h!S7K^5&zMh&hRa`(%Vrcj^~e?8C*)Tcl1U+cIVaR8IGs1z47*g z?R^Ga=)3F1is%%jLQhuocA}dXR7C169Q{Le0t4_7MNbT=Kj~j0L4)`U2am=iEv2U8 z%B?JVAhp7>>ASwiTNx$g;C}*iGK+f!7hgNV1yq|h8X2k^RAb#$Phi60?i0OvR-v+2 zN^d)xPZFK7WmnyXM*O=?dt~>#rbS;C^Wky+DJuRhnj>1$Ybx(Aj!3Rm>x_4l@!tB# z>4v+)&E-nBV=o(XDuw_o6tH{KiGeJZ16u^Nl3l=$s4tcb^a*nE=fuQ+QBwgLwy1MG zSOOLX``Gb#m$AEe&Tfu=6$Rt!X?TK^A7EF5Y`tdRrQdpnDw%o7e~6aZa7HZ#85~`6 zJm`jCFW6C+Ar4BJ?(L1$xqI{oZD+{w@-_z;Mm$=Bz}Q#&l`*CdFz#l<#brqwZ!Rw5!jtBr>dDT&S%mbR!Fv9?Zm=krcK-GYVnGRTRyAu!{&(c$`5JNB>x6U z!=+OiDq!hL+B4ZJKT@S2N;@Vk2U&wzeq|wtnj#V-U(NNQWfuIc(!XaJ%NwTq>X+S~ zlpU&|VCUP{{nnabitCl-H5#OFx4d^nlvw(1J2LAG!Cv;j4#>SiQOM3`DpT;2CEYDI zSZD-FU~fw`lb(NJTCi24XIk)!MxKSel7RP-6P-RsK9bQN|JYv9z5Tt>?q_Xa;wlUz z^AGA+;JTiwx~Zpmh{cpeMVTu|*m8GKst!->8E$pU@GLk+kVwxw|8HIPnEux?!m^&W zA|U&Ssd+f9k;Uqy)-Ql4Nd6u6dn?bMbiBBe$MK`oEFx)2@$dyhg#Ds+!@D#w1n0;~Hmf<0|n8Q62q4zugh3tbvfu%76T@)U`J~au)==Mu!^O@>n0O;NX$t)^<5wbEYJ>8dkEZ zps7&&TTB=-@#VSC9+=jtCs)p$+3Zlp$_W7<_=$8H&`J4D-G2bfai<@0%O{m2o0pwI=d2jN_oPk#4v8J9f-bgOsF-4EPkO%l zqROn3XoC830qi}_S~|N#ItUd6n3%*pChIFgzuiBCVe$=wZ$H zwK*;Kg#`~p$7s^A>fQm=gsL$iu6hVxk>6`P_`W{QCsop@T35fmq_z(XfH#5p&7{5kTf#o;vL~(&1b>gOMmq<4 zoZtoZ-|z0UPLH%yJDT9BcdTtq6A%$XDS8uTnv$UdcL&=+|n`xC_kPGR=$3w8nGV5ZzQ_5Pi?<^*pLY^@!Tv&hF(`6 z{-EBH;l{I9=V)^o7^>yyURak%?-Xs$5H=im{#DG*Tu1B~E0cX>%_B}%LBa&R+F7>T z5cbhx_ZKL&zNFebaXnMJ)xY-OpwVyiX@oaBsikw;k9U$&qI6x7mTe;53XX~$HYTr6 zJ`q;QTXqHeJA4y8zNE6!K~GlDxvnZKzN&{Brum0<_z@D=3Vg!NT7Z`@CSvQo84m=* z*L10EXtPgApnfWKB$(Z+r(%7D+<}*-dpD>`o-bN3w8h@Y3+E+#Ygb`zsjn!gED(rm zij!bh`GGaIZVX+@RKGGanuws?K5@K}m)OL8+*ML}jr3RKp=Cm2!(setahYnO`E~$m z_3A%Zjek`2Ckj^0WQGToig`jtqxmxb*H&=~C{Byh&+qbSaROarR{}W9E6|`chVocx z3gt`eBqu+AkY^$wDA*3<_yFrIyI~z};(sBEDzhk$$KMIVa0DiO$S$Eg2}QQUF#6)W zDmr#yHQ-$60O-^$cYSIHE$TQPxg{?v#ank*vfjY-Bq3PO129(soG1-zeaj-mRL4 z0rRg%+6=KWE+Jl{3*z3RY7Z>%t{b5TcTY6VkMH`|mN%-S<{I@;$({tyOWwVArrFXh zXdcpYe5la;8O6~V7o$30-yp=9446tf%dG2W=jTN_<|>%ETz}=Q75mS`o)JU73RcQtFh3z!uEf>P!Wpg35eA|+Yq@>bdK+72D0Zhz1 zVKh=04b`!SHJ+h;T#F!vrmh)ybGV5*GVFF)e`}eXnawueDz&Bgk92FHmcRuQJtCFR z{jtiB?%OTZ=im>)9(K}>`k_)obI&`p=P~NX{=_HI?hRX)IQCM5abRK<;`wCs9?_rI zcIF1^uQ!_85C3l$r54fW{Kx;acCCTQ8qjVWp84E9A;WGeUk5*M6E{qcu~*kWXIv|p zJ9~lmcs+?}=q(Cr>HjWnu9K88>LtAONJors$Cq!vDtpY2AuY?GL<#Bk>E)8%3%L*P z8zoQ5<_R3sJ`T-|3Lsmx3s4#m8wUpm8Gws|5sE>$09%pEXoV`6^KVWvdOv50>o{L%W`e;NOFOi>%U)MFw9&K=N!`+~bJ-JW% zL${KYaC|LE``#nA=f8Y1t}MK*9mg;vrLTwre2n?(5+$Eu=Yzn{7$q;d%Oj9+u)BFg z@&~^os_fK!ku{qmUCSsHFg`j`)-WN@Eej|Q6W_}-M7Co zed9F@8*isC9g^|=C6$QfRvC+S@g$AlJ|c)m&mPgl)1mG;h&;-L-~Wu}t?tmjXMI!D zQPe?|Ot^j}nwq}_i-XV%z2X@1kKFn?oq*J>_BzQu^P_(xV{vwC&#gObyC0%*CdU)T zA&v&>OZBV#PQ{tAL_;w`l-xV44Y2HDwDvl_8z=1nLnh0ta&m1JD7Q%bt3t~xPTOal z=Zr05PFA^>+uoto^jyf?@a5vz_Hf#y|=TZP!8H^0arB(lS3hX61oHm?=F z+jJo#76OQ9N3+Wqi7O9~HtcO<=)`0@EvZ&Efo0!*5<>0)38t*9%5Ut17VlA4-|1>! z=cP>DiRe|Oo%#1V5OwzHG@gfND{#v+3pX+Y=3|_)B9vXKbWZ?ImS;A?c{<-)L%c&2Y}GSVEe-{d+pV!M zwY@{c&>_=EG~symIMG}5YV97sip>3c09=>}rX7+_{wY81EPqo zNT$d6D1jtxtukJ>;ux?tfm1eJOUxXZcK!69JsutE|H~jv0}K*QH~Bn*l?&Xn#dMea z0z0t-!8Xw2^V@`L9e+E^q?kGm+&cpw{1Kh}p^FPGo-Cz*);Ult$Y$#&*CA2U{|<*^ z;qw8fwdXG5rLn={#->7%%~P!XV+$6KmrlE>Kahe93f}tgKULOyD9;RUl$qAn zYVtSwSXOqYmT&f)o(G%3L{pr}rS*fT{lKCC9BCM5j%*qWOL$U?Pq3Qq-KI>&H$b=F)bdocEUa6j zRd`db%w*YgM>(Y8eUBgGLT~{@-(Qq9Y^G5bGU}VXCOZr%aRu1(3DTnP3;9UPq@`3Y zY3|()73YiBsj!-2oMw;yUgJ6MpA~1v7Ltu8xzbhdnQoB;$g@dDwr!i=;LJxRtzlbD zFGHtmXsgzP^@k{O*y{FiDcOD>iZ7D`-U9$zo#tUYYq04!MW~ddZOP6L6p_~C=XOnL zeht~)uKcxnS*d19(9Hbu{KTT0Rp&!H3s;tX@q5U!z}1ky9sl$IM7Z6(!5Xd3s_u^D zFN1q|{fj8t=^4>5q9?7l_3-h59d&@`&+gE|d4&f*Y_gqrr#v4`Pb&P?4W*l*ZS-BN78azOCA=-bO=nA(?%M5vJ!YCbT$+6@GDeT2S` zf)P%e-H5d7i_fgjh&qXP_lUe<{KhSeaU8NJL8C$`=Z&PISso549kuZX%Jek8QvIgHB{WoUA{bEg zXsGEGwi~JIy48m&wxGjoiNAbr&oCk`*(CPr64ULzpW_uGMKdfn3h8dSs2dDRg)t;K zKS!#3&V5Hl-=btUH+`?yMjP#kleZiQ*Pa~5mgGwch z0zB2|%pS?6Vr<-?+Jj<^@mhuefj(gPohe)`oHGR28y(+Ta z=|&{NLWh--_JK#}7)T&~8nWtYXU&)c*Zf?m5(cky4aVqy;qUx3{H5gyCXuq-5ZGX) zR}TOZmEYIN_4REHpSL2wSw(}=q1ABnH$muMs?$Em>x-&JfnXJtn6Bp+PIm>KA=rE) z(c8AQD2=MDW8nM-LIt(?C46U405t~cA^I>LXaM{4*m5svpIXPsN6$1c!#C$iv%!Q! z!^`nUE0Eo9E-gR6Uw-i=D!ftkqK1GI|Hp1@ar#K9sa0;*H=)S}{w|8d7a{SZOjOC2 z8Lmu%s07r7RT2dk5kHoumiBTiq~Lh$B*m0y)Ux{p>I6!aS}jq+QBthQE%MR;CB0l1 zx;hfNszsgUX$=qx)e@V1rsd4Fzt?oRqUAyAkv+S%;2#c-pVZICjtU=HCGxg5UcC^n zs?9)Etr;(?X~VYqHOp|-{P&^VNlKQ#Gpb+@1*c}rCRBtZqr1P$A5Z48cZFH*9KAv~ zmdNkCMg%l}BBkA|lW7?~UXz1P@znlDwVCn$?+(1DI}eae?%Mj=8@$RVtoQuh(i_8JuaFcdHy&kFWpo(apSy4=}v+* z*SOo6XcaA`J>0cpP73Egd?<%IFTO^ z??;%BC19MLnP2U<?HQ|aSLo_s1q0qCjFWSnk|1|`7p~pHc5%f`-)>HY0RDMGiG0P_>b250 zZH^N2T;+)zQmpkp2ScuG!8-WI)jNFvZC*%LD4!k3Tmf{dk0HzG9l>lj)II@s>3tgF z&-2)r^EqNYgQ!~z4Tob95=A@?b^KL3$u8&mK$nd3{d~4HCmgg~p-!#{TpGV5=<)k{ z%KT~8NWe-(=V^lhu7&-t^jhoohceMFH^M?Vuz>naku%q8IA9nM0Bf~0MT3AEwwHZ^ z(zYJErKND$Cq7*!5Qx&#TQMT>FQaXg&FQShzeOBhh%@*_v8FxKom4$~N{9N%m!oeQe!#l&!KQ%-G5@nC$ydSwf7m3}ekU7(+i7i`R#b>Ixvmld|zFIJs z22bh~AgHkA{}lGO_dobZDe^*Y>6zmbI8sT+H>5Zr^*}z`4nUiotrqAJxk!(RukZ<6skL60XEGX;CZHpjB?hz zB9905OjY>sovI^1{m^%VNsad0A6=;a%L*<3=pI=9gW>cPYFxT>=VOZ5&glyicjk^# zQ{a(~Yj%%7X_z20CLgH90#`9aO|*9JM?mxXlal%JBJ8T1&1!ElEt`8STv*Mf`BF&P zZqTCE*1ztmkMjR(cBP6f0%R%We6I5bzcB_E&MpxNC-}q-&-px`_S|)6H2I$#3iQ(u zDv}?6YT^Pt=bXM;iXrqLTA}sRS--st+w^~C^iZs!{o&hMY$4NfO;1VXEw!)cOCRiR zGyDHOq_rMJ0gQ!3q<84}I4Z+X91ldc?9WU#1?p|>HOGy{w;GmOw3&$qG1^%9c{K|} zSf>c;Y%OQak}2mVa`bH$$j0cOq{Q^8!2%CmkF4^08fWWs@OCVL0y$rqOQZ&>2k$zY zWYq9H6BhpfG{@Tu+P-ucRW$Z4WYy2%(n`B-Ei1F?KqBkIH^A+PRo+zG2%YF04jQ`=7L0Y0{vHDlOH zi8i<=_h8{kUiSHkIt;9G3RICYcfU(~{8!DOw0>7AYp{D07qP@xzJH^njlbvDyvdj= zSfFWCuiD)F9s})gNkZ>0@EO#>z26ovwE6+YkI2C#BYHEo-FJ3Auy)Q;%sVlAAAL}M z>u=>@yj*z2(Z$O{o%?^Yq+Scw+W-A^12}PY`ZdHK%VLp?9Xi`HVo!%>YR!5_EN<6g zqtH{jt%VqWnCpM@6Cm@lig}|19+5P^OEFFfchjXj?&D<5c zvCq5&SEOGLhT-KO&EQG3uK1g?@6Cop2t!u?PKs(FAB{} zlWtOrlG2t32Wueq6Har;F3310a##u$vss-qGW}s4MB9-aB#fw-?hN;Ay?;2}_Na{9Z z38u=iiLJkFg5VAR5NqJeW3aqSgE#&VFVO?$6VBSF;0mn+{B<+hHSp#&p77nT!r|-J z0BO=^Kq*rQlt&)mvgcB7E7ufzBe~k0bw*b~+)>HOCQ3$B?p)G)OYxcf2W|=*sO~wB zuVN0#)!aJv!~m9U6A6}TsYov8!6&=UOjq^|_cC4wFh!OcME)r(@^>2#d)K3+lrC!O zijjyEWwDJLz^)~e6^F%~^C6$KD6G*M)WS6WliF%0FAOBx4ayI9(z6bY>`D$t*;jo* zcYLnsNLZ&IH1&>n37TmqJqYhS&k=V2=kA}=KQ5%SIdlAclv5C`N!LE#kC$djBXahKD|vqqA;x&-%pYj&h^aJvh^tM*^ctt zRC6j#6f5iXO|K;xoa@Jxqi-Z_3DCYr^!O;hWV6$!eWv4En1 z+zPBv0J4*BP|yWHHLnHTTu6u=4Jp<^Hz4eREMo(a%#mS)4Kc;ZfU-23%$kisn$`iH zu(*vHEV2*9ZA4UBZ`jSjtD&hIF0EANKQJ|SoQ2Es4@rxrJ%9WnJ+p(|e7duIzhv7n zzNZo?&-N_T%l;SfuYg>LYm-`d+uH(@YpgICxkQYhrw$~bb7e?$;As8MgnI$3E8Y>T~M?3-*u}}0w2_Jn2qp@yh8-~g$doD$!#`4<9+3qNL00wzc3|{81-N~`z;=gW2gB26 zT9ZD8ngc=}(3U_$W%DVM=dtg)I!;l$Re~$dOse#_dt&dj+zra99JeuztOFS|oYyRC zeE5++=vhO7M{l-S8FfpYOj2Zbltxrc;?_8JYHGe97YYM%`o0YDz+2X}B=F@7#sF@? z-gA%8co?4WPD%HFr_D$C|IfkH;kbu=V0g|9k1$0#_iQQlKKV08lzr5qxkTAct7kQq zGf$?lu>TWfrTPNlk7Tvxbk7F1Q{w^6W*k#c5OO}qHCj^t^Y2uYd24c=JxPDKv~GAE z4`Qs|IsPvc1@Ho0fP<;&^UpJrfol^N^>i~{`!gk<j14o-y8-c=B92@0 z-`&CkW_T%g#A}wp?+qosy=O}C(1Rol>o)Z~@HsaQ-?TtyuNNg*%)nB6nJuKkhtl^= zT%x1S|IVgzUhs7?0dF;=T`ek*B88Q#J9Du-P7xfyRR%iKwgXvQmeNa{h@(**eA~J0 zhh_Gc2Ht(B&_?F*T<-~*nLS6r(3e_DCP6ud!n_WP^jC9H``ynsqJ4FoUiE`l0@-Sy zJ7tbcloEwTRmvh31S{*zuf;SbgXdmHM-0gg4UUa3qdYBuj@a00m>cO?AGAcj)#byI zHF|H;f73abBw)4kD@Hi6>q;mfR=*33?8k&QVB#$6eOnSPdNYOogJ-Oc-^+ehTBZV9%G}t3FlJ57U45=b&5&H`JG&M0`oh@tOBE8J$S(s>Dy=xuMZH! zJ~+(6RIW>*wuKXa;A)`5Fm5ITBtWpSW6IfrbV2MTiWJs?gzbdnoNJDD%7C9}5!TM$ zW=he!EVZk4Bnp_%U1ic~#*u*bi|k?xcMHow`((Mtm(f3W7a{+==zp58y4ku+83&OB zcd8L+#vJ`*FE7(Z0HkOOs03epeGFWgJZlO!^bY=pw^V&FQF1Ao9DPcJkjM{I%FS=E zIu(-*!eJj}08?Iz<^7-O@m08$(!*ake0^}@w9#%hu|uzB&_{Kj1Or-x@C8D|0ipGe z%+Q;|;R3MNgvtpH>)DL)@gG{b#w%y$TQ_GUe>S4O39RzWPE9?eVw@)G;LY{0LQfN6 zWLouGg+0dz;Q>qXa>SZ*MPD;_%G{RQ;|_HsKD&G^Bz?b$I3^~sPFoHf3y`~m6~i{Z zK`HtE`$hg&1KV)jF8^M{pZ8U^COZ#tc&jwezZziOv&QHEeXjJer=soMb5HWK49l0` z;$DIg;`}!ZV3iNZ&t@H`(YuB}=M#EI*VQ+O+5TkLd&Zx$##71)ItH`(fX%yX&4A{qdJ)_&+vwr}(Pau5F@f4W{@%yp;#Vb-2ePT4*v6+3)b1I8w?>JRZCY`&>7Nc<{4dV2HW%==)8=r!;pyrsoJ?m;$)1#RGy{N2*#)RKfPXyy@oynB16h@*$>`T6Z{dGy^;A zjR@Z9@r-^miS_w=!ob0Itz|xLiEDEhb`~BQF~$vZTOaoxj4IUJe(zj~8oxG+En3ze z;LX%_2KI-_)NR<5%DOaO6QNEc*6Vd5l~QfSOLw}4xKlOP8nK6<<}6vM@d>QUwBZ=o z*dB51DenI-T|jon-b*-SJIf~^_vQyJqp;_hUqQ)Nqa8#0-)2w5?Qb{aNGMBh*r%rC zhV>*VdAjeQ*kyjT!VJ(~u6Mm1+}n!ca}AM)Bf2vWwanKYU*O_fO2 zO$9Hx{>jVx{5ZR9`k1u8qy@mC83Ug`f35=39PEIb-W7#gg&(dsrjRkd?@Y}@(uWM^{+RD?eE?tAj%;~#UCq!RWa$P+~76r7X+<@o>Cp@2{O7mal28`wQ}2$BNwq(<33C;a;j0^?L%RiiF>l^-Rcp zxf4sfb0OUuPODH{N~>t0`-n^YFXRZGBv%XdP2O^IhHgH-JlrTX>&SiI2TnkclYj8d zXB8IdO|YuCWCJO~a>;X&M=l4|oKg64;q8K_*%*I8An;k~0-NzTklGuA^=V@LqSTP-duT$fh3(l@%&M*Ibts9g%OxoaMf-`p2x$ zii{)tsEg9Hthgq$40?SC{iJ}F9<@9IWU5vO0}aUqc+K+>XDgS>6anZoW#bJ=s<~f= zyaL@1NOj64iM8^tVJM{r{_$7X7D?;fW(qOTXObyE4%nIAg1UMh`RX!?8~E&R1Ba88np4#}51DnqE8c=OY@cqpP8arZ#t(o@ zTCyTsOLHcN>I5B6?i4$ydsTd$ z9wHq3+NmDTy{*E*gqYJk7-%Wb5sB}=Mf_uLD`N$pZjyzxM9+=YkU9&GI5X}x?2a29#`**(T4b(_FOzEi_ex+rb*Um}oLI{B7 z1;V9)BMTN147>HuJg04cjl3W#&s{u-A#+2~&30keEbUrp z&|B?g5ygSS;8jzB%MZq8ffnHp_957t)zHj0DAE{_ClXF+XNG!_Hv|2u(*}>`i>Wtah_w)I z+;4n90N}N#IX#XE+ORUmt{;N%w9MNyc>)x@Q@)MtbDgfy`S%gP}O2AwP%m|*V z7(RyC-qU+c>e<%LKigC03g`WML%B~*apV;WuBjy>p95EKVdT=73;N)*3T`6-tbQp0 zCBz-G4onhjI^x27u?6}|v3-A08+otaQsOmW@&>v1)js&EO7JD;Z=h3rVA>g$=5UFH z17KJJg0^#-ciV)EAA~?FrA2bo8{W3P0ExUJ=C35%&73D1dj8V3EG-oI1afpl5|&-Y zl%vk`9$xq5AU-@uMMvuZ=Zh0J^H@yGBl%KeMA%t)E2sHymMn}0(#M!ZEl0ErY)b4Z zOLy)H`*dc1EZ3w5@!ibdmv)F}b=DY2iWV0PGIjQuvEFev+4K)-swhC3E|=W;7G*Lq zY5_CP_Zk->tur|86c(2>W%FVi*~CNFqk=__%Yl=tY)hZoRz{Jpbkx z=HLVzOaPbm{~k<;a6n`1tMu_%lHJy#9PC%nT2;#+Y|f^A=aji11kmoJZP}vEX16T? zp%cJ4@D(6F0#=krKe>g+uyZ0^YMunu9~;ZY;r+Lc0BVr$naD-kj}_S!r7L$iEZZ+VN$ z7SJcTivX5U_ty1BIY8hPQr=%_B~SA7yyom9@32f)Wr&d~;v=k{0vjHGbvxEv5^z;I ztiId%h=lPnDhSsR{*YiN3;@ov-P~1un8Giuvci4(2uKbmHJy^~3qjuK z{V4nMXwtxP53qjk8UV>Bv+~HpE%eb*dxt$A#NNI`OIs0gcWstssFx3QO-{Q%1WYDl zpZmi84wc0~SFRTkqhgyzy#T;_Rv2BhbuCc#bAGZ*FukVMZuuikG8y&WXr{7fZUExRukV{sGcoBX>aFuzJG-%km{LII0x+>xvNV9 z5+JvY)+3G>5xcoDSLpvx8v&1fBHQ1?WVMh11O zSs(JTeQ&Q}oqi$;(|KjMN_*3jqgiEVRIc&*#fk}YSC--S78_3WA&aZP{qeC^wODPi zwfNqEH~)meKthjwRJtvAC#rxRmOUrgJK#NbW!w*$PqWovt1K!z=@_6~G>Mmom#y32T3u@sTw_@3U~UloJxBpA#n#p5I~!7cfm-Yew(a_Z84U_M;tFOZOy>E z^iS8wGM$0YZ9jviY+b z*pczq_CIW4AfXVTs{`WH=qXEVca!BAc9dSk-S(Y0UoNI6(@PU-X#AW3jBe7rI~#W^ zv(E$EcwyP2|D828yUN!*{lK=vpwoeZmcqHWZV_vK(I=LR2&t6Or~FP?lO^?dwHV*d zZaw5Csyu3l&{#gsawBk(y-n@&003zKi2MIg&jYg~FYjfCWes&D`$`~4Bhv%0x(qoj_H|@_@o39lfE5&5*gsZkTsx8T+XSeCzM>9N!Gx7&?>=9k~DYRn; zXWcIDphkn#W9N2S8|z0i2Te04C3|?s+kP3BBi3Iq9t`7nX#0Qg-a3a$Nu?rM-_Yvo z3POs$^S>4)&pZCrDn;rs#kEBc;~D0Ow34F1j7@$BG|_L1hlxI;5jto`)7< z`|Ok-n>Y#-X@J+SrDMM0%Qch50H0cVWhoJw>^TPGVse2=Pp^*S{z|4t_IxPZFhefP z4{y#_{OANWN4Y9m)FIRL(EW`run*uVT?I@(s4);_F;lcSN3R{4z!$m}WuR2Iq7-xTJDc`7d-ZXWj^9 zKY3laFo~GZ9pu8tenk~_Rr}T9*T&*Z@gJPed>Sjz!^WJb97sjtIh|7_b*wH$Q<9gF zO+2gZhdz7;FaxdJhlv$^PvB7zILBsSmEtFJ?yuF(i*r|*OC|5L@5ul81U&CTgdT`e z10+)34#Cv0JSUz94Q5WAKV~wNTF{ISnvb_e+1Z|BP4B%Kv-v~|s&7E){*z%4raLl(nX zhB!Blv`Hlt?M-0%8ZWhb!p){OIeY{mP^irl^A+&qkjdRoD&;Z(8NDlBjmJ5-B^~iL zu)SrShx65lYJbIhCmqksLT!l|!08>#a+?9Dt|#)4U-ps}9)aq_i->roS33!rq40i- zh6w{c{XIwBaAPa87afkgz!~7>@dyg284bnxGwk{1u$q3aiPQ457kJ3<~xC3nMjSnd46q4cy-n~{I#F%hu8b-hxUbzUPk?2-p zW%{ol5=ZV27^OV_#t>3I{zsn1P%yKpG2XQn1Tt)Xh7{*3X@4=7uAj_| z5_@#dYaU7oSd8F5Yld^1YjKla2*hXT`s(LC2tSZ~1Rbf#=PbI;u1!XKLy}mlyXD5& zdm82i$gZ1ZEFYT&^HO1(7m(Ze!pN_R0C@WFxXBg1m~amQ{N)7#fTZWZsKIRUYLqSB zO#8G^W%*^5$kXh7^N4ow0W%0u^kMyj5X|Y6US@~MV&{zdzT{I@iOpt^)NW?2YFVS# zm~68n!#~LSPSzl1E1(f^owd^ETjqYZ)~1GRJDt8;-X_SM)%O>!N_G!(W*gN**4AP( zQXR|2pVgf0S$!L)4A{sd1D#k>QgY7$p9gtx#*3&f*j8b$QtCwd5{7@$TlqC;9W?;Iw1F2#xH;63`wjHq#w(a zf!V|o7!|DmoRa?}dyu;52%-wIE#R=-bk<3bAiSsMs-9i$WPEtc?{*!q1ylR}rdM(j zOsxq~A1AXq)}fLyjI|uND8r&Pu)u>@7e5(-hK~Z1>OZmF!N;DSAkA8*@jiBXG`~~H z$Z*Y*o;zUk>BZeKC6enZDa3>zuuQ8qPy3-J6`@~btpd+(Tfby&j0B8x;R}tKWG$rR zT_+||>pq~E=Pd==x}#Y|z?2ptC-;$ItQP6#eUD~Wf0XM0W9K8=$AWA!jX``qMj2UQ zUieoC#B@hZmzLJrSIK3qVXcDj+HRzH8Egak3Gt2;oaDDnVHJPZk|f}%p9u{yqtLqB zLx<;U4QQ{9_wwZl@h;hP=QJxmPC--E=RwK0jqeTT^Y~*tU4)`r?G#>hmz8$qpOchM)+jGE zxKQs>Qh4ZJ5}ij?WDtfw;D%muHuiAbwkkNt!R1RBDt?}C8^^?6IBbXPx8GS0#)nRY z0w;JE9v&XFmCPUO>RMV_KKdR;AquXm+R0D$A#;J8Pf-rGbaVR`F@^{)L~-goADSF8|HlPAY62~m*tRJ z0N{U)0~iWXYQH0Uazbu(mm_t3xIZflS&fUFyf*$=6s>)xCr{aIT+BS+M|eOR>u?lP zfG3`LinHDa`GA3uYtp844`!Dds|jjLB19Y#w6jacIl>lH0XE0RpAFR3s+T*En*K6+ z70>ro;^XGLmKqeRsTvx=q)8~>42ZnoDS?)Z{KkAV;SzlplYVu`o`0sNo8qzLkDb*8 zIW_w@+@uQ7mAYPRio=L{%uYjbPP*M4vILcWj*`7^Z+1c#(EK7j32Fk%BM^W{?TEkXI4 zKi1rY7jh#X2&`v+SBnXl)OxrKRM7uXGyr$g<1rO*a{>&aqblL*BX~G`?&kP$8+r6w z`0&ng1AJMcRGs0YWj2^yA&j~$FU{G#9$z7$7D70fcgfZ&x)s!Ovqm%+pPh8HK4 zsJ_!2Hx!+Wm7rB#E4j^lf*Kc2kIXEv-60)?r4^z`Eo_EZ3k-0sy{x@7yu#9!QHaCf z)XQB@X$`9(!7!gl2yRwW4{S0^|FcUAW>^xIYB0%9qkC6Ka?#yFXD7?FCJbZ+S?QB^ zTO$gxkYN`Bv%uR4uBlb8Bv$o2r72$p*i^ljiGZvR?@~1e12Qo{Tdhfbe6O!5Gvj$P zLk0K1v|Iku_h`$0@*T|Y8)yZZ{t>VIB$w?o#^-+F&PPyKlEE0EPZnVK91Jj3pIq>lz}$Q^55kmcn#X{p zA84prjVbrKYG^LM&@TZongX&s9``i1r(BaI5Mq$(<`n;mV9`V}Sp1hIdLOfs0%rap z_qgW6_;ETKc>h?3yS_4v5pDsrlA(YknTE>F7J8PKT&R2QeB~b{OsSu6;)vh}R>Iz> z#swye9`sB!SNpH+SEHb@x3%BqLx;;*Z&caVVnmq5bA>*AixT2|dOuWML>uOatZ7u` zPu33LFf4gH>&BW^Hgc7_w18?p(t|y3nHeDBb0?~oD69-XyuV7+XfOE(f)R7!zE=*D3P=0iIm4$s16?d8co8DY(v{y>{mQA$T z#jmznHJB*^s3da9dMZJYa)(3EMTpL^M@ABOn!9jw?{atwCaE1fo&;t!^C{dr(i4c) zGUgH=X0LY=zI9K@3-0wzK%`ohnjs}#Svr;PQQhaf2v+IO!drN*#0jhhk_f;cw=r;s zrvq5U9&;}Lr`u)TnjpEAewxON7Hg)~r6F>R2<1C9b5_WJc}M4I7Xk9nJ?j_9U-RD> zoFYOA_ke3+{fWEBeiuM%hc3ZvG`%8(ZFm6ji~_jde+O-J2&jx04rMoI2?b8VsVS|} znKTo57U683`k*AlWCd<~*?;gk>{ zi3b$(N@>G8&G?2aTxBnIOnCK9x${Jvv6mcSlmFfH4}dv-Oa~0!TBOhKdC0fYRE2Z< z_qo3*sd~Pz+z>m5^O;{QE1>&@J6x8OVEpZbZe}bpXS-C%_GE6{A)EW6xBj+QtRVHZ|RMUZM zOPxHp3r5XF(tBFphhmRkUvG$86@i`FvGecO$M|o|Lc6ltwvg_`ZG!HDX@szRnwW4) zSAp(3hDRV_rtIylF#9NHNz9C<>jCEg8gOmDqU#~?=2|Ut z4Ecpc=FC$ge=?_~p$Xr~-2KXy*gmw|NaOpUe%(*3chzrdr&<#%xuIq~49r9mCJ(?}&W5!ALnU8XMv!7P4tezy1^Q(^N<>D20hv zXqx-9;cp?dMuZ7bNqpIfjf<8L;o>e!aYd-bxgR?YBP<|Ee z;zYU3o?T*S4*QMke2A)qgerV2(G-l44DCz@Zu|g5%l#$=NL;Z%?jVJCtLfhlT~1@d ziZ5;P$BuT?;r7Z!DK4F5ZsmdSvq**D#)g=kpTTf|u)_Q!_`x<{R{=8G{vi#wERoR0 z2$Oczfy#K?4YnT9jzGt;qh%YNYDw@~qCM3`CQnGe95V3^;hPq=gwgk!%sc!wa@jl+ z>CUsFD~xgEAy};jCf4DCOB?$`hbPFZ_f5d7jd6TvYBdR13Iig&*yBV;UiUWOoN|0_ zRTcD#ROkPcvGr&Qn#~!u7$*ZfJtt&#;d{WZZCPe$G<)a|aSCs0RG2PT>N%JZ@n=mDlB`0?CO|YvlcO zWP4DvyP*&6>ZdHl2rBk4d`R8}-WnY$IN@#G-hnzDk>UQ;cBV#IvBzgUw)Ngeh9c*;5kGnc zg41~Iw;}UD2(jwixL>HozGiG_q;Jj3l{bvXA&s{sdYa3*?_0j8+mNc=Ge=J<60;h` z)GkWln$~FD&^LosQt*p7M(u&@2RFOne>Jj8e*d`)qM!Q&G_oAYEbj8AIG%Sa;c1HK z26gj{l2QZWk_*8?ocF}X@-*n4(&M?d#*i;n;%T>YJ9J|PuO;6${PZavgz0H;(M))H zc08mh8MPH5UaD}BM0{lP!>c-}C(E-Wo}N)CP!Vy%J9TJq(<8~5Cw#vvV&4b?+M8!! z?V5Ie{qorz3er4W(+FG>1m5cJYqe48yaM`DVN>b4<&gp*mHd1^tWo+$pid{zw|-$? zP8(`#WOp0z4Re0_Ok>R-NrRtD0L0V1Iun^H6j( z1_+pd8}4Y>4c~onbl68Gqv1PUWzp)kM>lb*BG7655Uz0N=|3E?+4Ccl@p@MpK0;WS0!q5E1t{y)vNcI?rnFNbUsRCaOGeX zN?J<7b55tWECt5D8ImTixK2qGCh|l#yxl>*`FrC!)g*Jl@=+6c*KpESXywkdfsZWX z;oSSUTk#A=`$SKdt)cUg`IZh0)>v7Z+`iYoytJs9$i8CP=f2vDT$B@P0#eG(ID-G# zqXI9SY?{ZfeVih}qxoA~lfIO{!Du~VY3^ zeU%+c=M0orHCEU`SD&zU?9Rya4=38l3r&6dO9zlG**?1t+^SysqOL|h`{pBmeASnBdHO6di z?U;F2_CRR>B1{l#2m7mDWf8c4m}`yK9rXTgJl$duhI3u9arsv|@_)m1-x?SKYFi;= z?spjcPI00Bxk)C8nUN@S4bwDAqdP}z*;|?Uu|hbk3D^UB5#TkKDW41UrzN!#>rgq# z2nF8`P;RNm9kSx%w3o^pS=jmBf-LcvEPRpeTE;bk#Ruqu%l0zj+}bfJJAXZNnlVKK zBxD<30dO+}fMC=Cza&<1l+vSqT}1oSXmh?#yqS@*Edh~{*Vz*ms<z z(*i*qMK(!iWVFq@lhaF@%)C!7BijT<5CH>6Y+5&p{?t+7I_nG;_t7R7d7k9*!Ee0> z@-9Xm-V9=|EyR90!y8{!clQu-OzD7pKP|Q&}#)!(!81=cO9{K zQH>P07GaKM8O9u_#WVmJi0GYsAq>Myu)Y!yZx>-8KK6w&UiL+cvV?#gtLTfs6hF7S ztC|QP#DHrG&;TDN8UBOv30Tc$I|N|y$JN687R>X`o@||5`;+P$4ybB*d4WsKv5eiZ!ZPCN#DZoq5?h-K+2JLzZrYbw zh}G9gkw%o_NhNXpgAI$oZs52`9!nd6)zyY$L84;0XQfbLaXeqi^I8aOk#;fL^hOgg z;a1945#!3oqphK*HM}HGtw&j8KH{HLN*rHFoDH8E*z}^1_EeeP=8?1$oSzqfKBDPE z)3JRmtdms(2YhwY{1puXUy)bWNK0{>?mte;(<)ng3M52bT0F+1o?}|1Waon5_;`kT ziVoz(B94z1BlSRQ^TWa4Z!##@0=d2IY$nR~)!ht*s>BtGW%J<#AzI+@Sd2Z{4~dW# z!a1Aujs456`Trv6p8!C=>0i2S&rHNw-cGoFvrg*f5`ShZnmY^K@TX!L0apl&zS0c0xQreJg`g8W@!pm!~}l%WJFWD_r%AY&XoF{ghIM zKpkz$JtguDI{kTnAZPi|LGxO`hKEsZ-$H+LY)=8k#&H0e92FfUTFZQc4t7-hyw1eJ zRq*7Zc%M*CWScbV#l3+z7EuM}Ri=QFbn$qlVEkWxE6HJ5a?P+PMx|X%_90=g>HKJp z15@o?l(`L?&_jC;TX>H7Fa%7CiaKBVC@Rqk#E@n_&pDEFX7ppU;!x`*D%y$jm5)TT z>ol+srs7RB+L)tcxo31Ez1Sa^eBxw2!~Of0aboWv-yVE&Ed@ltY2-q5ZZr#5AWiam z^5zV>GDjqe<(F#65j$}`nFpPRB9{8pN1;-&HdIIsl=y&wnloE~W^j&{x0%HwA8=c~ zr+fgsnm%*7q-xCNu4bRuJb!)hGK`pXq;2jE}h_z2vke zcD~cB>`ueQI5mjsN@jAF*R~4kX@)YXczF1Nzp_P3DipZqJLI$Qs{v6op|XVmCRWv& zXpOVBN`#w-s!imY+Rx#>`)V)7yk6}{qDal@>$BU|&)**-$;{sSUW2@}V5$b;cdFO@ zvrF-c7R#sZa=r#M)j)6idn*hCW6jx%h7Qx*TB|t;=Dg#rsM*CYZe?vQM3q&&)Zq@p z9RbG9aWL`LVjqyX91Hy6P?2Vt;u^Fbqc+#*e)|Bku@`BHR%5qb!AZI;GQ zy;zR$PbfgH-S2&Rc{wvaxZhX~SAlO@y8?K9use<(4>N^?h4J2#jnqsuV}cYetxS91 z2NQ#BCys)GGZ?4rJl49NAZ3#o=ebUT0BtwAAt`UaTO;^P0V?`ML*O~yTk&xM%ad2E zr`AJnft(2~*^zdeIE}rGNFQWF>z(ZC9}14{!uP>V$SZaDp}-Qwy|u4shB3c+Sl}ck z$U=cK*a;9#GT$uN+%p&aSKhdrzuJFdHIXlCfuyys`YJh-+GC^!>GiesuW)FzSRUxJ z<+|EK>2V+Y=+jM~kl!Q_)gFzL+sk#ZB}Pj8W0s_sqSudY?1MW)JFZ zl)L)TuejU_pMAFFHp2XA7aZzW45-(Hh_}aW$@Jr_-6ZhwQBy-rZSNRKf4tiXL<74W zT@RKo+qbc7KN<#Wsx={-qQ9?W39l}S@bVoPMw5%Z?Ke#1txn>&t2 z-S~!Oc~l|CtYDoc!Y}3$v6DLYf%5?L@cuB2OGM;s?pv77Np96433T+CEKl>mmHbK< zA=I~fLXxe~YG#lc`6yd9ce9z3B-Sug?Tl6ry7rrkTDi3F(5=F`8XnCLbPHTsL7~@A z6nA8vf`+hv?NjvfOQe?}v?9J1>!{0q@8f~=L!krRUNcXHk%o|_S!f3o#`ajo7vPM+ z_Vg3apzJA3IDX4pjJNXhs!j8VXf(Bhi@mJjmhSWe`x0-K0~6uwqx1e{)NHL_M{!S5 zr)#^iwkr99ObNVyj((2SskZim0wydqX)&zS;TiiPuWAv(6_$90o=yBoZRkIPtUhJg z11jFO5H4R7rd$)?%QiIrgDNaW!g>jo98@N4-d_JF#mC)ap~_CVZ1xU1;zuXjF52+~LLDy)Lz9ch$*08V$vSN(hrA2fRFl1qDm@in8~G4jiPu4%vbNVQtKy#Y1+Qo<;q1?y7az1fhj@vaVz&_!|T) z?-&Ys6?)BMy!&hIrhSb|KAy1?SYLP#SB?xc3f-Z|Q@g9BK+sJnB5R^)cYSaKBUvYp zwWCUB+Y3}fCjQNZug?6BT!(XftUzU~Z0|$1w0a+`SbzS|MD)==A;G$S>xY@vU?0tJ zv>v_pL~UhuepC!Ix4cVfB<FrSfe36)(p{t4G+?imM;)!pVI1{~U^nV+=i8PO+)NLyATzDxoun6?u% z88Ep%_q&t;1QDPPq`jFVs_ddsi0=|X<~p)K()EPYH#^90xVDpkM9D^aGo$TOYP<}Y zj<;(vRjNUc3Z&%nWX(tVmd&{XmdbA6(ht z-GM*4#2HbV+w7by@9B%2H86HJi{EM2`aif4Jf4U7??1HfM{i&2^a4&Q^z*tD;#HoV zZnqk1^x=D4F1+Febm&;y;e!`XH{*QEbH7sr5;WAQ@7$znH%aKMx!JQ`o*0B@YZZI=^@s@F9-cpr6WpPU9}jc@ zRs>)b{1K}{A@6FaS)$>eF3ZQqxW(ZRwY6w8W~2C^ko;zwcSpk&&^*8{nb=Fk#W9=5 z6D7Fan>gDD>u%ej2lfRaLRYRFW@3>P_tyPh;NKCq+XAXfQ*P(v_7mqifhxSc)lBOe z{D$ykjAeJ#J|2mE9TE~3^mcvpldY$LsNr=4;25U^f*%i*nB_bmpcJaK=^`95lOX%|~^DX}!qX zC730Q9tm4%MLJyINXbi(#5NT!Fy>9ri6>8u`0g(Wq(H`f+bGq(n~xav7c4vE1WYmS z%*IT{7f-2Hqic;EDpK5`^gD7pui z@45K|%I^B%fcp1IQeCQi@#@frmFLJ-7_AR_NuWd_CC(SNu$pCkpGJ+~r^1&A2=6#;}Ud?9kznh@c)|C$m4UGP$ z^CZWLDbvf3ruKVpVP+Qp8K`}99ANTdB>ifoM|8fD^1SPhF&-dy7cj$i+UC1oVozL* zpb+9i|LM8{!0Wwkt7VJQJKocc)}G~CMK(z*NCAyx$aLWKy8cIYChM0~yxIX=Nmf=? zsV85L3{5zVvAYB>q&Wvu@_KMsjgk@d|L?@M zT*=uD^n=e|Mn2?5aruv@-}o_zWH7ZDzi`W+h%zzvLaq@@o_x@3GG?99;~{YO*7Lo_ zgaqTqYNQNu%9F>b4dT^O$gKD^7js3c`wlhYCEEqdGMTj7yzi*P0YuU^yJw;NShBvR zQEY`^azME(N(!al_>VH?9lqHuF@5wxrTN!a;0&YJSRP6S;(DVFHLF=mZ>X9=u+EhP z<~!Yb$@sPEFR^{P>dZ|&5N0CpVc}oqPdUPiv@5K|(dILkpdj@B;p@%Aq3-*?e`}&5 zIXfxqSs@fr*$u6-WH5%T;|$5Zn=CVyI+F-llVucTH`(_=S+dOtV;F0;VJuU_7&Bw} zeO&kNdtdkUy^rsG9R1fn9p&BU{eHck&&NaX={<4rU+>tW5$w(gy}x*>9_%YzW4mR~ z&-EE4el3sVgxm0JR4+@u5xCbgN>?L$JEJ0Q2SMCz;*d-;~<7eqP^W;?~Eqrjl{7#@e`x? z!8`FDf?0miQfMv|NxM^6U#nU zwoLzbb-lqBs@+equ?XfDAF(1LBQ5Txyu$uH_79q_nvEsncIAJ`2{_GH1P4zLCW-;F zRoD`&FC%i9>t-T=nQg$Xg@0DMbIDYba{1RrcraC z`eP`b=(VIix(KCIW4!hg?p$*+iWucIk_PZ0k3{tM2th}_hQD303fWG00k<$xsUf*d zJ|nK4e=moggKKV#3OMC5z=FaQeh`{B=Y^kMj;W)J@z><{y$7Yyw^%QcR#+0C7=+zU zX$-h2a`NB+#`1^&&{eIotXA#JM|8n6m&N=l^*dS<$z7hC)_zK_aw1L(RyVMjHY3hW zv;4y>`TjH+)=6){s!m}n>pskFVxDtOVJy~v+oAj@axVR1WjDJtRMfOOQ!PF&;=7(id;LQ_%LdYI-q~%bDwa9eZY19K`k;*u?*COcM&&{6cFNA| z<Hrf*#{;Jt-QGC z;YTr%?mU_<9NAS{T%OT?9Or7&wWxXI?WHxjDXUmZ*{O>+V{Y8@$UPx2( zTId#W16FNL=&iSV=mpEk{D%`@O`o?)2CQ5q=f!|-Iih9HKXJM>uCRfA%^Is2f=GMA zTmQway?&2<*r1u4E{~#v%f-@=1)3Cz}*0!LW30-zO}&wzj{=zPsuN_-)(nLBmV z;}--}x8;R;9(#-7rInrKS=p$q#Sme7AZEaS^dH2Ku;hxY91Gz693kTT7VZO)H6Zn3 zyXM9%?GeUX1s#5d(kz(Xy$w491NnuL!%ZfepMCUj7G4N)Fb!)~Atr{v*tfkMJ{yO? z5azlbo}*RJmN(;eDNnSlbCuEo4AT{$U~{-qjoM$Ijf-pLgmYX6^N;!ewRF3WTs*Yd z1)pA9`GwM^+0Z49r^>XY?cu7XMEzJco?zNvLs|xOc%V}EgbCfTfs_)SL7kXL@G8DC zqfti*P8;JGk(8V;iuPzOa6H2E-AA*j$s*$Un%VEqsb9~DQn@( z&e73|K?4KFpGO17W6wK;fI0wZsMDvjt7VyOfRP>RtP?_D*AaVG%i;H>ybRr5z-Kzg z7GlU^^RCJ%0GOoJ6P}!bZ-XFca-c=ucNUlD>6N>`*rEiu>;yeO){ziPZ)2HU@TWQ) zhJSF)v-#8{a(w2!f1&+_s?>vml6>SR{}L?!`eM7ibwWG$QYpO{mHyXdxedcZ%QmZn zbuHRId{R*MP4R0FT%>nj1pOg$yUnzf*4fPW^rI%-jN99Mb{GSR2y7Q2#^jxkrdjas z$I|7WXbhEeYFqAqA9=YNkv0hZlY6=(0Xw59QNzE$)p3iAvdNWNCv%zb+#P1E!iWY}AeZUiO~D9rjth&G5-}blzs>V9Ia{jB#YCY4rOUCNx*^VuVsKz! z>6B~i_^CQ`Cx-a|MUmgF^zpO^9uv6*3r22^snqZyM$5BCg;Pr!tH~_+Wvz%nr}Tx_ zRhI?Sz{3e*8FtMUbH5fLts>@cu2(<;6&mCQf;8j2^rtBJEdSAHFF&O$aj3Y}n#o(@8wg@2BV#CVmQ^D;uwijh)8Q~JZA5BNH zIs*9Fw%G*E90oXOKnr3_>M8Nwe%yXfRSRX$#-#wfdcM6&1smiID(l_^FpR+ZwezUp zd!!*Ug#RY4wreCEBxzSYq>FzW+&AQsY4*n(m3wb2FC&Ekq2lC9+&`K=S|IB>o45vL zV=V>AgfL+t;2k#zv?mx!`$zE;pPsI`@g{itek9a0`h5_(n8^AG;-XtMC<#$vbk}rh zghOK!scT^Z~*`wz>9zdNWuT?)l1`lS3Xn zdy7&QGvb?+l5bq*_4zF+Z5NiH(lWaPh~TQbzsr)*Rc25m0U=XyS$J);O1EEmB0qQ- zQdFBA{l3=W`<9C*%ObsZ(fOdPlvC?^anIu4b@|lFwrrGg@#g|fh)mi)u@8ZeHDKsO z&I5*?@I!^j75X4)OBR?A-I6KUx~r&j>g`H9lE9Twewu4BlM%d&QJ}li=$aIV0le%raC2_0NJ%DG(e5iS+R;zfJ@seyg zk=0HBC}gRDC!0nDYrVL?tVZzMF78f9UVyMWGuzc`ppxp=9i`fSZ>28m1O(x_GRgON zm^I{zxdIFZ+~&u2G2tQ4fH}tV+eBKGnE>;`h6Vc|&-1vEEZ}QcvmX9{W_G$InRD2( z@@3tJ!JRj(^OH}ndtDEzAXY5?_}%enbuURt?Q%rl%Ht%_Lu*y9tV5yW#Vy$=@;l4v zsqu2>3qDN$n);ijB5$X$42-xVcY-21Cc!KH%y7JZUYO0WHDH&;gHY4Y%c|@T?kh4xLs_v7MGT3*s>BPS}f2RXE zGKIDQ1G^KDKSy2!ugAsL`ez*o&bFp1k1>iWxwX1hBtm zR7M9FRG^Nh6KwTV`x(3U-F|B?FuFtA(G**6OO$ql}3 zFTahicdL=amj;Dx@bvFsr({tj>lii<;>aMkx5R__^LG$Aex|)N>zj)9Esi>Mg~$RY zU`Mz++Xe(l+jbeah=W;ROFec?(d5sB@hSb4Nr9iack(!WoQy8H`SAa7vRZ+Y)hhqk{~vnh4M*{w{wO0BF^Et$ z*^{UXF3H+5_T82)tI6$~J7cO?eAk~=!g`-Hq1G;#WWor+N$*%BVwm!}8ykzm&gW=j zcP(kw{f$DIPzRkfIhtRux{M5d`O=P0mr^hQz{4s|lR)&w`nCme$}=+1`#xv~P#1|n zc(oqL+p(t%^Ew05S235&S6+HoQ`UhDw1Ld;(HhSTM*$v-fV|^86@ApuDjRNp!_28z zZ~jN$AO$HIoI9Gn#ab@cDO%RN=gl!h-B3e&?s0R|DgQ>h=Z_UkLnM#)vgg+%)KMa@ zB-BUqk7k^Ck=OosN0OaUlEKV$C~Yg^m#?1*s4LbJAq%Amc!;OVI^Odl>s25KsamuP z&;FTv!1E%g&foD2ZJJLcecwI`0G?Vf-kaxA-z`W3!njS5>fwqBRj~h9aBbU}KgM`u z9v_aF*d$=yEt|Z8^qMDi;%zg*& z1Rz%zXFi3cn@L)RlssE}oVYdJhfCQ_j@~*~x3-?PWp{vU;{sYfs_a7y-3yPkC43?a zjuvvFE>II}<@taB@$L|r{>AFm!1F*h1i{?$RIT1J!Ml>_is_4zu%y2=yb{^G@!;41 zO_<5|+Han!aX_X~4nSHRb@jcNjLcjSYt?Jj zc0E})WQAx*h{*PsB93%f;X|%9?B0_kNjA?H?o?vL*7rOb?Uwtw57$osFemf@5xq|& zJQnrMmgR$2HpZOxhqZkp$@MUj>n8Q*BvLRpa>A`DCnVMyTluB?mY(^dUbBRn;2)PV zE=yAFC=eV*=PlRMt-J2I>vkLEmku#HviLY{`EyXrCplb`yqZf;Xbhtz(XQEfC1nFo z9nV;CnzbCQfBA22%zxv1Uy^YE+#1^t-x_JJYrfHVti^7Q|AA9%{LoqOLMyG1BQu$Y zp%wA~VIV@!RB2SrDcdZ_0nG?Dv%005ncGGVcmqwv-apMhyL+6?;{B>Un5k*S`|VYn zb3T<~^ip|3KdS*!m;&xI40E$5!MJ>^4sL5%V5(lfdX73+MICGcA1ta4u>F+OP*;Bj z01A3O150QQHWiIB18;7wGoC{{b~Y!7c-iNbVz>A_xKGaAOBpsf#%!H0eQ_IOS=!AD&qIkgc*S)2*#`x9+qw(j&R5cY-% zOs@O`aW{I+b?{#n=Y&ib^ctbo8=^qi`Jc#}J1Lx|jl!ZOxXr+O(uL1KMw1P{dmeq% zY|<>Fu#F~&fTynSoCvY1DiP4~4WPwwZM)%bv8HIkq^p20Re&c6axMrsc`?lzW-Mb8 z^i$0zX5JXSvUjJZjM$X?Z9;0TN&*qBxg5vF7in_M25A}L8<0l6n^#mVq+eij3?WyReGf z8A2FY*W3QnLT~NQMSrTL@;w0N=uc=EaJ9Q$pcvW*gdIfzv}hvG;q{mcxLX#511QIq zrEw#95R0OL21Ib6wkUgh0N>XI@Gk@X9TT`(&#+~UH0*`Jxu@_q8Jk@^ z-H!-_bEw+sSFeuJ$3O?*e-XIl3I5FF;~Tw?dLQM}&yiLyE)G@#7-lN;xAn%|YxQIK zr_Ond3-2Yo!_llRnJev|<-mTjldOuM5%({|q%hKyE6<-icG%p;f*)@B9Bf4#;0k+X zROx^T1FVPjZ_@q1;^tc(r0iKcw2=gy!YI*Uf>Xk_(TS7IBHc2M>M!86iK$iko)k#g zV@S*;uPwc24Z)4GXZ$MR3$r#&mrGd+S4#J4O~`NkgQ*(qWE;#KYru1AiP(Hi!Xx_3 zemm`hW)M{M65?zIW`c=6LC$LX-=3QD8{kuH)Blx(43u=U`dA5!HPElszsR571jS~6 zFlQ+UvYg=YvRDP`cM^WJT`;TVc>0@Pn!|sZY=YWL>qyDx0EJp3Lu4i}vJL0c?qru{Q^-d0l6z zJN0e*oIrJKhzEEZA9dCj`j@DY1`DsoA6N)!-*L>&ojWV&aqS*0V3YsXcUG@#%C>gL z2)pzYZ>*>|uW4EzG|KsS!3w9!kKoi>lu{iry*xl%ECAi3YEBxTj^{XcT4g&oL-k<{7butp7!}!xZ6oGum@>2GJf&$iTv$s^Q-vQ*qmx z{enp)v{4XO)#dhA3zs@BO;nhV{TP9Z@0M}+oEfl~P(a_jzs>Gz*V+fh2jfo&@{axW z{Z;6h8-tbUbcOZ?;{AvW`H-aAe? z2+B~u?#^W6?t^pqp5u!7sG_zdF>*MeHPCD@NK;MAR)LazLgbFv1N&RPyhzK_fzir% z{+bg#C1HNISY`60?pw8%zH8?z{KVvrPj;OIINa6lUO&{}DvFxT7OEwW^HUN*U5`vB z(wL^;gxNj^#6fQe;AwT&sqs!pnfo($=z4|1!H|%`#c#$F{9;kBv zpa!Eyy#s<$fEDf+rz8jyztNPIWFEBo#24Fn$5)}woW@ev0R-DQ!NY~4o#~;=-GTfW z;oh(i`I^nBD~lKocdacL{bYlFo=aLAQsPxMKKD;X(G-_o^GJHF&Zb8rf`2;E)SqqP zntx2=nC4W9O<#3O58^U)9%(`~oiW5pn5g!k2v7udr5UcfW}n`pHrZXz4PE;`3N`=N zwBpLYzEXlh(oMf9$$yEx@^)+rQxvSl~i|D?~5v?*lvKgR! zyS~yA^r3jWrOQW$)VF)zzx6)MO;8GHTFhO5yp>s?I=hs&r5@tlh6NqqeI1=5QA6$l zM9q|<_j6@TC5AhPr4al%4zU^F6Lu6=!~oIip8#8<5cotb0C+AQuD_RpI=f=+`JMCF z5{w;P&)9;+AdZooGYvu$RMO{*kMnamRql1(|7h3YSYnhu0(@0-H!g`tO_n6@7_?aK z??T2x5)1RI6emkfu0vYSJ}}J*Uyi)%Zc8-i@IQMz1(dhHuJ^!z>$t`ocSkh82$W$7 zo2;pIC=Cxuj1-Ml243CFOZRt57bxK<3>Fl0K=xb@EQx%+_<<^P(%4j(m58jU8wuVf z4a6^V9$Z91hI02eN0hUQku%-%I9Ex#<-^D6y7-p}5AB^e(^ji&BWT4;IiM;dI zO%m+=-#!%*)@3d~5S}av`GzlEPQ<&{;?>gjMc@jIbA*y0KChk($r{jtvr9gR2#rC^ z5uvS6BuP>%!~HqeWuaf$3myP<8yo>VnQRO7fXW)+VQj9jg?ShoHkX(X+YEurAEyW~ z^BW}rDUYMx;)~!}@si4pkY+Tv^qIaE=_XiYjG2wAc?10ZQQYEaMu9K2asuR2POJi#edJ6%A)h70+1R6#zvqp49VUAn zxA0io9GZ#*hfZA7}6zcu1@!?&Oc84!1uXVpB>LvX8Cb|@4n?h z|3^FI7;ItK)jgtK_nyY?L@yCOn>IlQKJxpQtPZMF96nEBv@sLG7_X;$Y^P?F9u%gZ01~mhpvp&emA^3Sj;gNv}Upx zK&`@AU~70-y=f0YMA+)}(59O#(>1NOk5_BUnB_agrADo_u;a_C3%B-jblf~J#%7El z7prokFS<@~AgkP((ls@1k>V>Qi77gahLQf1KNc6dc{?CPNfujsU`qoCBKnIv0dokI z6l}N~_T@^CrdNr!1*lt&K$1_S`qcrv(cn*r99;|L&fY9-5i5LQX@foERh+O}{VT68 za_sXp&v!m?C|-Qb`NBZ*^FtQ%_L8%>{<^Dh*3|BlY_LX1pu>PBes69OPG13w#if1% z-zVIk4gX*fh0Srm+f}q=3z$_HdaLPfuXes`M#G?0_dL;p@Gd1nLTTy3CDI-j2-sZR zlmaf~G}_Y}L=JsYDCE|#pdgT+0B(S=fbTdlAMf%KL>+)U0j3pR$|xLx4%{r5)-GWi z`Iy?69p#1SEupL6h@iE^5+C8Xds7X57qM9Ed=!twBi)7b38{!4*tx%3JLcvIm$n`1 zz=x|_v+|au#z40<;={!db49%F{?}HvPEgtWSjElQ^ufbzP9(v%@=lwRyX4B$#+VTh zf=Wn8IQRy%h?Mq5!TX~WKu`FJBZcMy7_FJ{vbQNjqxqZkC)C{ZpsKreE!T3Co;7Eb z(;{jUKaJ8oo}B$MzVUFimeZbuz~5sZY~smh^RJ&RU=A!i#>ocZGWr_TK5AOB9+sq} z2L%_Ct7c1hd!`AX0RNqb4*NorOZ|W=a!0Q1svF^b-v4-@N-ntp;|vGL1(6I<8vmEx zL4OWkaf&^T-Y8j_dD_2<{=0a)$k}nYSNdAhc>2Z1LhWQ?IU7FBxc3ei@8`H+vbnV_ znU+SkqrRq611~LA$F&(ffHE~DO4PuimY~uGHgWV~=;^FF6GX4AiwpIwtnd%ZKHGi0 zThoh!2UZx~ozGs!{&l?S;H_)+6kQ-oIQR5MXlUgl?f0^G^`Du>&p4TDJr>Qr?Z`>7 z%EOR5RUZ0V(_4x;uD%>DE z5|f2W)(JSf!y<99r)B5ExHeDEePYTr$c7Yw1=r^n^L(nV@(dS-=B2;dD~ z*`zyK5)+qpzy6aOT0W<;@eK(7uy6kuUk+T4`ztN6c%A>`yAAa(7LrNDRd091_f;4| zW!WzH^vy0o*Aw{i_u%a%;U4|{LbToNGpK~vA-N4pANSdGNyZ!)Nsf4ISdocpZOzIZ z$g*(V3uAgFI?|eyMiGi+b0A&ucHZKuUkc0oOkdy_zty zJ5HJ#cr|!~Mxo6loi<(ZE?M*FY&BKH0c({vFxs3_f5CcRjM5`N#i2*}3$lbV@2j@} zL9zA5oWpjXE7uLHg~`EMtT$PRn7F+$dM{!r&!&Fy=7xS)rB{XiRQUU)3m1UddIXDd zFx|$&&+ZM*?&UYob)E?d&u(2*rE^T3AWoJ3pv>CzOa~}gHp2=HbDO{&u$Sf%-iOgj zr~p(kr{t!xZ^XC#Gw;cF!npcMJgG>BGIqz5RP>=fm-z| zXU;A9HKn|JQQ{ovr9QD;bD<|cxfFK{I{kV(P~zTw3&bP)txm~Li{;4F-hRd4NeiLZ z+6EJ~<*1x}`(cxmoSLgb`9=@`w8Q$IBQbc_6*gaXJ;?41{9ohHa!NQ!3k5)=8NZxW z7;jetncp8*iZtA9;4C~HnT}KG04K>s2`E~lc(?g}IXR0vp0(B27t=DC+FpFn1Td^W0B|c_Ok?iV$b#|?ke@uv30iWsh3kk zIpu)_nV*y_caobmGkzotMQh<~w{Ut#`{Oiv?(#u_rq`U_J^t)8D~7hC+3?Nc|%-DzBF!YTVFONx;^A}CDSze_nC(B@a!ph$&SZ@wAI11GDLs@ zRd#p0>-rdJ?=5|oD&X`fC5EOUtm#;k^{uuAt89p^4?3{Sdom`QmyTK3{<+ue0ScBf zaH4HCU#uUv(IxNvQPkKe^bj0#r2fXm?$?AISdFxCQXK%KM$O_&$%-Q3E(W1k4y} zOrybz?-F0p(6*NVvseVMoBE_=vGY?i-LKwfbAd#*uImq`9!>*diLr9qA3^p&Bc?0C zs6sMZ;OT4=U|M-{E=>vX;XRz;A&A#r^TcYNeVVmHsQs{$Snbk>_Gm1rs7q72=C3nY zn@?S{?OB~VvZ||OmR*={JBT?VGIZ-Q^$%CP|4bZ&Bu}6CIR$_8kM0|5${NP3w&!D* z1~XY>(!Lilef=jqWK(bj#D((E*tEU7t8;SmoS)Jq1F&7f_)Nf$;9?$nM0zFTOg(12 zeCgt25112lkDxjYdN@b?UApPEkI~7*s5JL!O>UIbD;@SH_5HH>6=rW%>;3Pc-+zw? zPKg0fy&sYaer%iPlir_PT_}vrc@6K15#51Czlwbc%C-JHzwnIO2y&wK?RP$roFxO_ zsJ>KbpSs?==8`^XFtFN3{!~1`y#qI&iECyWg0;VIAKa><|c5^oBz zg}!5RtpbIdiuneVer(xnxp~zclQ_W^y<3YZv2bo@%h*t!?H?-qzdpJ=73dj}rqw$1 zZA8B0sy{7~;V}kNND83mV$-1W zy5c8z{jqI;q2zsNbS}^H4yH>q*PG?)c!IW{P6#BperFKJ7diGQT~<%_I1_;JuW^6g zD^mgPQx=O3SB4l`OGQk*HGhZ4vzHSAc-Fr}XdzQgK?+B?b)ed(oN2837%eKX>u$d)t}vG0i;T*4+U!Ec-yl&&h|3RHeh_Rv`jU zAB=AHpazkS?%OP(>_TbsCAk|T2cW>rDti9GS~_zq`QMqPox=YJQ!FNj0>9Tp>EwDy zYZ1unJB2`QzNS|4P!Ro38|8nF_H3zyCWBvqk89}kwpE3g!)7gd<nfmC54e3wXjR*%Oe*S?N-Q%I-^v2bpWs#)IH{ z%y3+*=ZB4wH#c4eP3t5TMyqXMMEjwh7Fp{Y7p+vK!DMt0AWAKHbmyFU2DEBe5x?tv z#m`?WV#IH`JD!F1G8G`mY-|?E-)U~hh*>#d(gV6yPi#}FpfeJw5W|pRoKQiwtd{JM z1~`1oFWJR^pvDkmAG!~JYr0t3_xVDUdhR<>u)3YSp$ z@d4Db?$WVZglHR~9Iy1T)Gh?KabhXs%SmSixqe}6#_mAtna$s;2>s^1#x;8{e;-#= zaH%Wa!Bo0m?GE}Zig0$rCh^Aqmd+9r|Dz3(Y^0~^KDv_lkNjNe%$hHFO*5(7NaRZn zMg{mkn>OBSQ@ike^^VT;*6Wx$uyv6S{#c4%+Cv468y#l_Z6k?`nXyXrY!_Bw#oj-< z(9$NYhzl^nOQTCWY4Bd73#P0y+3(j&_vBrMQi`CKUWMeWvIQhZ1|7V_V zN9BXV=Y@O@KS(k^0AA`|9-uut+xF;6#S-riE?aq1kk}?ZD$S2xXdm|MyDN5GID%HeB(uO%D{U964JYb3=?>k?x)KR;#h7o>yKQ8=}BUH+QeqUus9b(y%)Hr`;1#_w5GXUgtO z*HHeDDwDF;=?a1!Lc}k84F93WdV|bgniBC}NY^aR-9EuBR*g>9pOqu68xdPH@1-tS z&^|q!dK6T3`qHxJ`ucZ&BJN85!JvqdxP0pbPrR_9;*7gJx3U=z_o0dwNGFu~Y`yeED=bTc*0Gh3dOt;4 z9~64YAC5sj(wrw>jsIF0EhXotq5_mjP*;!ItTi5D7Cq-cUSQ2?O=yXmA@ zjmILF|D_56kOTH={Vvms`D>%87r}2T_KdvV295lAG~#;&-1vaOgp+EP*Zzh0Ef}d9 z8Xk;U-%CW4tesS|`Y)Ll06hl=eQL`W?CY;PD0i1z(%DE1g#J=d_j~4_8*i&zOcm*9wRvEx`^Ls6)n~ zqAJW8OR3`H!?KK~;BCj#T(+!dCCp=7dkcx^d3r$I^f?K3i6~8G3lRv{a`)jjB+CoD zIkGr$fjF68cHsBRZbU9WeY@>Jl{!}JVXe|1+XKDrU_*>IbhC>7^w6HpT5K`S1RbzW zBeLoagzn&NKK*+VvGkv|0cdP85T4ktJd<)&a58K4?+W_QZ#YHvCF1;+@%QcC>O_7M z32B);c~J}8l<;@?;@Y@vt~|pE`yId7!q+@OkX)!}S(_0K^CEA708hk;>FWH{Ku_a7 zyE7KQK|a7&^~1IbpUR1X%Yrpke)p#2Tgc{?wJwMG`>QY~Q2P`05jc7{4gxF_k0|Fe z%{Ju~Ie;x{63!O0w{G&Nj7?f_lI_C7mqLG(xolUb=z~F}dUr~|k}JXe52klw3(gkl zF(CZWnoJ;VZ~8H^(O&NZ$n>3q(BiE;570s^;w)QF)Rl35c0+4y&aS~6PsdH``z+l_ zGgIZLi+s;MwYbOGM+P%L0&VahJv86xL8QeHFGVmZvtUk-yTO8bCU5;advsO#`o*h- zF7{aox)g2`KfY$zUNXkX*W z-5x(Kc0HtAuUdN}h1%rzbN)kLUno8{dHqBh%;~e%^mT?jG=MwG!A5OzRC$#dg~;<- zKHOVpn<9hxj3I}R#v3Mn6~3WO?*>G=-ktHI+_fx>;~)VJbnp&jFsD z%Pka7(zC|h<#0@LC6zb5w~b4gRE!0lOi_nGgm2AaMVnzAg|%@707N;-XaccNlP92T z*#O6|J3O+6qSc#=+C@2}N$zz>?ooaAx_!d`Qp9XgSwTqjAS93Qu3Q zs*lV&z?_~!6oTix#~?`o)S-QmeF@mc;H6o`y@Tg{wers@E`-wcs>&u8=0F@?+01fN zeOYz9J^j9>9N3z(5;uO6KF#a!^)qvZWj3@ z{2vJN|J0*jlF3Siemd__q@xuJ#qVx6ypt8-GJ=~u?JX%Zr01$zanI?q-C=^QI-Is)4 zk+H7^Ax;-nZ}D;IKmC}K#{s{cMa4O{$gC*n8IJ`NzB@CQMXMShCLMcmFVc;B{bIwN z{$JZ#eU&y|xi<{;xV?%Cr2Zg(beTesi&Lwph4n%w-_=2L#4npg2_d9Z>dI9vQ5Mtu zU2VB2mAc#2efoL%eVt9AXn}zRw!;eJIwRktz7d{ZWX=jf?T2kY$DKsC&6eKoquI7g z4oh}FAWfr=DTs@!o2@lhnqV}sHD%Rjqx`tSM}(h-r47FM=Beam5P61Gz~LsRw1et1 zWz<$*-A~YyWuBz@BTcSlbxYAsj6pJ=>UVSVTn1x!9~8`1MPyTo)&(acL)DZtB1QHG zqUg!Tn=D14^z19lsVNUYM&|-j=MndeC~Qw9z$QtPth{W1Ge?)m{;3ynsW2| z`ia>Rg^*%x@4XbOvqHPttk17A@Gae-66Qae0RxpvCF&oVObg{-s)tdix5z&Tu2`Nb zOjxloO4&h1vO?pJaa1H}&!|1XfwaY?FWbiTz(e$09JMjbtanhBdEr5H?osVm7g$dL zF$v%cwSVS$m|Gvss^aa6K-$Kt?sl)c82_>7?{K7lDZE0qo&Z~;e?gT$v@Nz2dX%`o z`FQYc+(2>>epao`MU=TF%5|aoR1R7LTMIiU$#hV490=IKyJnx5Rwqy==$p;<%*!Mt z@&HNY36PW8pKROrIGmH*doH?q+mE8PW(U%@3y%nzt!@O*@2DKp!Kn_Mo187QdSt;o#*#F&(KedS~9g=<_#vxjHVwfqM5O7PphWyV{+;T(pYflsCkyHCM`!4&tjv2cWkLVU zrYri9MbRL8ovZb@fQKI~dM~F3&}k0%ie_}vsgJN@X|2QeXpg$Oc=el2{s>lentvUn zprtv%%58?c8s}eYawcJzL)|te;1}lS=P)w*89z6ShlTQ?SoYlOf>sPWn02y|lqOPi z;pfpwY6LdCK!gPNbq7dKh5*E73|uqE!M5BoCzs1I3J!!xdKY7hwf9x~1z+h6z0vAQ z%G1o1f7t%@WmHmuRU>cvNbqswg_T=tXBs}vu@U1oNQYOzzGrS}8M?DPFH*FAr4l=% zB1U)kBk!0t0P{8RYfi$E{S$_Wk84eDQntm|45PrIZ5)*&C|ZHlhEaLxQtxvqQJ!{x zC?VG~pNSUm=L~Y`XB*Lb%xm9(9N;&npGxB`BH*u`PFJZC%GduS9bcDJThl z8|L3!Iu>2#2D#e2rd2A6TNe@@xq+2+*#{o_~+JA_2tN= zG%TMg_}bIxj}Y)a%xpHid-DBs61+4B6E8<)WF-zjIjy=^;MA* z!yQ(qg-InErc0j_5ZY6ZTv3)Sb^{g%h=Yp#w{-?m)f~A(1KMKzM+)VAZ3Ggq=D61q zFAEC-)HSuh?{&$#Jwv|gcDS}0^o-F^z!6EtgRRCE<~H?RC_7D8*NTAMgsz*yvH)Pr z+E}@|j?NokVINcmK>^^l{WRrUEUTrz+nR2+WyRRFe1iSp&u*h-Xir5j*-4JXX@;EF zI_9|>%ok)K6-=-%L)Yp;y4?pq5afYB1)v9Muu;r7>?+jVUp>4M_j$bX)NPZPKHy(X z%P0MZQ0!K7=jsQ^-=J&o&vO`W z5=Vuy8#CHlG4_Qpx)B#Xm;BP2_09Ypdl!N8cd|z#Cmxv#mg5CIwhe7?_G; zo3MXBnwrG^vp0nh3Ic`@%=EWL^A?eitLR8DkMB|tH@S@MBSOm5DuXW1NV%c0)Ys%} zB~ujKdtc{)u?A&jeW5xO zRAyjBhct}3x%E*43++3V7nxQl2oIcGBO?~__-qPp8ZgqX;0_tOhgexaMEKka?SKeY z$!zga&C&@B4px2Dz!sya*RRmKdCE5vOXII8lxij4ZCWfh2!V6BbMPORGR0J!;*l`- zJ>S8`&vx6_MDp49s8^%>C8eB>4NQQs)}+D4$*yFRK34=9G9{{^ffq7of#AyRp?FTD zo37TmX@i84Fz!&u7d~)IK{+j8$BO$HoT(sH#6h|IsEd)q8Bi*5R;jk0*u}mk_P~PG z!|qfZ8WW+EZsChfYbhp_(m3`S4c>OL))4I-?TQx@+NURMee z+s*ymL(AeEUlR#ZPV|TBX#yDy6xRn0@pHCvoD9t`q7=dJ%ZqrSRw2jle)G)qy&9b~ zEksnlg!{^yH0N}e%yn`Uub_7dTCiAzpKVY{J2rbHcp^R^ zpIm|LWTncHdiMYXld1_)0tgr#96guXSGHGwKWjn0y~S|JdG+v@#~4J)gDA^B%Im+` z)wu|Nwpo8=UgG$BDTis!?<4s!g0^AD zOB?9ZT6DDs+Tt2(f~jS+6xn{W;Ci(Wnnfq^$XLz>02)Bq@ti{5uPbbl{@v+XSFSpo z(LO!Hw-gv^#j-RCU&h3E^w`sNCP@csTb?MA^=EKf|By%TTF^s0{N4Xtkn)-WNNFoU z`dn6I9iB_jNcTTbnUQ~gy+@&NESF?A?^aHMs;)-N!O`q2MMEK>% zGJXwJCF~p@z$2eL?w^3I1?dE34|v9a-X3ODmR}5lFEan3WrhReaE>fixRF81i_(S% z!_?HLG734lHIU9_+@hv^rc@AU{^`ZvA;1gjpb^DtJc>t9c7f$Ba|K`+{sjKwy1O1L zKahH7>7f8*a19BUpAO>7Ed;4bKj$8_!N5CsGb=A9-dYi_iF;mb8G* zL?&Af-xRt1$`zOySzoFM1VQp$^E>!Daym!Ja%X5wTW~nXa>WFD^z#;UygOjwxoZ5Y zQ`g>bI%@nf8-wT$tA6ic{KNTG8rJtQ*uvJz@t{OtG~%4l&5Fg^1SQ$H^xn1CQzGWp z_MR3WXNy~N1g?Y3lsMMmQP+732CB#rTvs(G0s)mQ3je)t< zk%p#iuNR2z9i~B@0#HtJ^ySKZgzDNaRydL##JaTU5EIsSr=u0oR#(9Kv&9NA*828R zVOw4O>%o+4@y1|_8L|s$)OLwLb=M`oJ8VRMVhQbiQX+q%HXxL}&<7uF2tjl^7J{yT zM9?YvnTR5Aj4sd}i1_#Q?!P&_=l?~ca3FLpn#^5q(}v3SHaLS_a{)QH(5KpmAEU+C zCVp2WgVLrHe=nZ#X(pB>KS}*CoJrltf6gfZK_iMNHGk_vZ@&$#7F#Ptyz_O^X?+s? zE3XLBYyErRl6)`YBFg1!#!kRN5p#JfN}GVH!(;q<9}{!*0_s{N`hh#0#@^8Y0^YKf zLkV97aJ}E`39UYjb{Id+9R6o2e{+A08|ONyZfX_u-i2y9#~$U!4_t7#1^0CibMm5F z(2=~{sjG5NOLTAf$_arXrIDsKW2;|&7(Ax%6)m>=;pNKR!Gv^93tCi}ywsUn7fQ5f z#gVROAKc$4*>jUzBDE`2ctziSlz1@jdG}g2=kMl&!KPJFX3EmG^iE|TD%`$JL8-8s z166a11F^!1$UDE2Ssj(`2Lk7bpnD-+cav^XlV0GP)mjp zO%_^2du&ij&sW4Y*v1q$i*<$*;x+a*^QaBKO9E1{+`Xu!kk{39BlUj{2fay9BDCS( zzu7A1vJO?XI20!Z1E2Vyd-ekTO*an>{$uuXGaS4!cJ)%dCDloj-?2>z{bh?gyXU zfcb%)|G{xR9`U|H`96_^Qn00)&2HJ_n0sp~qXgNAdAC^#=-;~~=6`3&I~*m52sI~C z`wIR@F}p(9-7`BOoGHPq`H(X9%3{sop=W}McAv8P8{p(E4&1xIQK1i3W`||o zAkyk|N%NM17Z{=XIP6N1aY5C-v2#hMg9lF7O2v7B9m1Ly%y7JvE%Y|b4-$B>~g)W&)sCyS(FDAoW``r&d zIAAlz+Yl{hN3B{HZ_mM^^MKvKdEa-`hQ@)xw}#oMS|E93g>tl~PYnJ}C}I5Qx~k?~ zqog7sf6Zb^23*)yeXf@gutdjC;gECMtLt|rErY6Zvu0V3zYxpTnrbQ1MH;%Yc_Dzg zW#12Y8#!JBs9-JWa{VrCi%rfzQuTYT7c`GhlQGi|0+O(zvU<2D)iM3K|-rruwuH2+0Bu!-c>I@n*%`Rl9E*uT}rhu>^h?>Lcjz2s(Q2 zP1|p^11Gz1$t5Ggrd86{skMT=3#x6UYX@;iI0?zsRu6xMrSz-;%f0;>yV|rx6N53$ zJuHqwo6341VXa01RuA}}@QA()7wh^v8X!oR)uo{@rL^4stkUr8q}ze_0+sbq0fWE4>p6Bo03P%@bs=#QLS*LFFqOtR<#)U@6^_V zB^yCT6L#~-UNpuFYO(WzoH_G)%O0xpMe&)G|BtOV4~P1HzsE%qy&`QYq|#=I%D&BL zL5nq8_DZsjZ48kaS&FhHdxIfm8O$UGW9*eF+Yncb|fR(R+g>6`-3Q&Hrl4raK7oN2V9+-3FPBkz)FM@`3d z4FpZ6`7Uc}kdNE;@3A}D{VjP*R#Na#;LGD2Ltk_LCzOz5xz?=D5_`2h>xJ$VlPXCP z&#!=wR2p5ikt))Mjr|&(MER?Cr_BZNn$Ij%*7HG&b%q`33OqQzziz{QcU|s{i2$Bl zV#Vof0v~W?6|(xV-xW+dLGBF`^gzFSvNu}hGD=Zs*}|21pjDdptK_m8*t`M0fhBW? zVow0FOhB04TD&=6_X>l_1XFj)t(C)>22y!LpLsiG-z(T>=*A^K$k5Az6eJ zY(i>QJ~~}*NZneT0V49>XbpMdmi9T(#p#-=){AS#P!I)V4!5`@mRJI!JkQAO)rPB` z>vxWxK!Msx+e=f{%#&)>mgQ!@e)XzJxuY&8R=#p1Z0b2KI?}kT(o?a(lWEbXM*r-s zSrzz0RV}c__^b#!9O=|csa@pVTXyOFrEZ|6Ae)bNE-V8o#jaYaaYP<0XL4pyGyUSv z%rL>gei9(MIv8dAWc!iSq^qkP|97i75&8ij_ttx)?j-O4`T^-IfWCWOPqfuM;$4Z@ zarX9br=Pb1SrxAeQ{2}>`Z-$m?XpN1{8cUBbsV3ZbJF>Qxyrhp7a|%x71A0^HGt*E z?VSNsw`5=SZ71%e$0u%F>(=3s$aHc9DmVQ|78|a+#p-qE@hd@M_fbySXL~2psh0I;CJoqC7zo zf!XXKt=Vk+luk4RF)~SY6Dve1?lizPC;_XaB?tNAB0!GVo^S;qxY~?2>HX1~jJun_ z1hMCQJ6l*{T=&3sN3Wf^eni9mQ$tt{#8TR14#(Rr3eZ#|8n5Qsu#FeB#Xv&mC9UgXlprQosE@!9wgRe z;8Hl`ajR{1+w?~3-f=e_T={GTni=l=*nPF?n9cv zveMSa_dl4A$@{i)UOq86Wgz+GfsD(PVAkD}iItF5|F4T7HzKduFdtmS@wWCMDi2IZ zvOEnfrFuzhr{-|m=#Y!d?CWS?nap3Jp;fyw)yfzCTLNrbg`S{VWjX}o_~^>1>3*?1 z!G-xb9a?}9GfE}F;u^BfQmrj}wI)j}IB27nU{NbQF7@Rmq!5ZA& zUAtDd)}~Q_Ab{d1PSMVojH zJ)1ntiqqjeY{{%Go!CEKc3f9{Ut~&?%WVH$9a^y_4H4e(Pd2H~TX?O6*7t0izobvm zg@#CPE7IKCX0>%tE*P^N=rA|(ZV@#dW-wI!c%WemzP(-_25y^2I}Pk;y&VcE_U877MxR6W3Wp9BJWCCTP>9vN0~e|OS?A$@|9s(u{Gez?mq$p ze@*0Qy}ZWk{eBjOuX2d^eWA;KbY<^^L!fZVg6FpZ+aqr}B$igM)MMBq%st7a$F60z ze{v#MRgiAjZ~x;fCI-$FFVAi&eVR9fDKpL~Zv0}Ra-#&2er+6>;Uu}cV)+g5%J(Bu zbwFg0!0T`0FMyn3KHwSi91%jBHbwJ=mc6>hlUa()Rp+;J*WrCFv8mAv3(=fa7=!RP zl)OA9{9N~uZ2O_B1(5YUg%Zp03x~4w2`)A|Ggf;p_m%K=*Yw^`6={AIoLJQvqCJo> z$sQW8hTog3?e(%$WV?^tKNA;WAXqmc7%psjOK0eARbRcx5Y(ny(j;Q?fS^t59w7dY zA|}yDRb=B=2TJps6mWaOZ+LsvnwOjutJG0T7&`GObpHOrl2D&fc5i>G6u!J8T`(n@ z5Bom4b+XMQ%jfW!_OB_FAJO+zY57&Z*^$kUCiG6a9w5e6EzLo#t%%U7nYNmmnZKp$ z;Z#++I{ex>)CJx5igLNZfK(7j4vI_%;_!g|4v-fD=)H5cOM#P{x&BMHN)n5fo=GNrj&srs^zWc= z8h?T2@MP<{i5Vo@qe>uTpJPAU({BbKcHPkFUD>S?!Ut9!f%rp~cf zK;;<_2m&f8zXa<`PS<#?QdN7RcPC)Ar}3nin-ijJ^_5YFtK;~hufO@G313}cl$t11%{^ycaQb@C z=sO-2Nh5V=o?Z;QfVwEXbyy?QYsgaJW0kcF@}9BLnbktbR=^`WV}&;4uW#G)ljueK zZ3WgP_mBRl?|@B)Y_{Z|&~&bMO4wSD0de=SX5+V4>`U-ceN%nPlyv|cquyoObK?F$UTlG1tPlLG|b8{+QT z?+1;HjooT}Kphz9z;U>)OQX(^LF^XDtCS9+4?*ubfxZ{YJP5el5ODX+(WOWqgSYyRpdk|or-!VO!ei2klXWUEbxhtodbR(4oyU!b)tM-dj4WBskdhSzs z`^UG*R+j(RTwl7dq?1_RPb~?PNWeADRWwehQ9#-Tf1N|aBkTLK8i||nqt0Ey2$V*e zmUZ(d?|%r&m1e0M&Vm|C8(ZK0{PO#h%Lu7Yh=~E5!}3?sCJebVHHM=MYok?~4m|S? z@x{ouXUMfbz?ITC7Rd++D+1*WsdPJ(^c50@6&!oBRt?8D>(;N|ZBdqeE~WEX1BM#C%OL!6hyDDh}D(Yd@D!`a65TQl9AG43jh+ zWW6`7y46^yGsk3egEtn3!OL5S(WNarzwJ2nkTh-OB~R{gb#UxNOb6TR^s3I|5yKMF zVpN>F!S|I4KLpl`#N``jD06GMvE%oDQ@uC->HL*(rh?ka4SKLi)w2vVt!l$%2f7Uh z=j@d3DBd2#r#rL548xV#=?K4>67EFN&Zx8O6?k()&Tkp_jFI?~Xqh>?2V@u;IOeo1 z17u=4Dm=sg{>VH*Q@v!bx!=d>BwU4hV5pQ)dY6iznq|)2EHV87mAxNaGjr@M4pvAFA5?;V07+Le@4Vz4U<(!fvyxsqKCfg`8XUAVOZ)jg7!}89^CT59^5eKi` z0pHTkMsYQcxdqRmn7x-u@BGiEREjUB46RtSnAaXhy8`t8*zKOaysq4V^gen?Di7Ol(cO$)-B8&7@O$QE{L$Rncx3=wi*pBe_d3yB66F;7bKgX|B*ve(WKcLKVY%bFGT6Ugvwccsp-y>8!OU>k% z;bao=Z1Rq|SASzvN4A?evn9D=a6rQE7$VS90Glm~xnF5ctRjq9P?69U`*vFRx1RJFkn7(~`8D)RI3d4qOc2X{1AtmlVLuZNC&V&hXw zj?|m9!kKfJoyPDTsXc?H9H%=>uIe^eG=9jQBh}LvOACqXsc}!@Beo?twGeGHJ3iss#YJ}a7r}NSAF@So+NX~oG zH#rjN+<|n5I+wn+_@-@Jt)eVtERj?0CR=qAgy06 zoJLoDF8H2sjf4^~MoPY1^m_VY6MlS!CuYZBCn;>w!6&2_2@0HOji&<#paM&yja)SF zb)5{C5Fh|h_m6k=rSLs_FA47xj7bt*-#kJS^|LVMpO4d(dF6BTpZohGzGOv+VuWwX z6*h?&NJ{g(X}NCOwLio3&bJ!|l>>WXj>!iJJueKFn0(M|YSAJSS8IDWPfvdx3h72% zs7z+MBJ|B*@2LB8(4l(IW13+6B+*>)@M!I{o%3Vg@x_QBhEaZXuY!P&B_q+fjnx+q z@7KF}uNmC6(uO+rvIAi`INZ*A>=Ui+G0U9!wcfqDp`#g>%#&FX{b;h!9!4Av`5cB< zB?NvQ4akY>mq*ZRjl^;P(2wBKbE^}iAxcgU&!%7yJz-IY$xgPyXJ1IV)}~o-?)<#Y zK&wl+AECo=h%Pz<_~SL8T)%SZ@8JNWhcG~K>ZPj1(<346&4EHp!31Y-drQbO1f;?d zDp+jdK6^?X7C#>P;050MIyT{mYkL0@d&>f;g5twE3=3WI{N(xyc?8klD5&F_6Vtwe zvsZAg82Iji)70%52pjMT4Ze)suxSN4PM!n4bqYT7Q9`{gwy<%WKi~~4_#fEKTw^JMa!3rqA7M=vu z1z$XqD`3nCI}}gts9n<=-(Jiqlf2yF+VkpD5LYc}beJpBtx9d*K7|ia>-oQ4 znib-|=twdGMCC*={0?viqwM+kinm3Ak}7+^wJ4g+Q(QC(bsH#XY<`9e>6?;$YNThC%p< z(3hCyFH!o$PKHo~#+R#SC9VVsg^mT6-4DNA)tUNvR1kJP0KMbe^uEIKtWo@vLUGu+^ft0@Vz9xm#7?Wb7#pH;IGzx~Eu7K+*zCAmnB-F~-y^bq+iK0hDS$2=)A77fSYB*N24yHEGDtbXBK?Zn|$B^If&WmhR~9UDx1-VH&+qxxh^$+ z^hfFm5H+s;&ZY0!J1%f{@m@Dgh#KdvlWUl#xLj@~Wgq6Ve6?+IcGxic>MW@THWDwX zhB$_B#8M2BLXKI$HU#a#>Rm%2EjunK|DolrX~*wOSZc#5laP42b`Z^y@tgVWa-v;f z1*pEzOdS0pDhXUuu;LW4!U9Aol8@+sfh902`O4=_4|oOg6u4H{?A}a6 z3JZ=mL^9Z!Njbec+YO^jyG8cnN95&hmc~}n7Y(92b57cO5e>)It=`);-~*VC-8s$x z@+54o-nYM)gNFZ|H5r`=u8L;df{feF_8*}_+v*M23UDK2r6enJ;=$(`w3saJimiT5 zud8?g(j(b%i7^7HcXR^k70lU{rin?**Oij`LapdZ~Pf6 z+8}BJ?@xj)3a|*`%9JXSpl>1~^ zL+!PgTl+bMd=r!=)-850rqX$Pmqj1gHR#)DV0HTJ{PD+!dgE;2%iG)A>(44OWyang zYBCGwEtWYk-ee~bhA&E&y~!_Jb6(zH?5CbcnXUoOXD>qLcGA_m{2emS^Lq+ZvLlXH zM$(Fx3SQo(>LO>X>0z(z_S<>x$fqyou#u0%!!x69@9%VTIu!DB&<5c2mhY2hGEB!_ zojF7_;HULGqki8O8anjRVj1OoIBY$;>C#yhqryiCIlZdBhSSf3oOPS!7lJwqIkYBe zG0Bm5n1EAp;#bhdUw#U@%|wR3b-zguNUdtM=7o*!U~}-_S>NEwrII@}S!!#s;v(K1 zn%(j1?)bXELyP^I>IkveALDuw1wAY87mCOJpiQ1bOi?p+7D)9V9Eh&gb%Zycny{A# zC-3-e`cieytOR*Q%~lDgc)gx*TJxP#`;@)OBjEB#>fjP7^p%+Vn`*?*4Z1%XMg7)F{$c4Xj4T9}4=(%#9Kz0>>mrdvl5&G}T){3| z!8!$~&7kVRAK6+#e?O-?zWsNAz`$87JA1=aKAq{`8ALf!ZN;d~`M9u{Q+{et6T#%K znjN`AvA8no;DmFkY*;I!B58Q1soXO6BMT*twx&+5QY(lJ;4KZ>&43NtjsGNaaq6!_ z>8m=ZgTocDJGN8U9g%1fmi-TAl#yvRXFYhdlBVe9;^2OSJ9-N>V3SzoH_JVzd}VNE zXEfS${=#1Ta~GCjqOw`i=Ln*YrW^5shXUA-Q5ls*m3aXnf1$JRYyQIqA+ zs1t|2)-4n^O8Ga?A=fsXdI|hx?#^!^aepsb0;wfwmi$Wo6Vb$c^~KzK*6H_^s6&44 zefl_hN^Qn7*%pXPtUmLxa=uUtOcf86-pXz?VS)!2R(%=q$Tt`-SJV~;0Yzqg@J35o zvNTm|L~RB-Rvpe?^xnj;(C1IZOID?e*9=Jn!gay37nKHSRLxWLy`|C^@0VSF|BSAU z%b$DZ6Wng+jhIqG1(T4Y+f#`kfD0r6)|Mh(s>s2?g}_CgiO4-X#^)6BjtX>InlbmM ziHJmUWH?o@2ezX9rLo=_BSG;&Oc1N>EfQurz3H>%vTY9$WP*| zsb2Se&V10I+g%Mm8!npCA4x*6eBUH0f2zvyWDzBse%yIGD|RJ%RB$!! zrDT6|LvgDGH4D)*am*APks`rkeD%${d|rJa;rN$w?DOsZ4+bS-h{5;WEC(^8$8@2J zZf;r+u`j|~%1peJD58?)iWT86gq5@B}xVZGyhxrMIBPLFaJ*U-J>vl8; z+J-eKe*{T12M-84T1%7?8@j#**k5JiG2-5&$ajr)qxvtisV2JF&?Kns;Pqp$hm_z1 zGo~cvY}MUf-z!kYheuv57zS&5*@Qt*ss9>_pv<8Nty(eH;1g4}DutP?pUW_VrO^|< z$|Jxl>t{3YJ$P}}VsJpD(qKzt!R(zzquhQ}HzRcC%&CBNAh%)QF~*Vxy!a1+#J^9 zv$v)Ewcjo+avuzF!jUWeiQ1_%>EZ+h)}} zg4%B8@hq^L8Y*Ic{GHj_SON$8`CWr{pUjJlDOoluz@AH8t&6Y~1_kg4 z-@wE;7v)F1s61$!cC*>m$;HIdr|SNVQ#TFvy8o6E_2V~|9{S8Y($=%?hWChV`7M<0 z=C~lI-|Gzis@N;F_eG`Du&Ytwjs@zvW`2uim$mTJsR6TQw_sx;kX6>|$p2gB&fSMU z_k5~U>^*_M=7UH4h|`2ypHo@^oSTHR4Jt9r}--QE?N5vXoW0_L+~Zd~nd36*V)Y zNuSRj9cG5_j6ZiqK*Y9Uby4e`)3$B3Stirqgy4t>?Ild1hk&%M)@Tjxc7BmLfDj9%Ez8iVRb1}cjC zCb*%D983W5D)72(wplkE-dGw<9IW<{q9(forPlLdtpDaZir{4GcO|ywl&HhjgC&@T z!Vu0LUcz~=>Wa*&m+;9<-xyk}e=(y!I5Rt@nMRyeqrC1&Z>k=N#e4n+EX@J(k2|)s z4Mf#cgiVWZ@|+SUTpL1nENM!oQBbDMb(AQRfB0lV@tQ=Kj10*Wzc;FcD{$scC%s== zHL;y;4c}*_wQ>1UV)@7{SLf?+rOw~ODLE6*r~Dwk+^}3ySLnEU`=v8Rb_#}?Wr?V4 zefRZE`&8&`dCy8QH1Y3tafk&i^nNU5{a-WzFr$4d-ZTB5&%`2+UOeD^YxhRnxOV*J z@--FyA08nBW?w;RGh>}-M*(CGZ+QY$H=`F9iHuE^ePPUeOp~L|s-mCy*;~`hJFz|K z=R%L>B@LG*uh*_E*6o}x<@bEt=slUxHnA^naC34WRv-GrqAbZ6aCb>W^0hzz!kVMz z{Ei>@B7zdsezKsyWW?UsssR~M2R)H}VJ|-Q#IMA}JO@nmUd-)Aux^d)tXG4TP$V!S zFmQbb(4~ON2fU{Cik#5sYThU6M^nmENjDysdUZs$NrB;}A>?h5G<1~55DCnLvU2LJ z*DL;s@DJ|Nn-#xtTBb$L_F}Kc>9jnirtUkY#+^?QllJwM$qjx@TkBc3@rWK;7 z^~|1|{Kq8&47oLklG|?4qLmJ}7Zw6vT$rth%gogxBaUv)mXR(j(b%)lN4ERDf7n8o0=4qagfLZTRT5!kws2l;c6bKof#DGO+Q?IM0<29uv^ zQleo~{K2QtUSL=SVo})Dxz~=#&Vr}Hi+XYZ!c zw2MGX1>UiPF7i=cF}3?NELer81SGck*pDeY|cSuLMjmEvpT-dYsL=HHfdV?UVB`f8$@jTUA z86mr6EHlVy?1#0ps(Sl4w|2=kpxw+V{}*Fz3AqfkAfI47cbfkC-TfCr-8QK+ZRq)P z8Mdhly7&8a+N{Ys_rM-ouwH!$pE?U)2oC=?4Z)gVMrerbcqgKKdWdULflJ1yULUvo!s;|CB!PFMfWt^D!Rnzy>*b=5gJsAG=j zP4&KXu}sb;$ef89lgqnjRFbrug}p5B?GXBDifM%B+O<5@SFW<}0Gp0SViC9Z@(ZpW zesF#nOS1;~z01=--j6VI^0b+~b)^vh2PmiE2$9kIMEXW8tA6(-uQITSwhIKAOS44c2 zQN#9)E}m*)jbl*8-VT(B*(0u(;6;k|Zclw$xdkcfpu;agU@&;o{DvpSW?o=K>nU~DTGG0aO@1hU{9ijC#i!Ht zpOMZId@@}tb=>pzohqt{bM5CU^G>O0wmwv&ct|=ICWIxtU?xV;XGQ9{?Mu|xl{e=4 zK%ES4$)HCtb_NA_-*JsKHJiKnGOk=!4O^S&O0|(_-25;j@u-y4eCpL7juUVGX@=et zctdIKqbs9i5?Ar(+BPmf^mXS1JM7?g*ii_Q+R2S=yUsir=(@UWvwlti1@CQ@Y%6j! z#7^#rG;tn{p$Qsyqd-F&hJhg zSC!3n=<1RkE>axOFTk=BkcFbwYS&7B-UXx z)(wu|Ew{3CEN#f7O{)ff6h7ECp0DNCPzUV6!$F*q$_E3B9J@Loq_Ba*2VUkI<@8rK zFj+Kz)(SI()4*UbE-j8Wf@5Q(eJ5+XMZzT_EQF*FS#|$}9vhp`6~$RM?=O(tBe_>a z|BJ*PqX>nrhNu%W-{jMIp72Tu1s-DiqhD&?yzaI2(?C}8z?xz>MhNujH&}=~<)_xL zR#TDO5Y&xg-)ryWjri~QUxpy_(zY_ew#ua7s!Zz5{K zt`Vrc)OLQ&k@vK4HwIJ^wvN7`Zjm{)&~kA%U-QL;6czw9jtRqSSOw$A_6c4(?jb^z!0d4G+*{qUXQRWsrK$&0sA zfx=nLs>r9FIGGxpT{~1Tk)o3-iNUlPP?)ZkYQ0MFv7j>@9u(joN9arU zuGF-s>^*ku+5P7?!*wG}Gt*dt(Q-mv`ue!tvft@-#Jsz*z5?RFEAe&n2)Zj4K@ z&oQ?rpaN`LacCiYQ8&}@{?%s|s&i(K?&Qg^lddML7bi%kt_$W#8znoxUB*!jcs{&* zCw^ovLE@^#jZmt{-j5RVx9}R1v%R1v;*!dR?vfd0Out3K&RL6A)(x;`5ffmj_m%+j)~(z0sH`I|`y2YIJdgS^!`IcEUj8gk zQT143?e@LREa=5Xzy-i*PtdS^zyyf25J-5w@_u zS4YY!b-dMNij*!l&Bxn1>mzw!;52+dcdOx)0rhx}vxeaLIc+*T$`cvcL?+1uHRi)h z&fpTxuAjt0DhA|%L(ezdB_PrQ%NZi=%#(HuuI*DPakUaSwB(mCGhBg6D)^|<&bN%)?3GB+|gm~(Wj-D!LS6;WF?5@YwC0Z!RStvxwQVP zPleggtP-yPjuY#WTJTAhTo}e$Ed-ZUi2^H@BENYg4_>994t3QI*ZkI0`FL{h6GA6~ z0N!jCX<+9|ai+IM)(X_%Yd{rA*TPk|g{yP3dg~mDXglp2Yhp#CWchZP9B9eaR`x z&8m9UefWlJ+5NLuc+IGnB(NS}hNo@9T$WZQ3gW->O!=|?G;9KO=;)l^&a+bv2Af|a z6J8a=^tVQCq+=W^akDS3kiwnq+tIj^4K_K!^hlji(RypVc(k^t-<@=`ZWT7>CPAYRr}IJKTtfebHVQ!n z#0E>q&WiwH?MxVU%>0JoYE1RM23Q^9D0eFiyuJnBCCSDTJvvXt7m9xB3Pz%EhGiyu zoYyb4_m_WkN3WpQrxd}{%rk%i%k9B-&;5zO%b5SOZ(b~Dp&JBbYe2$aojr`wInRj= z@DACDLq@Tr!zL5At^Ky`tK(uI_WUspPwC$(9@w`uDy4|Mzx2tz(952A;I=uJ^6qyC z(?%(=r%FDV&ZODnG)VY61EKvcc8p-_JeMk^&w+=k0=e`&mVNzVg+4N&hKg1CHQw5b78FV5_|!ba-fT z)V!@sHNd$1f+fuld9HH!bJ;8=fv}1WO&zrlu3gc1KsMf}r~VZG90a@OQ6Vm7IUJ{b zOkHZ~1PLE+Q9wRu!rQ5EP%T-dEcUPRSG!&fJ3eATo6DB6W=1<*cYY|#_~se4WScaE z>)IEy+bit0`ihW1#VPcg>Z4}i_YQajXSTZhSCUlHPrVAQW_kog0 z)cZ)TDhIKnVfdXVr}YcSe&4DJ9fY!Ip}l?uV-5Xphmajb)8TD+K-HMoa2%FO+ zu1{;WGW+ZQY4RtlQP;QUU-rtzv(M)LLmvg2h#Shz9E}?;(_3Vuz=dlj?Z+g7=45|( zURr?8rP{UQt0fD^0Oa00-cyA48aV_%keDi>xr^L)JiY0F@! zU~~Kp$t7~^rNs+TXq1WwAaJWTV33EU0fX2D*GAXI@&!#bmjAJ>6x9+R8Wraxe;hDt z=J;?2xqXVG`7`A*T-9u?Lr9B)-ha?N~g_Q_%I zjIMb0!AjV(glpOCvyZ0_d?NezU3~p1h(sP337xn!mavR z+WUvc)uN1TGKTc^EqA7093|SrGy89R*zV{|YfFAtN?*I?BnT5Pg>*`Pz?OB<(hk=Ao z|19a0Qf;OFi>|MS(IZ6iN{RSPr2$R#N8(zZ2z>e%J?F*Z41jRTNWfxy!Wr1}FO7Ps zs$IVsaNB;5=Ft!8Xs|57(d^W;OXyp9%#~F#3J4JWSLSOmz35&Uy5vlu6 zK;ebKN6-78$*Lmi)lNNpwB=wotZum3b0bE$1CaMOlC!kjX|b+ylmuPpNO2nc)FRXW)O@k>L?@_j17>WV{uo^Cx9gX_MK zaQhitF!Nl}9~9u?fuhwW(Uo{t0F3n#7qSotfmWf>4gK4Nm>~IN7mFR(dOW7YYp|$n zQK`L?c^S)ME5aKbvC`+B;O$!hLQNBO6=0*^4$L2ZK-&LXW8W%20Ja6cKRfz2^vx}z z#m#T*Aj0tJN7J3ppfpYFPFxN9YYU<=ad&akz$RmXHl+43_u^@+_gm3F0l{d7^p=B`jj&p9Ml?}BxCGjvMa=?e zHb|X|tytz;@$eLHRV(y7_Is5f>&8MZcxW^UtBmb8Xtdlp;2cdg-uk165$<>B6vuso zTt%IVw^RF~q`2U_Q!>@R|9yX@rIUj;XRQ~@0^G%#gX$My*sZ=!q#F3Ey+R`(`P5QV zMRpqQIn3)WG(mIX{VnR3VtrPaS4W5|`_K5JtNbCyIzGk=J+U-(<9E|qmT%PhV>S2q z=uQ2%0as)DX^%7ozNz!vr;Sx>Hvop76$27C)b~c6{9zI9qfft}9Q3xn3$?d?;398G z<*h;Wi2H@}rc#G<&+P>iW8A}mPi`A^Nhgq_68gAQ)i!2cWVK*&52?aN5*{);wEqz1 zrB@eUHh~2fy7%A`{u>7>eRKtjECmizIZ_7~{9Me)RFbwiSMjzM>u?go z1P0D?vG9DJhH5Yb15|=ESK)Xp-*ncQ5JZ=@5J=8mQq&*}=2bpyZ@sZ~e@uf8+yHU5 zHbj;gfrR?&Q%AqkIirB0b2or*SJ7GRJ^Yp#0^v+9mLKhdQFzo^$xHUcAr&JCS*1ym zLXxnXhi2ar@`6GrRSbmPAh?#22M!+nHm3$@3px7f;-Ai+Lv=ZT`fgX+w!XvJ;;y-Z zw+6V74=2(|oly@M18q9keF+Twop!tLD@v{fzr<`@R})FhMX`jT3f$CzPpG@6%9I8V ztp-0^jo-mOTjOf5wcDLk&|^b}q*X>JlPlyA4LVRViW5#BWqoQhmn_-7%QYmMr7q>r zOSnGj7qIs?ikRwc+f_+~#{YAdX#@$_ov(C<>T0?ouHUmuol_;CuRGWR%lr^y2X|83K?7uPewEd7vA31+K(NrE_S)g8OzPb1DW(g#%52a9bh>1_GbDq8`!x`F50&#k zs+Vvrd35+06O;hAXCc9FN{RH<^k4_D`WBP^lKGql*zmmz@Qx{&K0r0Vqt04!nkN_s312>!ufS!Q^{L8=ULHhfJtdHQ&M%_2_VuT){UtZvK7NElqmj2uy zB&_Ur==H^5b|q9XJ)6ONt7Hnj@9wHWB}Z2KH_X~zRm{p>4tC}eIbChfEHulQ^se~GeD`AFT`$i<-$Be#LFa^WuM zPKQP@3y+xzS^zUq;z8a!_&L7E_qt+>uM1wL`$gohB_o{{Z5O7{6`c;&2F@m_3_qN$ zWYbU`aqQGRDLl-KgvaN($niB^V z9*H`6%@#slb;rs%H4-ApE>2_>yj;N-CAT!ou#%^S~@H$ zs@3}+xjOm6#ff~Wuqrmtx}mJi58}68vx>K|O~nS|vZnYd##um6tUYdf@EX}?= zh=L7Z^Vu55he(31C-cjXU4&;WVH}1Ib;hrnPuc44w1r0Hkrk+R%w+HBReKdRSE;Q( z#GLJ)2B6h7a}yorFS}}QoeJBsku3nYmu_rv;+CBvj>xpQMCsZ0wF{~K+TLr*sEH6) zkVWzRlFdyRJsEE@e&paZFnWxp;D+0&mpQW|j!Md<;@kDylndWP1 ziiaOs?5}?Nb8hPPTSbAmsTxMAI3*M0lwnFBSFc?l7F3uw-^S&iI?~0JkaIV0M|a?ns~C?gOwQETJ|P4Q87DwxEGNxLP@WC17krHT{FY~(0o z$sezMJGN`31@xEw^D>T%gSKsWb9z@67CrSDeFJ$e3GCj1VpDf^v{|+aZ>2tbSLGS} z)#*2#Dgx*Qu1-OR{Wm1M5B|bk8K=(!NFK_Q8$@szY7A>!L#Dw2RrBs0%@bARk7N^& zMxEWY<+FXA zEx^xZ1KOsd26-l)*?d=)pI!a5R&!s;l4PM}KahIGa>TrCGB_uH$@o_ZG8!;<_x@Jd z24)Tez&*u~*jXv#^wrxt!x%FA+d7ql_nSrtZS)-|8N7;7eLW-M9ZHC2Tt&(8gtjdi zYN;3)jLM1rb-evuRUr(ckt#mYrBKDSxVk;U;Cl%_3Rd2VjlYrL-e`%PelqVZOfla;CJ$ULmD_qqCzM1&N6KW@WVURuF7lC{&eWWww@P3A zZW3k~JzTPd^J8U^jE$64v{)Q^?p2jFZBgZc!a1KD>kJ$4CBT%oFYMG6&GwAWXVwjL z`n(7v-SO6HMFgH@lMkkcB=w*eVrqTW8rJ^a^}FkmRBY%4s}f5fA(CK!OFhlL5l9t= z{AwiE8#ofO);?r_#OseHSIywAw%>iB6p!H(x;9tyd$r;pF~Px38>TBv@x8m`84M@@ z^h;HJ)Me+#lNFyGT;n=r=M8wvl{=q4v8i$W?<_P9M3}rLmYPWlTFeCZx}JCAFX$D% zf+T&nR33lV82T(*dbm&N@|@lG@`aEtRy)UOZz7}OX3qyj)B(XK6E|0NEKS0(Q*?nS3l z^qy7vS)`gl&iFy!&R{C0HJ z&zT`wT2e*OA^690q0J3X1}jU^pmZV)wr&agtr;9HKcR(J_6@(yy zL@NR+Qt0|1m|31f!1XIg@d59AO@>Ll4YfWoh6N?*Y|H|I73NETm+t?^)|&%l&uX}r;=?j%DxX;rYtkIG1--6Ft&`L z8D`vH=l}cN_xZhE_mdv(&wcQfIPDnL3+g zOhx?j`fP;LD&m<2lGPubrv+YUn$kAV30DT1vCh7%ihzlV6>06Jw13kd)*vt*QO($u z_vvLCsrpEG$ZTn|XP`tNYL1>v#U2(c-!9(|X;m;O^?OC2)Ly6kYW~~~o$m9j`A8p0 zm8?tmyF|94YwX5vpo#~Y*6(@Yn(D3>8Y=epWF3Kt-gDC+XorOtY@=_7BF%$?X{5I3 zBI$6W7y?l+=)@|>)jP497O-G?D-t&?b=jL<9Ouj>p>=EjU2*W)HsWJh3mR>8+ozp%dhivFYzttRU>u|k+M5_Z`%~j==Ean1~LA6 zPSmxD$1(r!***Tk2gVZPXZN@6}6oo>E8nu zSruM|%sv);2aEF2(t>7xVZ{0m`k<`!z1*=8Chr!s*<}m9(P_)`U+Qxo zq}-HrKKvF(0hnC6oIg;E`79~?ppFUJGU;D@?3nE6@r0W$@t56-2TZVh&GHo{$1eUn zCGdBLX-7JvVSJT?Uq<5U<+Av95@wp*Z!xTd>O}*dcF#7h=XMVd_haO-3h_qEu?xsR z7w*FleQVxJvZk9cll1iRaYj7r79CkE)foqg_1l7Wty{Y#p}vHICjed;BG#zj89%vYy_} zG(Xm2A6p)=yx^dLg`otBivxxmV7thRf%1}zc+RT$5X6<|Tu%ryt3$5(BgMbcTt_4&F&4VJ@ zQXmZGd&oS=71fw&)hC=@A&bh zsa}pc2tuPiOdH&%G-*;{a~cOs@i>4C?}ZucGXU|4jDQQm=y z%(Hsb=$pXY4_fi={$G_nEUAYvp{s#nB&Z~UQNB+8rp3fbkc)3xQ!EDxFk-G9kdpp}- z*YC7m6<(BM9Da*1i`iF{>Q~A%&mBE2lGrS^Ylk&bH}!e9=yC1d?D5ksP0b&ww%zTS zwK%MK!2_r>5jhQ|z$0d3~ znB+QAs?KVxUY5tNBEd9st#rxv6__uT;<>%h>ql%=;^ohnhB-%ab;GGOQ^hOJ~EtgGd1D^p9%=cvTL# zs0d?ZcMi1!{|bP1F?XHWn_2ramV2Kp_jH2jO&6Uj=Bmb03d&$Mi_2M&TUjBs z7AQ~HPuSSgL+=ecebWH|_J?{~6bQP%?qY-0M_B4vLh)PKmbi7Z_o5y-P@8>`d_jr&=T_LAhrZS7fr}lcytuLnkJOveZ zb16yd?2e7At$h}Yu#P#27vEY|_JWSJCYuI=%g&IY*ckd5iq*AGD+kKqb>_w+gS}32 z`*xia4nX;gw|7}lTDg6}HKV;U*e)T#tQqqHxrA#^hd4}Aw(YM(aCP#QT*~J>!$ms& z<@TM=apt`*@G$j`B<&|atW9Qev3;jP%18+keCgo^fw%GRz3YI)G5E3!hsJ5yTOYqx z@EujKMcmSHYms)th-TVcem?LJVKZu-i3i=<0wvjHoU-PWVtj z4{8sFllH9dU&I$EK8l$M9}Zd_DX?Z5Qrz3`chR$?wR-~n1Xe?-F{HI+u}_f`$a6U8 zcBxcI-X-+70mh|wAXy-?(%c|j-9xQ2qHne%7OG5kbt*reG-C1HM%o!MC-h{O6XW-lPiRwK;uSXlmzy)}?j&P$G#G<| zfOldqLPTZrbJlG1mN)HhAy@z7+wyg^{GSEm^gj#6<72L;lQ(irj#?}A@aL6xhl%U> z3lXl%okmry6ggTHGV@rqb-w#$gQ*6r0uR;IGJIa!1;lU`;spT39I?vsoZGb;!^AeJ ztc)4%mhTltPI~%#IC~6z-ND{tt-VbS`UoPbJP(-%J}C6Yk@D36^SwW#r*E?OG@-X@ zliz-+4|WPF%xibqRg$^;YmY|6t-SyO26xes%Vm}T?4AyUDue+-AZ2AGr8G7%`8B4i zJw@N-j_gl`#-E2;WDh^H=z)Gcdj${^9}DJMJ1>9r>l5iWBWMQSz&l<`Ayu1xm8UxG6+ zL7i;bSG@=>RDLS<;sv$+rqWdjOM8Ry%Kn#Qb1vjOKM89_1Lwz4ql-hSH_`;t5DlKk zZi-(Svr890%H^x5oko@Vp*E7?bK+B>^TaFhxc9Jd=GYk&h% zUI1U#fj@fIT-HGGTK@KO-jDEMYWOt?EDs=Ed1^ozVK5?q8S3LSU?>Jwi~~Q`KR%O& zfNA~s>dEGp)HtW8M$hW$a=)kIk3e#O@Po>S&uUQ~!bQ6#&&uLx1=lHI%$wx$(Ur|2 zNu%UYH;eT*Tj0*R5Ot?Xx|#t{faZ2>_bk;wM`t$!$0qMHrS^tmnU?!{NDd$sF9Uby zBP9S;Uli_tx;>iZq-P4=$ROS*Z%n8wr`WJ`lik8|G(C4Ql=s8jgFc{pEn`&_b?33U zf{%RSUJjEz-+IgOCwxajAfPR|-6&@XsiN#`w~RieqeGB=<=`idg{?}fHaQ~!FDB~# zqv$P1qW;C`&1;qe0TtA+Tf)4NzD_(qM5c9*d-M6I#`B+2Ki^bJ9seCt-;`e%suPs)vg}V{hg>>o}Et;crwy)!vdO zW65|@9lC2%bI{~g1;A5Y=$J`BIr0q<`}P8syD%Jpiu6qShjAy_J{^j?Eo?UTb{iy} zaqGp%8$m@rPVj~zO)<&nx6)6A(((Zn(ay}Lsa-b{7L8UB9m!1UiBsk@a1sF(8mq`V z%1GR(vmRNRxoWs2;M>!hBIZz+Jo9>+&sB>j{6oNZxtuQ?c1*P$rTqFwvxV`6eD5si zW%c=PvaHKbpC7x3DuM&_jmi~m8@%!x%lZdPbP0+g%k++=>@gi_8}g;JDDInz;`!)N z18hL;U+^j;^Uy#H^R>NoEo)h^?y=QvMHk0$4Gjut=Z>vLi8gde&78_?0pqI?y4OAp zXy1*z*}1)yyG0zLl<5kQfMEqYlQiI=Y0}N=45$rn-}_ltI#>l6pOAd zzN3n~6>i^Cxy@&p&TzNs#h`rg6>&NUf4e?oqo#`>`pd4+kP?=1%|MmkDVh5^i^7Ij`Do;{?3 z(Oimvz4#|@f?mQNMl;=FX#s3=qrVmqr_i$s(yxf^BsKTUr4C1Z9YL-IM1~OnHYn;F zP}QC0u-y`M}Sgf3wHjdc&5M6gxv_lXag5x|oHV#g&w{Ikcgvlf-~~IOA3tM9;I&Ul zy6TSOH?-O11A)KxaAa=@qe_vWMP*`8^u`2lamah&GdFme21AXW+bn6nLFY~86m&d) zpf8+Ogi~k9%lIrH-ix9Zndz_51XHrHfV#U~VbhNeP+H}Rnj|{g;tZUiVzfNJ7m6xk zIi&g!vTG+RFOFGo#=ycPes_bHw9-mm8VU4mZQbB@Q%vbbSc~<+8&1~jlcXx9D{=P9 zYDKi{Z{UCi6?SV4a7R5)+M;lLM!Y*Ut5D`Cp(hpT{8JGv9|)ZuilB z%?Ii-@ksv<0i#)bygIM7dj>Vru~Pn%Z-^E*W*59i@AoOj2_G54BaG42O+1)w-cp7hsB)=raOa?vof;%dE};#tz+^@$YqiT`VNG=I5@ zOmVTBT_oX3WWuDx-!@llAt#^(UNM~N!rCE{U;8`XmLy%maGHoQ-apYa+Z9%-xNjJ5 zi0!pXaE&jQa2C@Wx?b{kh|!_+83lau;cbbeviGkF!f4mtc&4dcghHc7X-;(&s1cE4cSQG4Y$CY}>8{392Wm2Gkx^+O@uid;FE7iQace{nDDb+Nd^1$^K1fa&pU%kfH09f;f0V2?(XcYaTjPpvV1 zd{fW9#~vybr?fg%6OjUqb!Jsfg~4^^q(4uY^{{8O-6k1bPYgc;EAmFxbiBWdeVOu zAcB4Y^ysGm_CmmyyC0GOY-!X_bN4#Ab_-sNQ05NOhq3`PBQ1dpp>y|GJ1;fQ%mg_e zF5ea6{2mFTBB{XBHPEJw-)@XbSaD0NUMjB|WpxAbMpAnpq;@~Vs-?vZpV|qkQIw~sdiP2wI<{3mz@(DGBGcS@|wb&)^i@EY}z1G)o-dr z5@JvN+7~(vX{zMQXHJa$=NS+y|NmUK@(oslz+dAI%LLlN=O8lDcBIZ~V~@denN}Hn zTfXQXhm1G#+EI-k?l8(R2n7Q;X4z)?5rc5#2J>+)W(%1x4ReoaI8&TkfsJYKS=?J# z89w4l4ge$$`TlqP#OjcqgM$`cv%{yzF+uHQrbhgSnp`A!|2+&4+$rO35>E#_Z!vNA zpPb2=(Qj#b)6r2aKfd%5v^>JQjaxwfqoiG}A?ojLl>-ox<$<$vlo8Fw0tj7&>d)7P zvI03lF3022bx#XI-=0@X&vfV{%}igas2fun)S&wAPe<_nr_k$#w<)96VG zkK~^Tigr*oiF%|;r6fgi=Xn}45!juOsX>6^Ys%e^s;(wc5k46iTyzOcFf|8W*=EL!|EC(x>cq`ggE^o!@dj;Ddf!G2WGph;=rkjaxI*u0+%c3)X(x`^ZLB}FJ z{7!q>cvIZ;i5T-0wHVKKg11y=*D|PfkM}w(4KB zLu1eYa2ckh!NQtz3mM(;9EgW@-~e0+?ERtIC!|2!d#%J4i68*-ryrOjRt34)y0S~> z%Es@ZPBod|_9xi7b-*8{t%$-)eZ>mGW_w1<#J^&X__w~d{P-@tacte%V847RxTa0a z0qf*n>(>N9WoOn?82k@yqpohMVotio`&u_)9EeNdj;E6jD7d`d79zLuIKE1hJ(?aTqSFNm={rZ}XK@=|}OcIyH2 z{%YVcaSpAq8?RGQbFZP5LvevzTMF7~fwJS>;5+By%nax3lVnWf)J$xeK}Qw~}L){xMLuK9WPKT(Mk&`FD%)K1Tk$kT)_g zZ%pU8UozE!CkC9$w*`{IRE^g6ntH?D{N|s*O51Up4($k>8V1v0b?gC=tv{)+r-wwA zg-)kyJ7t0DCjh;R&*`d}fQG4Kx3De|l*9C+sAByf<*oMtjBJG7{9vi01RlIF0on;p z^?OA4AyEbJ{Ki(#G-PTQM%R_kOzRSmJ$*n#y76Z1+0wn$AkbUu61{KmEd@$@#yOocaGe6r%@B_VjD8N6nJ! z$vXaPs8izM(KcBzQl#BW5$cj!Z0u~I^`H|zwy?UXY*BNYw;@fF%UImqe%ppAIJ_KP zo|{YhEkS>*W6OviNVkjqL^=X*c)a*}xtna=J{#eGB0YvV`faoa3~R~XSGAPR-)(ZM z+mZ40DBvQz;0m36C`hUmARFxra{NgA{HJp3hNRTq3=eLntfYXsc#y0GlqJysxUYvx zS3>@z)nQfP($ZrYoL*vA(hoTZTMc(6a9Q!51NVQ4b4}qlkv68f+2uH+x@IfL99Ndp z6>x{|7!Sl6KhtxZyPhat9&^h;P;9V$aLZR5e#^np25MeKua@8@@Ot=2VFLInL5sN_ zU};NM3Hywh39jgf*!frY3lFP08Z3svcV0TzO$c5tVc%7!Ryd5mLlwHUJtTZ zbfbP5YnK)Dw*%@|lHZvtgoH=5gPfkrEdYOTtWBF(Wd47&+R9FrOGsDSN*F~kjUz07 z1S}L|@rnWP3;hKthw|SeK6#v2yhjAI;0K5+irS2Un??;kYBE}`lV(K&Dcs?V`K;M> zRvS*_zw9(HY`?jf=P*_>MqJC8!{P+KRE=Qo1!$Bg_{_x+oTtjYV-dZ-?sWGVH-uJO z!lG&nK$fp!0Qos{(osrV3!z(XIq!jEMYgfC_V>{HG~5Q1-R;~Yj>nyRv9lh1a)=_i z(;9vWN}%aD*B=4lDN;LTg~)lstY^fJ!~uxI`Cp{9KuUI0oOs8umREblCTM-Ex!52<6}B}w~XoAj5Y z$ZL_WcE=C)hXVyHi z*a>8eRnw6^-^0Eyr$&FQVE4*atCmYI4?bI!ZTj_-pff&6T(9meGq;<(vtap`pD0AV z(t7+x3uX^!vSI_f{e!(;UbmdAd9_Nvai>A>{nt0q=yDSu2_E}QqmdEf%iSevQ=Xg6 ziY}p9xWd*UKL7w)8C}5jU`Mr6qS|*fsv`R2MyT{hz!2QBHqlgL!uxQ>?B)-NcsqgK z$J&2b@Tmzt>D|)B1{QJpahV?_D)IgE%AHlY`f$@Q7xM#wNQy_{FSM_c=R9 z2cwSi7EhZ9%yu)v|6cH4O);b{8(H{i5eW45WPY>XR0g)C5N{)ZBNlca7PK2#Z zJO%(*Ae8|s?KS1F!F&NI(gB7Iw*n+cYNop?aauoKORcn3?TrSoGi~8hSxu&H7$ryaUzHTJLasD zNmNOhsPLgdT|w+!--L;6nj&N`We{;ZKeJJeb5-0><{ zj(8538N?)kq!GhR%SBMnjM|$XyfcOG{JKp?_*Oma(jEY~DhC&Ysb=hZE z#am!-IYytsyjQQA8UHzqt{`t^TX19n2_0u|2QIjN^5sdw42B6Lc{X2ofO#Fl^x)F> zkmUcW00U;=4(+b12?-K;rH7s~O?#|&G3>iyhOn`tV@4tn%^puX0o~L_F)MOhnt&Jy z1cWlzJ-AR;d7g7=#kqbw)q2Eq`q)EjX$M!wI((m(aA$+BMRUZ*`ao=Xz~C{iLFHOrMZN5i}s)oEoxii?r_Sw7;L?&us*-bPj z^FEe&r{|W`TproYe`QXEV9vb0YlOf0gzA?0IV1zusHB>II*j`4!LlN**zum$kncFg z&$ugp**GzU29O9u3Xe{}M5ExrT=gtfO$M<&4tR`MY!2yY;K%#EzVlB(c(9qZVfOqJ;gS@OQ>;oza%6TJUOrCUuw@sIf?uf<0saxRX3%0_SZ zzh0yN$;+PbbOat4)C(UjP_Wv<3GLww)5TD(XxsTb&O%#;BbZ!|(Vsj<0`d{o-fHJR zuj0IGT>`jTL7#U3GOsRoWAWvYLbj#zyw~JcPw<#^#?qGtwjNTq0L)g93i_BUzE#*B zn%g4gnnFuiJuBaFWCP>K&)c}^(_m!Yv)&|%&ZT1YFMhm!VrY~8DyC}ew6;?pqKh{o zZD3*nn6tX51{-llqo=7rmO?sURH4ZH%nt)z{=Z+(o?5*9{-O-_kODtJ{?o^=ud=f) zy)!fvcqp^7-~!=Z_QoY2s+iv>A!HY9xOdl8#y_OjbY11=E86m!7k)Y%3c5TPH_X3j zbE}l|mhAWEF=6oGQgopShOb`X&P#?*6sI*8?`UQ(dP%s|?6>tQl72i5>2i1eC^MCI zJ^g(2H4@U6Kli?#x*LNp>FSH_8%UtZY6PZk#JAJ@SnfFbp-sj`+WhXUq{#a%f z&JM(d*ADchVu;mx_F5d*8=Npk%J*II7pS!FW5MtpyM+nFZe*-=oQXYUH$TIYNVAP;D^?-5(3aBPY(!<+#+u ze_`mQpFfp<>w{4|L6@)2Q&Lot3CyPdTnON|d&XKp-*fx)ptNuFArMVT6fFbG2n4Fr zJW)OY+a(ISyMQzbkUSl*5dh*Ra`0$C0mAORr&k*@Jx1={`kHy;LX9Qkb{y7DjD>a! z^-U!i_ zEWL~>%&gTr9f<6HZA>m?a`ylK8a#v_TmzxU;voNz&(LK9O};f7C(Mi52%Ia@R#0?7 zn0Rn+&yi2QLaJQ>hQB6|tjgS`lDSIeIJ~PFJo$%vhNYIZV(K2a8sQ7etF}TtQHDAC z&uXQw2i|j^wqcm5Ril@9xh_>bU^r%Hk97V)h|$7Qw6%O2jAU~0^F;ec5?;f8MoAWe zUy6@xIj~bgGrt`Ph|zxsNF?=X4|m$uQBn~f#iurUqxEC`HFMi&^I6VL+P?>`e+ap+ zG6cSy(qZ-~D8zw#K|;60!`8);JI^-I4KT5Cih^u<$g>HngHv2^3F(q&C;4j6Un{Z- zge(iut?IL-(S|0qlb!byJcaKK>nh!S%N!Xkmx(s{`lRD^yxEDuzTk?@*2CeF64#|M zoV~n_9`;NuCw5EXOhDo#fb$EKq#U8%3{RW)n{HHjgQ^m|GWnaR3-Eau`&iPW6~(k8 zBX)g3+eazj-TNM!%Cb+u9eMMmj$DO~=%!iwhg}cz6qTImo7d~wgLS=~eVoWpQeGHC z;%n*Z-Emm#P*!tj6S7up2Mk5_4(uy&Dpzs%TLh19R7deKo3H8x8=R_-_v7o2A6w# z<~Ln(Ima2m>M1F`RC{&RLIFg7#dv@qaTk)~YNGuaX-X&u|F ztBdukV&Hy#>SKIVR>6bHT$zyqFQ9BSina}Rg+>yL6 zB1Q?Uf`)i*T8=|l$A!>0hS}ByAAbK;vR$+HC!-vfQ;2j|zeis`y}IzBOr&da|ABig z<#OcCy`}D4rqiejU=%h&#ss8Um*j~vd@(83pCU0qlT69uRq%i431Dt|^zU2{lBfGW zm!XH_h4uY=n0Ri>vYw33OiZ6d!xe2z0ETTnri;PD*Mc9EZ`Ra&%TU=|En6L?LBui9 zBqKO!WY2*$41YCSl5*xE?zq;&QO$-odE&qPWueqcO--cQxFk6e<}h)pe~X!)+im}7 zT%Np1I!ZD!fD62QgKTLBOp-A8cOjdvA^hr#&SN!6RhF{fbpj`@o96B>rn48RK&V@o z!EO$@b)gXWpZ<78@U3JtMf#gy!Yef2igrh^KHB+lZG?ByJK{Ru_%Ys){vuA`5O96c z{;JaRq_k6P>uhz{c?AH}?Q{*;$f zU!hw*JdmC~lF}_jPzLk-HasMo|8O^^!X3s{Gn-*L=xvTjK zF?}$EHg>C#DjT*sNEO+iN2={g|Cr}0)Q|}&PEIORzo7W@)H#w#PsHl<`VNmY^C0C0 z7?2tp87=~2kiVZ-Uj z)Ssr>k>-@K`7c(*XTM`nxkwNF%IQwB@1GP-{COOrqN&c9{Hk|dMyJK^=s1Lg-fj^w z4auL0eE)wo-}#G6_vdkYmiwP^zeSwWW}`gWk)~7o%5zcr zS1*2?e$hg?22~m&&TbY#^phJ~nYu5Dj=E4*Z2XJ*i#;-TB%XiKJG@+z6!oxjxe&%S zvphBy*GsTPEtD6OOn{2TQB`9hlk2*+qq@zVWk4X#lXmu&b3pq@Kw98B#LEG?V1JWtF(i=n3Rklcxf`87cLG-Tp;2+~%6Ky}M2z;5ci7$g2Y z#_w?4urDH%E6SEtmHVZTMhGJ<{Oo;4LRcf4YiqyNSyKnxAn4{rCyT4)>&|1hcIJ|Iy<(4flJsi&tF;$gqJvqr_$vc2MNFM5m*F*uUDM8_ zUbX!nQtTgE(Z4@RvHK6~*eIY6X+1S*y*X-UO*Kv}F-`QW^%=25*rvo8NuE#c5yFAj zT#Tq*P1eT<{tY_!@%F`C2DOe?)L0-Uzl2A^okUpvYRdapq5VoC5zpxZ0SV`YTZ{Kk z1i!W9(-*u1DN7Z&Z>xQa8m6iEyVOTfa7rf6?9g+@a14*QXKvoUdS(3$nzlhR6SIC};@Eu(4d%DnMN^^_3g3DTL-K)&yU$bTAU|!=AE+*ns8e&j!#QpjmgeJB0z`tI zxvBn!e!+okBk2~2dqKX?9#TZUnRY&nI?(nf{>)G_^<>-+vnpj+8EQ0h%Z;hQIw@#O zy#=K3%JqI*D$@TY1?&Sv zLlNIs23%_L>isXOL?;~z0lxJI0F&D=@9_f*cEDjsfARQSp~Vfg_;V$j(A)rf>@JLS zMcfGQJ^s<(2o!ZEK)Ua|$T`j?|C;{Mu2j!V)2k568WK(=vFrMD!gQu zZ{9brF*SIS%WJHR-8V}jDnNsMCIPY20?1!e$~rXbr{~_V#7uMuiswyj6H6S>MIRxc)I-(b=Zm)%nRScR7@qV&C(bx5v7}>!_h^RKX`b4k=)o%CTi3;Xgivd5oqbz)Ex@^o z$A;+_&op(%68@-v;o^DPR6EU0pK^uUJ@~KV!$b8$QW@#_mP=~f&34=8S1ay+uI-Z? z%F>t!CvR~%)%D$bbokX|Sp2idsno;F!Bh^d1|x*Y>dy$cn};$HbjkTM<1JN`61}Y) zXK~Rqoi_Gnc9LO2Y~saj;l_-l0tt<(+Qyjn8xF^r=9g^teYw0+oAc^DUV0hD*v@FX zE&=hp_g@3-S|@I7O1CQXcn7IY#&reISU8JHf!2e~fK~x#ol>9yVy|@NAG6OwsWPT6 zYc`c-klQDq87N7_!DOq=rc47H&p2OZ#%ar{5Nqhe%tQLIJZ+poe?X>vJSU!tVUL~)X zF40;Q1EIYBAXDwjSCSY9eH~i3b=3Oq6try_g0`SC8&KK&v# z=zM?iRIbMj#9u1764W6Wry_Fp+2wPte{%~9AG3EfKM+qe+dMVj zeJ=*I;Pw|#kJb_Uj!-P?Ks2HDis&!wul2`Y5`W=E1ijHT5T*I>md!ocRV1~;CQ70M z+6Se#i5o~5gOoy20V_-oVm6ek-E(RH78uw{xG0GiyH2ju6R-%GRfG@LsiqIaifL%# z$-Im1lX=ee{v*V!+n7zCqq{F>w}yZ9>i2~biK(Eq)LbvxVpy=DSJR0lxj*F7x349{4B*2uFHU+Rx|YB@WbY zS$$gMdN*VYh=p!Bv&Gx?emcE1$vuU%r)|`1m(*MDT94DCIQi8w`t^fqRp zhm9m(L@zyNsG*sJN?Pmbw2|Xe>GRsA-|feLtbvdMO~@Q&+X~xqT+8@s%;rJDZ0xJ+ zpHxc0S-8j)VlvnSLkSF9UvnCCw`1n1Xid{165of!gc7-;r-Co3q91P|gr8;O@028m z_m%cD@4a1>bCDF>wrghYi_|k-hOB8*#Za-|qjwv9m5H=))QgB_#|th9hx+ll;>a|~+Q4y%uF*k2na=6Bqk-{$KZZyAXvK?Qw=;PEFcYM-C_=E~X{p}VmP1aSiLO8up(T5< z8%mUfg)qN-#Vn-X{&JqgXbxNUX%*Wu)+V%Nv&r-9rKRXXkA5DoNbxeH)Nz;C2WodI zgp*>;H==n=u8n$} z^O>kpoM$-xIBet=s_8Xl2ZKLiKQW*A{+EY$lU@2)1<^rF&>nIHXTQ*{jn`azR@_}a zJxPo55Go>iC>a1vfYS-M^X*d%%!>8adxkykBc`C_zo(k~@72^_sQ6%7;Q?u@7(kaw zUVpWwwpxG+Lj-JlXCbJy8vnQ8?ic?k6tYlvP_mWJYFSwG(5fq{HlVdSM z@GT!_8Qiz#Fb|)5bsN_W$=9WtLiXe9J7?w1awWg#EY+cTuYv{dx$k>7CzT7vkdy^R zZlhIy25@6+H;SIjri6MATXq$5y)SvYF*ps_-W4eseh<2mu*#0tZq+?_FUjiq@Rt1} z`UZsNOs%}!Y%Q(JS-e*eD>|9WqB0+>E<~S`xH(>@9HLYv)p+jwq279hi89pnM%1tt z4C;t(q;H%!mOopJG5!4O*=h*2;P6FZdE3RI)Qg1AFdThiIGG=t2lLx(-Syxcv#-P@ zgb8~Rf{*K4c!RDi0<_jw9kf9be?BYYX-FnOU!}W{E~pi1A|(8p{3m<27g3!+%-9nF z>}*sM%!%Vw%{ncos2vEK}O&M@izq4@p|1fABQZ5>JHbh3tS^+n02Q z>dvkH=#hwU8uHXzMuee1(rsCVv>R6fv2ajv#F3%k$>y0gWVOYrTRu=NXEMD4j7m5* zdY`h-kYWqP{kcq0$5)2x^$7iC+D)#uC4kC#Mup~XD&t=XW@1!d-!i$&p=p!$;VK|=XfwibFQ1X^F0MIQ3xo-E=OXx@c$2KXp*xN?VYc`a)EglBdpRV#45 zT6P=D2!t8Qhw2vsDqHT^ACSstYf>(d>Id$MOeuH&U^1| z6gi^KuM40Xhd1(+pLmBX-U~47kLV+)k_1)@D-3?PC)Uu+T$MFAw7AKw_9Oul8@s*&bK7b78t@TNJo=9Ii>rlucACKAdnvIdg1kh!hbc9ep z<7J*s3t9e$QNA$fHbhf9)&_kw4f6Vz$%@ z_bAiMts%?UX(3=b0kq`5ek6rc0r{*;&oWr%$ ztHLz|9L0DVZC6XX&+x9j)zKLrHLzF0|LqzkDV1$8{&5R33|$!Vu3P4zRP~}Mr#kJ< zn34koT0@W!>0lB$&kY=~s$}~_60C286()Kh(n{u~olv!?wlES;Z4eZz&R&GqoUm~!tKc-uCFpZx*|GV(} zN$y_KAN3a@m97jZB|ps?9)N^X+HS@VU@Ee992sGC_NxFgDFyt;80_PE@6M{`sI9Nk zopJ{9=rLOBZ-f>|S^RV-2a%FiWvuj!ZWWQo4r)?Rdv>m6fxNl3XV(3dhV83qT+X@_ zQ7fQ_7rBtHH>z2eg)^Gnv(|G~sZ2gpNw3z`FN6@E+*3wp)ZQBbZF$9=Kdc)S4Zl>$2z}az{vF#BIn%GVotuvt3h>VqHboB7*>vu z2s!Unw?-MtW#5v%Tm`SnrL7?v9S{}A>j&`|e(|G%Ux zl~P>FTC`FWvhRgTNQ}v@?E5m7EMr%$Y{`~&Xe^mw#27n+ma&g*$RNrx%+QoErWxD+ zw6o<#)#N&3an4;1)qO+xFD$Tv6_LYtL--M@IG{}%oYHW6MybJsPsKEV7}V6?7#Kh z?Pr}R00nzLdBF%D@YS9Lmi#WopO+3h<5dXYtpS@NE01Udd0!wiz#C%>jVQLhJ019gJYNKBrzjc^0L?zutfQ zB5g$(vS1+j4YJl0l-9A3bck>}dM^l);y4Cm_~f!U4^~&XXG?+4o=e~9EJ<3@=%=(B^D@%Xj(%5O#+uc8D`+q_@fLM~f;e$K+AdKWY zaGtXPG5+;G`w8bTkGsw$c=2DCc%K*Wt6Ddn2YYQi)Gaz%H7s?@jmY!bOiko1;#XSS zGMB=&C*@0O!+lw>^?Gq2E zuywN0?dM%7!^*cuhO83;iFT76=}{ub`!_6QaS7;{Jw$P6Y$VU~(;JfYeVYBDfGoG> zE;I;|IvlbDrXMO9;yb%qYytKOnyEfyr3ja7RoKK(Afh!kN+QSC)`xl=01IKD+kQr}4z*<@W$I(+S79Xk!SGsbx z9T0&vINROOO7pz??YjJ!o5FW~XciOWJDX$_5#tO1-+&lIU^M7_!gNIiOTq$VxX-u( zUmqX0{Y87|Z#}qZYX^jK24@Zur@GhM93hPTC7SV1BGURWZb;k%3$%>0o1_L|s!W=uk)5@=U(DP;G~DHjpe2vEbYC@ZbYbL z2tI&*doN+sil4k+;ax6^pibUj@cItP+Y5q%vhV>0d8$#O2R1A0od8DJf0r7Re-A(! zng6&>Jd^St3$&fnQw@m>L?Hm);t4gM;$~Gun|+$pN?oicawlxayDoKuMtV`PR;}1# zpx8WU@AIf7#a;mKS`@t-HUJ3g7r!8TPz+N>=NKXsx;Rc;;X~u%CQe(Gd=P^_3Z6^slZY`PFh>G8o)1! zcMLS(WcLW=wHj5FV@Dol$-!7xrqTcG*uK8UjrZha`4XadaxFr+uAWwPVzQcJ^+3D| zMxAfcrEG2U=3<&Gd38E?Hh%n(_@)10K!+BVI#OX-a|Wk(S479f1GdHOjr`Kd6^UfM za17;NjaW3~#E|{Bve1SU(_g4p*X>eNVl()sky{&=PNb^DCJPk2ZvdORBUJ{eynDf` z29RF8m5JN3>mzPx-hpy^sl>7BF@hoI^$f?(6wg%A#$_}$bl2ZgZ;yb{@di66d|%$F zz$uU+k;bPibyk7hja!KB7}K(gblr?}eOm*2FUG*w)CICOX9>PIs0hC!ko&F%N@ zUsb)ZqTV>=b$}2q>knQvJZ)KFZ8)Y_m==~Y5h?j~Krnuk5y5@w$8$SpVFO4a?a`Rq zF3-ArYyh#;vr>5964fg154legU+-hp+lJvk``gaqd)o*00BOn`Gs~Wt6}2H4^;;0I zPr#r;dqIcx-y}peF#(9!xWz@^1@?8St@74+u z`pxq9njQ}F-%SxHhh3rHmb(^u))O1Ew9~R*y^cwm(wO-HOUA(m)A0|IdW9`d>!!*LUG18 z;Q}(uV7-$36l!+L~APWn;cBAoJdg^VCq^{F_E z47|2mU&fy`(Gx-z&zO-o@U3p+l3MZ``92+By8Man^NGkHPuuIbDdc=yHm=^Q=CHI# z)$1tPA9AB2>zCiZ){?fJ(rPFNYbsOp%bubFqt%0t4!T^#Re#ix_ zR0O~l%A@6U5qvq(&pr`W+GN<@vAgbs236;17qXkjhr6A;AfpQ-D(WVARW!h3KXV^V zJ^$#&ONTSlA6rHv1#e7r*~Ay#_P#6f&T}+XO3r!D=w>osmq9de0JrbLA6cBwqe#Y< z97J*E?CN%+Uwy5FzI!d&b)SW!-=DbSV2gW6k>sLk~*>!aPB}^l3q@tF%P)`<;ZZ=e3jiX0Mv2;st+AfS4p+4-||?a zD35ehv0l$HpK;?tZxSJDiFx%q1;6)s0?xa8Q_S+kmb5ol<`T%!wG7#h6 zZ1WTNrn37ZS}cS8@B@Q~qCeeEjS8htyTM)cMM$iU>^;%3ometDe%p9n3X zCw~^j)$gc(5%eO+Ol09Ureg3Ro7br8+=dji`8~~bX;x7~B{U*3smUWw+VkRM)PPx5 zt?Uqb5Y$n*P*Ejp!7ECgah+6Zr#RRCcw``ZhJ({8}d?IL2cqP|y;O&s$Pqepq99Xod> z(4unguYjsoO+T0OyHE1URcgw=V_cV5*4kUp+Owrb?Qd)S`gF!5;#uvJh(&-CW&{j2 z3e}2hV}~TvKj>>`{^IR-jkiC-BdT1+q@iQ=xZ_mr$@f3}U^u-pZKZ5Y#CrA3+G>Oc+dR0S=EB(!`@eF$F% zt8vw+!rq_c!Un84*#eqbN4sg#&T_PJcf7#GiXYFP+LJ?B*ZQm3p7iN?OlUe^e5yfR z3!smtfx-%p@z|Xfx_GfSNPm)37rhp;6*tlQ+jf0!g_yNlyrg{ZG46LjbKB_?`L88$ zCrDl6LN)HA;CRg`*k(*ahWC}?K1ImdFas2ZaW%JZxZOXB=awOn0A_!H@hMe`y-bcl zdhyuF%8)u~_XiSYC?v@z7*4FE0!g#RjriUq(ODInA$C$S=PxtD+FIFYJ+v2!?p z`!V2hQbJdntI$!=8x)R+ESsBEmfY!QE-&Ap9@dwY^j|mneW|4Wb34a7N=!Ds!8KPT zBjVNz*`meg_o7-b7PQ~;lNWaj)<*;*0ChY7V;h9+97y5>(JM_HMUDRSNW!dV%XWB( zmTmhCE=P?<)%BWhM|E7RgwgkGC_m7>nyFD;&g64r8j~xKq~(e~1q%}QDM=YZySaG1 zhZ*bU(`SRM%VaGP-a8`Sr{8%8eF)03z=M}8aN|+%2zYSvo~(n@$M-XoSB`6xYe@Qu z(&fN^jx@krPWe~e93Xt+pM&m|M^sp3ctA$WT!qAH9E>@2TCmseDBU$!548~l#w9)r z-W>53&T4*v^*T@JIYl*n6ZH=b@}GcjM;7Qq@8p*gVNuN^)QyMUR)BSl?wqQ@DXDx( z`9s_+sI`3g8EC%;i1`)q$7tT@Pl1^!HXAtJ`^+?Pi1~Fis$8|}mB)q`D217Em=lzEttzOqHsvt=XvAR-(bC?A59+pO%E=*=W79t-Zo3NW z**ih`p5khW{f<1UXqm?H=5}$VA<;ipnETM)w)jS5b9XJtPP@|Ud(a&k2$H_^$czHL ztts$)NTm=bj|Z#`>@bLtQFI^xC+IV}s``}p5OxZq?`P4eI<_2At%i42Rhn4Ed137g zHq=N$-(8OsGqyQRO8`U=Z^?>iXlIc9^y|q)pj>X-JWzv+@9$#w8T;bhb5x3b zLMD(IH(vHeALhTQr_;V~R1Bt8qeXOESji8MRba{8bdUDGSitnY1@rZ+SL zp;CA-w*c;51NgtZr!z<04*oTA`t}h<3Y&gbcy#ci`D@Ogpfg8LKxWGP&#zVnnUv+$ zRmVOMb;yefI^6sK43x}@KDO%e$r)O`J>YuS5&6onNBIB zNL}EIJ>hW-cNjhhO5buh5C~%_g~0Je10YN!3=n|KVW-zSfZ(Zv`ygwjkas1}&kGQ{ zk`$i#e%P{+lj~3LDhB;>n$RE%W|!;%3C3U`ps~u3 zlqyD2CipM0*;da@JsNaQHN|uR+1x=8(3pySU0NNKpt{h3G_kQRNICH52a(l5Z{^kl zU#nkWjJzEWJ{3TCU(az>@<(4ANO(qhnE5kxWXQv2*u>rNNCMKN>GG&1>XMHwa>K&2 zehVJk1EB7=3U-C~{DXsom6h^sV*wDKCSa^G)l7&6D3zwg0&T`@iv6a_*3+4%Fx?$% zX7oz-F%>Za=W1&r=Pz_NfS5U8;{yT32Z}ywT8SH@?iem4GMHj{`!a$0GlA0<5|rGM z^K3?a?04tyZhFF`*bVFTc~%j$Ix=K3v~RF*r2ihD|0eRVSJVUs=rsV#oP>$13LwAS zrwe0$3v2C;0U!H}vsy_j=(umBmx~a;-=?&VEnmTtcDy1QlN5W#&KZAZ_j$>SuI7t8 z!7iclrDKA8Oq(|h{Lei#Eu;}g0WG0t6Wk!#4~qI#q(R+A+GkYm^tv{YbB%W&Ws#2l z9Iqu?K7!T$ndyd9jDraB&bVu#CPrpU3r*o)>#XKF5fk+PI^GlX@&8xX#IJPW;KHV> zNi>##0T}i7pboHerBw7AVe5wrYHHKF4Pg|QG9lAt(DOByV zXQo9rqdq68%`w;3ryF6dO-;`)OV~vL7j#0Ln`CO2QLGOixJyJVq}Wz~p2a3r;;f6W z2le~S|3y1BL6GBG@=zE;6fzrQBh8Y{DcV;U`yYiaWSF8vIlgQVA~`jsN^w`)nYo%~ zYGrs&w*wT~y zsKChc!wAR35ATz<45OMOFJ%rz#0#9c>}0JU362^$DPl&Ps88YhZX4w?#Y+xqaOVdX zTDwmIVI{!Muk8AyY!;06HuYpGl262HFvvSDwwow8<1?Es*bnlmi2)mu-Mf`_ycxVk-yY_M1R4aFnO2V2M?X#g@e`T}44@iY*9(}2rgA{zn|7qghz}lIR>H&W^<1ZWdOpqCERIx+k z$Hb~S?)Tz^fCjF)%afb>)Z8Oqx8LgMz6I^cparn z{g*fEE{s*y;=;5h0dr>xM(pmw3xQku*udU4S>e>74Xu2oAqJ507lO@M9#m3G0*(wNaC6* zlX~*@m)R%6z4V9FyJs_^#k%f;^h4D_yrtFi4`OHXEczkQ!rtKd-mWx&T%BtkbC=W0 zU07=0!&si2{0 zFImaarNY)CW;|5TuJ&BovJjrnYfxpWZy|#8JjA=^yo=~`o~D+Xn<*~ia1lmUWSsKF z)wwa>#AgV|p*!c3y3#a?f4H#I-=a_$-m49@rN`vc!U`a``_rqP6Nr;fe2H&q@^B@C zyTDKxu5gffEvT~b2dFh3hii~OKc{#>0NcT-+?l%*_4I^%D0Pbo#PNnGd)jTnr{vF}gDIUR`s+D9bF%e>S4p z_c4fZ<^K%i{w1%z%BlX3A}L>2z;9LT9nz?MCvrBa%e;t(y?V4MWeAas@F8*f@KXop z(o-Z`b8$=vqQiq$>j4{kFFVfZv%nnp@2ao(s!`XU)t@rohre#1#9E~y?1)dw!~tlV zXBNzMm)Cs0DW!==c-S>pOXo)-l8tkEQR1pvJ`fBbI=vEM$u#aKgz@v3-czf~N6RRA8b7Y-m znqRmqSef}Dz1vWRToS8k#pvoix;56uqpEt-d|fgb8T|eRkvD-Nm6+%EmL-+es?L*9 ziJb~2sf8FrjpkJCkvDh;0*AkHMLJD?-RCe6;4-&2cUU%WJ^TIbd>%!%A-z*bCzw^? zAqZ!vVk@EoyaG_C5MY%*#!t1oF+(sWxI~Ni@s?6u7d>O^2n}JQRciE*D)AV+HFkNz z64P7ePkA{s$5*9Rm+vVw$*Z)iAU^4>G;uAp#=|RlLZ-XCMbm;A=%tFirBUV$daF!I z*0-|wptA3Nmz4ac0C!MPl%U(L-?>1!u7#(B4Cai|jo^1lw}#q*(Q)F#LRsC?n(-(i zXa3;wO&qZMKlJK=Vh0@EFRwd#()(()|1=6=d8L-Ex+uQ-`o{Lnm?Tp;20tsJyrfzJ z6v&}QlNd)}nP{7YfqF0iX*&Bij0rR8xT=YpG__=d3JgO10oui$)=s)OGkxD*Wd98p z>_)b7&a~}>q6ad%O5SB(%gL6?ufOz)hJ+&akKLaBDs80m(;sNk^(E68W@*zDJ!AQiT3=Iv^+d@`86ZVt1^p8?EN%VxsvSCoR0Ehd$5>kdvNF6^xu z=T(x*sFQ8Qj0m5_`ypgCydm|Aq<4OvSr!%%KvLFZ{q0vVkZ}w~G3@wU}Wd1GtJd#dlGS?d#rnEE!Z27OV-2a%-K9!~sBN zRB2E#yf4O!2T+l7FgDNXIB-61al8hUf1*4?EgQGRb+i+Xo;#GWbh@ot`>967*4Q^d zD1X>ZFB<$*mlXx%`2lQORa65&B!S<{;t0W9j}2b~1fNNzDzQdryufLvxzjw(*fDJV zT+BdxspuxIA%*ye-WaYAiZ0wGf5~8v1zikO;^mLH7?`7IF)TU#Xi%#GJiX}k7`9^L zI#qCT6Vew`ve~LT%dNTL%nNReeM1N<@s^0FCXI@_%WwBqA2B=MNFM(U&N6%tn$%|L z_q*_uHnY%@`|enZ>X&9KdQf*$v*NN!%6J=~E}CDYhlv8#A6*g_m@Kb&4(2bpsN^c? zOl{`tCmD-ND-2@HYSL82&Nx_zyYagfp3GI;2S$}mfN}V#_asDhLZva#ORBzlFBl>> zhCYe5r>nju0da+0zC_#r((%#yNNrze-tK~(SmlH)MrS**Sb-F?mEJ10N-R*kkz*)q zt2*}nAcP%It?oD;7+SGnIK~F=ogaN1rrqcnp1 z(KKJcz--NO`*Z!giSX~6hwXPD_(Ls;O{7*b6Q5PMRhs<=#h_OiPTyOlz1rS?)d|=p zf>QTiK4N~%>T>Nf)pRvkI-C>igu7Q!8d|`#o{RS|uK3R`n=kEO6# zlrJ!OKBymYa#m@%1@#cE=x*T+E)|8VSMU2h6kng1u$>>iosYa-jlrEv`WWt1zCFA zUO~{2hfS)MFB(iJ_y2sl-yh5eL#yu&^gwX+$yDj0Ni2A|52%83{u#=pHnuI@z_%|0 zJc-DI!;GG4+uPZR_&JZi2~2EjhwJBaspO}<+E=X2cI4QIGQA_Fub(WP;>D^24=lza$Bb8(zPDKrmP73m5eGo6d?wn$K~+-5lUR_!bKh0e z3a0;ZqPd`$3J_JStj`@Pm}I9<1FyqEF9EL@z#r%zY5U}!o)M-BTpLNH6OnWaPcUK9 zBY!JuOOIHSUV+|;Z&A5&Rv>>;s_@K^MTcJ(z3`Wc{oP05GlmiGLO* zlP%_&Tyx9ixpw&zxdi9$DG@KN^gdf6dzviunh7YWfXH&H}qDMi{<) znB>l7cZ?}z6hyL}h2N_m`YSsKQLb1#yZkHjM8$Xs4(awp@&l%>Uk5dw8D;rmy0fM) z@+_>$zf=pk=0M~L^UKG8tZirWd=VOOz_rul1|f=Nhad{C8}81}KLv~lb@7!Ji1XbhjCoZ(QJw1V8^6a|NB4INj)5)A1`owvBdB2pa&cIu5X+ zGJt^VN#HYdue3exo$=o+3Y&R?21Z2pB`1z|-hr4sa$7XfyekH!&bf2?yi-2^o5#hk zydPgh#`1FqpY}4F8!;iPaX!CAE@O3xI%%02v?vB~%o{19_uYsV;Y5t-;Z8oH@Vq3jjcTsGH3GNkN{@T3< z{0LRqhFJNuAt#5{x-+n7GI1#B^N&aR z+3*jc*>Kr!POytB`CF^c!BMM87sxp~22mF`i-KG}kq(x6yzb*Z>n4r*elo2XFwP?A z#G*})<_I9PH*LC=t9a{GyJ61O#v}*A|4V2kI%Kd<%0?jVr`q)Bx`&uDP z)BYEPQ5NynNZn>=w&Hu+P_4mm!1@{ZLLqFQ`g2eoZ$X}?m3cP4T5?vMb#B8%Kh6FoSTxY^`ym;3UB2L82Lsk+b{bXJOGZM`CwA8|% zX*N~yM>CBty8H$q!gY6O66L%0wH+7^lW~!2xJZ2KH#+KMjRn%AsIU;~cW~tb)=^rb zVev}`hr5{$rgug3o&}!wmx{U8Z7IN2rFgUZU7X*!!i*0BW1vS8{eGs83PnScKe!*k zxY#D2T|aNb8Q#3b_ch>=fQ^EGJvMXn+mz4dsTKqP-ItWw_f9Cc3^Eb*)!6vF7 zPxHrCMRZ06t-oiD(W|qUil-hL+PB=YXn);VSKc?WBfv%}jv!?u^A9$6?N!@x`Mp+J zH&W3uBg)G3gc$o9!tOK2bu8$}}Lz-2pv#~9OLlw%1QW7%H) zKKYp$iPM~djriH*RiJ?}FCU!{dd24np`%u!EvQvVrc2pov=Z6P<; z0Y(o{4A&2l|McYCtSh)44lJQHT|=!<-CtL+$wGyZ0iLh7l33bll%(Sx$nbOLCCxoG z_jsaPd7Z;&TDp3M@(d;;L`_stgugV3WZRqGk658vU2b|8<#?_~);`%Oi=qN>+`Sdq z-BDTSrPQu(ane7!pt;}DDD4H?m@^?YMW)HLJ-OE}@i#5)C(;{M+E>PRa(&`#&$r#<()%zOPuyL-SuN!Ii+WS6UQ*K|mqSNs+;O z!b`#$hOo!`69a?I z74M1|qyz~z@q`t`x*+B1MO^3Ji@N(_D*MzYL4*#|P~M|wv#1f3`LmK*a^e(7r#og< zomg-3l&a<-azTYx&=7Ptb?=sjoAQH!;XMCEiw{d z+4?n3w=Vz8^do8ue1rogMQ?0CB0dhPc<0ALc?Xu;CREYtvCv$*eh1j8Kjy*(gCa_- zshF0{T=q#K%x4gBevU(o`S>X96xU>PO>|ARef85JU-;Dprbhpmpv>EEF{q(NqAX!1 zxk+TZzIUp3&&g8e#vzh=#i>B{FHDumPx0aB)pWB6UyW~-Wxhdh)R<8!Jn<#d6j1nUH(*}nsFK}rh#F@JBl6^{9n?fT|tiU$h>-Cuedpn6+0 z2VCTjiKAzKUV1fh8<#RGBIzz}|H#ku>ulSPKjXI$3#s(09L96+qX5P^Fbe@-!3^1m zEx->&`mwPm`{V2z!nP7r#QA@ks~MwhzH=9}${1MQ*Au}j5RRqDLcR4Md~w89+iUfR-pnP?zTl~z zg^1qY%cBL4dDll8ZbgB9ek_2Ej(_!n=DP&~{J8(LbN?d<&(`&0(?4H0v#4k(dX+Li zdF`x%-pyJmM{{aVFj!E_BnD;Gi1y^E3Iw(vB_i>Cb>%ye9=0GWR|Z$ADBaZqA&!8+ z!w|n$G+SHTU_MRYRVk3Og(h;R%W+K@d@^b@d=ot_6HtW4=9!_A)oX${hsMOjTw$+H;Z9ee-;bn6AsjWaS;t4qV)Gyp% z59ATy`;?R@{lQsmtj?S_6QT`|eRmC$uyl=|QhcX7!^1%L3CFO$X~2}RZk>Q~Pa8*P z0gP)grF3}Zy|@hw^r0r3r+_$8lv=FdF8aFw!S zmBQIzOBty}YRl{z+B*qx7OAaFxBJa|1@To(>39Dj+Kb4$!?Q_i`KtD1K?~zCpLvwX zdCPs(=lw-%emckWxv-`&C9yBeR5hjSom5kA=$04cSXOw(S^Li9eO6icV!J$e3k4`L zKY-3#rd3Z;;F~n2IuP#*R0?+@6W&SwxG4+NOkL#<;dEeOafcXREqb#`vm#31xeLFe zQI4Z*+NG7MM}d1|p)keOh>%?rPGyc>W5+-=xKATjmQ-Edrg`SGCYW!7{HpyU3I2J( zKaP_{)8(E`p5pMsY5Q~!?9lBfK+?| zHGvZeuS9rgBg{48?9|E0&YC1X{21dh0Ql$tC#^qob5@ z<~rd+UGlv3RB=NZYer8Hvh@MQr`@SopsK$j?TRd42%W4E@=u{#JmaU26a;pteD)do z9DhZs)3Gnd$LGxPN^MX57cZk$R6pZH44mYRC%c&`U54ma?S2LpLss^;xdVtZHc zK#~_o34f+j;^w`1IZ2qs@VRZ>{e7zvli2LFmzlAyJdJ8|e2T&8xt2w7rM9A#_4eQA z5p#$-BM}Tb}hb&E}PR2zlxeNSu-Ii#YPCx^B0UM7wcD8nOhbe!wNiL zwe5OMCA{sY@x*@SJWVdY0aK$oM(7lM<*vM>#OKuo8+j&Vtk_u&9KB+}vi1v-NCA$pPF--TR zl8HIap!2oi!Q-lkaLW{J=!I1o2~->Z`(QUahRqwC=zKLDT{9zJ5dN)7v$YMb@Ux=` zFMZO?gdVYT)7di*F=Mu&qGmPs<$oU@y#LP5X#|`N=7Lh zaj-MseGoM4>OALWmLWVn1o&&?)7xC)>H&y~Swq6sks%0tZpwz47djIHu0Z#SLRJAZ z^=ywI>blZj2-a;F8n#N4jmpb!7)I^b5s*;9%Y!{yJT~$7scRR;2R01ytj^5fLr9@1 zbxK0=yf-iKFOW6!j`>C`2u~i&T0*c3qSWWhfS%70SRTaz^U9F*;8qp5@#XWSrWV}i z)gDb88n!G~!vY-LVi0jY`mU~he4mt`5*~enH@=FvtnJW^;XOU3%AH_w^Rnd1X>vhq zyy(?Xk4#65#%{?kkwaEWm-TP1a{Vb2>A?lpwzF*0YTJ1;gS3mX;qxU8mWRf!T}?9$ z4?>Nk<-s(6d|hyDfI;N83Cv4}jE3Soj+1SMgW_mqv1;7A8_#bG&c6MAHh3XtcU^lY zQJF1=C2@%IT_|(dP5;aUQ<%?SxT7IsA$Q$;-_2TiFE9c$Qh-S*IEk7At|>A7K#OP< zi32{^1SP&;OcqHX`vFwiFA|NivBywnpSv!)6;9^8oR1V+Aa-?tTg^G(0*cE|Cc+Sc z75o9HcZQy7&rg&W`c(JU*4x$WXUIZV4Yjt9VSgRNB8-yz!@EQ8di~JZTq1{Fy4c=& z(#$Q-G>ayvBc~xLOCz11*)1Ygk?59B$$KH2A{H9fzY<2FHoHL?17o1Up=Ow;=6lyjQsLqjKhM?Ez2E=u z0-gVw+o-<~S z6e7Q%J(H03I>!KE9=PjD(sMS4(n8*~9{jOd+bEerQ#M;+cN0u%$}(cFu>E(6ug!i> z+D=ahc6Z%3Y7029OhDn@1&|xGFjHQs(JP5(V_W0d1?mvR-#7}NykLLCV_4@CTf{5k zw76I`r`G{0mP$KQB>{xs)kv&Zbe1oNnAV`}I6u1VCBN=V%!ThC2KWiu`5n2jnwF{E z9uGe{@@57PUwNvyCFmUx%-3*P`TdgG+2O7ZnKx+Gh~8FEFkg1asb_?aMCCpc<(v2l zje;nm3ti{P5!b2Yn|9TQ>$7&%V)LbkLphFtO+VXO2iXDG>8Q7MV@-ALKsZfZJ?|tZ zOG5XqO{hx3)~~ZTG!nLuXxfUg2PR_~5RJZjg8=Rnh+Dq<35Z8{uJS|YuB(3XxAkC7 zWz{jaSsrDQazD_DdynP_)DI?e6=|C8J3Eooi(W%e&8u)Al<4X{z(sw@EPH9S{p7Vt z7>5}^1pZyJW1Xl&AcL-{I=;B$TKy+f`E_xry?kT9u)UK8$0OL z_}R8l8k68b?;3QWk%8FekYC=BY058}Hm{IrHh@|4iS0Ron-7H*+T-X_08&A8^WL^- z8*rz6$UfX6@_LmV_&Rr@%nwN{iG0*r@5Kou%OvmqSPOoHIK0Z$27=zx26sL2PGk2m z7T`b2XRu(bhkZ{a9OcXbXwFM)M1Z~SI0A%bhOlO0euL&JO-`S6o|Oq`9I_B{n?4{i4SHaNi-NL>3+i|qSg;!hBPSwtoTcQvj zF;Cl7M^QDKg^DjF*EmxKdu9)>k)AIUX+dwa+wfm2q^GBD)Ykk|x z^AV;I%ey&tGcL z_Xg9xJ&6+4!y?nWQy4R#F)CLh{gOVyOESn_pZ`gghjCV>&t~a6r|g6x zq@wCO25-0Qd;X_~`kzO1=5pA<919382oU~UNmj-;pLoXkzGXk+thbHo`7ym()z4qd z@G1_YQ#~|7bNY$;gkNRZN*Ep0SBdRPB-?y0N%JKYhb?~XXm{j7Mg3R`b_cxs3FA4Y zDI-~>^1hpX3|Bv4s`sQ^O8Fz9*Z)2JRKWSW-Fx#UKCPi@s)FBf>5(SUaSqAdA_e_c zdlF*N*RQK>zgkL*eyeV>UuVR_Z2Fz!PCBRvzz1p5-**35>;et3x;US>s+Lw1-KQ~M z&qmjg0}#8HjNZ8v4cmYS#N-yA)soI!k~mBv#iIq1ADrEsf2du?1k-AbWCD=v$?+e# znC1Ld{Q=y&Es2FgRGAxHi|Jg&9?YzL(XZt|Z9#5+KX8rHHC5a8$hYyFwPS+4lZ2Y! z53q5u8;*-g-EABS(psY?Qr>CAh4c4V7q&lVmGO&lnqmGe;4u)p!J#FWy zQhU;pcM|TO>y9o2_8{|Uk2cgKWqr0aWPe2vn1M&FdRA=O-RqiZ-x*7=r>dDWGYH#N z8XGI^71@@v;U*f#T1YoFl@_7S4YmN`Hq?Z?;dzeRp_OZZ568%9b3NIMWT32E=@PC* zkVsdtzNMO?leX;-!G&WH1lp&}6th)koBV0qY43v3Ywk8;N_$q-asSuO3VOJ|E1Nat zebv*hNVuz7hFY0F0h*eLM~#B>tAE+o;%i$IgIKCt|dMV zG_xAKl$Bay)@Nod%@rlZs@J{1QYy*di7xsK`cSCp&$kz-Y3}&rHC3%+LCt6HfN-ew zD;wB(IRb{DPc+~fi36sNTYy}bB-!-Z@5}{F-QxIBF3HoHz=O^5+L4Rg?BJWe6E#aJ z=N0=Q9~%3*a(QDdn#{&j?_~x9=Xd%s*}(M-<(Y=0wsD$@y-O<>hL4{B$wZo^sr6)N zH%Z5thF}JH=pes3_R090gpet)2rfQO^wfKrVT>+kbE;Qvo@7=OX73?MBEmIaQCQjzr4e99T`AihQUYUvDGzs{})c-a}Nrk(2yTA0&Y1Sx}{ zsGth1@qM0~B!DF7<4|-}SmE#hRwIXA93;fp$T$MR+^)V{3(9cM*p$*#`E}Vz z7xtE^NTs8J$6X`oaQ4qU8vh-!$~)Ncc$xsK&!9VJIu0q>Qn~e8b6(U(FuI2;Jw0w~ z5*p0wmHpzKsiQI1;@D-Ziz?qi5I zHYs)OCj-;b7ZTq=7wLbND+3dAER5K5VvR6NRW54E zmp~>>|6jqW|K*VI4M`m=}O&6d52!$-jt zae(68Dtme{*c}P+;7o&LgxBk!LPgX&L1Cw8fdBqD)&Ye@;X!&=cX_JW(yoqkAE^=?j;_D zDtvwXf`}4T`n?2Y7E3Fnw*5Z27q>sZJ-1n|q_K?vCRI~_7ZadHG7#&*YKDH}dY-_0 z#g?i291!RNd? zJh1XS)rYTRG>8>Hk8lyYZ>_TQraJ?PVkwW*$&OiZodnosemHk5j+@}otSTdL&-k9D z}#WMZPBE%*e0W%>|!&kwDGx( z133%5vcKFuC4u^u-?FU`Qqvc%aU;rg)GholiLM5ko%U3tpSzRhDb~=AkS&v4`|aGR zzFg!u)9!Ui^G-ZdOc~YCOfw7qutpiTU(za@IS7O|y{-TMd!Zh4=Ll$lJj6Ll4ik1= z^+2Q`ui*SXIK;#C$dHFh#n)nI3leh6w()plWt7LPKw^Ib2)Z(=dabzlb@%o1-L5)< z-5~y|ul%CuF6qf_F)^3pFCs2y7Q5%-2=Ys5h{Cn~ zwl+2cB0D1f#~1jHoBz76(-&XEuiW4B)<9qKM=85&Xu)Whz)|zFlZTpEQ#!-(exU`$ z^%Is|87y14uSI%*=+}p*2xa~-j4W4+irZ_x`_hjTy&X#3Fx3cGj$6BHw=M9^6^bKu_PSmRZByw?P|N9NNJgx z@}(!-;rb}!-*(xI{GZI~uy3fMNrFoj@xkx6*-;Nzh-A~;pXWXiLOpgT@5>`<9;hJ} z#sU3z`Tu=Lb)$+$HRY`DQB5yf!m?ZtLR4}axnW#;N$JPz@~WFWl%u%igcqYwTNm?p z4Q}QIqvvD=>mxKcl&0=&Hs>TnUw<#kfi+n8yt`B1Em&_)2}CHa70y~xYO7iu+!C0KfYEThEI31_K@^zv=O} z(({=!__U^mrK$Pu-`OA5+Wh&CaO)coHrIS`rvly7Vk8y@hz1T1lscUIep#SoQN29c zTCAVSQ?K_);8ay?A8H$LF+K7#?!TyxaIholy*0(6W$0PiC66q#TsS5`9}1B27j(CJ zuWeoX&>LpSTVl*<=&6zigO-rEs7wC(YR=7GCrd0j|FqmHB%O&Ta7{|SuH86O0;E4M zt;ggG8&X0=KCBSSqt~yptM@yKgQ2Tm5+)3y--Jr#TPl@llD_6!-I2Pgn%3NGauY*t z<%tDFoocz1iSRrJ_o(2%dnvi9cmr^WiHzODyW@cu^(KLI!s?mP}@ednA; zuJ;7j3Zdnlb_c6F#WYpaRyGjjZpmYe)+pF-xqS5zY;PdaNh@h~8%XZc+CN}C?et>l zje8R^GSvIr>@-bTs;AV=Tv>q@SMiXjPXSV$DvNKIg*DE&&+_)UgrcgOVHk=$X1)|k)krwsG=B zB<{2^WIj7d2*%#)EBM-tLzCKzsJ*G z6qEa$g!vypqVt!*+Gc=f5+r&oud&X6*4%?6YH}{5N*q6p&6on!j>q9ZOX~r zpX70f)MQS5dgS@DLklc0w4X^~qp4>fFs*^2alN0<%YcOv66F0_>MQU($kBSbY8X9% zbEAvcdq{difC$}q5`n~BI zxm^9xKf4~gA8z;CVL5NT7<=URP?Y^7ewA|N`l|ee{#CX9eVZf%3D}DrMx+w!#NBQ; z8|k(pLpY7i5r2Z+!^+a%M$X(?cAd1*i%97|NX^dYR0w#KvcG{L=-bQrLKU#@miGBk z0=WvMfO+DHyzGJL%KQ$;>U;lLX#U^6z-<<`Ptq!^Q*5V0Qd^$7m`o?d_F79@R)_2l zRFlxUWrDBVF8zq^?GBM~l6c>{O_}?0*DcAv^0Q6-wdHv)LyQ4~XuXxXQ@PsQqK~9I z6lv+5F&S2yunI|uzMmwsPkO-MQi!jzkHn!5$1(?JpUTiG!p^T38Zz=@>VrhSK0N=m z0)jG-wEpzMUE7ehxt2GznP&wc`$v{{Cfd2-hA~WXH5lMl@-L4!h5*SGk7f#tuOk%> z?2#zD`9tfMLS5S2K^LF(?{S~@oEk~`VQX(sRo~}o!Z^edj?+8fAqS*b>qM<0I~o27 zY^MVRudF$@5>o9UpJqC>elzQH5i|TL@i`bfu|G{@E97$lpS|Lp9C+H!*|P4i2JbTQ zWk=jT$^i0^wDt269j$}Uj~jTpC_k+_vmB7vRD;I*IB6g<$v4dhLJuYBHcULJ^lb)K z%}(|(MVul2OpIkuE9L!&_1iLqKn(^|-!m$10q!UAv$;b^4wrCY2++FEhot8~dUZt_ zNNmr^XjQp2?{)71w`69V_EqB6@NMI;8K94c$9@P|01^TD_E*z$*35~1G1K?0X&4vZ zUGH&ENv(RoTw&`Dz3Q zjC@N4*L9MxGWo83OX%J|%TsmAlUA#fT4|g>68y?T*L1unry^?iYLh-f$exzV2)j!w zX8*C+_o9X+YXp)CA`R$kvc~Npt7{pi<01USIWR}5D`d$v{CoOaxN`r+>EAVPRVwI9 z+hw_TcV6{SeE&abc-;R_wq^6*)zalHO*?;|Mdfz+#aZ0G%Pw#MFMSa&C`BBmmTl{{=?h}ZX>DjT;3OcfNm?0G8<=fr$hyymq>ViBybh2LV!IlKw%~FiJQDn4C7j7F`tzgfB z$>ovb(Pc9o3qTUba4P%= zalKEMcV||fOKO-^Ka+Af?{lE@;6IA7>7Exu&EwLK$w10Jcj=e-WTyX6>(D(QLo(*~ ztz8s|2zeW-xaWS#@o~G0AMH1v5vv63ppho-<`28;j3Cv8m;7{OE`L&Z=IIFwAIB!C zoSJ3CxxZ>5NoKzZ)O9{GQ_iLzi&WBGJc#U6)h&JZE_|WJ7fZR-Zbsb#JRuO8F8q z3|ic;Tv(TC5OVCL*N&2U3KQ;~UL2O_x+jc-y!e7ddZkq4ODNmcUyA9X`=0L8O0#UY zU)00?D;R<>BZXL0Lf`$bxDobc(~|K+=tJn46l-XHa37rUPZRA9kuIQc=V0vM=Q4ym ze?k)*Igb=NYnEf|X*ab=fpj*jjdclSI$kTW4*p!>m!e2W+S@s(eC`v|kmsD#zd0^6-8zQm^3K*t|cXdq7CA&;S^t0S@dSs&75dm}z~cHX3mJ z?a}GH;;Sfq0%SQWPjF~qfR-Cse1?Dcrg$&4T7Dk?OLg+9r-9(WkwhM7RbE1Z=YkYI ziv%6AQWab8$Q%p0VQ~O^;=H-gtl9mnI|Y0%umQ$r9CMF4HgP;LJ^NzBlU`&mIDng>j_kmSf8H{A+-{ z$Cl+@&PT26WPP*DWYRilulUNP0E^wxG(&umUhc_Eko_%Os;#d>hK+n0{H_iiQTzt(3<;S{WY6~ zg<$P5#~kz@PW2(Djt7Sg6{y40EB9RKa7i9nU_`%tDa6H~oTD@z>EoRTvH&52(T&+S ze#*!FNS1T5j|+cAhJ?1@cSfY;6W^q-xxa3oeb1MUnV7Rj^*c^|Z$Y003V z9hj*6n{|@#upjW4{18rH^wJ;0;-IXUllZsDx#sx;*Nq7S^lW)%H+OiOP*;BV^9&D4 z$~Sic5&mq(a%%O%%@ANCPnt~=^L>z+gSipcs^$Ys4uZ9``(M!`GNt(NiR!D}*3+85 zHyzqjJ`hVUuSa=G$~wpzO0{KYd_2lAn*s5CU%f94P+VK|4~d z%zOd(HZMo~=(*-K|3nRRh>4M%`FE!-l1F9+sVjp8I1>op& z07qAOAXmpw=11vg{{uIKy=6D>Kyqrr!6VO9e^p%{I23vD#^Pr;EQw_5ll^>EJgzcU zUD~U&amz*KrEjD|J=LP@`!%G%73k$pgwhB3Ywb+G&RpxuHGDP_nG0WG3N=KRtmh9) z=YtT?yNT+8fQi2#*fCl0MUqP>AcXtjxNq7KKdb&^LcgoKJ6ie)6kyO^7}4cmqqPuN z!HQe00+%KG{j@|Q^M!uRX;~P#4GXm0`b8G*uSE1gFP#$@$^&5ay-ikoV8GRV*!Mj+ zNi6TrB7nEQPh&<>-xh=(@Bky&7Gx12lecfiG?V+yGh#3Efbmf9Q%HLC?y%eZZBdCl zp}`5qDwTh{r{+#|*J^96HEhMQe2~HUpDfd!wLo1+bmw+#fY#Ewr(E0bPp)VV00+Bm z9f|p=vK_v|i`kuO7qyqsQ0%MZ81s+NS6$C9OPwxnYzmCmZgU&rYP#Gyw13UO#;_7{ z_&9UzU6iGC0dQ~6r2h2p4i+|-1ie~y)q*=uxDO-X0>9N2H1=hZ3;?mlQoaml=Ds94 zUvKlMLmoZkY8vDF7AlqTUCpwGk$>B<+V6j$HUBq1pXpekDIigGe{XI8Ci1YRL`SoE z(XhqptN2;-jZ}y(R*C<7!}@-(VvtcjRC~&fop-Nv&AkLk{Va+7!umHxHyd)t`{~se z1m=RiXVpz-31VHbubZtE$;7fqRh3k_Z5l|K?CrYiRJt%64DHjNi!P`(*E;Z9`=a>A z;E+Jymd867N&dv&D|HXqDB$(61$l#lt(?F3x+10K1=l z$n&PNv7udA-%adyaQ@+5&&mCKhdv4YNB}G`A%}lJ9~75Z51Mz_9Jmaqq(=JCa|Z(| zBn}Je>WS=FyRGgnh=f|d`Lyp52`ON1-|mGFh3j%npIl{uimuu7=r^vWU9P$wKY-7o z+>EGx;Dn8*<7!)zS&^6-l{ zDF3(|AEnF*8iT{=p}@1|^~NUuI{;0#0Bhl2;?AY%z4Ug+YM`|!@9_V< ztL?}Kv8KzP`_ldJtTq$*z#X-JmJhJ{6fhudATabXTmt}z`EU|*3#~df9t+<^aNCCKalyy2gp31)@*?u zP2Lka|6Wy3BdnxLl5l4>{f-GDd=TQ9`b^CjayRY;Vz`@#63jG_5m^OyK$VUid)Tav zKNYD0IcHidRN->PyFPtTE77-m+Z+wGb%#g^VM>vREt1sk27YR-M5}df6A+t%nx~fA z833_C3s7Vv?)muahTs9QW2u8^zIKH@SywMeJNDkplHBW)CI7*tq`dGvMx1AP=CqIv zjsE#Qf1gOE zwrMdG-I7Mk@Yc@%ZlxPAAy)RQxqCqvQY4aoVA|8!EySmOR%9m0%s@^cdfBXb_ZRcOsg5(Z zYfK!mvWDP^Dtp4MGc3sfa5513hnTV5op#&lOrSFJ;l`IQ(|QrXbDI+&dv7s=HSMVJ zjmOhT$+n)&Eu|l!Y#Ua+qhRs>N;;~>R}2}?d%MF9CxVI>4nHL|8EfscelvUF5`>Zj zug{8c5psMG>A!Zcq*b|qc?CFDe6x#mnbO;}eOu-rcg>M%kz?t@IhZSvqz;x}L+Z+n zH%N|IXv_XmxV$iY{Iztfs%=IIeM%vv^OE(C+H?lB7@G7M@gl(Z*iDUBijTXo1eCiJ z5Hst_DhF1ViN85I20`?$q`xlpQ9v|v2*5DzKbPF0U_3$si}4SuUH457x!k#@ZAt&9 z#`O|`rNp?RgWn>P3!swW$LbR9End}R909&WwJshWIQ&hQ0o~Ig8IXtjzxUDGj_ZCD z97|b{r=q9Jk!uac51@N$(-+TaE9RD8-Ux0?TnzJr4C4|XQ0H@*e#wA)9!jVmtF*5p z8}+mZ8_jY9sMTqbM1!&)0Rz(fA|rwhVIpZ`{V|a618(*z2QF9hnU2}Fhcr0*q;2PTh%(1Zr3Bt?vKI5+?(j%PsVpF}z?13owg!PxSRK zpT6ic!gTz)PUSzO%N#xXTU_W>H(;u=v&RhV8vgGf46r)4)AkzIEm*t#!5yf8cSRkj z)m+E+XEhUB@1~%60|@ge@BO}Jv_IIOweYrWAjxc9YJ)H4hhco>TjT^NXHu&HoEz!f z*#T3*y;)wmSsO>s7`1`9^&cE0fzB+>w2~$9>*(u)ExTcyEv1px{h7N5pZnD@^M3cJ zo&M%XK$?8jOkO?`9wZLR=0Kyzh^@H{SD0<{Xc&ZXqHkfiMxZ211fNCBtNihTDcK$% zhV_|`<~v!9cKTo89LIJ@h32}+8J<4T9hRH3AhMrOYqGndM%_U7mKXd(RrR%>mPuEw zO?|Ux#2(tL=0bCp#HGAhwaHU5nl9|n$+^GuzI_yD-4*YrRn(%R=j>Wi-8FQPKDf8# zFsy+n@S}RhVp@xzlsF?*^eZTFP#JXcR?gYp@6LjwCVNVKor?D-Z;UV!b@T991DhJ$ zz>`92f9oI{Z@{kMw9Z)s!gkn;G~xmW@TLO3*E3$2ES+x6c7Rmep!XCG6rt2Z5y=m< zL^>`X__2P90R3@EdP&J}q+FsXj#8EJY3AUt>_*k%PaX1?Ch^A=Z4Y89E-AUu3O~zm zQ{kmo3!bKCflojjI}9mAs;hClmn6TmpM$P}b$}8h=sMdW{Ar&+==rj~P1V=B%&o6C zlcpm)rF6V)xYe(57J3KsW*UVWs>71HYSMq6%kkr7BYg9NcKm3SapUG+R6AOzQ;o_q zHHouT1;NJAmIrlG)Wz0et;s;r5+H{=_v-?3>n|e{7!VV`>_=-PbvBKW4?EgRUFbvN z0S@Mne*ZGCNgv*yhXjB{p;LK(u+N@C^%>j4K;RBQTQ#a%1gtNg0jrUs&lIy^XtM-C z&n%x2#`{q3COJviCyMn$H~eC^cUfp2ww)akGeg|Y+O-mQ;~cjOj2oVk z7E`i)zgRZ(_H02f-rzAy-OMGk#Zmd;QHlUXu3udv%mg8xB=S_8YM^y8_uoWR__VUY&a-Ov06e}2mwZuW56rY{9<&OWNy zmp32h;9{`3MuR|Ey#~(Te_b1CJ@73BDC{jkyKU7~6-C1@Kj7~>>&L@AlGGNDF zuhS3}>MCt$?BMzF0S>Z1S2yksq(}4k1G4Txgu)3|Qcqj(9z`zU8p|PN-z#eP;iDJ> zgOHHz#y0ESW^kB=_1;3|bL$txbUTb^f)E45#H+cys?F0KIgpzb@Il>f-zKzgPwmw2RL3yW8d_4y zm*`(|Da%U+*9@D3*U((-dz}F=TvXeB!q3a)klXQLa(mU(MEx8nb&}A?)vu_vpruA? z9Il(JTthe$WDmMdpqKl@!>5+t`#5kUV@i7;PgR01+oPIyLs^YiY;#KeAA8zyI;?|< z1i(A;?*G09YbA=`IjuVR^>^1MbPvJYa9^AWtEtwQ;WB0$g>@m7tRDOtYS5gFRyeD9 zGe#AuhYvP>Q#J#ZO1hG^^uFfj+1KxlY1WrLz6XFbHQElLE^HLC{>Wo15fux;?t@7( zlz-&y+YwTvn?g749`m{~d76}65LN;;G?ARiefFU;tX7#93A?VpKeqNLsPve5x=_&3 zBmGmmJDgpV)OLqd^pv#~h!vls6^QUKK(=#$Q@{eCNjoXT|M|8|;7kxF>(0Xiu@`4e zPYv%)6Uz8emC#i=SpL*UMB9l}eFx14m1tP(t&X*ZWF#2mBFDlgC;1V+R3H?qcmYR)&bv0#USjoL({5TN6Aj;M@-%&= zrrUEBg#^#e@^-WEka^6QIlWr6a&BaUaeXWzIwgp9DE+NW)M%* zP*0UxTWhG)TbxEiY&Zs6k4`W1X)G$ECYx6zi8l=fG@H3=+vYWhR>STP&Ic50-SCkakd0|1_ z-W4#lI5py0x@_!&9@#~WS12RAU=sZLZrA=fjMXkU*O57-fA;v%Au8XC#HSv z*D->ls5tG{29|G}dG9J>!>AQd^?$huck4ucL+PCzBjOxt*Mc=K$Ne!d?w!++|6TQX z6>vh>GwjCaB6!C?J#T95e&=AMK4e%Qbt%h$a-*%KAmkmqYG**_oe*-(`TC$xkaqn< z0D8~*A&=5aht(CUP=lY6vraJf{DkKb1(d_w<5YybH;W<*eO58aQuV0Exjt8d;CsDV zT?0=hd?W7u5Zw9EUNIq(L4oiN9Bjq^0@=HA*R*2}JmXw(01R5TbLP^8YHmh4*p=AR zB8Y|fbqx3BzZ~-d&a8?+mbb$>Tg8B3xv$?!}DXI1As96F`ji*JgwT>I1JNW9`c})1+DzgBJ=+jjmfba->CXb zzSy1Sxq_j6MP#0dV_vPvo*c`ZDlH&f91Z=QqY(3)liGVt(00mZ+9qez5l4$dZ!?qa z>9Lz7UH4D;+!v4`t0FO!&A{&`ugfY6rWCszqADa3f)$0ve**Gxq#Q-_Q%js!o%98D zvGA=Ch7xkxSbW!6SH?*3^6#!PvQxG6KzsJUlk3?k?Z?Y>NB{g3jM)f>FStuZ?fSWK zsVM-t8VoQ2qkwd7`<#BSlS1}|(K9vA1q2VAE_;hKIaYfcIc2;5XT^mAloIu`W&>MT zxViwc@AdN~@yA)4xq{A)SgW6g*Bkr=pM3YnV01c7%ECTvcpG+3%lb!ExY?wkbCGp1 zqXR%mGSzk&5pJ-#HL-U$4VjB{5d3LIA;DWu$YT|UX<0=>0QN;KDsD`g3`D9RBI)I)mp>CQPqMU?~Dh4+WB=gQ%v08OYG=Zao z<;8Xdu5K`A6uF-LE$E8Z3$QbcA$0)h&GA{^we*mK-^W=6DilFx-J#$U$+>t9sUkfF2e<~`LcXax&K+m@VFx@78^UHsWqwpe zn$WKoy_A1n4WuE2lXOdW2yN2axpSc{Qw>3M^iEgcb{CPiZne7}bJ`xg3CLLlg8`{w zafyTYm&PU6p$W{Z=z%MQhUk^s%im62f`z)3Lu(Bn6!RS)8pe{7AlWh%#0gJJx;QCX zNz83m9L&;O?AzQHmvbvfygV0SPOOordPNl+ut>WL_)Cj&ODiZK!)eZ4Jzy0^;BQ0XgB9*K8^i2j!6*09P*p9L3!q&z*lz;tO!`gVL{h3L@s4upg zJ!8uStf7@xE1PAY=b+V71o_z?T_fdZHc;&ciA}*LjPG(MMssUx#ONr?>dJjR8t@tE zgLNtNSpsUJs&cgy0~HcPC>#8gK2TtLSjhH4U5>rE)sJY&w%xiaUuU~Jf+P44B8c<* zmErc!F`3sUPS7{n|(N(V^IP{G zYScP#YQMsiR7=Rz%OM9H#LU{J9V|&{Kw7R+N#b;2Q8KFB zTV{&{6<*wAnPE)0FyBQx&Bw%mg|T=dk;s`*qsICF3R+C|YxasYFf^Qsuikq4ascbr zT-#9VKIanoq)wI4Ud}p3w_g}x)Xr>0Z`j%?oLnf znqxRIEYaOxZrc(*YPv&FL9Cmq6D4l>t6<}pw!VB>oV6^x>3${c9ABuFTz@{P_EaU~ zT^WOTcPm<$=$P&4Kuc+`zlX;&1rLs`6(Usok)TSjd@*MkS5=kXlMjs|ZtCJeK@qnU z$Y7%w0pes->j$=a*WrKN2@=i9pF4ic?E!wo`S*JRe`0U%-z&Cf&ks++{rK+$f%sep z&~9;UZ~ZHek=BW$?GAb7=VwW*TF~7FVMzsrpoZ*J)kTkYV7X}+C{0G;Vfd{X=(V#s z9EIC%nA-e{RtJ8VY4_ZiHyw7h3g}6OXfBz5JYDEWKmZbBTQOp8il!mK|=*k#FvDZGh1x@i^w4?FHyB~!;nIKB! zF{&i;zL*uT8WS~b2AAU*z^EagfIeJP6L7^Hv!iq}VR6(MX1AAIkIy`(i1CU@rb~IA z8<-_9E>PoCqgpfd((;Uk^N5Va?d_I+#v0C9xqhtz0<6S~;{Z*p9?(L8+Fedc%E(q~ z8zPC}ZQp-T4xy#E+v4P%==P;GKls-n?yqWI2CR5bO<}Tc#*R+@srik5_n|O!JVYJ9>Pj& zwVX5=Q=((Y;f?xH0}{e%7zX;omagEKdef1Ko$YjNHL+$)-RU4?YJwPF{dFe>K!S43j8Vd%xd%FJxSk$@x--J<72bg>F?VjohVfyvq zkc%2z!!?B?RqqZBC`-R`E(=E1XTXz3yW*ZHKdC(LL|Tl;D!lQPlFYc>X+U%wU{-p} zaLa0|nG>CNrVOqc(## zrmlfE|7mg;au0SaEL3R!TA^{!sb3)KC`B?cid%lb?)4MWCrhDzOzTtQsQF&(XOqm3*~ z-3>HAqERl*?B%~x(5}27X3?Os;+O;{ns}v(ctqW&6818QagcaWV!ANJznNUQbMFSb zswn1=J2k-5Jzo~$-AWEa>RbgfE(6%vw&U*tx@PLuZ$&+N|w)Joleo+a6tyM-SM92o;*6GM`7`we){A z{ZtZs;>_-_+}L1MI~M+MsnK;Wxq7dArH5q{q&?PjxV7ek2I#TIUkuN$y6|7|@~&%upJp2m3uM@spq(36+j=}!N3nhs zFM!VbuBS&K1V?7yV34W#W%H}0y+z7(jSnPfbd3ZP&wFWZF4sw#3M-?#5?R;}L9CD7 z86S#35|!+`KOa5B_PY;59OS0`C8L$n_T>XwWmdpcLzdW9F@FBi%eE6%$nIS`_} z80K}MLgTWYA_=X6f${_x^Ilo9s-C9NG9QxQiv*|J#XGoi|TB=;bj92Od2WWmg%7K(uMKPiAn?l+8?0(f6!V+|~}F zv?1QbmC}R&g&d+$!f|LZ%A*=@;G9gO7eSEu`G}Rj&e@!u4#N%pUDxKI81bfd&JN_* zy&40P8=#o<_*#qJSKT=vK3n2L_k0Zv#1sm$wf6i-^Hv+ofUxs#VJ$X&C~_o{qcg}D zEpOdAd9m)N6TYw1n4u8P=ZDZDhImQmMXV=a4~bt82D z_D}rYzkPGh58-RE{{U@tpQs$hZ5Vvdlbx_O8MZt^n2!=Qz(n8;#y#5aqvr*%PK$(@ z$7StiY7$0a`rAaO6o~wzKAh+EYWz4C^HTwn9B(@PRyyb#<+f~}=EY^mY}*HSC+u8^ z>me~^hPQ)=om!;aL80zxrZ0RGd7b#{w65J6PEijGiSW8UQS$B`I|D-Skda78CQ+iu z8w=ONvBoyDNw8MBo$1#} z4p3xzwyGfwbqkC)8S(T2$d)!#xy3Mvm{N+uUZ`YXy9$H69Oy1_17s7H-j&vpS(eE+ z#+!88*nnzC@#MEhH4vGv(_}{{rIUJ##*q?%-9t_PZ0l2S(8XEZH61e3v}HcXW(ZWP z=Lh^(SZf-Rjz18*ID(0fB8M5eHeJ#ysR1=Bo1Br(Wj2oMr9>OB^i$Nbp|tkcBGs?D zgDMAr1`xx}Y2VD*O)%VkwfkpxaGu*{puW*M`ocNJHJ%YAlEZQ^lAR4(gO3xi=!Hgm z?hu%N_ZPX(pfdCf|L`}Dr1oslK$BuR)Gvyt_ZlY@WFqIktoN(po3d_{A&V@nyjcd$%H4?5Zt?upqXs7cDp+Q%2+7%()~f0;T@hr* z6X-X!s}EmLZ)^(pcXmCsH9{ka4Qc!q_J4_zUJl8AZ~gP!ncG%&E2oNb*;9ne)$6^! zPFdm$AzAUntj}~Vi`W8Yq#%|gj$Askn!KYEMLeI^a~HuIRQ($5E#CjAg4#Qvf#jG! zejSMfvYS)Uh^@KOsi5Un4ua+qKEc`{Q?*>0!yuCT9OUqx?@HQWnl{z->NWAVDyG#s z?3fkirNM3s_CFomXFZjZ;L=l`r=g%Ovs0AD3N?%72NS7$M#`a)+BrF&F=l?P=8wN~ zvPKt?B6);2$6R!YUCW&)Vf@+OBr`U&HY_?RLQh$Yx#J(TK)CVS>?PDeBXvsggT52d z)qqJ$Nx*0IN3CbTgRU{{C~>}!jfm@iSQwUa_NC2S$TE*st-v5=?o1+^;Rdg^ zmeZE86A9H@T6Y4s>#gmW>twCZ_9FTc!261&$L{&}?|X|sdlh(hpAVFIkmuoYiCZcg z_=Cl^6TY-JW!bz(dZ~i7qqf@;V$FDa-u2dZ#+3~(5jw8C$fXZ8tdB%9C2yQzCG*^^ zn}K}}NK)8xrThsGd`KD6%<;6$B@f0Me3>VP{)5|MsYwC-#4|Yq<^D+#=C0^hUJ2yB zH_8w&z5me)r&YT!G2xm51dB6V+E{S7C|`|be-MPvV*l!wqg;9O_A$Rv%}cN;APS%h z*pnN*Et!|7Vtyv{WB(vD{RlP z0-2(amMQ-L&*$VsqV%Y7mlfw$fgB!=a;@B#cv*Nxp9+w#SNZmZ#bnqD9ggU_LOYvJK>>U$hw<{F*X*m%Q zJA&264c*)=fHKw(d@$u!FZJz6D@oiqCFT*9zg)LjTuldsyw!Mf?UMGAuc%={& zbtdaZE*9DEz&^UPW{aiK?07jr{=6DmE84ZOM!e|XSlT~U{J>-Sq5WTvX^-={gM)wH zmZ?XlztyiQkDuxO%=pi(uX0>>jixd8qn?)G(^!T#0tKRi@CL*y4ArJjXO8v=WyKZL zn#d`7#Jto?b!bJ_gp9wgZGz8gH{Vfzud3sRC%~q%8kk(zudR|Y#&RVc`7KofDP8M6 zOl=FzGaVgM9Z|K^n|7ojzbxqYJX)t$x}#Col+S(3bfjfqTT=4iQagWMNkz<;mrg== zc^pGH#U&in=8CRAUC1Z0p-^LE2o4UB6^3zXKg`S4{J*SFQ?Fwss!Ok<6Q0&s$hMiU z5w!=`K=P*-xkxkAn?0U24~~ zX9iP>dWkjZh0fgrs({kC0uYMV!R+XFJq=ITS*8;;@DVoh__m5`M9y0%Oc@fr`%?oAZRAi}<+#ldmq2kN9w(W1C(0EV#PB!g_c)9F$H7bHNBe~VM36JDQ=2;t zT_*K>OsqeH*-rpB@tve)Lr@m=`&fc2Mtz z+`NaXZK07|RN2ROJ(EVN>o|Knh$)|%qmfXXf4ub+=I9erkd&B}BHNaACE;PTonF0g z?jtAY08@2%)MhoANZMTZbuSg(mJjU9#eAUTYOE%&8^DFBg3&+tmVuN?H|~d#kr6zF z$n&_3vl9_ExsJjj%vrbh z4VAbyL;L4oL(J5!4;xteJgL%c3kc%c;7#!+rg-(V>L{0SjIAq~TVrtBBc@S0%AjW{ zqn{n9%W6S^Me=dmlTt_wIBs6jV0|I?8;aG6j+hxz8WaN`TWhX`+|^8uPnZbm>xyg7 zx-xz|nh%89$t^;Ut$Cj`VvkotDE4dF_)I47D&B&Kg@ zG7N_n#U!B8V(DtHC?ukC`1<}lFKAu6Im$NPBYPqIQIv+fa!|vAyd(?e=1x`8VI=Yc z_B0nh{^ZE815F4C_5~nT)?&)c`*PbXraeT=oCug>QRx%pfF5{ObOq9d zO7_Pqe0iC8YS=?AzA2*O`lpnUVvE2p>VDvRRp}(SLMZrYqm*c%8*La4I|{E-1-~t} zV>X@2B~cPv$5hu?#k7_b^M-I!?VKoya9Le$w0GXT^QwF4)5>}}BPW6DIzZ%Grc8%R zne>$-_MT;$+*P%EG2J~XPAl}k)mLMvX5_~^<}06Ss;8qfmY*W6Z!&R;5vmJG_*Mu& zUwKVKU`?W~pmGH>=&^%-@3#~)V)ev3x;q!R?gMBbt?#??y{PEB#*ENeu`#ZpmK66? z`6Q*9^Fg)zcRse7Qly<+T3Wh04@a<=~-Rf+XZ!PPMx3QJI!iVMz(QxAL=^)PhO z0kM0_n&Rbjj<4u*+xdRAi+;Sg@N?7ht3@lG#64nw;VMw`N~mGCC=B7suHzvZ8Mt*F zmB9$Lw~-TLt~|Xi#-*q*k}e5TU!Mmuf}Mu5z)mrmOzd36<#})gTknEdFudUBBj-!dC2#SkI&HYCDWYd5HbxU?Bx|eL7)v67ho`9zTYO;&i29 z7i;F*{1MoenA7g;#i^Y|L4Ee9drC|{CAvQq_%KuI$&=fiM^yTp_xnTase~J&`Q2Hj zFy)hh^0z*YEqY{roWJ*=JKN#pv_dl$FYI8cAt37La?j4RN%*CPU4LOkVZ~vR0>oH9 zKT_k2$=8qcLDjOW)ew8N24Wr|HO)NdP?M1wRPKS-X_QNw?L`-cDdjaGL;2}e(D0U+ zl}Mnha%J37NQP;lu9bocQyYL}!;RpczuJ*RWiWU+gsoS1ECVWF``02vFAHfKn{OWA z0Z&$|#zOvKe0wwmSi|XoKofJfF=qHoqlo1DMS)0B(Guv+^(t~CfZ00v=p6qD^vEzv zfWex4RgzU`?(yU=?BAn=3PG)Ku_lDg&9~Lpc7@}R#QZTmC-v-a6BP6HVmt`-5SF*D zT{1G~1^8@F#PHC&EWz!+t~-HP9^-vvv-A=!jENWrzMGZAhdVb5%G2V5s~4x%u+g^$ z$1>j4wbWO~_?&Cbz^mV?liC+17s1qqakdvC<$J&0=c%~PhCB^O+2Cznn2C{D;jU#T zP+#v(rzqKFBw!d;Q&JEx5oxr{3L(eX4G=gxt?K8+Y`9UZikRl4;;ry69~SpGEBwbM zs+Xub{7@Fzbmiyn+wELetZo(AIB?SCEG>GyND98Of|rWn{HF_1^0Y#zNkGTraLdG{lb z%7#&WAO}ZANw2ab&s)wnrT+Epl!uxENs4+%XY&+DR?9qIea03O1IFJ>DV0*(-IWk| z;0~(zv#^Q@uzm}SSao#qv(AZ}*?~YAGpJul%n!p zN&O#F%vyTp*PlBFYSA*{KexTaWWocSgM(JQ$zdstDW>jKk2qLi-VJuwg%Lt%8CN4< zQIU{c{WKL^Ined)8_M&Mq_b}YH5rTGA9VC9Ok!>^_&ZvmNoGN{naw z$WJZ@-x47=sl>#wOY!{-xfvZo;nFXtTpBpYTNA3nWZwQZ0f6>0*Xzl++7J&XfiZ^z zU|=nTk*kLO&)B`-5s<8=V8~2K(dhbkuVKKNU4i#+bPkwi0_ax%9tlstqGf=60gda#3CaBK?Ifcntuy&v!+ikj8jJ-+fQC@>VzTB~p z)xi+g^>$zGnuz;wB5}v_QjBqTexUOecEq_6XhFzv7H@L`Pp7rEo9VL|-zsu57Srb7 zOIQuuQ^AI=1g1f$!l+yX1HPQheq?~NJ!28JW;1U{FByq!;i$t*T*keZb}g7m1bUOTC3 z_P3nkVsvt`WKAjVDBhJb5Z<=N<4ncuzCr=O{p4Ke*1y2He!NOJSMiz_;exoQ^LGEo zU*xcF;56f+ys{$J6~9n6H`e?_*w~dbm4{>7rZBh){k$IZWW8Cl!nLiaj8hsipAv{L zf7sIiS<@zSNxVXiksF^f*{imcl0+HvPk-H@EE&}msNy6M2%IuktDgr>NVx|ca-bzO zj%2!gwRdo)gv;LYTWAd_6~@Aq6u#LDH=y7mAD}x%(E{ZGe{xcI-&WcFBWT00aZ*f~7k!`$z1m;0$ad;!vE4@W**@x}uD5~g zE@gNIAC1)Z0E5CDaEt~0VaOI^M!iGNPcb#N_I~9KX0vy`@t6o#{_i7_L~xp?c$5Ei zZv;H(8$$k9q0S~ z^S;dvtW^)^IlUP(7UKgLWK;^cJA(!L6$-)f< zU3|$^1Jas!Hh{RxXjY0#7*dTBmw~&oo`A>)8SA=yB!H6wWu`iA5nt#?1d374-bO4g z?PaT_e~Ma-qzp4eJS75s4qEkOLwwPybmZ?jXhzdXl$0T+AJD&qVgdp~@ECCbzu+7a zY4`}h^V>I=?K{kv-`w_H?yhO=*I$$Ldn*-K%|I^Ey_NgRn3`2T!3|;OYWqNzCFhB@ zB)5P;E_Qj1ql^2juEQK9|37qnX;hNw`+w6iQ&ZDAWtPjB+hnGrrn#Y0TIN!=h=%Ko zh*(JGh6|!io0++!p`i(tX(=E9f-5>rD(+||3b>RTDxkRlDx&|#@9%B@b9~`BzCeAh z=f1D&vt7t~jAo6$uTs@fcwRSR{ZmecADbKG(|*tY_t)wKZKQr{BRr|D1n)`{Hun1u z?oz5&mr@j~%U#e}kntYuQGOq>MP?lxlW}RmW&o|&Kp9& z+mD1G1ANR2=bM{eL&tm}qD75{MVTmnY{vwDibs?(JHX>VMvn^1Uv;~09BM)XiE9__q z`m`a&2}Yf<-Wq@Kg?9Sn=|HLR@%z8d2qDj;qO1`Sn&FMi$PZ3RC-hT}l|ODuEZ8{( zu}3p!r(O2|2bK-<`9iTv`HU%{O)_Z7)t|V#X=NHEdi~&3(kpJizC_krnCa+Wuh zB-TPeHCe7R9F5F5PPzFuD~ewAsLw#)uUkZX@88&0c%;5fi}yU4-;s{xl(aF)63ve( z*p89Xk;qq;M^m{|DVG4P!gE_u;TkSZ!V$!z9JjG^5Z<(?3soGBYZ3)7JSDT75y<(C z=$k$D5@Z;9o#-zu&3N(RMQsej8>3uaUiN6bh`r<&^-COu!PM3$)e+%PeizDUZi?A0 zrd7uGov=sDe()5*6}AU%FMfs2xe==`!Y&*P#=NkzQ28BG!&ILI_jBjq&@$R3_*~h0vYC)fndb*<3>he70@Z(Ng#i(jN z#wTacHeY051hQN4e=xzl<=llIkF&^^JnL|r%8b*7MzvG$`UZ{&TdnaX=EA}P$eAy6 z;q)%4DW?+}*MJ%W2Dwg)j+I*8K=Y64FoS>m6_6}9_ud342vXBp_p_UW*X zp^Vz23I+y?H$T*QfL5nN0q)~TF`k0a5lCs$k9HY$+<%1-fjG_G-pP*>Lf#y1@%9L@?UlhnB8iM>ZR`_2mpV=v z9-?T@#T^q0KlSdrpW1cBE-?_joilfYMtj`ybVs~JK5`gg67b3Z2{Uvz&br; zSF}Hfk%WDyw9-ajDxE1w3`?I!oDe#$v(V(a-5|=8ElEI*8*B!oA%MYQOjb1y-6uV^ zyTgKPGEF~!keE({toL>}$uo`ERmsHevIUM=74IQ1-;ApvKIHm`RLgMU~RoT zudjBZ1jyN2;_-NW^#F!`po3rY%RBAX>ah}n-xoFQFTi=>{LE(A3H_D0o3;Vh& zJ?_Z*OG#9oZHO)2ia#Efi!v{a{POyp%X3u?ipEiuL1jOfZPyk=QY7p?<)3!OOt?}T zaum0km)5s!B-G8@!sd_>1ulU};CJhCx>2^SfQo?@$=-I`UeAPJa5#B@XkUHu{v^;G z(d`|DlTMA3mU;$f5q{VxrL_rxBkw#1%DDIZBcQ_aOE%DPdN}^v_~7ek3}7SPP`wNS zo8V$h&pQnQKi5Amn)}4a#=QEiD^g#^?xz`V4GE5^4~F%Xi}@o92>=^afZ1rWKfnnX zS$*g-h+TjESM2D{Gx5gr!c85A)qz_JbAta_flpk%Fne)L#nfAnAy~hAzSloHLIXOh zk=NTR{EhQWeS9(BWUXBoP}z##Va^n*zSbR2Ac2b!N)pG#CFhDjw43piO!Y^D2mK37 zkb^UICJJMs(Z8-gevca7RL+fXuHp;#7v_Qu&cwJ0z{^zR6bfr&`VV8jHxXqTcRE%3 zs5=95;fa)nTP+=@&ppA>4Va;wQARXN8pi=~j3|79c_fEwD&u71q!&###j~NIDt=~1 ze9YJV?c2^z!D!((haE(JyrW%-XZ24A13ZW1uq@8`m9limm(AFnSB8=`HU0V)GLlwD z0~8y99GH#SEE_ntw`8}BAt-(|7T3Q1ao~#CKfU7@RqUnaZ?2Oyul|+LsT0KMA}NDE zh3RdD2bNcO!HQ&ZBU82=@`S_qUk8(-Z-M{qcrzHf+q|$WWB9>P=nJEv;J|RbyVI!L z*5rvxf^W;+93$c_3k45rR$__h(S;4p%wzO&(0Yq*)m%&Z^~Kn#$(aT3j(~9iiim;tEaGYF9fW7LgrfPuiP`D2WZ;#|t-~~NXQT&-|QJL{-=j>{y z9GJ!E>+dC3LCJ3X8CF!!tw(ihxyQ;2e)ri?wW6Z3SXTx~1Eq%u%rxPgFGeO|S=DwE z{giOTIxmtwEPx8!_&*=hQ%3-E*F_q9ZxZ*jWKFl!EkOp~W=!Z%z6zW_=Qu&~*E^*c z*dsL$9@hHwK?_EoXC=Wm4ea}F&-2&b^>fjBh~P@M%h(Q`A7_&cp{>yR3naHB-w{ z_NqeVt?PA-L}#m=uOX4jjirlw8Wd*H4z5_77&bOUDFwmE4+b6U*X^a@g%4Qk>KU6<74ru6H&6(k$B zMYPB0lHu&%n+jlyfON}?eJ$lP)xGhuy#_x~Z$B~U2;#=OVK-A56}GurGXUF1Z|^Xm zuGD&l?`jmA+>pVPJG6MZ@Ihev6(1;*PUw?yV1BPTx$-H#`sB*vs%~*7092pw6IH#$ z5uu5J=~3y@O5$%Upit5mfTj&azGabL(9XGH(IB4Yj|!t}GpNf|2j&_NkGQJFYb;S0 zMA>EASm{eD>WgX_s7vnd>%$w%>DQV8eq_%Ya38&``a>*V7Y~h{r6#7MgHglZ;6K)9 zE@3)my})rQ3DUJf`K5!;3I`dDKA?J!{d1(jrJZ{(GGUyXM-YouG)#2>`#C1Ob$q=4 zZRC3@K^!NTU3bybLSWWu5O?nxDVE_Up)k|1Kb^`M;$K+pXbD6D>ahB0%Tpca4k}*lX~H&K z?ugdI$J($)pGo&EStd^~A5$vutS2rkgN~b3V)In}1322kN%Slgd^h8kX6x_dxemd} zzmK<;z6YCxo!(j!3+9z(z4vYtUMw;7@Ddif0vnygH!sF3#oq64kWVHK&nhq(wLoln z!ukfr*pOhCl!TB-IlwS)sKd(K=_3IC9rtY~0|O8>^AC2G;VK8bML#z{R1Y38w~6?I zi)JN0>#nm!5YvYr_@A7``4$-VP&%{QIM#TVMb8~J*`=fA2mW(Vi#Fg{O`Ktip)n== z2bT-X4%&kqqo=MzHM6RfvFCPS-{Tu!E5V3vIl`W2q5O1*T`Ej-ZCLX+J5#euU2%#Y z`KTM1)Gz8~OAw#0-LO1R#$aVW26u58dj-CSQ9l5}D6O-}wQ8`lFVjt*{tyqq(&G`h zM6F|i?K(*TbnDK3I|2vT_Aub1pGaD@?UIVvHbl{g5~xf!z3lpVul4Bwr95%vZPH2= z6D_%gl-qp?@a;y_r8f4mhSppE91twBxKo(pB>(|u;=%ccM|Y9#dM81KstqxBw&$Zn zJKfh{RV^JDp2|Is&UBj51<^pPuTi8T7yoO0(jMnZi1Mc5If^dvXA3BS@A%=RhvQ*Q z<&oPR7Ixice^(xNr?5+*8>1Uu&Q!Q6a{znEi4<;0L$emuLZqEqq~8pvFnTSI66B{p zyStYHdRks2Ni6uW6--NRGqcMvw9w5CqgnWVQ~lVVv?-LI$aN$K?6_PY#SxQ;r9p=Y^w1LUkAu?q zLBQ;jUi;4ELDZxvs(gI^?MKN*ZfNyfb924iU>|`>5u>1A6NA7_vSAlhEI^9)k4vmI zjd;P~inW{mpnGMUbEF?QZ$u-v4>^S;mA?`gd|;I3r(J2Bb4fr^Jq2W19(>`g6c7@5 zl6prca8Lal51l~?E(PhQ(^4A)1;Z^ZEhxgzJsaO&A}QY$63j*P$CCgvV-rDfSvgX} ziPSqL;`dsmFX%9n$JFjF0);ZO=L%nVwJ(Wb5#@`=4)(b)hcIbVRnr(*-EVs%tq7dc zz;2r)IgXPsVILZI=xZ!RUi24tUR2xmALPgJpRtesLIW&i6v9ZpR-ovAr0Uo5i)q>ZN-%| z%1t_7NcFmVgOYFvP8p`|sl+|EW#ZYdB`^WDl;if-+#2n0JnsqddOX{0+uI?_a#95( zt*~OZ$L`j^j=*;l@AP+}mxtyk>DlaqR0JBouSf8%(~DpaI%EyM!l9cW*0mm)6NSp9 z=nqBA-zjHvbMtk^0|nwpf@0vP24=Ba-(SJ+OMK6eEd|r#1_7yfF`04o=UxnTc-;5k z9w_<|_9^yy(ch92I#;pCWYa_F^OG)R(azSb9=IIFMHOA}`_B=OCq}8k`x)$a(A2nm zj!>}NW;%TH$AC1gRO;y&xBW6P6ZC2@{J41+soMIMWWAFdd5r-vyMpbXx>~8)w6k(=E@IrmuO7^)gB#n1r1M zmz>0QfO=afFgBZ1ITYA=HW6TEeSWa!&H$xy%LZUpr}{=qJJGpZ3}I)l!F@Ca5kWK`qLBaC5%@yc`=F$^$C`gh+I}76?kNvut;0W+ z2R|#D$)$D_&5G>^*p628uC>~1Se*=Al*GF@D_DE-l0X!9^Xn7S`=znLNkzxd{)bPf zp_A5NhDp2aJVIql{B41Y@O-hA2(@i$hz>PJ-LX0J-R{@d0K14oBDT!>5R<<8Gt52M zB6K};I_T3G_lJvh@g|;&^@NmT z66yl%(QYdc;Z;s_K#~n0iHn=Sov!;Ig2R#zDHa2%v2q|imJdiGQ-Y0ek&CXD)EgK* zN-r55w@pRp9wpj}cs^iDPiGVU_I;*phNQX0AYZHtaaTj{i^`yx|85}^s_*U@^h7uJ z@V#o~ySTUkF%At(Xs)aZ?bqdDx31neZK}x*_~SAzwgGj~@q%--)<~~s83~?Vgk;l{)9CY$tP#uNq=RRRU`ZC?A8eRay9z+}CgHgy zK3Coz5j3?<)&_Az-c81Vy^%K$xq|fseTW(_yF$KQF~MZ9Y5OkJLRgza(rcu7- zmwG8&P3;|U#DK8;baDR#4{ug=JoTJl!CrqjE77)71G0-}3*Mg-OpQu0y#4ir{^mm!l1XOPBmQ1EhdVqd*`~L zW2TY1fBgh$2S|)5P>Uy!qkg_k5&n(vJR87F4rV%_(oq04Vi8Gi{gk)Qn!n)I)$O#s z6A$tgI-Cn85Z!La>>Dyeum@t#Pwpk?XCH+W7WxJyZYVWuIHPJk%hJdXedUC(c=4k3 z1md@&gvVWvxfz5LUS+FEiCzbml5>9xrc zYrxDNar6KJegj6dJl!JWqJ+a4PSVgJL0=XU3<+?DgsvI(C}Oy;1j!>u9i+PwpE5W3 z)4n@1eK}Vs-zj%fw@BehPN`cxn#WuTP`w*S6^RPci|xkcr!WmIYbYV>%^#cbL$NH8+e{$V4jcJuUeKo51v+t5lzD5>2Kk~+{*G_R2cMFTkZE0zXD-sC(HK`kTFLC0rYtwFn2v_r(Qan zm`>PR1b!@g@+o}awZ!mabS^TY~b>@%yUrN2?FnwpD5D;b>4KQ@KY2hk@$~2gSYwvRRXqbbAHee(~-4 zB4JI!Bs2!h?u$3hbH-g1)b~v(ySH^uRLv_~dK3t%%ZF`r>B(-YQ7-k>yYcH> z<)*Jv1FP%yUep@jYu(v)X0|eehtvf~Z_D%^Mu3DfVb1gtoy>mc-Ifu9s4=~oLx#W# zV`sx_2F71!0wFsR4LF-)b`V$F5iD4Z4705s%t+nYWj#}ck*yIe=nKRcOi7s)|KZR6 z9Wp1GOGj~R^_r48%DR!z{NCtld+N~>Z7=u6K}ozFDxg# zPj?KkxxnYdWYTo=CVv=j`*+)q!8dU>j|+vC)2&nFZ=ToRBiaZ>eqPzPT;Vc3|Of zu3^U&J01ARLfXQ`Zd6S@gL$yn2O$9%&6G#^oAC^X4li%z@$!Zu1wTe!-eM6~y11ULaSRxra``2c8X&5}yT zIXAOWqBav=^3C?`8QQwgE(TqrM&#b7+0}Z%ra|C7i99_}}t-i6dMj^nRN7@X}K98~jjsvyL{!%%aJJ z3Mh6Q1t|$-Tt%ku=L4yrCb#Vx(+Do=K}jaZ7lnctI1)oXatgT-A4t|tCroTtN=;#K zA&HP$eaZL9)vsF=};MHAO;5`Afr+NP%v zkd8IAt5M=TJAnBaISedMl0^U8cb{;tJ4w$-VI?9cj}$>wK3FL?J0Zvgc)SrMpngq% zNqAY&Hj~utiPBs!j#_4Qt$UwE)GQQbMQj&Aa&DbdsO9CBrgi)Pqgkth>P|X#&L@4R_&J7;RU>(4|9>=ff122SXE^NKf7Vcr4*D-9lPN+PGPoZK1bL zX!R@lkZV@_5*b1PNiui~8%>qdx%}l0FYHI6`6z)kYp^Bir3lg&`&lYGeYI(vV#o|u zyd^VQ=zywZB5b8NEPfpj*(_}6=;bd83NRf2$aQL~Z|-3;tLySGo8zWTYw*PAZ*6PS z^KV?A8T?)Sn}}KxBB^%|SM8_&1`vb!)nk5)T<38dNpzOU#5s2u9QK-zK-56~VI_f# z{JBN3vpu3c9Z7l-=s3c{O}{ud+|@S+GnfB zo8o}2%LbP2dZ$g#In^61m#z+Z3sSGqA0Ps7i)ycFaCG0OibC6!9_*4q;uzS&5&AxF zd26qXH9Z3Ed?QU(pC4&cNkm$KK+2ea+{d#>$SJ1NCSY!^bU&T-MK#yZ! z%aF98L>hY|zSS~jR5C{FJO)o=YS;(mt{s;o@_n33EGp(GFJ~}$F_Doa%VT*Zl#T9m z9%9b+32AOyWpL1NK+1>s`k`M1wPp4y(uOgUW97MRvbaGlT$Qyat1kKQP53*>wCeUR zu%EuCOx`qOX)t9jV|cD-)j=S+P-y+mEPwk0?sUuKW}WTWXoFWw{UeH4nknmg{APrE zzq*;b!)OE#p7pH6QRr_tl*qWK`!4hsn6mmpAbaeW<`SSyBIP%ZE{u-0+@CURtKcXz zV_&EzyWN&mEpq(18L1h=is>Cg)xjRCX_)S}vI1C0dg3wS!v87Pf$U(32!NAizT3ZU zOvymufa#|d#Nd1BG-_GkDt?&+=cq4b|SMYhzk6U zQ`(VFbOT$12Hzcp`Av7=3u(eq&(PVH28aK`-M0>vE8|4c!ttg@opukYS0lonK>I#u zE#kqO{(sjD?3|u+kbpL?iros?q3Vz&%pAy*4rXf;Wd=V)yRGA53k9Huq+5pyGxURS z_%C@33UWn3r3OLY-5)YQyq6bdx$BMvN5``pMrWMQ80ap?(kzH5@MNpb;@$*$^jCJd zwJ}Yc12HrR052Rw-Ux2#?cnrQWv3Bi@KbA{ep8B9=5I&C|7Lmb#8qlQze$Tt+?V`X|E9ju3xPa;D^DIHfRQP>?{#J zNS?6hf)bT5$erjHSM=}m-0pMdSBADtKI((s#(5VFgt(f4*s7rf>1C?~?ywL3s7kczA#(WJBG0Z~IqzAw+946YBlb?lm z^P#O9-D+>ewI9V6kuQ;s(3iORUulm%fkea(U5sCo2ln4Xq`GV$R zlKfW3`++wJ(Ue|vkxWyr&3XM|@Pu;6W@7C%j5R3s=b?i?S&R-(TN_RVab2utYoYLrROuW`{CTy1jQaUn)JxV86u%-b5zwQWf(?Iz5dk~nj?r;+` zCp3&%e^Al%sFClaYq+@5%!Eth|0{0#d?1`Pdouybo*7Tpxt5_jb~p__X@7yOCUE(S z+zN|Mu!pZFn*C-Ndm2siq(L+2Df6Y+xFJ z3+r7aM)VuIhA3@ZaFf*eYO!^qzr}%eGiL+SztBg?63(b+L=8|3@c&IWbu*&6nG&!1 zmEH_MwI&Dt!}hU>iFPHlZF^vQJUzrD+7HQYM+4vdOf*nM>+yhSqNtM1MKYC;hhGd5 zbIZ)0ddU^B9=}RaQM>T0>+F$eTAg24nPaF5R#_RVcLPb!s>R^Vu2es^KS1$&{ma>< z-b9+)fB1tCA)ozrGx||m-Ulmx2jAU1tHjq&TDuH@r9*6Z5}~C(FU5Pb&(xqyq*lTG z&kOV&KPe$^3`V4EKLggV%V*Er#q0e~;S*V>+>)r|GI zr1jjysoWf7K&=#=8?Xhmr942NE{c_@y`ELBlnPdNo=61s)swo=s6}*UFyxkJeKjGj zY6t@f7+wC;_!yN#|5K#K4hVW)?qeFQJ3p-kGey%mYrZd|qc1K_dzz?SHA3$$t?Ob? z<=_NxQt!&)o5EwThk+&dd;P4CrW)6*6WT)8(E7>{WF@M!kWdKxi$z2~iRqfEm?CSyHB z<&U+egG?_Uf+Ciwi`JkxzOc5{wC)zU!>6u}rOx4s6^pE$9Gs3sxpc&{%4)I$`#AiH zmu}7Dslk|G(E7$kk;(j_#o|2!F~b;lqeH11Z3jyx7L$H`?LbSD3pSnG4!~-vfqtf_ zIo|k4!HyHA2fcX7eurdCGu7+tm$+O%e{P~digk9v7OXAC-<0>c@v=&)^m=R(&lZL& z2EXLmd984gc@RFlnyoxD<4-q$^d0(rGkcPE?}LJyd_(s zlRh25p^{e=!Jn@pavc&n)2Xr|XlZ(M*x-$2{9ZD-GYe zk>@gR+gPS6X!Ldt*0QZ%v_AXg6BW*hKEo9X&IPGZfQ7W6gj(FAnFW!Os3w^u+F=rU zXX`y0Iw!zpKf)2N_QZb^%!uDQnVB!Z4?RD`0l_PP042@!+;oUBU&efW>6zD#>wr4M z5akFzIXe#||AcKI?{n-IKjr=4ZFY`5a84#%f*9r6ERaN2ZU3q(qEAj%jU&!Jh*x>1 zTw=@6GgZQv`lUwWwQl=wKdt>c{7APOMHwcK%W0LelJ~Y$0$89tv7PT(J}c-$t{dy` zf{FXk&xU7LSJdw7i077Bf6R2(btsxA+Pdw|j&Lms_pq*q@oyD}U`cel5&wKpMo4}y z$TIt`5|6Suw)otdwRU1|`L)Szq~`vgj0_I#a_(VaHW|BqcS6~;#p7-uLUD|(h5V%@ z6E_gy<~yUB70tdyx!>iV#IiHmU*TGd{p*@D`Q-5cXB*u1{KkRo%Pco;Qkc56k=8Fe z-eWHSR?43_(5++xXv9Ox7SK=eG*1g==)gXApi-|}yft!^PZT@pJ%UTkN;;<0*A4I8 z@Ek4zVF&5V3eg&1RrSJSWW2E0jTM$lz{R{V`JV=E>Yp}{>&P#6-vn<%wSXU7P(esp zt{>{cCgpktQ^8rmIXq9gJ$ydmplhuc)$H4@X559mln(}0a8(lcug(d*eESTLLy@O? z{o|qVT~Jc>pzyd|@@L{ms4hi5a@z#dc9?vuEVViB17sYkk`KTZfFeM@b0c-9s(CL9 z@Tv>6XMj@ZOKQhG?mv>>Hf}e=3*`clr@*!@hpJA%DKgaZGYIE~qS>)uY%~oCvNezy zJ&|`t=so(GT3tIcQdgnQ-f*ss0GW+p2^@LitbEP423s;r@j@un`p&Fpx$5bJy&05v zR45Tt*Sf@$5+KkDZ+!$fm(2al;Pbl^$;v9WS3eATT(tEvm1eJT^IS zzcd2$^g1-OQAi5NCDJU>bJD}s=a0ZQpf26rV9|ST3f{S9f0J)luVsRI>|m(d|ia8si`8`5nGAUS^@JO@oG*A$qyh2}Iu8ihb8 zQ0qIfNu`=E%&C(R6aa#5j(oNU;%)CV7^2TSx63+UpF_hwO1yuAi9HB} z1b!hnK3e1KYv9sbd18Km^7IGm)`w!X|LDPYJL`UZDNGN(%Uvb_!-!!I&^6@0vTg-p zn*L`bLbO+uEdUJ7rAwFA1cdcv!umh_#C4>uFW39M5hgwAEiZZZ!{WM ziG1{!lV~p!5oc17c#L%`+!ToL!pG%(ZVL)9&L4Dz(>RR*1qWEd<-_G};taWUSukc# z+8H@xpMp`4#-g-(N!ibc{F)F|Wx}ILTb-Q)>F>oHm1fSS)8DU+0X>IfQF=y0>8Hff zWF4QdzM^ONQ)A&C68N!8?iX52mD0e@m5!C0=Xef>_eZnV`)8r#hA;kAZjWZjuekHk zmrc$C*{t$dS~~}_%FhXFyFX4vTx!|+M_TxW^rJl)t&KyJiYZB{uO~Uxt-PlS^?~%b z-rM1l-s%*Sf$b<$Co{NZ{;c?wb~8@x_|f{gqxP{IK@to=m4EPT)T12154bVwf=e4x zik9G`Te27x&HZ zBV;i2mThWSZOpQ-Kx2OnhQw!T*mry(;b_smyh<|&5JEJ6MSrWXA0TfYw^1<``9S6* z7myF2c4;}f>t&PM0g8k%0}%S2dY)F+fjj=;k1kYV>>Sc%(RkP(phEEZ8#FfYyblna zz;5<4$VKCBX9u@f{9|-qOS~J_&1Tj}Hm#+=&lz2Y; zDo#BfA5r;E9N>myD$)PEj+lMTVAfV$6!eOS!-|J9Np-{9;Pu8+QmQ~X7=}jTZ>$qU}oaz!rk?D6f&MkGzpT= zPC`GS6h5x1%PDJYb8l zqjOk?OOX!a$$^LIl)Pjr;tL9PS3utLjrLu;&ZgTt7K66s+F%6zsN^7_%QLlUN)|Mk ze?(j4G5>g$a=#tFNkDu%&i?r`cFd!30MWDUgo;l*wfe6YDOYhG`HiPNi>JxhS5=)8 z#M46D_F@Xw7DUAW$q}_+QAapL;%i|B7ijV8oP~{{P7K+6QLG({`lt{;p_%fMFc$OI*weorf4d7+jSKq zXi|=9wZ01a#~YkuBqajV2y-7SLwdr{bJf3>EqocN$llRmr>D|^sfGALYW)MuY?5E( zw@mQ8Q0*sL1Z<%xX0c>*IXo_1qV?@zyZ9;qO%1keQr{d|{t8kw8o5ZGE!?A?8?42l zy%d>rRRQ@K)XwtspF5s@wQ4m4LPuW^3JN6Rw)9tU_n5Dkc9jExVxw4Ku_8)77*l^6 zg_2-hy+mua$=yr8kD=g}Gsb_ zvEox^8sjs5rmX;rmv7c=j(;`>*TxdH@k1&N-qefG&k9#pJ1?ZXA+X+SdCf50^*_Ws(AENrZe&Jnig`IB~RbHsL#Dwmy= zLd4xR)fox?bV=McT{C8NNX4IcofZ#XHjy-;u@KBaw?Fou%EwNPddAmU9F1Os5qjAT z@feS*6wRK{lU@s%jR$A_@>-eafm-?|~ ztUUC|kw`}IL+-7x-NdzD56*knU{%fTS8!1<>w@g(ija@&k;)|%f^_F5>L6znKcFF4 zJS^*U57&-h+|&(ep;Ml&73 zt)WQyu*@K^`j2VVg2KVjeAib-#D{-PkHB-t{bp0aQq=CNPpzy)`l62_KxBn14!}~( z7jAE-X_Zu87vBXoow<9LO`I`1TfsbWT0w13zj0y6PKe7SB5zIzGvh{;8-&$>8f=uc ze&14kGu@TTpNMDO0-yw^YOcvtp10wllE22!(r@*xf`3ec~fi_I!gdW|GBOa!Shrm4lUC?RRQsl&573}uRJ)6#dSM0edc1Ogc zko*=kBUJE^J5 zT9(FjY$X|3gy|o>W}Ggzd^ZV(C6!Iw_#_k39;4f-ozt;N)hurWWZ7k=S7|0-W^s%L zr>uL-y`2@H8@#rlv$Whu9$(l{uXb6zo)ng5Li<}ZS1>L5-%X$5o-l&Uuv?iNO>G=0 z*_aAMRlt$o3m`H&ZD-YH!KhzM=nS9NH^h-8bp7AZIYL8vczFrrImlvoW+Y-Uw|9q! zOQ#M(qHTH^evH~Ag5(kn>$@M$ava5OYqBSeIKu+zIPN95Qc8s>6&bEwb3Oc9hc;Z< zl9jGqp8#EzVELCStAx9-9r&4>(8$!-^ib+R6Y{#X8=pGm;r((09Q3D zCrso0o$Gre-F1J5FSdHnZo8kA)uE|DoM8t^MhZhkuvg_NV3m4HPD7{v6npNwqD|nz zXFIFl-uxkZ#eLAKbsXiUiF1tTX1-4Q-OTe#N5h-YB&l~}F1Ew;7M!L zfXg8=#t5MND81*f@W!>F@U}p?)KZ7#rBqPE=h}5kT()+;8KEK&As~h){5P*TH$@r} z>sE}ZnH0~#Mq9bzdS7ll6qPVu1^R``%}3dMIc(0&8zK4dlcue513TpYUwaoXojw3O z`2s*6BgX@`>FUgz))lppqSxc4q!#Re4`ZL8{FjqNm`B|$r2Q6JYn{%HFK~>mcz=nV@BIWQtg_)VEHd63l+pC zjq&cyWw@cY_6I`h`S8`Cz8K^%l!I54mkr0fcJCMRA1WxXFZ4m1z@rbyoYt8V~+<9_1%e1%dl~w1; zJAON#JR)lO5BDOQF{|+NZ=2}sOX$sEe>&>rc}XCZX7(bH0fwEI|2}yj2YmZliu>r? zJiueWYvYz@XekDKd^GA^ z`yRd}$+=$zAhTob%~@g|lHUH&;6?Cy@?O z%?y_(g7I6DHZvpmSyWE9w@}A13>!u#^?2*IjlF!UIwA3Hdj?+Zw95(6_H+o4Wv^|3Ixb z8AbckDb5~mmkZ{?I}VW%I<#}ZYSr-#ne9hFax7d+^&F-HQDGfyhJM?5Qs33}PpQFw zqacua->Vp^vm%3&S5(cb3!c@V?@`R-ayhNHvf}FkM!O>rCqx0Hl9{%Ari~N%ce5K6 zG=<{%3sPB_d~_0Kj*jM*^|h_EPB8S(dl7&!j2U+n;^QDidvM%%FSh*o!*|)|FR(v# zB|&E!Gk+5t2&dbjCGY+PNR&$8k3uixI2S;huD3Kma3qeuVZ58Ktz<_7 zSPcmK9m0mbaK2p^Y@Qn2JDWL{jg0x)E_j#jqxUsV6H*M#oea!(y=CB7@tRUPeE1$b zyKKx-)7?VO&j{WtH373f$d_eq4WH~1UU(<+y%8C<^Ub{(z;dB5Wi>@nz2|>{@twi+ zm|DP=Cu_B_^MW ztpd)AmLWjP3a;ZgN`OoI07U~HpsB?a&7~oqN)xJlXPmp9E?bQWe;;MH3T=FT+DAz5 z&{YE94S-Lq*ef@dvdEL)N>tXBydguzwbbR>sv}r}`;1 zL$`9my(vCD%%ha_!WfR+xM4CEXbKkUyiAA2J0y85t0CgAGsxh+4OH^#`HX*N+w4Tj zw|%z~%5+A>bp?!WLp$Tqh3?d%$CB5ZBc;3iu}2Mh&^eA4n<_VbzmfOaj@{Iqt!vsH zc;T!RncUiP5W4kEX&BjSM?SU|!XVGm#f;uqG___4i%qpK`-*TQu|{Ji`>}2#I6Vce z8XVvNyjwPMqg2@D$X-vBq1iu`{I`%ZX4KYg^(1oWfVaC~&O%Ce89iB&-4U=Tp}iat znRP8GpUcNYp#+LTTzwF>`aF3rrVn_@=fdL0o;u-yw@K3)1i~m5IQB`LcozQtg=%Co zZNT$t1fV{g^Q>GdF)d%KchJ?6(_9h5MtPp$9#ZoybXT68@sR+%FsCH^IqTG6K_6h@ znszLP5|RizbKm*#)4Z^S<{uXTRED|nT!W)`r$ELhADuk#rZ5RxPHKQU)t|gk` zOV^_`z=j-v#rae`9vJPeQ#P~3V2c;h1G8%f+hKeW3I3ykNWDyTZ2sENq^etmEkSLO2m&XZYar)e+|5YN97i#SEAe1 z)K>PS8+MvV)U0Dx?6Pl~{UhzNjDIc4{I{St{1hsKGJX1lz&q)Q0cAP9hdM1ZWeZW?#%&Y8#r})l?K1-Gil^$?WQj@{LJu$DoC56$F4%O^wdeCN|6l= zuh2c9#V)6fS7Hg!C9(k)3qJXEf?$~sJDX!pyreSeRI2BBc7`O^ux~YdFGeLgJ$ci>qLx`XpI!pcuqIEt9UTa zHI2v^G*p82*)|B{08jd4B9>?_!`8}|wy?^)ZzdNTjx47~x(H9We<*?G+GS#)e z$^vI3oE5cep7Ld?>V61qEnzqM?69mK$GrYu>l$CQUW?x5J>GpT*KYX$g0s^`BCTkgu{p$BApTA}}N@R`;1w;He z;B78TTm^nqyeNE*B@?MY4E2QRY;CiBEj;v3O? z$;>Q}qsAwWwCjA01y`Am^kEFl*=Wu);5y20EQS7Tn!+7N3~R!C-TLO(bKPDYt$>8^ zLObwKC#RySJAVCte4TkT+u8sBO{X){PIqe5K3YphmBHABnd+)qU4+_VMnp<1RYfJ1 z&P+>NTT4S@OVN!aGDKnxoffgDXc9?^DJ6(VElCjJcYVJ9w!fa1)7Cld@qXWXU-$KV zz8+6HH*9m7^LqfW?Ai_H^7>wqtHCRRtc)2+s61Af8MSIYUqzTLJo6URi~JZcAYN-h zC8ruYptmiXyBpVc7e;^@4=>-WJalXP_i-rugn8peo8`n&qzQO7DqN-^;-JD&0}<)|LX2*|dv2n=d?BZO4&KvoJZN|>94eE~a>E9t z^4`q9cl2=~&S^(A0}L&|Bo&iIBjR<`uwS=33YA`+{=6thzGe|pXY^eb_Ln^*KEWnM z55!OwNVouVvzA`&g(VzN8N4v;w%m1l%r(Dr>pM67X!Uxd#?VoS-4Op$mDQoNVR&@^ zPdSO0a4?8I?0QW{rG@q^8rC+=$NYsyy7yU>qu-<7`zaAK1H@}GyPnqBjMkY;HMP$a zjlWDMp2Ugl6PEfp7aIHnV@1?%gnDD!h2yv z^`i0UyX|1i`iL#V{n0KQ03G#yOS=A#ti-#dtT;HXuU$R6s+kjegQ#bp`n&e^1@Nfu zgYRC)x>n+JQ^QU%YA~z5M;r<~!c&_75ki`5XJQE`hEeda-H?;J8 zq{~Lb@Gvine}7SVhLJsS1OAXT^z+2Jy29<_RrCh4csa{DJfJ`7IPEI^2ccuQ4`{;P zpKF7iVR)YmJL;@|1U1T~`~hY2JLfW>4)mL*-v@s6>fvX7<4Uh`^`fF?1+W76)|o2c zw^258s2P3M<9bV7`JeXI{4-9tz3=Shn8d5Jj*@yU%M_E`Dv{))6?0t(?{z|QpQQ$t zOXab7;d|`9^mu!4@^gQh1zocwnjx?Q_s`K9)ZGNs3xO0At zDcBM3opKpF?`SDJ?-&{1?K`(li6L55|;pcD})- zlNi6j2X?+&RjK|b_~!2V%?Bra&pUe0u4^-)1dN*C%HYM2#prka@zS~*>Bd^Zs)6xo zZay@Ot%%w=P6vXR?BQ2DN(>``FhoMV64(d&15(wBZ;QltRF=B_R(CbIO*!Yy9CK%s z;=b&mT|E2xpF>PJTS_*E!DQc6y`qcniDbg#VT;0hx&8L0aY8N7=VG2)QuQWz{czdv zxV-IG`P%~&!Sh*M-zdtNMQzdeJAzQGYeSmj2qUr;xWYnu7L)ZpV_z<1sA9G6!SZ{D z^DdI=Sf&50KQD#-dd7ghx_&sP^AwyX7U>Sgv6I~k+0qINWA4r~<+!W3&X*AHpHN;x zaMk+JYbO&Oy4 zarLVABw|>M`;(rCrBR4rs=fWGB4nq!x7;aKwH>nK#@%<`Cj}3Rz+A?8`hy&o$Gd++ z(_vy@-u}(!&diW5StBxxnYjV_VXl2nV$)ibrs=N?>E0*M+W>%w0w$Xv5u?ifTc^y; z(V(@wmbD4z)|94xMOO>4Djq2OURWIU(BR%`bz20tvv1eQR=8_xS z?}&_Znnzpw?@L>r|0naIODndCWT6=bV}nFR|EU_NqV4Y)*l12+VptV9y8l;lba zX0Y;uyx!KMsuol?1664CbEH;m3Fn(U^Rb8+llIdcxVtI{<3CX8dkfme#$QgljQ3bX zODDtAw?Td}qOWwc7oPb8_tfKFypD_6x(UCQp+0f&dDw1Bv&-DzYS)AP{)p|8ab?j> z>Ex38?~5fTu0xXsk?tSD(NXl>6hoTPy91H##|MnG(qZeee5Wa9dYKpaXs=NL^1 zJ`8TG@{LnBV+F2#yB!rirg3iR!H}R^5N_l z#VX%ty)Cn@uZCtO3a;A*kkm;_IcGYPj0w z43#cR&mL|;4^+Vf)tJ6&iNFv=xo_koe2-L)ZvDWShF&@;p9$}toY>2aC+>yNdd%Ap zL0fK}{d`+P>2HtHke^QuXdP+YeXj@V2iT&+Hz`cm2wakg-A0(NUxrF>ofqIwd2X>4 zTiLFmF%|Q|SkZ=$$-D)O^;5agh*waOX`%A#Q88Iz;TwM4K@&GwsNv&X1ix9%Z+S72LUQ$-P<~|% zca6lkGt-P8&Z)+vv_DOhTd^rasFvO?Pg$v}(r(9fqMvmiG2%`w7P6SZ9ZfS6noauD zdW}V?Zj>x64k^_3Jt4?>kCVRoPwDfu&^3Ntk5KN@ZIA);^&Zyy)1!?^ghX1VmD&7| zSMF%4W=;1yVJHhy4r7n#b8TY#Fx9!WqG;dF60W&=bQ6V!uKQR(dZ_nr?F_QVZ%;2N zt)0tzIaz-n1v=8!lYjKsm%r2>cgw8|+%ZXKB{=Zoe4J5@I~-Q-XweDYQMqGrj80N+v#BOA?c?9nR^wH_Xt+c@>X`$?^~ z5$+)&y}!8JTNZDKP%ZUu&%9#k&F!!9lpj*54kiF3#fm{>!-`|t-u2f`$jONs|b0ocSWw{wWYf2t@(=v>l^;9yzjT$uimqGIB%yv)f+qr z+==I(Pd{dYL5icA^Ncmn!UB5Ky3AQp?yeB~np(@P`j{)TIyT|*Kyq*io~ntv8@g9f$kg&Ddzx!m|AS%M{svr@?qG>U+^Oz)d_ozPnoP zCk^|c_=P{0xSVK=3V`?AhKHB&yjZ06Nkj?_$y8$(hFMb#58wOPLNWM$5EKYb6mXb}>5wF!P_*iDHvdBqv9DvbZw)%G-bz)2-c@i-_E z8R%{x3=V8)|FEbYQ=R@g$+4nJ`q3yayo@~KEXOSV?BO|zJQ(mpoZ+6}EitjgCh<^S zFEY37mx5@uC(skxB7sIevP2GsvS94D@+KA@(Qo0 zA*z>H$rpnuAwU{B@-r$H*$Z5~zo;y1f*;bo+o$i^JVoJ|QvrgP_7Q{AH6S^p2wn!y zs`mjavZr^GLvw<#OynQCl^N@i$r)EZC49Vg6vV(mu&rq36YV>Kbn{I|9|Xg(eeLR|ddK@z`*t#f4K`SUXZgkv+?r zb<)Nyf2}BWwchYK4~O~2=RKtE3b*W@8np)sQ|p7?I77ERREWO2tZO$*NR2s-(*ZW2 zfD@lzqMx9DoDSZVa(uM-UD3l1g*O(g96vzvl#wL1Bnv|7o#^c$hJ4-J>zwD_Y|m7l`Xu;duOoA#5gM%7<{ zdzJh=*5}lCWjb0QxGg2AyVDCZy&2hOn7B_b70846glJxBH#*Qe498H4@m%#7(Q`Tt;~u*`@VOixc!+k0A}*tTlf9d z6x_A@PrI&mq_z-vk)*2Gl>2YNquoSC1IY(S1vKqbSylJn1MNbsdFh#1;%2KbZX=C` zaq?2GLMGyU)FEDwudm07?~1rFR*f{d#8f3p(ycapGl<@R?ic+GQ{?d&@yUuI(^JAMv-Qp|kjEIzEse;$sgviHWgAa-+|pGSyS zCid>#rev!A`C=%6)p>kyMq#cqWHxZp;1^n-6!6RL&jLN>GBu!kXPd=-cXpg%@vaQ7 zX9I3OU;l~Vy;5S=&mj_BE8uLX;Sn$MAk-`PrHe-k80P9v=;4aO&Mv1(;_&Pcf>9Qi zfKje$$M=#{B$J}{gx-%VOH$}4?&%OO$;3OI9<}Oc%W7&^DkpolM>?O+0jR@ffo!dK zbg_5ypi}_?3GM)kQ%eU6zzDRHRG5|TefTO5AeWb5Prkk$y{)de&5p-n8k;sQ6-p-R zegy4IDTVl!mnBs__)jK*N;CQa_3e~ff~WZ^uz1R0LbD&zfTJt;#_sJt{PY83(XGmh ziGbdX#agLQyFchT5$@_B;61p*EkJOXgc(eAC~1o=KlpPlx5j}n%F(q2vyBB^MTzce zN%CL>0#@0FKf_l|jA;q}TWWT~?c*uRkDx8Hli@_4TZR1CC9fAJdL%aZIaG-j*}Q7e z{Q@ z{Ey2-IyquZ<)^8u+Kv7)FA)4Tp!CXX-y!;m%&*Hfci>e~zma;Bn@qGMjeh2%Kp}tr6s&ucm|D$393EYiqUf%ad)=w(A zF~cuE4QZlc<`Ci3TDmA)mOQ3{zsU!j?+w!8%G%f97YXdH4xkU`a2*iiWEeUY9AfQ3rRj=0;4 z)7J)V;hMa(#QsXxRy{9N`_$h2@#T~s>7Y4yy_#9C^X7o>>0Z<0gymWOL6uEeuj{=z zCm(_V`2xUeoGiWUEV=9~wb_^)bwt&&qYV$$(lF=d7ma5S0}HVr&}&Tt`e9;;H_H+2 zeGJKI%G9egNB06M6Zn%$Ey1CNt96-H{M>t;nnzT^LmcL$*xK%Q4e?t}8yM9DI`#8v)`e*o` z%s-KQZRHZ*ZqDgQH&bcDBP)Gpc|zUGQDLLE|FC$%xIXms$;uJ0@EL2Yq5}TbcacsV z3Buq1n>69=i3u0VA8e!aJjW4<*)WRrTHSGzBR~0SH_j%oWrKT?KK(6A{PeeOg5V8U zs3mQI^B-^6Cki*)`K5uR`+cS-kz*9(!&sd6onUN^mHZ#+hnO1yX3;n9Ha3IC=h(F< ze)sL0TFTYmGmP!Q{bRG4yXBu9%+-48rpc1FX{>}5m?s-M11Syk6?lNL9(;ZGJ|Dp_ z2wYn8{LLF7n6jZ!+0s_Q6b86%YVp8@t@ZbVf6AC_9}r36573Ysk{3>ra%UryRiCgBC>efwPJ9Fg4@f^s zD{mr-q}2gnh66`XRVDkUj0`oKVCZQKY`WjQ-hEz6)5*{N6=sHTWbrGr#id#Yon<_Y z#U{J`-H%s)i)q<<>+F`#;!BjwLX7oll#iyijuGb`B=B+qkCd-mD7TrqSB726r}k^U zxv&ALZwI_!j)#5dQ9K^j;!?NM=62d8$O>EDZ~pS1XIt=j5^KVBRzqjdWJQ+wmK$Ve zY`-J_rS!viXt?aA{6JG7hrD&XqOki<(-A7I;2a2OM81t!Xx8vGj1Fy?Z?<92`aD6< z-Ob7th2iI%m;c=}B3mBMY7vyA>a2DEZ~mxd(Rtm?!?P1~^NaWLefT-qSQ7#T8PHe# z8%jP>jJ&7Cdc>o+W`KClL5+H7RI zQe>+WX%A8f$gM}!IF!RLI2A9;xF!Cs>?j1MuP&1rR*-2$5UN*Dh~2JWu)GkeOo?1v z;951Sy*csmV-+96G~rsUKWIh=$#yU*Q>h66 zl_)O5VrkD0c_$b>zgZdS#IgE@>P(LrJkq&D&K_=O0~5prmWp@kSciU1CrWRd1?_p^{G=(jW!E*D^XGaFq~AD&}b4$NqDO!n5+ zcT6K7KadOjbrZs`V(izaF{APk4oGxV5u=BNFxdxSJ8O=!E`UhErL%X_7O9diVNuK& z&Ba^kyIQM%Zrm>_t&|ESG?kpC@x)L*^oOh3Z-Oki!G7%KgMV+vU3cz>6rHb~0FTi# zbZ+}#{!cv0$y46~PRuy{{(uf9{j8a8D@J{|mQ;)>F(Jc!F{@}SD)BiwhRUSm&X zmiy0=*Dut&KJE?bE|D@i_>lfa8<|V=P);Jf2o^i4R~=(P%P{ebJT$V(IC3>6uGjf8mLR@`&#lvlGJI4pcpHHI1JUs~i&m!18tdh0@l*}mhOiU#?$pl@! zN}JnEOP_gxPg*SyH;S9Hz%zn~@ot7$Kt73H1k&W8y@XF1-sw=2zT3ehf*k4>`;hZ& zlDH21r(HuZHsW`+=aR&CER(KzmC~qfoq9hrgy4`1j`#ct0GO%ZMwmli0hN#Md3k#5 zvGh#ytKWjByE(p+PJ(AyG@KJSz+A3-Zug7vY`%CyW;#qWw`OCYc`DMGxE!D+&dixkL zzaikNj|<)vxfWdHw2g(~Yc(eb>zO(KL3~it%gcQQj4`5 za!y7<1V~NB@r+iFwg48nOA3r82SSCViJ;o~!rE&(IK92m^ql9xsgl1cIZ%r;L@yf^ zD5Et;q^rSya2j$lq4Md-h~v)AdR5kYqy?+wdQGy9ays34xH7OXEs=iUmt42|+CG09 zH->zBF^gOwsM=~O3uX|q)#zDn&wJRprGZbFFWP@Vl%?N)V5$^6R)$BhP^fV*G?|Zf zbM%aK$mytESXKcUs`;Do(EjB3UQ{z6j4sWCIFk%e=Wd1$V_ecg57`s&BF|pJd>idhGYz z7j2ywPQA;->}wQ@bG(>8>{T`tI%9JGm$7<2{7(xkMZ|E#_KwYTaJ$tEw7pt?K(4v{ zRz!==kyXU5mfWB0BMWHGM)~)=g;UfM-OGORo7D5Dcz&-GDyPWX4}9e-mzihm!$-yi zi0u{*{`jp@)A279GDk9D!Og{WcKSQyv|xqS!4p}k*wn!8pn>9B?^TK^BG%f=TNB|y z$9#W?l-7s7DW7~TgN{RvNAyh|bUER<;n&H6w>t+H1z(CVq#-1!yts=|Jw6=Ul%Np& z9ww3J)3V{FQ`xS3_1h~)$FBz(0;O4wvQGJxQ8IrjISGakmQWMIC`QFM$5`&piX{iw zVm`+)5shB`6QEK4mlv;R%Rqs#pW{H;ddV{Bo(JMat=UYSR#E3WUTwsnNvG+rnCH`X zeJxE13B>C8grqlTfOf&Bf%PU8Jm24xgF^#4!R8Q|T<`2DJb*kR!>U@S3S!^BoW3mA z5zrhzpd&g3QS`3@OU?C2(MiLpt4L70v`v9ovym|C4L%rVxV&+Z50O=4ZdaON(v(m(B0&>|!jUQd!?GmqusB-{=;%G#MSV#tGP5Hlemjq&`Duc_4YlSO*ABAK~f#tU3(T2y*;lu z>j-nRyuLX`7O0m{Kmfrvw3$N=o~D1dTL*k+j0%QJ;p1>_-O#Bm&MhbgRJa~AKmX@GpgRN31q(8dGhW4hAqW49E@r`EEcw(y- zFoolx=uD=b^CosYHkNH&a1P`w+Bt*drxIjw{3Llu<5JWWX3?w@rPqE$${d{a;mp!q z8yg@(zF4K0HAL>FoAm?<$N_l8`{;e%^6xz!R93Q9XEMQt>gHR5--d4y{=Zp6+6BM5^1N;mKQ`8oEclG4??>^#vg7Py=V1#?D=Apk=l2qSSTRC=)E`CkAA(2 zkLwo}pmHBWX`^jH2J@M>+J1kJch&%OXw@7>^ls#8oFLyUw^nu)RdrONkdY) z3;Wn=a>f=RxZnOE@P_qn=XMQp*Fz|6>gQDLpc{|PAk|)CHoVHzUnDl3?bw&r)effdQb5dL)gkB9ms+^OGQZQT zhez#UWzKm|p|9CjpzCark7<{OcX63t0^5!G@F$>E)dG9&Q5C?jJL60846pZVznLUT z3s@V|T`3l?6t|2<5JLi@O@Cnst~f;Lyu9rgA{WN8rA*95^{*5QZorP0eTP*4;Vk4! zgaX%G?GbqY;>B*L?DmY)R6uA~5CTlz3U=w9iXH8pK`;-2TW@nsb(P3P`T7sS#|^2c z2jGAn6%jZ3SV2d#qQ1G6xA(Ia4y9XPwcqb?`77GsR_4P$7_BcQyC2>r%*UVP<~||> zidm$<%JvdIrOKo9-GO;(sB;>>?f0x`v&M*lV6)~5@yt!>3gv`5KXr6qRV?M2#V`0uiq-+1PoiV1fI zb;tB~_=JVdxDn7S8~xuj3X%>>9t0OT=N;j z_?N#ZTcj1RxI&C}udTm-OI)AmX$H|hk}2S2K~J)S-LKDe_CxC{W`~m6r5{9@;V(F* z2Y-2W_Q2~DKYjb(u=WKuEVr|!Pd;NZN%Ey^2R$OP#CY@}mRczi1M$JX-R2VztsLc}ho09=A zjO!T4jH5Fz_dZ6zr4qZ4M(-Qgq1>Y6^HjFwSJ9zz$|B+@|6udV=I;0EJEu>7Mkawc zkY)+6%FavBib*gF!}O?Q5t$?r(xlJgM|o0S!68dPd-QHBUh%d(LMU{^x$(fQI&(>D zvpBDIPTfW#?}Kl9_b|~%`0}x~d8(iGJVLoH80#73*iKZ(yKK!8neTBjYKXKiG6ex0 zNeijT%c&bV0jtjfd^%S<*pcpG?5__9Pkb|xktnrlHhN#{|0mbdp73Rem%iU4#!sxUV1P?@8rxZJ?tCzN{ z0HgZaryz^?QmQl;#i=~!a#y+$9d*WzR=-4iO%`)vT@GZXzcY3~(L#DVwEl|P);;g^ z5jorp*2B!z*sI|-(vTm3N0BG#VFR-Gv|~Jb_Q2(IKuP-F+%j!(Z_IdNSZ&zbjpfmG zezIIQVI52low9L0m4eLMi1DAP*O&+n-zWs&3yVbe|0K~p6ssdi;pJ~_%ZO*|S=4_T zY*4`hLj+YZ11k~SYz4}mhoFcV6C-AR6pX}}sQgPwYQM{buc|9oFd{S^o~Nr_PO6-f zD1B1?y!TM)TIbT%Y4gCDD}UHb0jF>v%etx8^=^hm@dsMAB_wIsb2}9F!l)n^!RR?< zm>v>FUjUobU`Yd{pLqX_?9ToI7U?)L?>c}g=I6m0VWz$++^CF1kT;sMP~FpkwS6qo z&DKtI1OV`UZ0qErK!m_!;M=_|3Y^uRmK7ogSO+XWG_3mdmP8gfO5R=G0|6hz%^T}- zd^5n#jDpZEUByCPi{oWGF8~l_U&SWJG_w2C-_DO1goK-|Gf$mBs^*PHqilkZy&9XH z!WfTYw%dT7Eh_z@S=XJHT5#Y`<=+JLLgtU!3g|){%BI@sl=bY;q-b{2TCV{^mPeAFOB{le4Njc28J(e=2)bX*3qhRf3pTS-9UQNcC$g}Ih+5`kHIH+|^5kEAm06&X zZyqdKq0JnSBzRv8^JEw%2famkg=X*<^l!H%CzPpZXwbPIDRAe5-Z~x8sn*Y-x zy??D~(1XKz)z{e@7ksg{T8gU}>|ug;90>9L7?ee?g;mdIKnzVAbl@2o_kPORXKBap z4yrZ6VbDk2Pj4^@Qf0RNXS+{Ya;^~xYbjGS7#TTNg5BUnTgFK3Ex4sY&G zasHrdbVnDFza+b5{3}pN)&F<81If%9PSiUNcoE_1U?RQo zf7rLz|63%^K*E+X*V(=BkLpGK&x`aCKHW?!rk05R=nBJhd?qOmi!oo0^~dn?(q6Bh zz}@V%s77+;jL#1@(?rF)eEB=tJ9>D}#}cJHPSnkok>c9R)c*U`Bkl$#_H?#EaOfUs zT20JD8lxtvQQ1lMKpb}>J2iw`}(pC54taV4iyKe|d~SOS zH!1H^1r4p(+4fYlXZvfGIq7LFdm*gEMWkcAqxNHTWN{M{OlTie`HInVHbKX}ncmsw+)os&p5)ofZHI67s<=$;P_qe4PG&hhHEZ&n|3se>`{p22j&A zpo4(T^+oZS{Sn*x^ehUdX=rdN?m}`gy~om-5X$&dHYjc6?|3J+hDE=6tj)sl{+Nm7jCV ztRX!8iXYYT`N##F%Lla$rMNGh7Y>DP`_n|f8KfXCg&7nf76b?O)v1*+>{_p!i9P*S z?<&W_DPXJS7+JQM}dju2In3LXW=? zhBlrPOSa#d>LH`Y)PpTAT1ugpsF$_hxOOeoQ8PxO2B zNFz6-sXEDP^Rng{D0!7#aBQgnXwB9rQuxFu06nilao!uwr`nJkAtceZUSpk8hEtnM z!*F7=nWMgWOF1#s!QKo;4xbk6%?3s->-DQBho5X}>)&Z_k%Ur1g^~u~#tZiZ|7>Eb z;J^lukU?F%(G$5o8M!V<7LgUy7D?XvK!E+(OmgtS%=BSnVY?mBIGt%MpNdLfUXsBg z#$nY!wdGr+Xr-CBk^4xqp+(Y1VaGDDC72NF5u*5Rm2xIy8x!|4#51Lmr!z?U5Aq7P*!H4KAKv)HpTxO^7N~VsEjr z>Hf76Z$^l2y!v`i0*D0o2!=}sH$kcSA8tC>b}Nw%Mg?8Xob9>jZfT23L8<~+3_slT zJOeojay)7WuA^)$&VmhSGXXfKb2IboM1=0&?dtr4@+Ht^D_27Rl?nW@BCAE-*dkBf z=<;e_NS1#za$ebCBZ%Y0a$F>8U-_{)a6pWy)Ky$M7MU1~a^-}f8e`zS%Zd}7K_7|! z}7sPw}3IcXRMnd);Z?hH-&13D@gW#FquwV!5y2701eL+S_`L$860UE8L|W!+lg5ma#sb#UlIP7T zJJ)(6npdM(@Q)0WPpGO&%NFYz8oq>UX^Cku7R)qwmee;Cx2>`lkHOioR;IeXVta3p zjeRKBgdJKW>ylMk=|skorq6U^FBJL*fIBtbyFPT|F*=nNcQv4aY~;O%rTgYFMqTN> z-sdN;m0*TTt@&XA?(9&}&sBE(k?chJV?Pf~W9R2EgT-L33nsecV7Nh|r+M(ee~+U) zw+Rk zj0ZNv)y-OJ2iNxY6!7;Zj`EI{gY#n+5gkDi1>Gs`4G!Ntzd>5b!s5B@@h^0Tfm|2M z^X&BI-`mI<;B;)$7DuiVUkpy?!ES!Ile|0uw44^jGjNT-uWah*8{*!2T&=&kZDwkc z-EV?_e4<$(QYj@OOM)k<`7;`ZM=?bvnV|txDMk2KfRUx~pSCcnHhz!Mq<;7MtZ3<) z`pqe)huD50H2~b-ZTZE$=gcNyzRilq*^5^?mo2`z8cB#7{q9zt?HBG5UVGuU`-^|Y zoYsY$k-ok8NU!83u?M36I|^qGC+ok^`_qOnJ};RJA-)rkap^w2;hssvr&Fa7SPAt$ zbJeN4Cl7g{-dG^6Oj=K%(ynH`9vGf@EI^ir08SYL@Z^w212QxgB zV}&fLHa=C$Op;Re0D(Lb!$g5@Bm;blFwY04ZGdw`4uHl^{$!2=t{CdHJKkulR{4P|VwmQ4~R79pM&nlxS3a*vDua}R}h+J*2p^bbXoLkov zDLy2(_!ZSCxZ6%puI?IxB?Zsld>*46ZK%_@TzIb)z3#yY0-0tIhi_TbN~3eg@$#*+ zZlRT9I=+*o{Fs0ky7r-yS=bkh*JiS>VBdb>#s59kb%D6mE3Xvo4Z{q;Jez0Aj3nqH zH!Y{*L{ebI))5#U_a85<viT?iHrj2P=leIeAAbsWwhBObc7e~kK)Mc~XIs&6f5ex17ecS^HU|Z3 zo_eWE1h_NIZ=Btn3lC!!f3q4KJJk!+GJyMtL5a?ir~#oQ#Tp2Z6R!~ft%8}X;3O;5 zS~fr&b1m=aH2cnYnD!KvDRAw!UYU()A|lNIN610uXBrV6a8PPLQT0g1drs~yK_$g9 zqpG6^=A-)_}WOeZwN?!4EL8m3E0o;Bk| z3e*T&M?dzXm405R32vE_a}pylK0`J36%hhu(wdRS z((2fhr`{rle6FoD9FuaH?4Z9b>yNON;-M?rk%>@TwQ^xhz>~kmA3P{}c!tEa&3{Dr zIOz6Ti!w>M`Bxax_}1>Cv-UQo$4@qK)wWkqE%edoA7(d`a@n<@ec{_Y;R{<_U zOflot@(1u#MuGD54=22H(eA%#o&V?8*qK@6)b|2fZG#H=?$`2DFRS$O{IZE4BOu4*VO@c*uQkwf0W0(1som= zkK=v%Wb?p(&X#)bbV&?t!T$I%T>8;bO~pULqoSJS=P^E=F?@n){D#t=r~P#nUj{{$ zg%UKFkL}pi#qoT2&(?|1qr2Kl;2o2%paJeny40K3VkjheI$mdDFv@OFm-* zlsr~dP!y8WQG87lEi@-ZB+Vs8m1qc`4+*ALF8K>8Q1P+7(?tY0Uwe>DbN1M{GG@{8 z_Pd+7FLcjusol{lS$Z2=dKCNK_^aCNy42$Xu0L0{KR8o@y*(Ke2s60o`Bylrm|;iT zFa%b`1KCH8l+-KlAq*unrX@lPp)I)EL)lEwd$O*MZQq7ACU^q$%~b<6uj(-O+wWF! zr^VsBSiLhr{9oi%wZelnvI#*kvNPj4l#iXwFNy=K(rOjH4oHse4c(miwwbxwh<)Gq z@cL1%K>aVmqV;4%Zdlws7CBzSs|nr1swYN2k6P9WZ8CKdn$Jrq4P0~SxSfZMFT>Q{ z3q|wRR;$2(Y?-VGX3!MT?Iby4b> zR4OnY35&o8$;#{1LzD$4UC6`e^heXee+=-6Ff=OUs!0RMKDF9vGJIKTZh^4M!!?zU zPv5KP?eYNDRz{%VMD^kcVUTi7`=GBFx9PM^UTt2rNU?lWZ|C5ixU)FK7yi~f9+Ktk zyJN6`?-icB6Mg<>>{ZezFUb$Ebo#EExYBaboR|P#_&1?u$#?hr6^-}9#NA5X1@JqQ zd{w*|uTKxL`zJw6N+oLTlJ0+qt)Cs4S5ks0FSV8w5Ajs)V?g8(`F0mf8+#v)G5iqB z1rCncsJqu}P8Rmf)aw`AD}ef8l?po3ofx>i6@iiN-xDVd91Oi38q8Fb$0=zHXnklC zD}U)GCYzR3=Cg-u$I6kSkKLHX@%0U!k$*33LHo^GD~v@eHTMV%$As@vxUCeEyW zit*gOvfAv!NYd_{Imzddky`?46MwSJNsK9Ep?7}pwNyb0QZmDVE%8CIeoTz7Rd7~` zMwZUk&b5k$@o}lSuJMC|s|G2l;fGfj{03M8?AGyHi~5Y{tt((t$!qa;tY)=1`gDa`Y^(bh~Xjv6Me z^BgBmQf6#?<4i-zY1hxQi~DfjQ%qCN+auNvgkqfLMw&ttVY{D;JUz$G@QX$b<>QHG zyXra$w2ho=*VfcmvrGdb?V0rG!$$~wNZ;(0#v70uyJU3~p=-_MHoSjhYTvyP>a)1v z3N~$Ihhwvw$6VW>LvmB)2*$z=;$Xzs*3Dhf5o0(HMkGW|9F1IY8C!q%iJ$+t>A(+4 z@BjQl9rGXJgaJ|-)K~m-+|^M?KMTGSh&wQwG|L<`!8QhF{IBT3zjlOxdnEXb$N0OO z7>htdrx}#0%Sm^8QQNSJDPH2 zANT~+NyDGLQ2#RNVe2+W@dZSB7#$f%p|#KwS$<2ICt}uRfs4^T-9em2n6Hc6!nB&M zF}@d`d@m_IfVQ{;bIa?%m)?Q4hn;lN(4_M41N}lQfj8aO&#SzVi?}MW@W#N$b&W5J zqS4i5X$7g-_nNuuRiYYCrmsPaG&7EMUNvA=Q<>d z@QL5dl6S6jBhIKfrEV3ON2Bj1j2t0*ybhiv1bJe0C{=r?z9M1&k%H}Y;F~_#ai=>h zxueuOceqM;xO+x4{`Sh!m7py%Zwr@Kc{PgWigiV_p(Zj4vFJydFJ3APkED@(qUY=L zU(Bxc^bH%Q%%HK#f`a`HFW(GF#^v zHC>mmD^s=9?BFpkekxD5!nxHv>EAxH>91h_e&Kai`W}rtmg{&_>AM!&+MQ5LnE zlWbKPx}hidpcjK)h-Sr#dHMc%?KEGkW+=){Q|Z(9-+sPTu5_&+Xv@d}5KDp-Q9aY5 zYP%oYaPTxHTxsi>`&9I4hOid-her@iZ(; zEV&3qpNGxIDwx;^PJ@trs(VjcLzS1>HOm{x)NfN~Bs8eR<8WnPWAWp{A`B~EJ({GU z+(Hnh&?Y7-P`tPGWr7ssw9X+DFX5XkY9(Rjz*66-7xwGk?_HuTQfBkBMT-X%8ds=x z!SWL`J2S)=a4QE|t_boLm2N5R0_j!P^!Gm5OtCWExAiLc1b)~ag#1)%l)5`y^GKO} z>bod)D}G+*bG3awi@B-Y!K2DAZet4%5W` z_;q<&DXxx3baTI=Q>wg$QnhqjSR4kh5`Da`Rv7aVal)sXo}XHLBfo7phXXLyk=9aI zd(k~y@i`7-5XH}W5#eR-C8+mFgIN60ph1X~p|M&{!M%vFXTgrrXo>-!LghKoSS$Ix zi6;zq%H<>RkEoYBJAKIZKftT&$-MQ#w38Nc<)Vdj3s)Eav71KedrOo z5qp;?LcD$=)}29})~`H1&Hjn(;hjafQk|4aLzsJRnK>u(T`Tp-l;`)DUe(q%L+?la#@rkZ~eos`Uw>)IeP^NnuQgv>dey)sOEve1asTpzfEzD=6&{Rrj}V0mJNqE@ z)Vw=2`O#|U7#&>Jy53hK{Cmv=lMZa5?>!DYFxt;l>NaG`+>H?R21*t5aSsqqDmy;u z>PGs=odx-It)If=kEwH8Krrxr%8vGt6xqIcPgEasarVk;{y?<8LnLG|${LVPSo0D# z=1#3Tr>_JBQp0vE(W&KvGcirZQM_&_VCdqon!F?jdHYga2W0$l%W>!D9=nvxzWzeF ztYoILd*3a~Dw+YlK$K>E~#$7Ia=WUGZ`k4`oUkX@pZU7UJ2$dl6&#RUP#W z?*e+U{QBx!^Z7bsb!(N|km683mLMz)ce9{(_-)m!#0yJe7c+eB4Y2I6B!f|>+d8_W zg5JxXUUFId(qaQoEOnxXKkNna`b-!7QB z_5U*b4F3Ax<_LDfpYOX7dybz)oHpsze@z^9;q^^nH3!cdRP65j6K=VE&&7M~rn=~4 z7>C~zsCneFm$~P{Rq-;YORc}{%`V6wdVt`4z|KMv$X(2bUfkfY6Hc&Ttu}3O7;$n^t>~S{@ZVQ9Zv@xdYzU;yNbUE`cgS z!(5`$GZtfKkP~L;jE3R$ul`g0_6rq$v}BR*i*&hu{e(M= z+{amV^rShZ)Ht3jcKYb&_(ST_4khxnFD-;?zn}x>E);<@TC! zF~uI?>FUA<`ys)_70YO?@w|_zcc+z;9Cb9TpZvkG@cmr)>jCCiC=q<$TRj;Gi0^tC8x^nK!5^HU#{X*w7 zeY~=252<9JFSL-_ zvl~x>XsU7RGn_GR`0xAivd7hu!{lI`vRtlk+=<5qJ6GBQ`-l_#&g4CEAol-YLs*tyiz&dTjBf<$u9g$=kY1P6B= zRtx$1D-ETH9bf3?Dm5KEkd3tbBa-OmXs9yxOUVCg?@9xb%HBRTtuvOTIcg~mZq2Ak zXr|^?QC4QzA}Fa)0#YuyW+qYAG@7|!I%>G)l9i%{<}T_?3Mz`t-^3J`anA*pO3eMe z2DJU(zPw-FFWe9J-oxdd18Zu7 zYG2YD6V+iS7}*efn$dc|-C=|e3AP=zA(8J7z0-or5HlP;e!VGFW)UGd(!22tEx1&e6N00t3tPGWi7kP zY38D>R|C`Su0^O$nzElv?r{$AEulYh)<8NeIw>NvcT%or&yK5VZ}@xyvpRnjQ3*xA z#7zvLcDqUhEk$}z_oG{OL`F03zNJIg?a_<^)+$GnO_sLDr;a`?D)iU6Ce!?&gs%hs zJyy}XQ_fpkQ5k6iQ#d!Hyy&pz24yqo$olU96VUERn$!iTw3k&lG7#69vXr)o{M%?# z-^j6t(Z86eI&Us8ROdqs_0o2>JK^(aPhXn6;zK-f+=68Ysze_eeKEV&{kSRNKiAaG z=w~&%mQ7@>nYS=jiUcD5fR!->spnvC*9T^VPz&|;vT4BPEww0lrN^x7 zvzpwHl$|g6bMl%?{*)_uP1weE_L?qd^mPSvZf|OL`$Tqb#5F8&j5T*J4~V($(uJLw z?ErS8^V(RZuf8}&s^PzW-1|1-ReVh}iGAlvSguAa3^~bv+qUohw80@nMyanudN#TQ zd+ra}*~kros$Gx%<%d1MZI#-=b;98XsCW~j_9}{E8JLr|#m3Ef@fYdLpx)sc{g@`P4Qck_k(O>bdE24grZ%t{Hkn)3Wk0Q3cv7bO@SIX}6YSsEHz1Eo-y7C~ zv?<)J0r@&KXunN%9}nke-Vei_>3=;|1Nq%QnSwi4pl5zCyZQ}etIhnRY1(y}dAYx? zy~$@z&?NBEId?{AjyI0Ji{5QaTf~M_#+6i#5EE(ge+E_0qbp6Oh+5c+*Dtxrjiawk z^GNN!&~Vsd=ztE_6uArntrx94%6M`3Q;z~S|EgJRsLCEl&9+F5GxTld512-KA-wF1 zNUN+dl3Qc5LQA7J_QMVvmp1*;%efrQ(1*NR)HJ)QERfFr&qoXxJUoIF-R` zie(4KHgN*T&=A)A+ojYS`9L&1g)0o)SxzY(YrSy+jBPkkV4m+eJESrGW9MViyypna z=>(2x)%u8|IPwDTg|R}rzcH?_N8-y}3kNmA@mr8X+Xb~PzXSQNPWIa>AJy_9f?AB& z!M25*!^$-uu~HbvU%Z?R#&81bGZ2F~vU_OlsMoWQ80H)~J!SUH)3Qvv9`8)~@F32q z=xJrrSYSHpF=*}&JZ^F?<3 zF`SYI1c7}<`p5G5Xkq*{TRfpDl{e)?LiTOfWY6U3%^V_3H0N(4cuo&ypHpcw@OLw4 zF_g|ty5%ncU);QL7TroF6jYAPL|nN>dFwq<>Qi=JW%b7@bXFHu{s@C9{Y+) zLcj_Om4;3!&?Q(1E@DR)x@9>9Ma-I3ERGnbZO#tUl79PomQ~BSefC%n;8O08{fnt@ zjqEc>Cu2R1QbC|tkqhe^5^2W6DE36kg)AyFDY`YEIWmOqq%J3=b4QzpYhFhA1nC&h zv_Em=;mPBaGjT13hlY~wD02P1-za+&{#@Qz;HDHc&{ib5v9@AYo+d&5UVicPyK`Lx zk`pB`-?AB@7#&6&O}$r=8HMlRf6%$k&I6W$fX`mho_RB^ABe?KiWRpiek2wMefz(u zRerGcP#di+gz2=IjeDhW+*AFJ@H%7ejw2j%Xj*=(q3YSo8%nSPoD@DV@e&uWq3b*0 z-E#8hvlFlVms|Wa4)}HQTbU3Tu@b8*H`AWOaj{w$ugOWhV#QXfKQ%sJ!hshborO_a z-Gfp_C4fa`Yrku(H2;LaKAb`oMkW#$FVQU+;Cm|480L@pz_wVrKe^#<0h6>K{*u0% zzKhS#Q9q@jbM%?ogHFm`I7d#g9gFN;NRN!lr}ok@p-#+_$Rr~3c^nf0@jrSfM^5Sq zRCxhy%{L9KzK-hkb^)SmOiHc#o=pO&$QlJ1~({Y`pDA z?n1%v5DG8%=l*70bPjWsW!R!m&fcvz)| zv^6$c=L80+KAd?&k6F|_2Okr`1V5 zFso3b?TRH5({yH(wCPv|f-y|xg=%oLPIk9O1?IzmB?^H~(Aa`R-i~*1HHml7CkIt{6{3a+5J^0JV7K=)+I-Y2e;L~FuouL=y zaeM>_W?rzYL7d9ytnJF;w(dHD&FOtxtl5TSAy#{|%$zEVo^%LH*>1zJQa?pF=p$3a zh&)|a9SiB4^JL8>KKDOKPpEL3XCAFydUV^hGS6D>x;g zU{iPHC4DLVO~E~I&&^>eYIugigvO2RZt4FNEIn`WVWGjpay-nsg}--z z#(xzJzvMqUEk$MiJ5c*ztcb3~uuz{bEQAg_&F4w9$ZMB{%fy?Uop?#imZcgEl)GB_ z<*2q>ZsGIdc5#_WH8%Lxar{*HA{-TC65h3NsjOuJoj=wZloJHcGbAfwIO9CqYi)5x zPK5;E1BMk21A%}U4PfT|i(}G)ahTIpk)*ZnIkXn%EPI$~(SV{Zq32r`QGxhe%ye7S z!>opvjcC%zOiLERZi&d&==1)02;z7hD(#KHj56?Ujs*A@|9x_MA{KRPQ3^dJ6LQ zTl>lRA^5=~#L^fX6#IupqTyjZd z0k$%vKl;xEm`{g>y)(PFX@q>ggXq04#+i<1E}aVOEp-5b9_RFafDH6E1F;d($LDXBZtUb^NgVO{-dPee=t;#wfP)xso(Y9?!*)ldniIcE$&4BK?giM|6`E?#;WS`}UVySl6`#_!v> zS&qSO2+p{M5sgsAH&ir|MNv)KuIoIj49ZE<%E?9kJeX1xoWrcOmyJOjYFy*g^lWUvU&>QW zhL8-^c!F$8b_fNl7)iqRrWMXSdWXgrfLZNx@|i}e@`S&AU0(E+-F;@PZp5d_sZ
!dq^=bGFNC!ztow-qvE-T_y}NI-AcY=+0k{l z>`~gKn+T^7U=5>^>{ic$#$(*%BI?A*1KgDT9`%WxMuE%^-oA9#);5C=(*A<1Js{t7 z#<=CdXVY%kE%M<2H>mC?e@07l+r{WED@r*gqR+nd&ybd% z0*>Di(H{f^Q}Dh&R)H|@4Nb9Z!0MRKI8IVoaNZ_-p{eS;4`+yWs2>)}Yhq40F03v- z2VKzF4yqEZF#c@gKepL#*6Y428?kOk>o_od+@8N0qk4Ql^!H~WeJ3huU3|mS03Ru_#U>QLW{#~!~rp{v=0zSVRbi5%wJbX_%kLK_ z(4g56A>R*|^A{G>KDH2piAGJf|;UnDadVV#byOqVbewq(^Kr>YJ9!1g;?I`AWl&O`*^SKVpIlV_wdx6=2dfB61wG)Xt6 z;b6xqz|HiXZVZr(uhqH!p-!mSc@`}D&av9}1$JgoVu`%zI}@(U4=g+2yf7J# zutC~uzcz~?zo)xZU-5C+SRZ1Zm(_FRl;4x2<6P#phs-m0CpKU5*dUe>*(g+%RW>r; zyk6XV`oOhc%kn33*Yv4IucMiQ330qTGp>Z&eYzBdDRdtZI2+XjEv)X8a3 z!}|*K?21zcII50s7GP^Za^-BFko2HK`dCekUl?^UHN>h? ztSUcg2eCMa#X&3%VsQ{rKnxwl&{4z-V(2LLz=+2V;<3YLeIT|DV(ajk8^mJ=@z~-2 cGIlVBMI~&RRX-iM!b-;upFEUv@cixn0md6oOaK4? literal 17859 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 DEXHrh diff --git a/app/src/organisms/Desktop/Labware/LabwareDetails/labware-images.ts b/app/src/organisms/Desktop/Labware/LabwareDetails/labware-images.ts index c8125c0bf50..4ec15033962 100644 --- a/app/src/organisms/Desktop/Labware/LabwareDetails/labware-images.ts +++ b/app/src/organisms/Desktop/Labware/LabwareDetails/labware-images.ts @@ -59,6 +59,8 @@ import universal_flat_adapter from '/app/assets/images/labware/universal_flat_ad import flat_bottom_aluminum from '/app/assets/images/labware/flat_bottom_aluminum.png' import opentrons_96_aluminumblock_side_view from '/app/assets/images/labware/opentrons_96_aluminumblock_side_view.jpg' import opentrons_96_deep_well_temp_mod_adapter_img from '/app/assets/images/labware/opentrons_96_deep_well_temp_mod_adapter.png' +import opentrons_flex_deck_riser_img from '/app/assets/images/labware/opentrons_flex_deck_riser.png' + export const labwareImages: Record = { agilent_1_reservoir_290ml: [agilent_1_reservoir_290ml_side_view], axygen_1_reservoir_90ml: [axygen_1_reservoir_90ml_side_view], @@ -254,4 +256,5 @@ export const labwareImages: Record = { opentrons_96_deep_well_temp_mod_adapter: [ opentrons_96_deep_well_temp_mod_adapter_img, ], + opentrons_flex_deck_riser: [opentrons_flex_deck_riser_img], } diff --git a/labware-library/src/components/labware-ui/labware-images.ts b/labware-library/src/components/labware-ui/labware-images.ts index 8df00e07f2a..384dcfa0ad1 100644 --- a/labware-library/src/components/labware-ui/labware-images.ts +++ b/labware-library/src/components/labware-ui/labware-images.ts @@ -475,6 +475,6 @@ export const labwareImages: Record = { ).href, ], opentrons_flex_deck_riser: [ - new URL('../../images/opentrons_flex_deck_riser.jpg', import.meta.url).href, + new URL('../../images/opentrons_flex_deck_riser.png', import.meta.url).href, ], } diff --git a/labware-library/src/images/opentrons_flex_deck_riser.jpg b/labware-library/src/images/opentrons_flex_deck_riser.jpg deleted file mode 100644 index b8576833538d29697692f0c9dfef8003f02bd1a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1009921 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%0AMa(? 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

xmlpa(2Dyi32`07s79Wzu|>m{Vn8w)+BK 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

(S@AZ)&^3GThXXIi|I-L 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

i{~t}~!75sAvp0-+YM6@R=Vl3ZL#07~X3AYp5t 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

(q46+yu{sYy3j36+@SPS0%t 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

EIln=`3nl@7XsVBBMFGv5aAvj#j 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

`R6*EqOH2f#4x;mARq@ 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

xI;P`*vc95t$5|xHxMcIe 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 diff --git a/labware-library/src/images/opentrons_flex_deck_riser.png b/labware-library/src/images/opentrons_flex_deck_riser.png new file mode 100644 index 0000000000000000000000000000000000000000..1fecdf8ca4b677cbc16d18f868d1940fc5888595 GIT binary patch literal 690224 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

k%d0u5OU7GLZT}`q9^*8zs%-$d|L12t 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≫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 Q$|RMV!Ajm!q35{xO&#jf7}5=O2F)X-Dg3& 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
!dq^=bGFNC!ztow-qvE-T_y}NI-AcY=+0k{l z>`~gKn+T^7U=5>^>{ic$#$(*%BI?A*1KgDT9`%WxMuE%^-oA9#);5C=(*A<1Js{t7 z#<=CdXVY%kE%M<2H>mC?e@07l+r{WED@r*gqR+nd&ybd% z0*>Di(H{f^Q}Dh&R)H|@4Nb9Z!0MRKI8IVoaNZ_-p{eS;4`+yWs2>)}Yhq40F03v- z2VKzF4yqEZF#c@gKepL#*6Y428?kOk>o_od+@8N0qk4Ql^!H~WeJ3huU3|mS03Ru_#U>QLW{#~!~rp{v=0zSVRbi5%wJbX_%kLK_ z(4g56A>R*|^A{G>KDH2piAGJf|;UnDadVV#byOqVbewq(^Kr>YJ9!1g;?I`AWl&O`*^SKVpIlV_wdx6=2dfB61wG)Xt6 z;b6xqz|HiXZVZr(uhqH!p-!mSc@`}D&av9}1$JgoVu`%zI}@(U4=g+2yf7J# zutC~uzcz~?zo)xZU-5C+SRZ1Zm(_FRl;4x2<6P#phs-m0CpKU5*dUe>*(g+%RW>r; zyk6XV`oOhc%kn33*Yv4IucMiQ330qTGp>Z&eYzBdDRdtZI2+XjEv)X8a3 z!}|*K?21zcII50s7GP^Za^-BFko2HK`dCekUl?^UHN>h? ztSUcg2eCMa#X&3%VsQ{rKnxwl&{4z-V(2LLz=+2V;<3YLeIT|DV(ajk8^mJ=@z~-2 cGIlVBMI~&RRX-iM!b-;upFEUv@cixn0md6oOaK4? literal 0 HcmV?d00001 diff --git a/opentrons-ai-client/src/assets/images/labwares/opentrons_flex_deck_riser.png b/opentrons-ai-client/src/assets/images/labwares/opentrons_flex_deck_riser.png new file mode 100644 index 0000000000000000000000000000000000000000..1fecdf8ca4b677cbc16d18f868d1940fc5888595 GIT binary patch literal 690224 zcmeFZdpy+n`#)^kc3WFpOZ!P%qC`3{4moGoN(o^*NDjj~hsI!x^U$^xQf8Mj3~8nB*`9WB6Tf9k$OtzTeO9d*8qN_t)J#9>t8A_xts_j?e3P zU9U;_(Z>9nuQz-xB_;KZ#UZn!Qc^2_kdpc;=&LW`6~fP_h44c<@Q?#uN(!|V`S)4) zZPQSA&Cd7u$&i!QhmAaNSd^P5&fNAFVnJMyxI(&nYNg!rSC_98djeA4>I&HHh|UYiY3TIwE}n%bN74N>m;9(p<+9%`Gl zHMMm#H1##K^wc%=jdTr-bTl`=dnm!}f<3*Bj+z~OcQbf~Ryq|D5@@8M5f&DP3fqms z1^Z}d85$aDXliR{YpcUM)bSAkA#UO70r;)&uVChd_Xze44DrPUY(}o==8hwTpp{^$ zZ})%={BYR-{5v^;#5BU)0yVTyn#i7(-stJ^;eCOG;L}St_w>;4I_-t^3JAf&d$m5i zH}DiL1cyI``)@A&;m`ke1CXt?^@n@>mutadKimQzav&78@lGKB<-766BLclNj(Xv7 zgkTS^1EH|Yt?ze(4>{`fw>3D9z2= z?R^70abfr!$lcz3z{|`n#0#y2s9ar3OI=I%xR$n&rk0T==w8=IQ}gXxt#O{d-Vy(J ztHE(CEh8O0BW5t=;M#Iy&y^28PgDa_?dIvVTisnx2PER5qo;1D z4gcwA>gs#BYZ~f$YwEqfnr*Nzc&XdzkFScX$`h{W;iac-sIP6PZn)c9SKUBQ2Yxf~ z@K!g_^w2fX@o?AC)AB}KVad9T4*B9ibrJ8J>zG&2yWdXxZeB7dBR3DkQP4^rh?2cL zmEOJV`(Mc8e{|<}pAS3b1sDAf%71%zJkC2L%q`e!uMf!Xe`{PC|J~y8ZlV8q>DpTQ z?p`|Hdg`9~9tP?jUOL+92HM_+U|zdH_Ie)Lo(5o$Z`bsXrN1>sU8CK)?~U>Q&C=gp z+vAj5fR7i1T@9uGgUx8`>v($Tc&dXXxT$-2>wp;;=<0$^?bZYjF>uq-a{G^)`Pj4m zFK@;J7ZBhKE2qm{gaaoEjnfq|!eJ=_p0)Cdjmd>4>E_|4`J+~&W% z_`emJr&qA=M>g>BT|O*f^Z$qU``=pJ|15a?2aEf^qa+O^Bfbp-8vl$CZ=ajJmE=K0 zH%m#w=)Z~u+W$ivge+nNk?=!o{C^b1-rXPfe;N%Dt6AFkN6_H?OMo|!Uq2unc=7=& zc?E!{1_KgmbI>^_^>xh87G`^ohi8nw7%T9arE~~cz5ay~ZpKLd>uz#XW#!iF$saVo z8oY0}SM_)8zc#PBq!b_F{_TM+O6$#*%N)u2<0qX9L!7>2-{5nZ(${64e05#=`z^b_ zPfqV{Bji`*H`62@k~e!rVZyL6BX#{Ezbexnn%s9jS#-7wznUS|vCD{=bU57l-4dXC z```C!wIg4A^nCu#@~3}4{b9qhQ-43({LN=Ne?R;6g4Bk;pB>sS_08YUZf!Y(K+SiL zXW#zt`TO6cqyjKkfrq!|@CiJ;mBT0Suq201;Nh(~d;$+|g3kM!HT*yW zwK>L^Qh$qk(ah_kZYiD!L5UU5t%m*Obi<&#a8qLECv>xoNo!PoEN7z4W_uQr>5r^ zQrZ5sn#*7<;VVLnU?p+T?ti&S7FzkHiPhEB54}q&Yv^>zY>@n79z1uw6d$_~XfW?= zW_&R|G%d$VLYWIQN_^P=O6;5FUg^vT8l4RqD1GRzWz+iHydJ|Q#Dx zo!bcSR3($iY;5;xoTLGn5MX%y1R>)ITHSnJItF8b?z}vD=ef)YjqVqrBE%IF**;9ObOGPArU+xUauZTh~wi|EqYa5BRuMyx>mz|&)~kuTrKryH!{Nz9tZOYKVZwdv2kuQJ^=v%3v@}$B28^w zBC}3Y&GOQG$sf6frc==o0;_H4Ecs*0Ml{klW8&InjwEF%-6X}c`NBEeYmwMBc2Oc) z^n*?Nr{&momGxkpooCLkg}eRv`9F3kBO?-tIJFGMLRb=$8>?g88g{|$WCoMTbHi`i z!X6Js3ufmfb(&^oPsaG-7!&VG=jPT-xx@pj>b?byUQTFnogO1=RLAHNsuY>y0qZYh z!5$TH<=v!pi4VtgttUlYWpqYOO>}sMF0z2~c$*bcF9pbuM$LYh_m~Oo9usjmg3#E7 z>FH@x1Nqf*D(g|71-I(BZqOm~luXiVUWkZhX7a1!)-$zM$L)t3!*Vzxyc8zx5s|~X zkDm>*sPt~tk&$UB!>W-RPo;UUzFAF8eCRHN?LKH`#wOs0oH_f=GG3Sy1uR!ZX3z`s zdid*jcR||-8>OMKNGroGPJ5R`bP{^TNyFK&OsN^ir^8ZGHJf0CXTlD_v=wrSrmNDnF*U^K?L0*(OdqZ#k^}ja|z>B)z)4 zyqq*GmSkn-4A)jwR?cqjPh7liXB(XqKO{DBsf|IKv*0a3#tI(mFLa#ND{`TElysVP zmlbuMzUiBW2=hChQ3#4d;u@@I@;VzLO^tI4=U#JLZ}VU{UjLVofndWpw#qq|!V@hz zP4aGJ>1P8K+TT~ku$o)x;12WVxTd$WK6smTHZ~}HGAB~*Rnn~ zMFgubabZM%pA|Fb`=Y0(sWnwU-P+m3rNO%-q0NsVyS5y=5lkty(Mz7hL=5@7RlWSU z!<6&BLGF0Tw(#{AhQu*Rw;RU?{5Nf5%S`E5PZH8{t}k98T=jjbavWl<3F9P+tSb7E zQt>h|ye~1cK-)gLEisj3> zAjZW0r!je_<@lCx#uiJ#R2KVQzkVI1vKeLhGRjziE9A4s=VvFw$NL}3@5bq+hfln+ zxWne3q_OcozR=dh{?T(@@M(@nMh18IEQ+`5u`XYj z5y$eH!&kB<7{wH$lPG3}DeC8tdb!qYW>7}f9#^ML2greQ^F}f)=Jh?0IjXVU3v=Ej zv!}qM0@wu8&VX`#Y&Rw55UgLy^|ODEsBfCIty@P12M6sNg60!xuC)tp98r-o%C`SS zJZqb_tE(%sHP@Cq&`1u7ja4jY+lfM<`uqEp^wO<$tnspI$xQ3kCtCugZ?dlbT6s8( zN^@E^B)dX!b(~>1s`U@6lae3jo%{K++rXtwQET%PjhrD5w1|j0NIHBNTzRS3ROKg> z_&C+x_9BYCllgpYHj87gG&I-cwdOHzd{&awsw1eTMwujWUH#Jr*$U{$DYktGyLR83r+o$Dj%CJBjF%P}{(@z=6nmSJu8ag4sCW@*G)&PSWbRE>!vmW80duQIVU z#5vfTJ?X>K8>oDnW!&J?XnN(Sxr6H_4fALj0$Y5d*L7@vgtPgx0o%$@V$$S~RTqD^ z-DU;;cA!2eEyo`6P*``FWEX}l$pTF+Jbd`DB*%9e+dX&wd)Ubvo1qYZ8LPor{@kN{ z=F2lLLaQ-R2J#CJk%*-M$ypAPkXil4BV*&?m-u}C%&QdJ{@F=hP*l`L4EtduJ*mx4 z*Y*TBu*`VpJ)ZV>1l`5l?8$f#S~6oiQJ6gt&*~oxlDBo|X$vctcMb@(Z&Vsn_YcXg zBX>X)I>;szom9KYuhP%i%T6J)xLoaoO5=cTy$f#Fw!R9MOf1|y_de zl$oA$-J^RT`1^u3zoZ0!O4q-{+ z7JiXJH;dM5s^nK0evA4!2>q|h!zVyn!bmi;N~k%_8HZbG(mLW?B5b581?yS19QB>8RZIk;t&xS z^*EBgAOPjYRyw-?G$VGG#q=TLrpEsW`>z6{qN-1&4ccDj&d9mYBZawZ;`UEI4XV?u z@9Du9M@_3ysnq_txyYpJ`sq#cVX>Qd?aiucG&Vn?3xD0+S%IAQlpyb{)NgbSRongj zg)OV&>g2y653}ktpD-0j%oJ{;VWV*55lbZ|AkCXmUWVnJsfxi#leRKuvcd_gFy=31 za0i(}?!-b|uhWXBLXj{gi`hO9>1EoeC8Ndc@hTkXm=Mm-4^+&FN2-V%Q8}nEHasdy zoX(kT4vTp~=oy0zW&wn%hS=aA0GoX2Wbu!fL$_|dS5aHLm;xDiu}5>&;zUd>&NOyG zIZz-r0eBWYKh6vy5dH;!)>>6(JYHE}%KQ1WbP#`gxqJzL9pAK5-Jz?4>}mJx|uy96@^55O=ti4US!T_yRRn^?3V9C7!H10F9xl02ljupO(PN zW(cfc=25h1q30Z-lL;PzNXk@4t7>(Y;>A3c$19_KC=%cQ`DYRISQP_}5i}`&Rv273 z7bzsJ9IU=eA&4Y z(9*t6DjyD;#K50hn2NMO- zrJ%63Nrr+4`7eSz?{6WNZ4g{ z2s52aIgN?c^HK^SGA5!c1L$RQ*NjeT@YIV44pC@H^&MWcL}+q#jPLuraiG{$ZC!b* zj^w_MwIVuZenuZ4H9g07DNjL6cg;X%)(=_zW9!7x(CS!arG-|qhU-E%!24t7RPd|2 zfY%VuhM+w@oSW5LG!aRU*&3+c=YM41i}<+D`;0EAw^ACxw)c|nmescmM1!9F)sH3d zeILiwxw$x1LZo!B<(P9sEh35hK}8bNa2>U-M_W)?-+`C}&cRjsiq(vhEuJd6ZH&5s z>n;O)I}wdGoV)Q;rM#ZtNs6UdaSOnxS`8Fx!KS+m0y;moK`|Clz5l*{>|Y38 zvJg|dNOEOF&+;HTl~KH%AwvQ5OGF}hP4uib1b`5X98}h-d;RO>f&}|hNc>;RjbjyN z+L@Uvm?~#qSG`uIs&AR{E4@hNgKAkfLNJ|)sJGZc40^ol>QaX?s zWPE)Y6giN2PIc?G^M%o|1C9eh3D+9YS371W=~>w?BX>^Bx*VvtIJxljxL~fsZT+Aa z#ojK)*v3&gP7g*VB(pxpnjK!}9&V?yq89K!HbX_Skp_VzWiz9GlFEhe&zW6Aqf!^< zb*#z4dTzYN*)Alv%}#hB;0ppoKkVp4LEC(;ysPaV$hed=XWQ?obuS&I{jBaexz?IB z3%?th2rqSf7+QT9LQo3LbsBd`RxnLejH}y{#6*IMVK{?M&-`TwuDt%j7LbqeY*kWS zqYz4dgU5)RS}p5JlQI)_#1m)Rqo}?h2V3-xD$2a`*;lgq zY_LWGixp-vQ0Zb$?~P>fC4c1lk=czpV-vaa@)@SCuO-n(LpH^+qh5$4^Ce=?uLqm3 z$k&iO(~xwI5yzs+*DRa?fk?R;{sU<<$DlfpfGbICO(j#Nd*oM>Mz-tqC%zE|8q_zE zHMqH^65pB_iP5wefydo~Y2^tt3C~jfSC(xkwT?3>-9j+KB&qZ6{K6APZUSJHplVC0 z=Q2q=->0rQ%b#!!no}roZU)jf8g+(b(QE27&F>8a%{n$iH9mQ={O~PQ3Z;=f5#5<3 zyPPZn2vqCxU?8|~@~?^)WBXfz>9t;$g)w9_?eoE63SHz+Ba#fo6igjIZ2_3B*3 zNa_n8^pPsFjsa({Z@jcaW*NrR*w7J)JW~s)JZ*Q?R#z98rYv&pV}^4TCp= zEM^`L|2wEPHGv#RS`$}St83jF8-d49?yav|-0xe>@vD zXTCu>MaP*DyFGxKyP15g>|BwGU(ad1aVS0?hSiFDpul=0zmHr|vAjv;IErqVX%i}!x5#KIy3**;>PLbi3Nx~kQdwg`rH)PG0h>gr^j-dt4JXMGl>c^1V`oNt z5x~XOR~qLUV<6UP0 zOjI0>N;0^7xp8*Hx6x}PB!a=OieSaL#dF6ER#Xn4fd*5}vIef`iIe-#+~jaoKyS*V zbmKs2a5P;sV8Z{kGO38~@i?mSJO139FrqPv?@y_9d3~dPaDXxLLzRmy`sb>o-xDFB zA7^h7&$5CNoa)swllXj`XK~>eA_^L%wM_ zO$ee8Ld~LHsx?<#gVor3heG-fge=@cEA`L33U}mG&!5=dr=Y-tKAo#mIFJ`TDAYq zi30rxyoriYyo51_S9fiUA#bjnn+@mg-XXGwJd7Km=ZkItbU8}RH6@o`#XlE2PFGPT z=AW7kN4kegDzCC`&#UQMuO)Jr0p*E30dl4@_t*5VFrC>8xR6CbCqgLyDH_ruo4}Dw zECwTXBPBJlcIj|e-r?4JCi1ImgNa0m91eI=v+K*9-CJ&si2-{gkxUm1Oe9mS08>fe z<4`dAl^RLgnwsLwqGfW|5kj0@XsQ#blh4;?@efti7szCNQNb4)RZ-J((d2KVfY6n0 z5(=TD+TS;++rH&>gjuu#r`;{U!QL>(Iol+R*fdwgV?$vC#M4$KcW^Map#n*@l_qA8 zK+}VR-o3ez!FWj18!R_Cx$7hlh2}>mWETk>Wa9cg?4A|P0~-JuyNaN+W0H9zJD#d|qxc&9KSX(y^_bXg1B}Op zjT>@((@eRMb76FS9y>3VIAykjoG zbjfP|)W5XkUo(!?wY50l*2w`l+#-)VKC=?~6(e^`&)o(P2brrs#nvRjhedfP5MV(> zdg(&|S4IkRr)*kvY=5GD-YrW%Siey#@cNLmt&7PTXRC@TXA~EL6tKwLM=7dBJptLk z=Blj&Zql~DLspWi+rBp>!L6~9@BbYD7oWy7tDl@;y9y)U&d*mwZW7+(FVcn|@{ZkP zv3km|;CZb&2fE8}qdwquB3KkezuAn(k&XBz`xKQ>x-hY+gmCA$XM`zd>#6uFhpHDU^Y#x1U!J3|YTL)dI}>I1u}#B-=nV5Qu0aEA z#5iW&pclF#vn7Db28{b^800vUHA{jxgOgo4X!@o!*g!rN*t8OTef>o)0NobNRgLkj zKb4u?WV6{wQi|xG1ds|kMvB{bXzVQk#5KGW8cS6-i}^yOMt$v7enmCED&^6A!YwEBdqPR7FvAw8 zXN|p~be>G^&tXKGP$7fU?Ot?ERLHNIbsV4%Osb3QUf)>V+Fh2pbtLjxD3LW#8GM-D zFj>kL;}wFlZ2zQ^NbxEDnYMqRIKX`jj6-;(^80^TV-gSc@KcNgN>kuDV`Xz=V^Fn| zZvzOUWuEmdh~uTdTUrjNY~~n3ldgn}5o@HB7MJq{iMt-ef)w^hYz7C5h#VUj7_j)& zIcF?&$5S4yt;iRR70p*nEX-9HG1NZ`md;W{M}GGhf$yKM6#^BRM^z7gsweBHsfXcLz5EuIM#*jeUiY4QBRg6s5x?ujy; zCVo97zVt+Wuh@CFtvBV^^{aMQP7STp)KyrnXuKQy<(CcX$|8;H)~}i9klnZH;6d)n z;v#kBMh~m$j$-rF`G*`etCQB<&rbfZ{}}mBjz+xf?r(I^A%tTgdIvBQFGOgicE_Um zEuvV#Vq|}hLr+G}b-Q$qZC6*(*7isZmYDL`u_$JIjV*OrnIC`c&}$Q0a>dnlaP=p= z$#98~?E!40S^c9&7EnC}YsVCDUO)Kzyt0(ki_PD@KfnBPtyf9slPaqCw_Mw-g{-bJ zNgamWCPSW}s&3B8$f%#>vAE-0rbj>C&Mqi0P}8zn=E!%)(Ruobxu~hsBvx^djT!LL z@TYG@uX_@^%W>v*cG=%S2Per`y?AD%xKO#nST&O?dry&z58UCvy?RGI@5Cf0pgj9< z#@gRE;dbZl<(c_yqA7dR3fZ>I+1biXv@B7fA@mra39~2R1?7^WsvvLeFaGHG zx0ICrx69u@pQ#7bQ9C&_G!zT7?+=Tk%s4c@GMJMYs_k{H~XYN5{0R67-0-<`^-ZFTFlYC0xksQ7& z?*wu1_`uO;#kabfymt>Ddk|U zS682`jI$Y(X#pdx&A+y4YRYe)p2ogi;ZK^ygjkS*zVg_wK8O- zq2Xa)0LaD^;|N(+mMKXPy3x87EFwNXe_MZ`*(D`vVzZ2v<(=6MwfkR7-%UQf)m`b1 z<+m|{Qg;7>L>$Cx&OAb~>km#nNoU0uuNob`?@&SLJE;^%DYt5+eCcdw7lP3*8{6?$ zWi0tF=I-=!kId}3Rdt#dYfbF?m{x~QxC8m4kcFSEIR5#g*9@Cp^ZK~q#{i~RuU-wL zAN1~?CDDE!`6I%wNu?j!MHgFTODAibmxcNEo{v)TCHrw_YV5i@Pp{+gc+jC(TGLoB zeS8L7J_$dyJjB1?F>xttz5DNl^52$Go&m!Kr|2$=vs^CMw7T>3v{l~YZh>AEH4!O8 zpv7fAUP`3X*ft4qdIe#5)u{ zOmYQYDTop`GBO!_!(e5bQMqs0xZ$HthaqbIPLKtt*z+{UKX3NX$>|M;nw#BA=0c1Q z)a2&}8Ox?%o~%pGn~Wi}IMWCiIpFiZ`(0NAwvO}|E9`3;B8^vlJ~sPNl>GDZh4d}& z1oFlSTB#BE^%qPxI5CjuB z8ChAjbF4g0w_m;g-i$y&2u2jyUA9=qV`VL#XN=*jc1|CMM$P2pq=BJf0^%S+;o<9je0+|u z38Q0Uq=a&Z5uu**3*nSc!kx(8waF#F-tinRNWQMJ5$Z8ex5vJFs>`cq_%qj(C-Sjb z=If|Lmu5Tsv>s93&JHGVpz8#c){*V)9G4U|g{X}v3|ZOdQFWS+P5%iDy@$$gaP%{= zGzo2SkS)%2_1V#xLWT@Lr_%u#!@R>bk1&}iz4Xh;C2SX_e=o|!--U8fzhFg8K_S8dVDqA^h`#W-8j(9X`=Ubn|a z)|0PecBY1dfyhB@lnL6AU-hOy*~3(IWs#w}gXgS~sxeuXir*JvaVxaXK@j0r%=NAJ zWBQM1m$0_x>WhsD6xww^ivLl|gwQ;F)hK@X%IDAl0=g6CIvNMGp|hWnk>Py3LVbrM z+YB4qX=&MR!mn^D4>*8fuiY_yv+2l1;XM!A zt)Y*quH+XmlLJb0FqY=+S`>vIohCEmX%kF7FqA%bWZg=JMoyvfoh-fz{r)7@vh2jo zqQ-t;d*@riiOqicRuv}t!W&whk+$ttvf-&I^n)0-^{YVJ1Jj}OZOKn24R6o!Uo?5I z1r6T6zjvvU3OL<5FrgM5wX=+E>7UHYS37jtsdl87-3)WT~eEhs~jGUc3@eY zogS|Oyl~{3;GJQV>cl@mVuycjw_R7)7O;*ssW5I9*k)g?+$S`j4*kXKZ+y>-lXT_-psLuV%xs!Rl7- z!3qU~!~HZxdrLv{(K1m1_c`@k1UV639Gu#Pe^$}ufFcKlhU!i4*un7%w56TkFfQD_ z=be=TT+pi!+f&WH1AcV}gpi)gahxQGw3mq{QPZcjeH86&o&}^0B3~K#;Zbq_@65jo zNCEvf6Tn?bK(h~&t~<%%np=$!ntFGuJ6OFGq{$?)o$nx4OWa%`rt zc|u`t`C=w-gfO|F%&a;yN-FWpyzQ=-9%Hpm#GB~Qv6o~Ha58$;oC8vwUzf5c)3QiG z)jbV>LZFEX(T;0~Qi{qfjkV;bi~kC)%o-C^cZ@LypZnU@y%w7^L*j#s01?g|htp6} zvaz-04h@~kaI)zO&6~?tCVUV9P&?_%KS077S;*>)1tEL8cT zg~>MqQ@KCz{Zn>%wGoF=?or7!(*B!wVuD9#iS*u_a=>%YhS>?=k zzmv;3VW<1}uESqKu5$(9H(gP-o&@(OH~AugA)7~ER6FjI(D6l}oR6J3`6_;A2qo?> zLDa>dR6L#H@G`Vd-|A6XtyPnQrrd0}EoJ&UPg-^(!>FM(m2P8r#7TSn{{8#mNmg$d zE0jmcuY$A4enS>qm$kOBs7EsnQzG3B7q%dp2bCkR_sAKTVnJGHnYXaGt&NhB8e~G| z!y{n**mAf2z>*KsX zDL;&A<5Rf88&MDE zBGSr}e#>yN%$Z*9;hK_snlG?ypJt+BqR>R571nDn9blT`6tQ;eW3jw*sEO$k%!Xu{ zQa|(}uKfv*T85T(^a%CsWC{dVm7{3ciGy8>;Ijz2u83V+2%iTnfz`f#t}*7-Hn^{2 z5dD^>d%MeumcZS}Tp;prNq|wk=Y*aE^=2a>druY*zAcosk(v<{iy+CCY;%vULaW=T zi&cmDXA74PXB5lJthF#yIvAvv`+fD{5#I*C{a7{uZP|m`7{RTLFi1%G_UgO-YJ{CPN5A(`1fTMrA-b>LnH5P3R zb2LS@WmsmUf9;`bEWDj50W9J~}B9yyC!t0Sh;8KCox_lngawV{w3Le~r`wlmOX!C8 z1Rzstfa4&%{J}SZCQ5%_T^tavfGG~2bC$zyMX9)x54AC@@*ZRrbH?U2k`@M0F=`E?gbs z+3Z{2%TOqwqMQr#T$}(I9cJPG6*(##pVXy*zoj>An-+<(^YfuN_ozi}7ZFXr?j1Si zaiW?MQ>Z&tRvezyT3Mn)jX0EVYHFJG7fVLQ+}s?%sDYtgBX_}x7*Y6sv&hc?CFKtl z9^r1VR{H^GX^QL*Fv$zq5Mg$Ae+|T6Pa?G3V5m;MJJ9X<7tiCZwv;MM^K0VQA8-k} zs*|tRmb&u(Ebg*-Fm0hZIA8hs(XUHbxmV)vnApXsbw)rlF(#t;`>Yf>Zke*JqTF$7;`jqhapKz38r%`BxT)LP-oF<6FpjK;-q2c zp4{V6j-|=>Crt!Z0nYYvHAHz64pdzb^2di-vJ<2vuO6iYN$kuy*@oDj_Uoegk2d=9 zU|kc!wIPpiFKDxDQ`(lC_vMLu8h z>ME z>Ado{)&^Q~COv1NgHMc!Q2>ylU=qE4je_y|?r0?WWM*2o_jCu(*1j1#_aAl%y>-Ig z-By3dke~hG38OauLfQ&Q?1Jse%gfiN;~3wAZo4h)Lw%onIoawr2M5_~pVo?3YxUMT z@t`o*p2eHYRCYCG-|ju?IxDZ3vXZ(GM*Zbnx0cj zF$cp&Pchir3oN zSuf|Sx$rjRZHvIt7rJ&a1{qY@7GaGjMP;B2>!Fu^pjC%Eb9I@37nxkXaKed^6vqMbQVr~*3W9YML%q3QT=(;E6-Rl1VbB_uHnU<@szSt?FngJ4-K%baBUWL>@gzHQjefIe zDEe}q@=z2fp9$a$qGf$u+*`N^Wtof&lAVHswVQW0PNw<$;<~g-+}7uO@o~LXvG;HE zLAV=Q`TTY#DH#Wd3v3x-nh<^hCO!a;ipDr31cRnF4k){^Q_f+&y6U`3`guwWq2`=h z!UH24?Y!hrVzfywmA@^oUIwbk+-23P_)Oj`@A%7%gN5Te2uA(dn;Zz!LE#&U0>||d zD=7`59*x@NqA;mbyy^7+}xgWdbI zcfyEYnV%07Pmp}q80rpRw~$=Fh|r}7*>x;y?l_oYm^>fmO&j!TP>cYSxj62d!%zQ1 zGQLjbpP*!n`Zl3_MhqY2+SwhjvjaTd50eat_TPo8`@gJMB6p!_@mCpYpZVd3UeXm5 z_l&hC`Pk}LBR4~AK5HI+oR7CD zo1PskstPO!;yw2oWAcYBnh6+Ea?rX5cr?aSMC_M%X&I2z6USt$N;$#B_yAY_oi4Gz zA5&zX*N(dDW5~dELk)Eac!zLNPZ+nbym!OWR1SD)iCm3KZ)z=N@W31#d;0MBm}kA( z$>EsdW%RA`h#b;0YT{kXF5rbsOp<_RLFPA*69?crZ~E#G;xcLTsM4v_7-4j3L`jFd zO!kk02X`84pd?;?N|KrKM_Zh#O94?Uy(#qBS$tY4X^+(lLm9&?=x}Ub6}9i);E-VU zTCiW~%5syKF;>cLE8ospgFbF+5rc}_>3Y>9b8SP(yx`eHvY-Ds180@lP-!6uW3vWIR9ruAPKz6IY;R9(B z?$uR>Rl!<54l(R(P2x??njK84xDo<0Uf&}z8d5LP`mL>1T#8=c&Z7laUT3sMo?pqZ z^lJ{j*I3kB)^IBZ4!^+CeDxd4BAiiwRozV+=vFi1O*{Ra{`qn8aTP1O>_w zww!5#Xm0S9pJIB~a1{#p9WFu}NANOdMtw{-u2```Mg}}s794rc(GpV06$63T)<1Ck z#p(55D!=a{AUm%p`rD6p9b*fx*B`#Uhv)e+-pZmi?zjdrVr$VzlL-_0@HbG6PTBirJc*}Cxbc`j|E2xdfKZ~osyTRZt?ax&rRG%?Wp6`he!9_Wi_4m&Eyixus~5C_Uj++MMe6% zs0{ark2wLf1ui7V7r^|Z=x7B)J0sQO0IsGpTMNttjg%LK*5n0(#aTgHCEOdarh)Z2@*5r6d6xKb4sAMJkks=9;w?yA128r>OjY)1>~ zPs@NpzEL}$P!m3`grqG1Yhbedz4Ry~LmcsB>_m62P1R`l7i1l?pU4ST+K69BG_x!m+Ik-SEtAJz( zt^NS+n>U)UPUG-5n|q0(9t2-2DY=()UV6krxsj)t<^u7)Odmy+xVOzsMDH-YSNkz- za$3)+jX>Y}1sqg6((x}@b99kGzjmg9Qvc|v8pVXTLBo}C2?2EP>S(B}w%shTdT4mw zu<@b8@l><)0bjC@L|$bLoOu~Hkh3c}ow4>Dy~$Xi?GNSSQPxBk6}Ji+6@{@Eh-U*~(&^myOlZcKS`?7M7Hm-y>16F`=Jr5n0oJT*l) z6?tm)17;fA%7ZPBdD70Y)BzApLI|?zF$PlIHe3rQLj7ye9okoOWh%4vwpEnyW}%_< zduABfbYRNfGw%%GjC~H3U#h^n=Vg(Ryjvx{>gll39R;Lwh#Y_7(l5KXn=^ zbLgIwW#f&Hbn~1Xe^GnH8y6SB%nK4=VIC61-v6G{fq4d?@u8=rB=One#2PU3<%Gpt z8cUdsHraULv(Gmm+kN*4Q2Pj!!Ni(f{p~+@1{YITGF7xXk6r36y9}y@cESOuLK`$! z1uZT}kZmJiMQL%QD4B#wv#Umx44yj$6?uIO994ozpRl7BF@wT$F1h*n7V6Q>C`;bG zQ{?OD;n{qh;pFwB52$}(ql`*uwl=}-8~pD0S@9}vW!!eRJ-*JUos@D-AkI@JSy55S zn{AZ^j4|Lwpn!*$A&yDM$J(>mx||^5C&p(f;?MFiB&KRRav5@)Mp6@5^s2Mh#a* zZ`88h2B%#h(0Rnhnj%$nd!ZAOv@a+as7J6PvN_=8?y-OT+-!N;eG`_?7`1C#OSlz>* zrtSe}GMpF|RJhiB8EMUemJU$wM|oPoC;X9LD-?snBPa4~vrH}nd-kq^3+H8qxyQ!V zZl|HvC1x&vm0^(CdId8|n0264->rf1F^{IBB`o{1w62zMl-r)<7(zy3A>~5G?SN91 z&rV9BWJ}l`ygQ-zC=@R0n>O;w8W;Uca!LljN`XYn_fv{6citAt53)Jbd^Aji935^!~%rOJ#MG_b*CZmh3MDB z7mOUE2LE40r}7luYaIEh|E~{>@yn}u{77|~-KrgymV_OxDyPi%`PkX5-7z&YV}JxY zXifr+0DCn>E*~F1Q|c-%g?@fY=+)_hTb%fg-@HpQ1ll-@%|bStPk?Eyi|r`Y>Q$q@ z9m!6@Xd6=Vj+Th|*^Z1rb!A1de}1mjaLnO#*DxDIk+U0Sqf0j5VH$CmucX^HWT_hR zaap7;{LeE@Z$7BKM!Qb)9*T8Q&9r)X0S`YCU_(;4um!S( z{H9G07Zw(-NkJQ`Ur^3Tf;MaI0>4%PI*iGqqrs;z>?3TUnX-^^#U`WmJT_+SxP3C# z=EU?Qx~criszNU2m5@u7t(VA?t1-pX!CDn zX+TC4F6;NkLjej7&o%jRXBiB-jP^4c2ZKs*OdWbsC@tkL4N7Mv7hVThOZNR*zk1 z?6ro@Vter+CY%BRHVHBiED!MJ+k@N{L~-bg>M)G}Xx9P4OTiOe44XRnTM{Bm9j!+k z>|juJPbbYJRxv7h__u%SkTjhA0C#DJTXi;C6v`BB1)4l*o?mf}e`xTEawL!$NZkhP zG}JK=S^4dSNSUxzsXt3n61xtD3$mSe&N?cETKv$~5j+=U^F!$U=L3%9l=CZ}EJRYE z;hhmPN*h>?m9Dc~Kdlw1j(44$HSQ`?|9Z&8-gTqOHuL)J_SM$}gqFxWJ=p||ktpP~ zGdH6l;}~hudBV|CtAqdB0bJ<~Ht<^rROfmOi%s70Oj^2*N2j4rjCA0Uy(1m?Z)tkK zwS`UFtt%0RVc1Z1ZDSfm*f2sJ*QPx7ndPj1Zwc`8PwQo$y-$ZO*E>(QyUZ&*JZe#h zDyWLj*XfPF7GLkM{DhONHwzLCOp+Y2vxDgs8hzRkI%G^AlgaA{Z%>Pr@DZ-g@+JY} ze`)QkQSSFVj%+MGxP)Twhs&=svuO+J&;RZxRjXGHrx-hrIMRl333SQ~^onLOay_Cp zMUO(g#@l(@khOz!!2fk{d1BRVGhe|sa_4kyIlC#Af&^9?c}xyHCNXj}wU~e|DU|N~ z)-u6NTEj^@JILFo(zZcE4&jG@`_i#Kc9LS2oPbq7ik8 zS2SlpvutT!kC_qP^0OsP>o%UPoZe?+mufJIjktL)29g_CCiIIz=}g7ToVC{`H+UWC z={_-0LL=Jz-aa!Cx6E?Kh+eJ3jw73poxXd#%sKP7OdD^Hh$o8VQUFDG?ZoFv$68{pf?z#v)3_9j@{d zm#Ys(1=}BXjp%KYE64=*9`ASvvk$yEkA!9ujm!I)e>6}o7KRdI49{0SuWhVT(PI0j z`)8bYm4wcoB(;&sv&&SP#6`Wiiad`u!e7r&dCrGud}ONhxZS^?W7(>c63Ij7F3n7;G8L1If}Q)?iB zlKX1Jfb7)Pi_8PT$xCDg9wG6>OOrlvF+*|vD`H-*Kw!_q=kC%})M8{eD!=Ml+OZpG z37glKK!*~?6O+k5drwq=Z=*HVW4qTq#FB9bEEv=9bqLPk?I(rN0lUg&WKwSVNoE`e zyM}R1S~P+Q>kC{Pdw>JE1>2qE`!tPY#d7#@S`vA+LcpDL9IW@howAagCgdh`bgk`W zG_n~k40F2V=+3E!<8^Adk88Cv8$as!X~Q>|05KaMpYYSjgHt;`Ge|j>im7O_s7u}t zUm$=G#_;VBzaSGbGjoMbm@1e5JdpEBWgm-G*&7C>x$k_%p`Ef-)WC zB0exe;~D$*iZeee#sj}IKAU{%j@GLfj5dYE%RZOUN@@#DEj>?yv)!1R zgz@&Zmn6Dv+eKWDiAhWDU;YEyrRQEHZ>F-9&qleTVxuI+|LSIUFuC{%4|HGW?LIXp zvB6YYy$6k?nB||7cIZ%hIDB1&e-{7R?FHwRS+S{H%zU$?>PMISyv04^gnPnmAHpqS zn*Xdm7*u|ts<7(b^|e`;xh7Ube{o|q^xv*x&h`Y9L&dIuKu?&^BKcOy$N-mgS#j=$ z;)d4W0W8?0(Q;Q>xrZLH_khwI7)1kfMgLUX0h`+C2%b^Jy;0q%b3Q`*4?Du%=>mT{>AM?ZKeY{@J>jg~F_GowqhcLmeUF+=U1G{LE12AhX9qMI=V)Cw>^{s3GL33<&)Iz1?~>IR6KN*i^BzssZ zavMayQ*q*L2#)oA!lD_d&}Yl{d&<9Fd58b`x_|QK@|)lP`%{AXpsW^@?^iGF*6N!) zVUUVFCetJtB?dK%cmaG18nEpO6G9Yg^5LpltgQC+1rp3-H)9(x8GZoJ`4@%f9p3acpwNI)88p4X%DyqhCMy;cv%1%g z=KXH7wchx7TpWAq*77?}!MMfScRmg;bla=H^DY54^+TpF7QD6EV4Jktdu^Few8pFc zzVu-=K%*Mnch`#Y>S@_G2uoWE>OQ!8gR93Pe2_%;dV_zhm~C!KHWVh<78qx1Dq{tj zYdskV3GVN`)@tlR9Vrqz_m>EGaY@Lb0>ST>itF=JUSBHSLMzx)r1_$~6p$=HWIY)1 zX>WIQQ=&l@h%?x=4&nLrzvXQpjHqp5HHT(1?=Dn6u!)qr?N{Z0F= z7lFl;|3=$cp|A*CdjH;f$;+Zkg0|XQ4N#) z#X}nPf}rB^snyp`{imy7&~D=JbK-Dckr!$)y?&!j^^@tY5`Pp*oqlN+j@stV9Z*CU zyOT?_nIYb$_jOshj#7swpl<^zyJq<~(6OFKQANh>k3hQhN#Jy^@wa|+c-;4_qxwu@ zW7{j=aBz#J4sK?4w4qgQvYaE*;$GZO2K=U-Fe@%ihBs-jM({R!AmjDDn9h#uHt0=D zR>QJ8r%LESaN@!)0`OlJKPcSJJR_;R5KOtJ92^8!oZo(SS`WHRo%m*4s!8foFZI-a z^mso;?D#`LasBkBTCi=OLz%mmd=DeMm=EF_vjae%U89m@7Il64Kf5YI~u=EE-!{k=FURqNg z;|^W()PjPMF6~yrnLiHVt}UABcuw;g!dV6W;dTPCyecN|Mzy(&-Qn;w)|#;{$?XGr zn?T{ZM9feHgMxs7eztch|7t|}fvWW~yw@hZKPv8(hZyqwvm8iw34?=|5F^KvfWT6dr>4Q&= zNXQKS;qYyxb`eG^lBD@Z+Kh#z_j_p!%<}p|(=|`)Mr_C7*4qeE@Q+N|C z*yGE0&85yy=iH1EOe?MG#ucWrYFa`$&v9J!E?E9Z*dy%AE`%&x}Q2)&NoX5$W;!I^7$C z+0$dCA^|XJ?z=O=c~2F%aYt%1izS?W59*Am9Al|MIY04EVohSxAy|WGVulF>QAUId zKd9g(EU1GfawObzyGYohSIpYX{Ln+ho|tw|w80KQ6pgmALvRQ;n40QefWKOFT5F2@ zy!r;cySRx(`$2ZNQRJTAYyi>>L0L5L_szd;LpZCKTpf+o`(on_{Ag?CnpLp%{Vy+m zyM5)cz*mIX3J$e73<=B2nW+jzB2|*cw^n?r`gOtl74{ISc?52}rS z<OYO_5-vlalTjVNo^4+bNmb`6G3cn#{wl%>Y{|` zoQ$sLe->*B8E`4eJziF+v9dT>y@L{T+Q!5p4QeR_?`KZMc`wRoeGQcOOSyQ7*!1*3 zK*i$L^TG1cB8+QhB1hGYWs?g!6gqmfUMV2CtirJxqLIVX{-~ z>fd?W_}%WvI$#y`ONKF___FzPhQFUW8GR+K-d0V!CkuX-#9*a%)FY8aDnb*=$6Gl) z&9nWzS#A<~F0|_G8)ugG{n!&l8$(f2_ffAp=tW?SaC{ht9jnafwwm7*HC7{MlP9Da z3!(Xk!Bg0#rbZlmSaft@aq)5e|3ipZ!vzNC!-eXlU5_|NHby9JZP z;nW0GZDELS9k8wx70IC}ZAw)l4EB>)sdOdy$X$g4->v_H#`@Q;@LPrP28M@+1708z zSorFv58wG9(=G3yp+8Z%o@U=ZGI{A*q0XLPg_Gj|zDHuanjAT#7rjUQ3@#Gi0De)R zxDZ5%LO9p8$y*3tygPf~+sFOT?LN6><;_iY1>qHG!_}x+y>kbl<8dXW02^C4x!DgUx3PnL8%Ed`mZ` zH&8$JdziI-!mdXP4YqaAds766mi>vMpY4tjp6P~x17hDftJ)Ch!}?4ocKcX4`DXPM z>3O2*yysF*p&yFEmz1(i+n;10S{a`(T<$cfYy&$5ML*iTJ6nlk_aKQ*bCjf=z1 zQSs|VcFmLoRNS|=xB~n309bG5l+9pRU88(;iFHsv?81Mx$$j>7^^z5$1U-{}&5;fH zM%0~7WN6pGmS(~!!I0~YTg;TNieGH5&QO!Ex0DzB41fOsgE)YaO9#=c6!uWk_^_D; z%bZJ6-BA5su>0L-?q#9?TyrKqbTJYr@s)3_VzG?}Y;7H0ARQb%4uQY5ZM&1VVpnh9 zAn}zoD2eq9$`ZG_8M2*9f{{I>7udUBj+Vl%YDStvH8Y=#=<++0`3;+GsxRmV;|#!=iMj6kP8K{s4C9ubO#ASfA;0|(QDK-`&*XfC>N zHcRh9^^nvz)WK39p6^#SY7a5u%EoPM4rxDxpBxahn|71wSTC6D+fInd6^X?wUAFc^ zn46gTI<{SkzRZ7kPJbd%Zdxo7-xgNyDp(s^Ud;SaQ;*#lvnbEOApi2R@VeF+7*uq@ zHyL@p*x%E@3VVXoU~U3bT+n`z<<8(HphHT11lQs8fWpW&! z1mnadCM?53fuJGsEbOum(PvZ^SD#6hqC7z=yVI8&lm{atyE?rn>UcY@n$ds`si$qSE` zGKkm}S)c^BLK$(ZlWY%A3XWFfRu7#0A4}R9tN`6rv}mK{78jq_IGT=RiGm~riLZ_$NUfXWHBKexZCZESy8TEh$vf~AYALLEfz z-{bpXyrOf5PPt6hSI{UJI-P`uP zV>Rp!#~ka{Yka+*_u5aidjKRZ%&b0c>u>&vIIy1+v3s;!J}cHP zM|Tl13%M`Rx@W2_cjs)9`M!R9ts;jBnRdL_OCX0?kSH;T^HmY1^*PRFuNrbdA!3ak z5STjjz><8{v4D1hmlGKN2y(_pZ)-l!gUp5WO~nFIl+kV8>G?NSuE2E6`F*EWTM_$7 za6imStQ1z3q%1_k;mmVEr$u@%=UHt&Kt!@7L~JaXDvPABeLH{Gjuk&r z0JpFfIuf$4ZH+Wd6kEMt?j4!4nU>_J=|WiAOz7bMBM1M)6INDNbC%_9xKJ+`(G}Y2 z`t#SiI0zi@^1P#`4Z^U`a*uD-(TjBbtjzhg#T}?W_Y{am^S5TGBvloHcKj=?C+Guw zzixu9Ey}b{!uY4uZ?2{K_?z<_ky+9DQbv*a>)OzmE*4_?Y3wj|zk2Cr!+X(tDt;^W zt#bB#CSsQ1CBxrVKGQg4+RP6;CU&|VW>1;S+Gchb0t}@hep|uBnXK%4OQTMCY{fYu zPDt$TT)n&^e*2S0!QTv~eqS`rxk{Zpk;;S5yBBj{ZK^~&9XISh`bOb8>XKTFao;?s zBmCXMy+ez)rgM!qBq+xFb(-}WRzSlGi)R@gx zo>B{yZO)Z4c1*G52f7P=DHcWOYbf#x`es<20mM(OFi2uh)}Ul>1DaP7%HBSW7Qb)# zJ6#AC+Fz2%Hr`Y!r?r(OB{Gs2nH@YCcpD6J zGbeX3qC#0Hg)W5E4br0}7{3qg7OED-rX`y5!y5Ug<;nV#qsSoDeEjGPKJWmaWOd2-XiKmvNl#|@zKWkY4yecIwR}(14g7) ztX2W+b=((o|2hwLo-au&U7))ZY(>549fj=!SsIixih9Inb%yyaw5AWvj^U>1{cAmn zKI5MHRtHE?G9qXaCvxFZYyl##7JI4hn(vGOStAwUY@8&GUF42Wg4JG}V zx{n}E8bYkiqJ__I30K-&9Cd_o+_SRc7fBU;PDEe@GHE{~D6YxGoDnX+wIM{FT}^X* za&Y6H)gY`-hZ}VlaRXxNRuzIIs{9sX@(%ZAE|cIrM+ZyEIZK-$Z@&O;*MNbeJwxs* zUeWi~P5Q9*8IZ3I)aLDQAOmcrr=0z;Rmbln!4A#uvyNI}qsSG)ffUf4%sSiv6e
VDjWWEh!MiURy7eZ5J@4Qlh5Qe%?cUb)Y!#3^OwrOMR!w|e~^Q@7*$m20r64A=(luF?w=G$<6_cNDLD)q>sD ztAHKgo`qVUv@+Uh+6Vb&P(1ap6mc(!(ed0igS_Sqxjti0kq+W=C%Mc}uGJUUIe01= z?cWy*u=T1c6T5i&Vl0a#7)Y7LWYeydlbY^OT~?eH3D5qeW4ONV2@IoIo`rMP)Ad?< zD}ZfijLKvYN7dt~VC)iaumhjvau+e)aP4pZqaGB9@hA~-zPmt?GYD);^A^6;*U~Y( z!;#L^7FfX)0dtoWC1N4&p!0xM=Z4gIMc)Hl1>`EGCUD*&?FsJoihD2Dxqx_LRP6)^ zxwE9$115(xLydQEEzpDUOHp3z1s5*kjx@E+s!bvX63!^iqT|CV_4XH@vR3h;2-{!4lxP zc7z0NADWad(pXt0Cp8Jmx`nO;>?Q#bTAt4g;a)4-7#Z#o-+?cV%)1c%f;fykTvL#o z`^+}K^M93s2lCmVSOm|q@fdc-%_^$ZwW{-BWm*}m<{0J+CIe=cdVu*;Jcn@P#04B1 z>$nwk+eL1Mb#0}jMV^KqRi)1FPI23T+RqoSv*T;{x-9kfc?_PsHgv1pmmNaZ%T)G@ zC-F17joM==Hs7P;x3Z|QONi-S+vMKIpsTj$O(<0>7klli@t#dhp+$$q7K*0pyz&VG zYMt892T!Rda5#oy$z8va66*5!>Z573afN+Ks66)YPT|R-P268*fS$P;_Un}EYuZc6 z@tvLG754E6VJ;#s1p$1Ke%$Y9MQ4_dzXb_0Z_J9I_9t9&30?%`xBOcm$OZ9|;Y-g{ z5Fm%d^OP>ek{lW%R$%X{78-u3xNycN6N4W;G;>frEx_+xhjJ%r*>(&8Ve1TMn@>13 z(0)Y434kAB6`NcZ6KuA6#kZ=xmt(Tl62kW;U-~Bts6x3f#H;RxPY$m6^LWyy-WfRl z1`5cwV}zNA)-a=*jyv<=2G;?4a3wAtG_Fq?M|dRe)&LK7@w*T^+cD=6WsaEkosAeLVI51Fjm6`u@!wW>h^onE;!#iq9pxA%^jBo>&AH{UaP<@iOX5!=v({2L;;>t7Vw zxM%K@Qk5gQybx`}^n-j#G4=#?UIh=H+YcEWsuRt=3n@BTY72YLd6FN1He_m#@$Jjq z0F!8D#cFrkU&|_Hc zlQ7ijA_cJv*P%g*&ty(oJjItKl7%48ll)hxb3H7Mf`rK9d_zs0EVa8CTej#N8Y^KM zXyAwUmvoe)D@a+cw~8~}GIu;pZF%St0~zD2DXncX>+I;hL9nVytM`CdXc7{jD~>}e zRnHhyTw)7(VXe;XPO&K-$Sz4l;(~mVS!u#!GD&}Js0nENT)nE=O5pWCk5ZAM%OEB& zycue@Okl$T;zC`5Lk-En%BZap;6%aPyKkzv@_|LUiBVfLA)Q$vp>NP~b$k4m@FqsP zdZ3Kn8TeaTfzCdMe&Te`;}@4oyU#1@(rQ6_k(OIl>MC}A$YO5ip4#2s??O++#9?n$ zhFYcl=@ZOFXO>-#iT^Wh&`h&t$}Qx^_gw+v*817qaos?vOoSD+hEpo4Bg$vbZFMt|KN63# zBd14&-2p^azMMz9AdA;owL@O+{8R8Ke0cVN#JY2Stl?7qMih39TU2=qEK70QITjII z&-kLud>E>Xv#Q3$qzc!%7@V@{^%PGeb<1c&S&9$;`+Ewb&1?>RBu`SP<*w!f?Z+Y7xv$hZ{=BDUi^O#F{POQ zO6O42Jw`{cU_QLP64o{osb5H-);wu{8YdN-Znb0@$IlR^8y7ita>CrchUYTn)gL6j z_&k5Y)~a<WnIDTeFYG1731aU5MT{=Xb3*D#j0#{uY zyEj9fFP7r-B~$G}+s~CdURVkCB4*Kdgt0R}u_l+^h$%-FX}3a^FaH|G1YN`kK*b-V z__p7J@uzaI21gOT<#wb`U9~u{yg1*=Isnh_`xKNMMl){3_Y+4!1e@NkmfGdZ)`&MW_F3NcgRdC*UJ37O(rXGDKebR;26*fAK)wBGNO?{$<8i{Vb z^8=9xo1JQmI4zMdY#=OJvGgoEk{|CSp zBt=Sj?-nbMNYM!rUo$1pqPafic@7yA^j_1qp>${B}y3o_n1xe3#h zy9kZ7=;(l9OE(x&5FL8`Hrg zZFPfu$Rh)xs<0?1e00*)AO-QT`iXOycCq8uZQ7CBCqgo;?Cew%Gf-{Hg#qhY+BTW8 z%M%hK8KQkBQ_jYQY(rc1!6BxDgU=MEy(4%x@-PsdCSi`dr?cOL2=tn;wd#pUC{)aY z1JrUX^gVUnGZEJC1{aRHNBYKA*rzdrBrsc;X{)#E$316-1Y|7yX0q1)M0Nrsm2)5C zSg%y1bQD>Q1O(eqTz*SoPAxPP0hvEFb1yxchauy!QJtv|8RpW@s;A01cf*&!dj0-@ zT@bLq196Ei!2 zl%9l`$CIN?=iw%3jU-l3@;R(j6E~$KMLE|^fdC19+*E9=;WEc0Se=Oa>xz5R#nUT_ zmo(lX)7oVh$8I*MZQ?W~5gXF{m9@!|1g^Y!B+!oUQmBk+Ey9%ZfZ!mIa*|+G?LRVP zZ#$CN-u__32dV5#eT>_ob${ey8=!}9ij7j}LGc0ep!UZhE=pF(?imhj=N9hEH`5&< zqen?TlG3hh8@N|u8W4Lm_grND7;iVi5_GC>wvG8Y=acUehQZq@3}&T|$3NF}jWVv% zg}b!-muVrf``rIsJH?nbI!#*SOpF74Uw=3Iif7b3n@KnM8% zw~1G9*@dOz9WXr_)|Y7N-C{HBAIr zOxPocS0}ovvg2{{HguyZcK)1ouBY;C^P(JT9|WA~M}w{p>)prRR|%^dp;d(|Il3e; zu;=8=xa6uDH^Ll2B8T`AS@6qdWb^Ni<2?yL@ct2uyt)z9zj%5R$VW7sz4;XgsWk2t zx&RfuDhGpdBt^PrDyhtwnMSg?VdKw`$~ZfCYX4DhWf3W=ioLKGfXjr%O%QjW zTKu9G@<61y`nrVkK4FW2zs=VJdaR~eTSH2Yg)LB1A5^`QHI5{m1&pu%lyf=uX94+M zW_e8;)dM-Bnm9|zNo07)oP4xphFT*qx+X!<*pqo-sS$-;R>kIY-Kh37bJYx-ZTlaE z1rZyrX*R^H|C$j6jXjuFM8@Qvrxp3!Y{AYDAGq=+3Nhl637kP7F$@V+sj96d&XrfC zyB%+p2|7~3diSSQGLA?U?XuuS#_sY+&JPU8nDf&rllb_PO$W$#mo~9Z>ys?DIka2Z zc1R(oN4m>EJXx^(O!{1ZF2o(B`P2#1V)QPoQ1g_Bg}k0=psg#f z)M7()Jm$*$UqKfZ7R{HP2VqTl6Q==k5fo~+Q|l4>AF5c#`cA;j)tjKXWxy?$#>16j zw2Q3b%@UfhVJecv@1=bet|o?DlOKW_hJ{{B_^pbC03D9;aWQ+=FF~$KY{^#9)hrfU zJuWNp`8NDNImZ7!M?YFOAX4MraF~XCMsl91%|tKco{|Ush+z!_~m%z3MnI16t zr?|#P>#mLt(73XK+Ur214Q8aGqa41rzdM=8Sm5lwJ|ND;GyR&HI-f59nzj!9-ph?Q~ad_6$z+=2mAV?h6$qDOq6&canlNX<4?yP5c>HjhH3@d z<$GB{dA-;Wz8Em>!c&r$8WU|9{K1fF&Bvg9ddeyd1gO~8Kf0%UhjXCAiI&NdG$M*KN^LAK~z&~aIc(83`>QMpDEl@`Bp7C2V`Sqy63BZ$?q;k zXm!C~h*Cl+Ay_gD5*nmqllF9^VCH&vPW5w%GGYL|v=U|ZVT!ZhC;N#Nu!2x*`$>Pa zsUqoYMIGWv^Y83sE9CfW;;V5GSp_61G_ha1LaB^CVaZzE-+WZP9mWbDeYf75@`H_o zaMHc~1`&($7t#v%eB*k!*pO-4h^3q-d45k5lxD}G^Ebp z-^=G;|NfHysl#{w`8mQ2P$mFJ+IJCd(l=Ad{F3|2o~+)r0%#`Z6UlV_;kgK;xoQ@3 zg=jsZx6*z9?-sbY0;{iI5*F2f(Kp=h!?xz@Q4m_q^YdM_3dc5;e<&rnNk6Vr!h*-n z0OzFNm#&#KXJ|1xsvbvpH7I@)RU1MTUvuFSwi0}!D(sOCeF|zm`8L5Z3K`c&7-4A- zha6;{)>y8@nF6FOnCcL}IldzO0|~yod)7)gBs43x`+qmvAC8G%@UISA4o|uICrb~P zl1a*bJ%(Z)cAaA_)g_wB&|M`!({={wlouhp#b)lqFT%=pe>pH2)_JnMHTECwtkfsa z%6^ESa{RMeZ60ioj|H+5b@(1b{m!2bwnRomSrRZd4l2E75)7yWXF~DkA>ALE9Wfr| z=3%Ux1^FpIk7kabM(n9|^6jire?J2e!M8z92U-m?k-Fu>#L~?B7QInBNER4maCFrR z`KT^hL6U&rfo|-Ydc#AD&v*^3>9Xf;|CWN=PVS=8!7AuZKIpZ9@EKNd^k`x3(t!L7QbHrK7vUX$-5jEF$f;FXwj z<4q$t;Ua>zi|8Mi&XCnavW z*AkKNrGAMtm~RU!N9jLDNXU4p=BH%tE|~_;9Y!uVryKuWOeEg4>`;e1(x}&jqNpSX zulik#lo+|FgK!gl?Ewnl^koqxj_FI{gXr_l978FQ$sSJR>YGCc1@LxT7 zakpv^FGB=teJJ5rcVT3#jkS(w(zl=`ZO|iqcK53xUbbe=YLfUwsUYsP;rp_2lzu7i zjA4Dmo2u$eL6HpP41>y|@1H`Xcydh?t07Ij^MJgkU7g=_Af2(=Nb?Z_cCV!coT_j4 zBe=_+wj||>X$8eR7gOO!(39Y~H zuWj429gInworflJPvxheQD5_epXuz=xrDVOy@E5(q&b^4_Knmr0i9~|joNMhx#Ga( z+oDUgp=nw@=s0!ddjjl}pjj(H42VBfL^xpl)CU%~$TpyoRlv>u_XWDpDAPOsAQQ(m zX5hsdlMYoM-#lYwxXgdQUVi>(`l%3r;NMbwcibs%fn@|*S7|E-bz23>xjg5%qsRtQcMW9|(45u?b>kwjH=G^1bh$Dg%7h{cWIkgl-yM)aweeZyk&0)hQJR`F!6 z4$%xxjQ^MZN-t|bOxGx4&ka}ofGbJahF=dt+RS|NX-{RmGsD<1e*B>i-@c_bM94k_ zM%`k!ggFd)48H#FGFtgQDqclNgFAC4bASA;2nTZdwL5=DTrtzCgMnDJv?TlKo};2m zn;u5!O$74p7^s_LeMIT2J^Ts|Afe~0JH!r}OLBt(1L)_%zH8_-~F6agn z(n!|4Vw3eeI01xR>THvA&F0v0mPot7*1+zMV`$|GB323F@F41{{9S)a7tIKx`z!Wy zBD}W<6W*O=4b&$KiW-pb5^0_uZ}g?6zWQZ;_6@}rEUhzfqGyr}eZvCSfcT#d!a=1d zr*H-;0GmcW>eDe+ZJ5v7IeUotEw>*>e(5HrHPe#kFxWNjp+L0NAL5Z|(=e!a&q4() zq4d?&sAlYZIe#afMQW>CBS$;Xz8=Z2DsfJj_lCbNu7QhJL_U(=O@ox=9RUstYpHKl z%bPK#a|%MMZGoO02chRVla?a$lAC-CQW4I?yjq)YtXlE{zy0CIRi(8(nT2i1&7y$h-uOxu8VjSdA?ybui^MGzQpvmMm=QhQt2H9$s01wd#Hm)R274;-BSP%H@;gH zdyS6)-39{CY}!33JHo+hoHT#1K+dZ_C-Dud$Tfk9Tm5}doetwbN4o`YYBs>TQA>DO zZ9D_*(QLs!C;fUza4_vG#_ExM3W&yKL3f|`+ zr7EcUn~$?mK3YE9;R?iDAn>WJ+w)CtfH2c>XP+NHdiDv|dKvsweQ!o)FLkVWC{RzF zMt#OlZ5k;^;=YwSv{CJmCsYdS&Vy-VR=mfd2ALqJY5XbS?YQgjm}I+SinpA&cyx3h z3gCPW{gb{*rV#tO)_k1Kqo%EyD($+n1EwyRkyzyZP@d?$0@4HT%*nzSpS?aC%70xG zvQ_fo^TqeHb8q5tviF%2Q;iix(NXF0TX{;p(P}JaHMwAgZZMa2l};d0pJ&u>JXCFt zcc{I+o*Lk)#e}`c^Pho=98Yuxcago1=H-Ki(?T_?o!VdzY`YVsBS_YGP4-Bjmo_}Q|JNNe@WUlQ z;N6cgSwMe(VNbA!F0<8R3D(Zjjle$NdhvA5mC&=<{y_#;%q(K|Ge9u0lcUE7$gJ3i zGl;>Ke64%AX{!NC(f_Xyr8Y5Q`dNeRjE8Sk*A<%w=(!rhf}*o@FhbI$77-P#-&K7r z$!&L({(VR%fNp`&qbs9tq@d$`b)78!goTTbEzaOEVYo5euo`3@hwNcq(s(Akq2{Oc z*w&JbS<7=HT+54py~RPqYQqt%)*VKd^j0VkV5MBSZVxL^PQC2AYBVM$KKK|m5Cekbbo_TDN}Uy9qm`PhNIpM$6#)n z&GYA?x@uXOxB`LrMXk)=@Z1Nu%nC7YyDi`Fue;IEcZs7Q?IGs^_8-bZ5Ft<~ojNiF zUFJwlPxnsxJCrY&MR~Cp9bFY|&Y&ZBO`UWt@Y$9x+M9Y$w~(NrW@dV1E?KnmM{1b{ z6acBQnnuYq2?)X3Asot7H^hcE8dC0JZ`3Y*AM7G27;KN{4YsplH#Z0^1P?U5qWZ7o ze(#p92@h$HLL#ly5{Eumr4M^2q|(mre_^R2kmj-nWykMgF%@5El{gOc;$aquC}MEm zQIBvJqhdtg%t7YypdT&9etKZR{EmBr>H=&LjN_%~LC5)5jD^rJ}gd{fmr9F-z^BFGhWg{MxyCb_iaeRTuKzvMg*049W!1Cu%z zPrQawr`}<0d~{R5@RJHj)R^oXt=`e!tVo-CqMSDaDyqmKTm5h!-zwcWn^Y^49}mG= zIInl>aB~jRvP;3i|7`pCT6Oc!a<*EHaGHu02AY%>AqB0aegQlvy+;U=rsbd>kvT?pcALKgQ_-~R*p)dt&BUU~Gd5Qllt+idziV7Uw5z+O=k)`hQO7f;M zUb8{emk40*uGcMx?A2Hc`2n7QhVssrL1jq9#e;}#X`JFI#&qSBI5hy5I!{(|@ zti|J)U2X*ne6RP!+3Yq#?erm3E~71}L88eaSe{$qbu{Y+Ph_6wL+{N<`7z`kGMj}h}uV{x6S z&tYG17bSjz;$B!qT&OkOGxd2=^BN55Z>lvi>(5c{dBSzR}=4^`&lv>sY_ zF}A+1;Z_cxo=ge3j-Nc-B>x%&_6=L{*TzA@#EChYx6O@q;U3B2rCeU^zec^adnRU- zKDj1~Z%-4c=tDnon%E2NhhYDZ_ zJxha}(z*|;;#`1!bHKzD0V8ei<3V1zjjQ2tqI)J=fW#uM$9|V#5Gl7L{lkY+W}!{*2rR z(i^CV;BgqDw9PhL{-}Mr%gZEHyi8SPXup8G!btLbI)aD(`yy7pAJqBdlB+)eG#E!( zudY3T66bz5GZ)fYVLX${SsrXRy-&WKTL{IpDK~~VR4*qSkrpmat?@HJ5u&Q_?$Rz02iLx!}!efe@ zQ?ltUYWB=cTVk2|RTs%LR}>H|Tgxi#P*YuypQ(ivj<}3#j`D@U0yQUAme^d9JEO1j z!u%v~ojEM>$<1pb4KuX|9(-JF{Pw4>3G*#Ti~>|_8k0mD$LXhxcT$a}#1&uQH==DN&@0ZJlM#0Hvfpk0t+eajM~myv{Naeul>j?g z`$M#~JK$gwzIQb2Yk)Mkvk+V8z%%R{k>>_PGPGl@M$6Bu~m-YmrzTz7(FSt_T5c{hT<&2R*^UiZPCE+wXyXU?(JMBqmpMH8B+B0K~nkRna-u}!3@?$)?icD*gcfm`TCaCzs zRYHXLb%V7&s@$Dk)mj=EyHMLVy7u&_i*9-%>+S}vw=*n|6|e-B=u9lExvu6SS)#D4 zIxat7-FEW;=AQzs=^~=ahPkid(iB!Igz(9wJGeFp<(K`9JM z#*LlL3ombRigp`h9F{)B=OwUoPxaa(FN1LXLCz`3Iis3_{Ot6^FxZEM#;D7++5-4V z&&28Qc0P>GeM!&$t?A2x-~4^$LKnKlGTHNuQn*F2$;fDi!zfG+dga9?yy)+)v!H;g zu<51Jomwprs_l`HDlZ)5hU8k;=3TjiDU;4-b6$7DQH@|4opnt3qp3$9?}}A!Kg_p8 zYz$bxpdjAphdrEe$;tI=cqg3s7OWqy&WHDs5a*P}IFv-0gE1(>8oL$1S^^)qv+y(^ zY8b5bv(urR$0HTW34cl`_6vb-rEq(ukD&M>j1eD?GfC}*{|HAso{vEuCq?!bVGVBE zC@ni4$I_!@Q46)Yx2ms{&A)#SXcggcf|A`~6ouRHfsUuUTq7K=mJgra)V5F44-~V5 z&GwC0nGjm4X-O|_Tg^s9WUnec{5D;zkZW#&kwtwu>m{iz=>4?{6FV>mtcGzBYTPsx zjiZ!cH^Cr#K+v$=Xi7J&UXp3E)(TM`TV^FFdJDF60N=Mhgt=TnehNs0n|*!-zX5~S z%Q!5i#_h}BPj6Z~kx6DM;wEFK3dc*y6oM!kcqb~oG|#ecV@vX`NtJIc+O=MxVRQ9;G`qHU@*?q z45212Lnf(90*2K|5rE&<43W>$vh%Q0U!#4&g<*G$6?iT5$&ckea|OH{CO!0Z4rg);XXIassrvJRpCI zAB8bO8bf$4355Ok1ZGTcZsQD)!dY@#sgwSw_3j^VLI5;7-xKvz+S(?=GWQ|6aN|Ix zG5vgmWV&`h;x#i`ppFipm-;1!zwZZeB${{o8jfShPn2HZKl9}Zhh6HLl1Keu)S!KX zFXqu!-l5M7LKx!zTwnU3Ca8G|O#f`ytPv@c6lM?P7R3+-PUiS$$^( z9G31lk~<^<_wYq!<E`6u&`2)5A^o0`4SLbWi^j6_sHsIV}Tc~qpCiwgW*h131T^n>_DGWlbTSd1{m8w$M05y9n-J; z^S^xzGP$gB27rSo=|KLMu+hA(L~PGHSAT~h^fRS7mV!k94`B^M9|YSVeOU|9KN1h* zr>qGB2dk}WKH!0sb|>Qs)Umx2_B|NOcK&Q@fLEmuMR*o^PIQmoDapc1{XANVY=N-k zPEb4+jHXN*yBpZR3?R`(6KQR)5*_~u{AOME5REX5xNUdk`W|Bqxq^Md7wzOq!}0S`rociXx0s6#GNd@umn@c4?P!MX+$@TT!P^YoJ~UoTqM6unpG&J6LZ&SM(iObd=;KVl z|F_4n!Y@yDOE1xMy59w%n%qJv5Nw!MkZGUZwHsn{I>c~TqWf2R@bQJ z5)eaCeKub#^CcjY_=ygeh{1Kn=HMhUL1;h*j1_ZT5Zp$c1;Mfkgsw~RW0l&k&~JP3 zUVp!7{03?eHQUe&D%Z1i2ZSJ~xxM96wwvw} zV*G8gH_*r8Ht$%q#qXc|WYsY>aQ48F*5~TPebeqycgVkDqmVM`I&Pe;VK*ScaVo!_ zOgk31*hV1uO z9~*61tS$U{KZHO$9?11fi_ipskrW9|3 zKx~`ap`9@qp?Pagv-f=3$IDK^+nF%Gh@XqxmTl~}RczYB*d?8-7Lk9Dw7(!H@3@oN z2hXz9W{niA@kH5zA(NbnL7kSSWttBga^f0Bup3RUd3IKGcZlcVYL8H8p)JU&*7Q!jk^=(_=y z=>M4d5_l-^_y6v;?T{`)&89<#NV(4rl7vb~jwwQjagBRsYTFzM8=;)t);aE*sa&Bk zNlb{zIWZWFG55^>ncDCFxBGhSYkT!-GxIr~&-1*W_w#5aUIG z?mdb3^k#zevn)VSBz2W*%8PpClr)FSpj(rWAJeEb8j1lbczoN|zko>c*~{Fw6Q4u6 z3<-Q%>EB^Vbs$4ub=JxX+{2y263Xj^TN15C6}>$-hNIZkLlN=ig|y<`wz{2{YckVF z)X|WB9eo=_%uB&EdO?d9Zd%@O{+sfQZQlRJQNk(5Hk?6+hw~>vsH_tD%pG7DjB~5D z&jdl_nIMB-O-Z5Ae+D#T8|alFRXPB=`ImO1`??dOOIPKR_vhDKNb62Wd-L?wN}BP_ z>T6>Gj#BsYau2r`g?7GnD-W}}R;*xBTb5x7`E818(y{3+1#yo)z)&sOY81`URJi0O zsZDMtpGiO^KQFymVCa@IXxi54L2*IivnD`8EadT){L)qFG%yCPn$S|QyIkIM0|r6B zoyfH$?)_`}XU|+vqe?7KDO2LuwNn4`Ar8`}TiFa51_fZ1 zL;d592Il^A`)&-sFJAxEqkC(tLlsD{dpy&xi^x1ZgQ=cV+&9Mk>hD+Vb7PQ9_N3u! zuNJDh;7hr{3)tAx=rXRjw{}(feGh}PP8DR8_@41G#d1$?rTdU^^AxQ-&48olT`ZUccS$n6{fxpGl;qy$3v8AOG}C&kQxZ2xOI zpTGXUSQLab@J0nWOa76*%Ey6;APV`}*K6|5@0HZtJ;kg~%cuU0=H;W&d!^+o{ia3P;4Xb*gLlp!XJwRo*5wO61(+ zDIL?+hBctQ`w!F5TdK^zJ;)Ii-K^wDWneyrc&XY*J;n&`XP<&vJSV$_3{S5P43(VHv=9{t z1Oj|Gw>wLy>^)e+EO_JI37YH`2$f$^ldb=sIaNqXBW3~zjGD~PdnKEdUJbK)fJbCm zMhdQ`oO9ULYhixh8YfJR-xF{AKHvMj>vOUt&Y^B8;D%tPH77P*S3Ek1Tvstgc|DOZ zmbd7VRcqP~vu`x{$=)pg;cGdaj;zaeGLhN4YCp`Blyx$=9{8&C0uC)iisayg2cx2z z88!cqK62}LP)eCU45{{2c!6lJ6iWnlFCPyH2BIO$>TPF*4z(&phnZb5`1e+@9bKd& za3JSSSOWb+onKZl&Y)pZ=g2_mFGzgis+C}hYOdkQK@e*sBpT-$^LnNX!a>k95E{E~ zrF}81p)fj1c}I*gX4XH8rvqqaC=P|9->S9`M5z6eEMyO@{l9l{V|3|5<$rn^GhmOMn(qOV7Q#!)H& z14<7(F!`#fSEF?ZL>fIU{anEnpBb&eS2ne|(Y^b#&qEq&;@ewoTSP+0 zeb`bTr{){JTk>DPa89rF*ao~&6D|<`p@LE`=(8OlpTuU!NrF4{0WwuvN&W!2Yh>h_ zul|Nctl@N}7mr>6{|Xy%Y>7xvel}{F7Y8p1&=O6V{Z`Fj#P8PQDzjLuteKe^uhciy zbsv5rF?ZOnQ>cN8t<^mwmas&ZX3`i(KCKZ9Beq(EwzTe|FNADo_qr`upahT*N#W_M zT@Z;KwOighShMC$Ap{oDM8Q7Uf>}bs~O|$!`?vMv z{=aQTLpH!}aZ#dXu#yCSBa6aQ0_{%xUH-~4?!3e)o>~JkjT0g~dXCfhLCU$N)De#( z-B#!6fq=TG6ikO@r)nIT7|}=vQn)};PU%p_O@YDGRDBo=I|K9pV=#wwxDonuz2;Q@ zGvw0(PMLE(cq|$n5Ky+4fBwhAsOUcwZND_T4DuKKOMj%@N0uwR)26V$RA)(V9?w?MtO5^!I9{}Z&gGZ}-S{3T7PvgRVPi`4KjVF;j-#9aC_f3Rin5p|6Y`(Q2k~9lvgEG$Hf9*5QyjY;#gC`rddLlz{nfgaf zbm%&WczjwfPC6pQ@L$f+Tb2y&uzW7~HG`k{Q~SzsnvsJ7XYCsR)9{UZonU0G@3y=+ zw#9Waw@s#RnE@T+B%x1KDWq~J5QoD7-Bu(E&II!`@NgKst*(PqN}&_rjWF;B>p7M_ zGsi;k9*$QKyr}4gtBMuBKy&h@|Eyl)v2-K*p<4ly-9{8>JRBIW3C{I5mCvVaU@m@( zdh+e@Vv~b~h>0fwd=7-}S13`cJt8K~hVtIUWmjI{mkOWf1Km-~0T;W$x5O1C;DLqc zj`BZTRB1y-2RLZBw>FOhNfDI8ji~AN8NI>sfjr^}zmD8)S=?g|(*`mwlYOoG4qc5$ zH)^v|RG-B?(F*%gYzC#5x%EIo7D$1#sb%+gsP%P+4EpUVJvU>Y zKlnH8mp0p+$!GLn0USky*w6+%zdIv+80C-WBvN|O^^90c=q8X|L(>i9XcXOjd;0Nv z1(@ZcV;;ifKXw^pk!UxhXUn{JVe%s^T?}`TBz9u9v+B{7&%{ldBDoxhgs(~1rBY-) zn%2vUX&zxO%?zXg(vlM8%u0N)D&Fn`s@o>W8NUFE-gr-4|#{ zJrYE?7(N{FG1*5P?eVvL1*mdoC-QY(2wQHS0d?Dr^3l%~-ixj`)MHwvvQ^c~UtSw4 zbIU^RaIbfjNu$^=X>qGc3}*!6zF|n40@RKQ)63NzUqX~T&iq+vcuTDFo1sdpDReIF zyU_ACOROoc4MV?enID;l_s4OnB~wfWxm}b7o099ZyyJ9yjQ+m_={xj8xw%}j{0I|l z{4{lR(xRH715UX!iijg37Kn7&n<`q!JZ>?!C}%enwc@i{Dl$yntdw!rj=58%-mzP4 zqM5<~(l;p%Dd&{!Z|_#&w#ZwfD$c$OuINk zt|;`>Z~Iw8%*p--m`LjJD1TIS#Kh7mugTFO_(4<~ShiBrKjn|wV?p8(q(Skfz3`M> z{>$G$Ucoqrptw127vT`?a)H97al=D&3ym9U!uW(R2LMZoO^daXG-KLB^mA*oW%8^; zb`NF75cDh4AC8X#J@LXa)|cCO{~b7VquuEIwNL|n{rUsL_M>0w9>0g_)hcRWIO5zl zNARTDcDy{Vdg^PsFu(Z6nmSQ()C^*WPn%xlqj6pg24qZ+mE(V1GyOdgH=Y2(zDyM-kS&Ws<@04M+&n*@&I2)a%y@B)V(@6e@Gkd{-oCZs~mr)ayM^RE=kAu-7Ho8pd8<%7I&k_TDudI;f zs|ZE=v;wZj8@!y%F1M8;&@0tqTH>;8!}?1}CM&!$U-q-EIEm)UlBW($U9{# z4{LZP)r@O+qZ|9k2V(kC@iC3n2!i{xMlmM-CT9@*gFY{DxEp;4r!r}@kgOyGC~BG}Z~1d$uNKGSEqd^9#&3qE0do5+}LD!sZ3%de$QfVot(|r@L5V`jx?{ zo2{80f>(QM4C;#p zOebtY_Kw_QZoql>FV%4zSEg0isnL(zm<_q=5u=~vU8qJyYlq;c8|U|3cpt%gR0-=(@Y8GR>#W>mV|;cmDR); z>VyM%7lfC4P{*+$<|0I|k=)nMX*Ge>_PfQ4`GrD&fSG~}n<>x2F^C$t5GYqTU}~g+ zue$K_F{jx4H+EiC>;(@JNfk3qu*|?4T`=lO_&!~7yJ7yRWm1Vxet;w4=@f=0Cn_Kd zq*Frcy+po}S~xFMa(TUk)Qg^!_^z!e~R~0ies$l#_n*HC}2-Z9c&5^&uW7 zG+&0x0D**k$H4^r%eZs3#|5nO054H)HmA>a11b9Rl!ED~QfOYL*2a9m?`qgs23Yus zku$GD%lk?5^_5U_@EXZhUR7nY@?~>^t2Ms(dS{;Jj{je;M4#AjW|t)HMrmJDSJ$O^ zSs$gi7|7%yn3CTLhwdOx0PT}=F$WpL30r5gUq5e`Ll773Y97;DEIj4rK$<`$d@c_H zS21#O&FqrrNrI3e(VN`x1sElrK!E~>zdC>?5Ze0s!ZVPnH)=G@$6{*-GX-N7!Z99L z1Q}oemtl#GtZ+VHCydfC^M`{Hr2NYq=)atv0x&T5Q&Fefe)#0THn(am%9lldK}bC$ zWd~Q98Zz-8h?hMXd(U#q)&lC7D*wlIy=rVYZ zxei}jC_>QMY;2`dzRw^>X(oN4>4Z(13MRZ@2A6x)VQFb`v`$~^eg~EA<+k%$d9qxg zR%nK5WQA8bDrTXcGzeXeQ27*3j9)CwFRw;t&>1@;Zfq;MAKyqDcDAWia;IYcryUrs z4D)R`AN?#sSa`S`6w^B7JKR5fgv)%I#?j9TYXfGI_YW)T^O)X-7YyA9or|;(!jRt{ zZQMT^SqcGyNxIaSr@iP{*$@Ia+yJ-W=NI2OIiNx}E<`p!sSPeVy@2L;8}d!zK#D$t znL!rs`#lM0!r-|LxFsmW1=D`j{1GrBqtyUwKWn4$GvtP6{U_wMhwCFJ zk6f=UJn{x%{FpG(gE~-SIECk#eTtg2>32*@c$F5RR4}p1)u0#k%VXNm4#kIW1i>CCAY_+_YHf()( z7kNzD!NNp+Nn)ehd_TU&umNjLcugDn99i7cfE*o{SPHE@AKB|!llg`D2Iqgd;lP(* z<;*k|2De#qEr1*pWP!CvI6OQI`pp^xGfO{Wko*w}q_fCS0TV=+!8hV(K zy}lz;CZB>GwPt@UxoV$U>fO(!c^DsRk+~Od0`y~$1)HKeKU!8ef6L2$!;YFm>4}y6 zvt?w%$rc;TpwI3wlRrtG!=69#MfD;=q^brwx;F z!q}78nQ8I@7IPa%f(cMR=?IP5LY@Y|oP-eYcIJ2ExE8!9P2PwUfo&0SgFQ)h44XNE zA_$f!1aMth3qWr;4u{je`s<;S{J)2;rtgRAD+QI1KNBcTM@({+uxBs4c9cR24!l;7 zpR7(lkYAy?CKj){qg-XfncM1!h(E@CC)eC;*qOH4CDy{vx8X*fY!c@{US_vuY1GW; zqQAafo+){i(fwSvx}E&N$W1CuZ}|~uCxBy|)gdo!RyJpRLy;yB(W_vi1VCo|@fwAP<2QW=r+XQhyC>Em8@yj{Q>OS|GswC}w@VojwA9n@ zrUy@qwj&gua7O+YAfO_(HRM}x8?x$y=biXPR4c@lPV(OzyC_59+oHl5zr%hFXIT() zlMg#o(khXbp?2I)Xe{noK*1YdF2nXoX9;?s0u;K~b#X+>f!7k#HHN$9Z#*bNhS64z zXd|f{He;>38U#kM4hY^lkF=?Au8$ciP!PT|V6O$1!VHwa{P$7~b4c)JuV;ZRbru09 z65@dpM&*FRN|>PbXRY|%FmMRdY0r zST!4Z2Wr-X=(iAHa?U30wPC^K)7FQKI;fAv{iKpHu_bc_O!&dhg8h5))UkW7jxI2l z%Bv5X^`maN?HMGuv+C)-h|-A{qh)IsupiLvB$(g_{pH&E?w>i+GQ?K1?z)|lxbI@) z&bnZg->ZbDx<5ynIH0KhA$PROMpv0xc0doBR%Xw$ zV=oTg{<6`A&^DzJAUNxqT!L=c5~Ig#=UtKIxVkqCr&8@x3HTVwB5_@Zam!Bu2R9ZwROaygPa(*OM4^ zupJy>LGdH%SDNU|l%Px%q^o#ebm?Nb@HPY4?Gv{YDilm1(MR z4YL6x@K(%PG3h)k)iWHkfnxSzX%yCR{04mhrK-buQ^~!kGesgFHvR6XK`{kuI|^&- zseTu419i&DC2C34tY3g5GGlM`kYz>b%^9`a+{3*zre=kG_h&9wcR}0!mH)4*HGFzQ z<3*z;B=`h_8FvHYu7%)-T_is(dOF2OY);AUK1^0bsnP&?4Y!hpJ4d)t&Tm0Nk<-JEmgt9_UfI`(br1dNNZVSW2C@&BifqvOR;M$0$C<7FVXh8>z z14|`#>#}>GJ52aWp`dV$vOl|4fBavVN$rD8(b3X+x^H5_(4G+e4t^&Qd-59GC|9;{-v~JkJkIw@R2S5Xu0L|px%1i z4jrP7B=}@zx4cTrkg3Eck=w>cFPD^4KBC{*QcZN1RL0Wsv5mbTl{NO+%mI&gw45sY z)X=8!TF+&`Gnb0N)FUbWwtur8D;C7lZ51eTN;6Ew2%Zd^>o(n@{_j-{mxmE(L^_F@ zr3YSJ;1=D6w%(B`xYmcSW!mq!CrArjP|HP9IOsG)iovVgrTwR-Vj5oBwK=Em)J~{oB+LXNTLJE4-Rsv-4{HQD!E3zNqFE@6YMKe|30;uet6L zcRa0B$%9vA|6r-u5U$gbY(c|r?8-hA+mUHiuhmnvxc&Y4AecIwx0|`?`)ywKM+1Vt zCJ2n_CXt*7Jl#f$gFZ8qSkFID)}L5aF#5~*v`sU7BW9-bWTBru|5vaNpBCrdJ0*J{ zLj+5r+tkK-NtJ3>Car_Nyyr8z*kH-iMG9V{rf=b9dGkMlChrXZ^IAEjVKO@aGeOrH zlQ>el=-|ir zKF8iXTgu7lnyoCkj+Tvp6i&oZWdr zKO0f}nBRV#rMIo;1}eZ|w-ufb99SHOL5@#&7=?#dgaFBDgH{^R95%6*Hy8&)xyJC@ zvEEN6U0sA3t1s&T^EjqZYG(Gga?YC^N>zYXxqIpn;ACG&x;lnTI$|3PL!P7Eu}1qh z9yw&j?S>4A=$L#Gih~vNSwv7q}T5JX5P%7{W_e zjfi2U88rcL5Pn!*_>o5^h!71TA&+XnNi^V;LfS7N2tLH~KiD|p1n8T$#E0%*;w@Vf ztmx`{SONrUU`Z4l7%0}94c*Hz-aA4vG$agqlfb4OClFI5kbsy9--E#&7O){6HEZ$f z@@3dknDp?i)*89|eMSikt5)hZmvuxXMIO;K2}_G+N4%1Q z1TFcv@d7N5*d1<3-ai)ZZ|imIsG31R!&lFUTaMSBP!$fP@WJc z9UGLk&@tZ{gdkO!MliX#JHAb$kU{jPZ2g~&P525pgCygods51dP0$dG>X2a6e4-)P z;Dd%x@02et+=wPlI2F#(R8#H=YEHy_(2wJ1-k($F_aAX$g(C3|J;|TehN!I-9Sh7E zy!?BBaIQR)A+g4dbCqC<*g#^$R$WNxL@ZhVUe*t9bt3Bk7=B9uhzbsf`PO;BHUU%2 z21aH)C_h?|+b|T;RE_=*o-n=+{7of91q5cLxu_kCB9ew4b&w;6uS~^jzxI5bS9YN439wCWFl!YUu z$~aDks1w1zhnsWLuim+A8GmAD#BX4zV$Pb4KfghK?TbYE{wnpCt+^Ci|3#9nH=}QsV1@3L-lF+Y{nU=oY_*$w>&k zy`4Dzfg;ko#GLc*@dtO|ea9B5;fcM_)(xAg@xCldR~j!@8k|Ny8X%vb-%|`SmGm@U+X^@hMF8GI*-RyL!F0Qk!3A=H7aoWKdavS&W+sSYI5yAok?8fjO zbUu>AS(^eEc`WVzLZuu>%~kkEG44lSYu-Lj9PT}yj;@OzAd$#~5Mj-l-VmAE7E3Z3 zjt;1_NJ@&SGmex@sO`amH$6SQ34G2WESx~l?L0>i5phv{e${n@6*F1F`$+bEgFf^i z2|MG7cdY zi&3$9Jwv24rB*+CsJ`ZIiqS+=$6pjhIhyYwBaO;IWI{dPzgXKbvRz)&pot zl&cS;OpYhUYfu7+ex)qBMg%^gs=mVZmXb+b=F*t|M_M*jFi}X>?r7#{GWXsXWZkD+ z?a`n6;)=wTrz95Pw|sNB(i^NdJYZQE{xN}U6}Ic8svqJ^q0Qu)vKG4NEZ?*cyuv{XHan(*1}ems-0X3raGc#wZrB0AR>QgcS}f{!1ek(D zt+gN~spX)sj5Iv%z2(Yf?2RB%(n2_EtubovarE_as;Zr_dndN^2qIh7Y5(2I#|deu zzjGZd7JGcL_l}to^$!qyWqqF}O#2_rNZXnK7$w#SA3xxk44QdLsK*oB$E$o&YIYHd zr|{KdGaA;6jn?}Q^32>Rve>P*O#kJY@m;9EFj=g#dJHi{c~Tceq2*!T$i4%*x_C(7 zijsWo!C8$w2KV6o4pw>x4Xhsd3xuBR&h55w4VrImo&EJ>@~uID!%cqV=xc$aF6+_p z;>`G{`Fo#)>A2r|39;wM>Dc-ia;5FFC5aak5|jyv-)hsL3m`)rr+%yaK%V6^=7IMj zTkVGX21lu^NCN(ur%zTTuF9^;XBuI>#2E{r>IY=vUuSk#<>o$k<30jy9bb`95DZ<3 zQDACZ`MHfjLm>))(X~H6SdehEF|IhDZ z6dn7k{~WHtZNNjIK!CBWkif!-bowhYl7_xy5?vwmjQsd<5Yhk{V2i{g z*XR431_L^xo2Ezv87L!^EnfQBFEES8{<rg{dX-^T|wa83t#px;Wayv3e$g9H{C!aP9?7nMj{E4vh%|>5_v>j z>mDW2+}B>(+$Fj)TVvHYYg@_O^r1f6>q`=c+z#m?&p@xl*zM9a1ePT+!Bwl=tzouR zQc`RXzqI587Q;a9+6oPj(XjE{0^HjH@@Gor2g+_VB&7AQ=AyAy9KTgWgMJ^USc4MI zSggHmBmVSk{m5Soy*oDF=jMv80TdldVd1E3HaipCWbXeEtG=3WWg5;t(M##br9&|B8mJmBQdvD;+FDbN!61^io>B{u+zT zP;;Q zdEN;*KlICz0`}Ck6cG~z{bpH%TQa^OyRLBqpDQxYHjS+$DlKs%P4+6`p9}Qv@>#b7 zIR%%&b0WTjEL8f+^$*SWUkKZx4OGc_*-TYqy*T#Vy(-Qbg3!!B=?n`)VBB@>c?Lbs zD`JQHXFZuM>Gv0OZHQfz$S(HcQQO~{J}Uhb=Q-A2i!I!9o!~R>;p?E3Ttt) zTNLoCj%YTJ2!VMQ!i{sJi;KZySrODVvqP*0xj@WV9l-98krKCHi>fw+&o@T zPFU(O;2Mj5P}ofeHZ7Zzy$*u-N-8Ng&7>|eHmX?AyNZ>{xRHkZmei(87QZd1*D04D z^3@QbiYRL(jdKv7y z-b~w2(HU|g^r!s*@++EQAqn!p&weys%{rn`GR8;)AkpAE_+FBu(e5 z(CTGGGcz{jgm;m(WvY)ap+8PhBe zdD1b*EF4vb5?$f-62^LDJUd^Pf03cj%rwI$jI<>x5NJPdFG+HqS~x9!S(i27|K*gj zHx~8XcEwOcA6!d0@w^5R3hiJMc0P(Q{H?-EO!W$CU}Qk~VkD*?g5!2&CGdQm9>1{v z)SWiDr4_c3u;UVH4oK4wmJ`fx6rPf(4j|l2Irg!w!S=Tu zuVv#o5wEV2SvTat0q*j=`**mpnG`bwHhm}OvxTuo*j^$P_;l_oWP@(81iopea^MrQG`B2_H^K$AK|CR zp$3v!!k_#6-PyU?UjJc~3-oR(C96NC;eG9~z2#XkRW;a7@_Wv`mmbP7pRl{AUgNZj z2xsB5GTh%*IMV>oFoj(6Yc_NVXxxN=8UHx;v5RN?ucUD=RvG$;mKFDR(?3T#3o3D+ zwBktyuapApyH#J#O;a|EA1`Ylo+m(aKFh|A0zCYYq57~cv;&BPv@)oq7>e9DqIZeP z9Ck9G&X2a@CTK_zS2SKJTA~O&DZgYn<}hnDPW}A+4eM!4ZV*uIrg60df`|gs1~KVh zhuii+$Q9?j!Q4gnx^Rx)wim!UcDPVAr}6AQ;Z&C8Mc{73)E$M{4Dh#sp0+kujA9I` zEiGH7e*=_MJE@F4@&`n+DO*!@H+~?jA@Bbb&QKE3QOTF}mLH6%-rv{B=zW}}rbdcMieFuV9IKIUP8T{<8zG2g0nsRQ-Vv#>!pgx$en z$nYAhAAB`lC%A^A3_LBQHSl)1{#=GTo}l*@v?Hcj7x&iE&%^vcCtZ@we2omt*|pl( zuxTu{(=uzXlW{83Gf=d-sPZWPOt*Fm9%Yl)6N~{2##rm?Kv#Ks;c9TswpZqAf;SA3 zF7}A6SGr?*a|!kFK^6b(DGU20tRU2ia&?TpnjN-Mrjonh*;`X+{H`ynyPV+2V(qAl zjdwz!l*LIDG;iVn_;{#x$$(RzSeFt&#OqZJdef9KlcpkG6niVB++Y0B*$w}WK7Ie) z+`_`3cFFln@G#7F$uEj_cuSUgel0U1SE}3Ia{7DqCD(4bk25+DU-a<7D4DF z^Z5s|9T}oc9JA{N8n|XWKB*_!H)xlz1MDG&@ag%+@CnKPqNUIR#6aCuUCJBgnbB7-14ZVdM~N&hvWg37BDbG}@7x z_GTybd4LKPau5P9(0;cAgUvTEP(38;t;B(r`3@>|%O_)&XEbBVCx z&4WP3A`Jh$k#AY6|7CVZ1JXO$Ko?QP*-x(50LJ8^(uqkkG9*dCOVhTxSiYuXL-@|0 zS%)tW58KjsoFj6~mg;PcnqyQ{6s>i2Hnc-X5)u+31X3_%Bbud)1b{qZ_*N^HRi)mL zu7FqNlW5Zvj>X?byGpgR}k?A^i@LaLKJQPUP>$GqON%B#OqP6 zFE#K9&xPrf{JN>DqM9)<#gwhvzw@ihVtV1sXxlm)?X&V_A{Lo;rN%w4ewJxNAXv#p>sMT^4=;+7pGlX`$_we+gvr0=y;>GDO75rBS}j zf`~LkXuVeQhKl)WS8m-?Gh-T*)sgP+s(B)PIO?+DqZc7tcbY!heA?-cdl7O9mo`hQ z|M`cx+$rA|(s7$b`}aN=HGHsZT^pj!AmZM#<#H;2>^t}PV6{KZhcJGK=L1OF4`_nniWExXjNm&_mw`TRr zy>#lUt3$R)(s5@tsr*eaom6b)eyHzbU6V*<*b*n;C zb!1`TIJ6cOQ+#vX|jl@__1nsVL)6<)UIepfx&+&VYpa!G+;pd~9Ar(xDzf8r8wK4(@u%DF)J z$71Cz#TU&ysduK~$%pS5b@p3$hZ!1d?pRK`V$fxf9;5$4FV*bHz`N0V^QUcdiVe2; zjL*Ld_IsLoBc}Aq>k{Aj`reOSa`rvG#(i}e%4@GzE6e;CgtfD>!tXk0k!4&j^mNI2 zU%JLu*P!*#9?h6pOZ2FJRF>^n{yWTb&w*HaJD1HgQ z$;F%-@R<@_5#{uEc^G^2NeWiidyKl+_PUt$t_Dn{HMD-VM9<qDQ#T$;F~Br4S3{BY;AN9Wi>?T{|*xEtAL%zxY^ zJlZAWQbOd${^@HL`<#o=?1BU0%Rj?$Dh}Sf zeH$8T(BB;|k^-JPuCS2iEEjnuY4ueYL`s-|%{E#Dcu3Od1u*~REKwrY; zyXQ9jRa~UCz3Arf;r26ud%`Xr+p}Xl}@v@ZWp3Md{PR@enKOMF>Eq42J3%(;=e1ux*+ww>4}^EvReL+m4=4@I26A( z9BYZc|M?ajOsF~gnjTH}S-6j=;^3OYv3%|^h_Iru>S?8{3Rvb&?AI$1YsZsN0ZBe*FZ&X6YIE7$*t5ANhK#^PuyD3xjSdm zP}Gm~PnvGJyWw;SZA23kei}|mUTC2l_VJ<01ntH#Y1Mo0o{h7%uU(Yq#+<&o*nY~G z7`&dH@!-1s`GYc&^~bMVETB&6q}>0cSYk%pntJysZG6U`sj&9Wp1JX*`EN}-lP}x8 zxVT$6ce!@OlgP`0bFq8Y-wDx$1+$U*vnL#dE_B{=f*h?*3vB!+i!Kopt(BL&CfJs* zE4`s6-~PAHe!FsZ?F^PUlx9Rcl}dewS(~JMwMU!NmcGG-r``bTpZaY4m z3V$uHwf%0nmn@JRK0urojr@eN7okTXA^Z}lo8BT_+Is!it+Y3NM&H&hXr8e+d^P*j z1vzKc?yZ{JK8`KhiOjxh9A&C@Pr0c)SlRP!GVk5`E2^f-G0tj#R z%4>b+b-4E^TA#qyTI#XuDRowC^9S9`e`J|IO4~7pf7`6?4MhdmUrjI2F*~R3v;JA^ zuQv%H1MHb$;Ad|$>N=`_UoW<~&VyhytvvnL(ZUg%&K(&giO>mG_Ec$iz3XSVxI^06 zmk!}^&|3;Zm9L-Q7MMY}n^Exhei<+7@qvn&<9elfQL7unGiQ}neO2(g^{Bj`SQKqp zp&q{CHmQVuPq0_I@$nBC)^ha|hMyoJnVbrKq<%Z#TN-{pwgofjUFpy}0~-Q#2N-It zsdz59ZD4E&EdX%|1Q%BtqGlR#WNd6794*-Ks3`Fn2yQU#n>cym=RN*tEdB47``8)* zaMFJS3Ex9?QaDm z&J~f@B^XLZHJ?;RIJ2ROXFC}%6mRB6F$iZLGdDMPQcpvV7ww9uC>?Ci$_}g?84UXx zs8{xfZIID}ugF&qi$@3?|Lqoy>Mdw{@22|rRe|aQjkSYHV9eD-WJllr1krG7t^bzI zvs>f0uCFK#+d2i$?)+>my=8p-wbJZNc~Ip*Gn0w7cXVt4n65-|l+D%zSWJ8bT1I`T z#x-FF`V~8JrSu5DuKUaA|6TVau#d86FX3BiXu!Aybp2P@ZGY1QB4yg})Q(PeXZ!m4 zN~RGRO`9Q7Js7Eu_$}`H3rc7L`r zXx`E0loBhF_Li4*Kj(1f`0+byjL;hbo^K*a9Fn|kn_PcKxib1*`{qObvSq|WHwqs7 zxu?J9`;qvhxB}Og?*+qusIPU?8r^zbQp;ey{eeFzKQ!FltoZH0i0-P_9Ny`vYD|}I zoL`s4_9{;in=^J@Grm@Tw0~2Bl(dA<-0A1lc&MVBs7nHyF!1{x*7aGgdcCR|Bto6v>UdE%Q)qtU#xTcEho)Yg6gMVU9brKWInX$jmy z;~+R3=_uJGPQ#=b?ZXG7enzkm7xz?Gn6bqMR}Kh}-rnB&>!@K(_5M=kp!PD#n zLkx2{w7A{GxKi=1epkAVPu;k&Erx#Q_sr!wby_EKfB$iDM_iK2PP7A#MB(V*sLE%X zL=!6!7azv(OtGvJif4@|phmK*^ttUn#1%Jpn=YP_I=}Mak^chGaNr53 zh%*!tJS!?0<~k}%e$@||p}VZCp4SatKURfY?fvr%JMR2nnueEy8MY4$emog1umNc@ zH#k(uTVmhMV=$OqFsdSc(1ExFf2))3?jXByBSUIbD_!yLKUY3oeQWxT!PsrXuF0JpbM~C->LF=6oXp2kU=F zmg#Hlwq4yn@YbN#-PY*Vr1*JFVC=fQIPH^0H^@A+y`JI{HKpg4dT0Y{B@-q~pIkUF zSnqV#fKqyfLHK=zre-1QY!>;8=yk0~VM(y_=e=>(-v*hYHNeB5SgY6pHE;&%iqxjY ziI^&>>Js{6%s;myi+2UsxKS%z?4;X{$~%!-KvX-UfE{fSF27qpTpHf{jPF79j`W$r zd(BPLTU|vfx$i5EyT!XMujubnoM>Tx*K9ExxSZ^Qk7cj5lbgBcmCHKWOtLrNIr*T9 zg3|@dAOOhAL+=^hd1GT^c+X*jSbTM9|1aIDW>>7X|Lm8Gg;A<%YNlo)Ug@|%S_vtd zZ%D{acsn3-hk~IQT8=i#{4D^t!(%d-s58&NDEv%nJ|4Mu?~h-PLDF;g)M1!$bcQ4c z--{O9ukb333Nu#H=>(f57{~rM34qQi%$Fycq|9q|lyvUgB)LUyK2^`q=yvGF_491) zGSd^5xtbE2=rx6`RlSGVspi@D;K+*j8rV?{tazm1TZ+N=8|p1j@NKtL`(gGsm!u!ZFq)V-jS6i=IX=xv7$-WHAitI zoODYv34{9;C7wv!*Cmz0ZZtb}?N5d?nqaw^CTr9Rr~X5 z#i^iL2iTyH%vMi){SI-5KBZjx{Vngb|HsvP2U6Ylf51heh$J&3R3zDCkB}w_sHO{Z-x1?|J^}zOVbbTi?&;JzncG^xAgs z%{C3~Mvze%y_Q7nP*QeCoh{u;{x$otVjAhGXVZ^L6^`GWtNmP;DZ807R}}?s0m7$) zX^w}wG~@QCBa7$|r5YQMBK5mg3hGN zkFYJs00{8lP&v#MX0q%&B{2sWM3q`vsO=dpVbFsowWgHtmrOVTIVw!lwxq4OzFIAhE~@3n7k^iqXsbh?`-<*z6s-@npy%b&hV5x-)-$Eyb;12 zBo6p#SfDH5FJyI944OTR!WFf(3-cETeiXVf8}R2+nr(?1ZfBPZVGD9{N=8gHxMkMh z?$xY))k{&V&Yu&=6n6inJW_+9{ZC7!WmKx>h2+%Ylzc9)URzN~aE}IiG}>25G=EZc zrbaJ)=;^H1wCbd7eaS+;pY>{y175cPnG;OQ?t@F!<>AAV0RQCDOai4vND7rS#G{ws z>me5(!p!yom5Ih+@)U|H-f%P;CdDFsfokuj-N)7I{a&ehf1sI_qoxN-_h*Bx4|n?A zM#~pAK%g5BN>GlRoE)BI6Dzo(kx+b~Nf=ljF~6I9^PC*#Nts8S0loImoG+I=JB4D= zGL^!9OAiv1j2MrdzIa4D_b}zx0UK=82)aQ6J+?lnusgZej@~q?tEo1Q5GIP<>Wylj zT!3DNo+10G`winER^PkHM1I_>6Ln}$Y)+7Tf@_^L%SWK48Q{<0*T|_j=BxBgJ7j>b zu2sfRbT@-F_0652yD6kY-wv1_)R=wN+-5U6#xrtSvL>N^cPHkMc&lo4C+odb}dEE242d?&v<9 z?>JW(g&We-KJw9l;RkhJ-NMEE9hG6p52?yu8FzjGc`a`NMe}H#_>A7ouqw0h3>3x3 zRy|EvC`C(J-)k1gos))Ik-<9=d1(}_7R}yjF7iW!%B;~QZe+2c-JJ>FQsb%9imQ2g zpV%~E{*x4IVnmTo@U!*)r1rATeC<-}qa$u?a=)ckH!mj#&K>Xp$S;N2@)-?_gQFi$ zAFFCz!A>ISMl#8?+eS!!u2m9MC~DMtbDou)KjON>J@kQq@N8Wbw|JAOv8^HwVp07% z&u&ZF=Ery!!3g1Vtu7%h| zS(>?$j>awRwu=l!C54H5(~6fc!`webQ6*1PI_>Zh<@k61pDsXttCuP$FcTXvMzao<2_`eQ_Z0E_UD*>ct&X+e25SL?wp8s>Ba` zT+zNx(P`F>vH7I#s1UXClVU)E(Zb}0@v%hPD>kXkw|RzI%`kpTL8lqK&FUuoiYr*m zQjTW4X<6p`)^_)Uq*2;6`g1EQKJm9~3*-+qZaGD8j_GYj`nlc}5YQ5ho-^f_egE0R z>M!!y=EFPhUaf>L-+~(k;}M{<9mNqK8H2xQxg@y^r_5qs3h&U6Warub%oJz zV8Efx--+xDlkgXy0u5xq@jcY^jGUa>k`OGA9!AnU@s(MUsy+6N6rGb( z8WOK@XVmYQT=#slLA8R?zVug-CkGelm)vQ_f*!wxQ6U{Y&t0_$~j}UHg zd~erTJbYz!OpR*v-iP7NL5w6t7HX3wEMO_BuWK{0Nb11Gq3&F7lM2Qr?1;=3Z2v*blktuwvXVzlgN+oEH}g+X^EbPc1n~{fcWKFT*vp zQ@gZtGMzH;A?rhLW9smd&3o;E!9OS-+hz&Tn`avE(&5Z?bZT9XD^7bU(A!VrbQ|&= zCYQbyJJYyuZ24uRJ>uB%CaI`q^i>Vm@0h@FoB^c>z}?E*RqzS?O@$ z`mC!3F@`Z?_VOq6%%HD*{N<~;69lNlKzUr?F;$o=8Op3`VDc~F2*ke$(%=66z$?c6 zdceCN!*V5^lkX%RcC^3qJGgqP`a;pIPQR1v{e2lfwK+IIJq&CPauI+3e&m!cLUe=< z130gM%qr+0;PfHmVGC}c%mzL)tdCpFo?X2D6qNr-nj*3s<3pp^aTKHCuAH&gOUl--}s^&MGaz$yh8izKMv%R$GnNA%yTmj87M zzV?x2+32-LBZbz_Nd2?zHELcyR?s+dQ~a55ediim$D%=BcaX(s6+^$PbF}Ik)~-n$ z46KF?kz+qtYbIo>;5^ca+@6kxof#&gpARfwPn#SRt4>(Y>2fvV<7WL^U*kqo`{Oz7+X1UmCd_%ZY>Rgp_A}h6H!(dY$j@>W=l1HEuaeMu6t51r&ycGMYG; z$DrK6JO)RN4z>#jQImbN$_t+SGSAIl0MD9jCYZ{nc{I5R+-Q$q>>R0|t5p)+@An0V z{&<^T&5O<;?vq0No1=W;NR!P&w|TB+%m6nxKJzaJitR06YOL1$(~>+JOl&M=|vN z5QBX()?!eq(Cvno`)*SpHprTxqexkntBOBnetRk+l@`~Ef{0SV<};5q&lfTMZa0;3 zzrEs>c#Xx^Sm}N$0l4B{wHu>EaF*aO@eeyAgtI1RX5Mxe&-0lo=+XKS%(mI1(CXhi z6B4%!+81T@JM|`Q6`!hpNWOKi^>bn+8b^4rs?YGlR#7bO$Yh|S1M5j z*0L|QAo6bk%!cl=Ef2{8M+3DoEivrU9lv9% zqy$$9Yk7q-p%mXq{rq)WiC^#w?|Xk+fYh$e8J5MmuT|`Gy*#H!-GnnYTj^#YJGvdd59-{ zAaRsI6<`IxyugeCQDnF1|!K z7aiGYsmYOV7I~sSorIU+h0V^;rC7~43vHb>@4az_?a;luD%%QB8?0b8&}N1lGUjKgjDLIYq5MFDHO-R0q z>BgSMQf5QE79Z0vN8x`egIC5L^>TFgyD^AhN4^uz}rdOyKIpmzH}r zIywfG01EB*V=1XH;O&m2xgE6Y_=zpfTM@OByRYDv^R_Z4$FQ=-`qa8ef7*#_xzP!8 zrbcA=N*{sfw4a|}RV!t~KlyfuO)_+c4NToU?tF8Fz}IEg&L5>Z zY~_Aen5F*|t@nf!{q2%X3>$V>9_txa^{tEGPD1ZF{u_Q<_VQ_auaR`xy%ns?;;@hL zB^;C437~r{ROZR3#IL?SD1%PY>B|mOq<=a)5ep~?@G~;?po)*^SlofxBT&_mZnPbM zl=}?X8QngtO?LFFv-&SxlLYd{g~zu-@JA#ma+_?Po?v#}6Z$FrzHmlAI9@jN!8-r3 zzGa1o0<1wzt1xblPriLEkxfta%Od*Y6$jk(-wc)8dt6bm(t7ZK ziovU7fodS`X4nh5b%RAw*8ZDVd#&Zm&b!GA8tWX*>)*-xnW8gzrN@pEDFKy3rhYhu z1%7L}(0QoOEdr_yn;kUpoX+2}De99z1^uC-VE>8$SwJ2x`|;WAkl9cyEICh_)Bjfw z{&fofbhxQPT)PX9l1RwSkq(=o^yL0YW{gln`T6_E5Fidf4Z?r`>j*4aDRfNgL$R*$ zYz3hzhR#oOChxJ0SCPFuTDU14`;qy&Cbf*^pcJ;fuMw-RFZt0$-iltw$|ugEecxIN zDn4BOW4uj-FdHiF-BvAA4~^%N%>CB-gG zWvEvC-Zhx6>BJ`)CbG&(Z9Bn=ebm}GhTd&rNyY`~G7K$mXJR})38Xre`hK_{@j&Wo zE+wX-z^7j9Y2s01yLG-U3*GO{JKwEB+CvCNU2o273R|h)UAlyul5E2y2SgQNS3*0? z(pQ}&=Yv{h>m;!oSJN051TjBc*!|mI5-rEl{>)U<$|mpe&%IKu_`Zcuu&j4LiH16? zsyTo5MFYv5@~{D`hM*tamUIxFyYl+7A_OwP)QCn4Op4(>K78tukhB*pllt=0yvSMQ zOhL#Z7uO>a+cmb_F-C&Rpmo9TBM)N)h?fS)Ush8uSL#RqzG}QtynwMAyo-44;lOF6 z$-`_gO6R*GPK)!nRRtP=q@*NZ@JDK;q1?cD2p~4pUVsPy?FWa^qun#H&2T%3o(%v7KeJUaWs7t!hOpYA*IEhHd10=!5HLKByZ? zR%!Vfhf4Y>z#;(uhSZPx^SApuuLKa^ns$RFMFvP`SNuRmKBdU zR?puYX3)pjw^N)ezKtTb`+iluay)agj&qJ4;*`QEYjK~g?9s@Tgv~L7 zw<-dsFYumpD#OpvIKp+nk+443WKpKPBr`99emQv9CuXM70q)RKW0U(^b$O-KY|GmstY3{64K|r_KR!c&&CI3JD%+~{7MK#2{i)x!jdN| zEl|4WKw1mup_XtNpYrI+fFO3=0~Ocr&A88jytqd~uC)JW>I%J%FINLEu)n95*Oot= zse+>N?7Jw9ZuV@Hh^~HHz3UTIhKsJ% zUwS%8#JjJiPw-(!1IOOu7gBX^;2Zm`*R2`yR8?Xvq;@{0ZGZGv;M%RF`H5vQyO~z* za0#R(cNo~zRv8_w*V!3Xvlt?Nc}q|1j=V|Oa*?BarE@#CQLMYLrSZDKizdRveR>-^ zyd>R!M-$4}B-O~;nYdHlljXLrfjzeE681$q|(0Zy1iNexr zDax&5GyXul&1{_ZT?e_9@gmnB@+iXV2#nY$e0hSU%V7un6@&hi<4l;VCUee~=A&ds z(_Bo$Va5T}09r)+5;Mkw)9TSb#9jfbgF{WGIk5+*u6hBOGh*%be)2Z`w~t zWi!%fgHne0qJlG%LfXzN#Yr2A>xo&lnm3Bb%xj@!2E!sviOfd;Uz}}_ zFp$;f{^PR4dV+I3bs0)jaAjbo$-b}s$mN0dDEW+cFmfW>1#hPaT*k@SSzC>V-F3(2 zXFYv)WVe>hMUc`D$N=&K6rB{g8eM)E-&Wi165q&^uzQyk=#)DAg#&Xj|1=@5ANcyp zCEh%zpx?jd{{U{iIv*Wraty3IP)#&8eF!h-i#-)vIx|GDiCs~K-QVA4@HkM)_%B^D z4m>Fnp~cKt$u|G}t3B(s4CeXi-5|Q;5Z~lur4D!jv?yk1M{YCA@6bEG}U)F59O9u9<@`tzS<=rf{7X&{kogMp-=6; zdTomnJh>!x4CoRXGK{m9pL24ObUwyPr>om6vzm2$1wNxEgl2&twiPyW= zq}J2)t$+VCD|g_h;(OEkg9c{*y*appZ$JX|hU&9DGU#ex-D`R~BmF5*@8OuJA>Zs$ItE0)=*L%jLI>VgFU6NVYNa=@=gtyK&fRt)Y@% zz-+v9T`fdc_O4f|8Y&Ko$L{vj)YRS%#8Ti3HtLYm&bf%gxK7^v3x#H`i;ALmZe#s{*!<${XyRLQR z{KmC8LrE$gjA)rzXiEpR!+yeG_ilV3k#tv{=0IS256a!?_twA-KGr91;~khSC0X6eIp)uAhP!d{w^S82KYVk#FA}#YDadte;c#oau}sFT z4~EBP|c0Y(|x}wL5T(6ON92L+9=H2IND-($C`~5YE+6JnwK1M{U9&tEA6L zE7vYenOEq>(V~{zs;ufl>q{;r6Folv#FhB;Sz?GiZIA02ySrAUdTh&^Y!1e>teCpn z0*?*n&!`{iavm`_rLYvex1_L}ir)Nu!;1;nRlD#E-ESiw8^wHi4pQG=u0EdjTBYpx zBU_=TorIUUmS3hCxXJHpq1?DLk~DtFPj5K$;YIpgtvP9Mmsly<#IyNZ_(#>(n5T@f zy_GQpEv)fty)j!$UN!}Wrz^wFlOHBb>)IvT7RHH65V*sG6O1{L)uFr&fS>K#e`Wb*CZ{ zJ~Gr^kb}Wm_ji)}+s$QU9VL=L7z9y>qXRQRc57rmcD}FYE{5!u1veU}_)z?r;?&sx z&2!{U?$vB!w^l-72J?qkcJMK$abctq>U>U$Mc{25orJ1V}sz4CsxQrY|}tWT#7u%(5XQ5?$Mj3-j| zNM3aQ5qU8UQ!J(|GW0x=dr7P0^0@p`?G&-S5migQA%6Bmzul(%>!B>)W?||pD+5cq z52`mg6tD2pTiD%>Bb)l8nc?xXG!fZ|A-)NE$gV6OszA;%Gc}2dTjSo_$5BC3_a997 zZ4ze%eIn6@=Vq!`yfJA9@m>6uPYhC*FEotylU3MzXR2?%TW1!$YteUQ>eVU!C+dTH zvpgUQ1r1JFhzIrKMXoZ%L>#z4QtD+byeIV+-mf2-nsgeDMz~@?2QqoXH)rqFvjAma zWmIy!)+P}OxQm+`J?!4FZ6nkke0@NG9-`8?x$frbz`&XMOKM8+`kLB~(EN>0#E%Lk z{B|p{WAh`r`(0|~y751{pMZe+9MSD#-fnJd@g@93$mznLFVT*mUm8B*3t|sMcLvM? z!Y{H?{~hd2&$#cBFnGI2kiU%5a8F!WOk_SZ1)$;|YXYqQF#Dw(PfVGIApw-nRr%Ey ziO?-@VVxN=*qnoE5-pbV1FAAHOQc-leccJS#BO9uZ+hAHT{DQYK=`IlgM)+f2s1b_ zCCl0NBKpFuUVE<3%;BiQ9Oih*r)}+G&w4mr9Bef)M?<&t8x|cdCJ|24XJr+u+8vJ` zTZAt({U7|I8*-F+;+dK`MzVG1(;r;FiJdU&68vEPx>1?>vMIYVo9uhms&-jwzN=Sc zX#3cx4r}(iE$*)PV5**a*-5gl|8DiwQW76yr1x~)le(Qxm=jG8T-Ux*q%9N|4DT^m z(cL)G?UlUg)tC2`)wAACD}O=c&#`zB4}2gGt#1;ogb-fuyiBTtLHQ!}VA}kRhOJ+3 zio5f1d}e67gzsd64<2!GpL2TsHcH(cJHdhus!Vz74V%Y45dPWX4H!nk zGtgjzap-+Ry@j4>`2^<`PJzCWQ9G!U;XD5ib7VI69M_y6~2ZL>%Nczsrs+;fq@e)lt{D3)|mM zi?tmeley!T!<+j4rllD1MR~~FcVgJ1O()jLMT+d-p!TBuR~$G2B{^bs+tP@ap|*G- zKf{{UjCjT2N32kygE)h5u(GK&!`)`buV)yJ;`=J@;y=2xVpWp{81sV64FWK~`?C7Y zIcw-n8sX{=>f?@xdcJ9d%^JqIxq^CjkY5A%UVVn+?LA)!*z;iCN31%=LTK3M|Jn?I zoA3NxGiVRf8R)=A^o+3z%=v1*eA@{E2ksqQ9noD3&lvcr^GE1xc;uf3WbC+(js@+K z10)Iwf<%%7lxIZs>>zRXuXlCm5ooDBnxh?N0Sz>0B2|VleTT{E&0O#UACn%OS*e)zN;NPv+}&t~Ikk(t%UDQP z`Fr-nJ%iGWChdR?rqKlc`(&H?@6i@6LiP7t*dKT3^AuCg5$P7;`5^BMyKesOHD{q` zq;ZK0Mr7YA*jZ1+h_XEW9&j-_Ewz)&G*#>LqiH+s(kQ7gd|Qyo?y3F*qs%03wx8~i zj>Vc(#It>f}(63=>Ixq8Zq#gaLU$eg~Bk<#rT-j^eH(b17J0jccV zA@$>pjV@G;Vo);>stU|PXe1O1L6#BI0U*mze7rN>qKW)xXIBa9C5jO#n~4`gaIIs~ z^04PXp#jrz0UV)Y@c;ibuVV|=QRQXXF~x`Xb#NXmU&vTk516~WwLCRVr3xZ+U;3C? znd6O`6sh7fj7vV$P07tGbU2q}sW4JlY##=ym4=SJmoy?9=9`$Vm(uMtH58!Xa%5-p z9h+p0c?FYC#n2a~ih0pH;7h9>TLYfAs^qXk@(n1t$N9lEYz@hKG8VB3!;+ z@M9?E$8=lvQf4d<)rNY6!_^$rO!a zlZg1Uk+CxI9E_EJ6~o94hMEp?&*~8%73S@KRujwwEuWt7TFJkiO-y3pS-bHICyPr$ z4|tUCJ3jvpT-g78d3pIQZ}{FCNQ%ecxt=4e6?{Rap|&lxlS|+<5D*ZUn3zC@mPJ>J za44QUicb`oGcFuZd+RvXj@59REe=RvtA>M%Xr2MJf~8(0FyoeU#-t<$r~8Ra4N0N_ zA{?$EFd0jp!)0dB4v`gSKb#BR{9D>3F1ADXG31`D6|0aeL_3;%@YSNd+v1yb!p*(; zV^@OiPZ6U!c;iZ)dt&00KOFsY-Hz{bb!$3Mn^Iao0XS&MgfoNhiz|^NC%M~okaaU+ z#wsX?BB^si!umiYDMm71Va>zQn=hD-{Ekjd2O)h-l4j+&Rm^1+lc;0C;agsY-@O~t zT%T%(^u3@HR&X_PHoUH%a^lWPO>2YbnJE2Ke5x2H%dZ3n&y-3R67ftbhgh=Kn_byYbCyW8b4jp@i zl*TG!b(12xyp$Z`i|ftq%=2KM`cHoO-J%Em(x%F8nu`=mLiI6zlkuYQFWrOeXa&+O_%;RyOR>?TA+x z`XL+%6@$bPC_$#4@PQ=a0ar%+#rq|5;V(<=1lWTD5l&P@y( zEC{a}a3`~kR-4DSR~f%>Fm){XojJ(U@GHZhuUR5ppu@6W=ywxk=$9)~uG+@kZYkhz zLLg=s@ZoBC*O9Zgqv7RG#60vz6aW|`JRgaOI*3P3F{0A8408p^CL8ML*rH<>Qcoyn z@~`318n4)?L;u2~H5vbgQEDJ+_VB@t-}XFQU0n|aGRnk=+ntjUlA?oS2eFi2Iv>S! z6r&$-mV!39^YA;YvD@RhIP@$PB1MA_E@fUsZ)DIfM_VEtiF*8c>T(2`u!Kw*AXh-f zTeN^W3vlUbJLFv^KLY$mUOO$m<4^%J?yR$V{=banu z?(X(@45;V}nx~D%w^yp46C%;XkTZOqR}N^YewJjQHJG+OCcwp;Ju|^%{xIm%i@6qp z?AYs;8hu8}yR^DfX4{wY$1DE}_M2hE30u?QN<8~>b>mcf;k$Yh-W;m+5xgz%n^fp4 zU;dR}iHk8utEE14WY~^;WpG=0;VN^7%PfV_MtyGDiP~>MRKFnb;poW3++ZA2yR*?R z{&d-0^#&XjdA^P@uIXVNNR9yLuO+^-SYhfAEv~oi-XHiu#AG~Mg{@nCEm-@cesJ_2 z@fm}?`}#?rQre9=vs!tbsG)(X$^VAd5+j-2x$M2_o;ZjmzoE2TlEJ^zr^ydAi1K^8 zLpjjiDIweT#6!SbMzT!rSzPGS@4h$k^vEdJ+1Ux;gEz)+YXejFDgGG#dZvhoC43VKhJ79LuXqrpjM65rLhLxE1!2JA>}LvM0UE;%S|w0z(LMIH^ht z1qvA_CYLJcDjKu%`?+PVw7BxjK{o>&ls8dW+5RX`92h-KLv*a#4k-zN{dA0q{3D5f5|FLWSV09?6fIv0DG~ zjj=vj@<7($qcsB@!KCr3iULM-R=tZ}*e5}eEhMG`cjt30Pn}q}{^jF(w!n)o zAwB2!9O5h*!&IrathM~y^@EEC>l-PpUGzP4`ik~ttSKI&VQ4h01{?o9pSk=CjfS3# z2*rWrhVRduhDa8leMA^e{!U~efkC2!6g&+^foVtbMb8>rDpdZSu4LUw%Ew1s;r?q! zHq`vLlz4-mdCcf!t3SLf>REQb_V#L~`p3Szu6!g-R+>0>BDa6loR(?#`x!_FD7`^-Bl9X!{Wj%Z)qGM ztjWJhCI7o|Y`wI>OJLAkT+&G@j8x5EC+u;BMTn@f>1cWMfZ9+wj?U<%{yJshv5xY$ zzw-w<8YE6xakWk87UCDAz3(}=zf<<*u$}vXy~lr?!1l7w&noFD(^ zPhf0^kY67z;l@j>JzthkdA0&ZI(?v6fh1x)@85>?`nS zZ>#d!mb=(j=X;C2e^F}we<~DqcnJ;W1%I^`vFA3oOC$__~L?HKn@#^GNT z864m$TZul5(W!_mmSl>IxL>11BKV=Ft80cEljc?QpQBw~hS@6fWy?O?&gZ;d7K(P$ z3x|5)xj2Pq6?^A}ftv>7R<*pfP|~7Yw8`w2+-mL3MFlKqfdA)rG?exrnZfRU3VFw; zm^JsPu0vT~qdeXu?bzYq(V&^w0+zy*X!mhe!<*q`?KP4N65_L##KeV;*q12(<;!E* zNtLzyad*9+6<8(3EO^DP4C4GGkkJe2ub@g~Z$zqa%9dtsZGOxo?N*0>L)e|tx_y{s`gyC;@%nN zE|)i-Hyp_}0$~)eWeA?pe4PD@+eoKu#)RN%Jej%=)mnO5vTp(yU`%Kk^8u>`69p_3 ztst^OG?f6qefMHV=vR0;4Qz5`$EYbXwLeQF;}Iz2kIESV&b7HzMdh+;hb zwvEfMl%CmRYY||zi;sH(&b<#M=;y~XPQPl4WL*5E>#CsTt3+g?k8wT4opI_^w@TMW zL_Mi79C%R3q19wnPAYYcEbR@Zn0Z~ZIkX!SYf@6Q@UD96Eyukbu2~~BqVA_o_q5*$ zpls2MU28k#)PiKR0?@oPCFox{r|^l5+zB*mP(UC);eGW4TuUe$h_anQ0#wTC+j$#m z#P%T9HQ$+)m$<;u=GekS-%Z(bA`&YkW#E$Zqf|Bkt@o zW65hLGPoG@mvkGlyHQspiHFnPT()Mo^u-O#*R5cSs97JfgYATi3$flIH3W3O`&w!s zHYr1F_{45lsH^VCmY>n~_jGlA2GjH~4M;AxUEy8AQ`FMgx1WNTc`NHpuZ>kEgxo;&_|Z?0w^P`vvu?9C5QD@zficQ+ zXV2X8?*U`{u)paa7esE*-|;ewyR-Nb_k`Xr56zP)bg?Os{KcAq%-_sFSC8zr!o7oo zC?K`+`Q2IU+AJj7Iaz{*jxwk5Ji7)%6U3mniYO~ay1Onn$0{a~H91Rg(}~MCpl-LB zT9-a=wVUVd&+Fn3fJe9>=L>8#aKw?YAEf4iS`Uy5(aFL`*>W2lSAgH%)3R^ARiy6Z*^RS zxnrRfa{P{8FZ$?w!tZIN*!% z(GG2Bzbg~5-7T0$sNt@4IlLvW-h%L%PGh~BbOD96tr8+c0j`XdBX2dJq+=EG>Zs_& z{4dH#OvT?exg_rm+IhrD3wP3ItJ5e7cD9nS!BI!N1YBZ7lnl>cfc6dIrobE9cO)$) z55na@=V;JG>zEn-`3uiW)Ad*my-qX#19E2G{jVPP%Rce2Fj&+9R|>S0|2HiG9CX`S zG#v8$OCG5N1Z#MYcSBKpVb0BXjjrouhFA+Ul#X}!|9-*4^Vj>_M#9o{W5F2gO>Nc} zOoel90(&cTm65gi01Fc~nP*xkiBI?FvzIF83w1c}!`gAXFYxAUeG*- z?Y>I)%2=l-2Pf}`Mh)|U`U|2%e&wBqS1Y(wcpP8Bu;mheO$I{Au$l+5#OLNdW2-MwS9^IL7RY| z(+>6zk>nB;VL1niiP-<4F#>@&sT_-e=D|cTgW)2xWY=d|9I$2x*7dDcATi zfisrX0vS%kSyMxUw;hxiEzC{S!){8QFNUf{z$LgVXpfg4&2`hiBOx^uCXsXOmKg^q z-VtyD=C>Zm`Atb#V;FmoRy@CDIs*g9Rsv*e{Bh8Sfj1ULj*-oR{y8vcq%2+`o5*&V zsvBn+Q3~_V>gd^Jo2{1(^-iNX9E|z?@$bOV@K+tv3*&7xcLq<8>bZ~AIB!#KH%YrI zG;S>nsNHg=f@vW2B;{W?nut^Az^>sL1ilQj#X{dX$EB3!ayxd!CBtBIOj< z&-YbU;}XAHu@5A}y@+0tZiCmN%3UpK=`S?92gE(pQh~runb^m9tmmHQ$&sQ3cfEOc8DyK{V1jb<7Qs0rxQew4`6lE` z1nLD*w?Ue3s@c$gWtcL9I~C&q6;0#q(StbxPfV14aB^mc=dH>5ZE%YUlW*UC^7WmP zdaA}9E}L^_*IT)`>F>A(JSW)Ln{=Y`Hd*R;SgiXR&Q3EV7X(?zXPHj*F}Zk)Ye`yB z5VoFoHcKwE=Ao)kd0qY`A7t0^evJ+LN6@57v32(OwtFtEL@l3wp-%P{Mb&`%e8Qn* z5gY)>ZCv^MvDhBcW65e`^%K#!osC6{tDLmy0Qz5N`iybLbyhtIWAJ z`Og()@aC`c{k2z7Q3vh+_Fo{^6&6tBE$78eKpoI%C{`9$(_M`7^WSea(-QT1VW@@^ zxD+Dj!^tl9=p^!(0}^`+V*N)MXDO0S2eDHfMm+w2VRT*z^Z&4(r>>bCDl&MjJK^fU z64tk8o;4A5sNXh=x}iT?IjKZv#p}baC!j8%$b|!gSi*pXQ&E8fzd1~hXG9(y`77pu zHwp4i@oe|;^StGmsC?@yo#KwlS!A67C+jJdmfG22CbL~Bc+CqxTI(tK%Y!$w&~m#c zLWza7nJCY-&hW|EeFnYj&7N_8MB*N4Dqq}}%7eb&>~H@zBzP2B(zFRPc;voBm8dSc zq*Uvoa}U;6hX}~Uh^OV6y_Vs5b*QC^E(pRgE*nEh?|tXzHhvt3=YKgZJh6D_5r<@9 z#FkF*Pd+Mwl}<1|o2rZN%GUsi4uNn}Ct5|@m=kRgX>9cND;_WU}%hW&|{ zguJF`lT-pT{yNZUKb83(TO_G5(yFaK(=EJ61Hoz^^#$go7)*1!*=gm*4){>oyA}yC z%ba>WKMS$NeArbGBMhvej{LmhqG8!^U5n9Kl21ef;la*zDe1lo}%~-YaO{KN>Z~ z|Ikip2w7MLJ2kwLlprnPm82y3RGi4gisAFK>^ZR;h2Ezz*7}X25yvgi@OTSxOW`{$ zu8lvf#b#TS-3%6`u8U({S*Ctkf5kd4sixXDuN`ugdB>7RIzRARVnGj8V)hE>P_QJD zY!9?8WRU=Q46!r=Qk!tweb!6TA`u1_nL8jx6?S!KmssI$YS%;LNZ{kSX8_pI>5i3| z0TA%BwgoOF?pmBhWO%$*h9&(`yW>L7&r>M4unFEAmr_xEdtlKywZv1s*Vr6feo&*2 zQ}<8Sb~7he3d(By7|uq;-f<0&GO=}u!rnL^c(LRAy6f#y-tbW$G9_X1cuj%F?Xv9F z%DrMELCJkJUA}|{u?+*l&CzA1AX5t8rJVr6oz-JgB?Gb(h7mYap_e`AUjWpdBYn?P zmUO62v{2|&qhrK{*&g9Yw0ddRLZj~~>d@MT%3TG?laf&sxP?D0=S94FubAra!U3{@ zw&t;II*AhudCLmwcW7zlG#`NB>*tO0>B9Ild&bc+S0_$B{D{3?bDfS1hL|pMb9)XMl?evS? z?D)r@{P6tst#JW46YLxuR!%ibZK(&2nX=hmd(jb>SJ)e)DnDQ2H}~%Se((g8FnGPq z4!KT@hS;c{#{dmw>u`WThjux>!- zj_JWm(H#9T9eE-3m5U#oUvH?Tk)wxE{8Wv?xCBhk$G6kiGb7&&zo zL;eqfaGgKrU?M=A>a}Oy{^`8 zSX&d>R79^8lEx7a=+5L>WT`mtacL=iN$*NYJjODaMX*UjK0OqeN3~JF!O~r}LNUPF zjQpH%EU$o=1GvY|rjLX2x~#VrI+L=Be2pWv8a@=~RT2lg=~?rxlhxfhC`_Ryo+~Ji zsi3jEGXgVZMc1McHucrY-Rl8Vg>HhgSC7PKGEm;tay^qt`DF7^X?$x19|fV@*uKyc zU2?-t1|`x%`jt+8V@N}7mN@Gn-?q1h#@l|)Q zdW*GXom|S9d*q})ARM*A`65WyuI#=WvlNUYP(!D3mX`%%PcKFUFHQKoq2CD~88O^awE)n^|X-KSk+j1ULc8ooTU(fH|)AmfH=zJux&jqc~{&z2V$ zyEbKgzS&?alcmxrd2hjC{YVLubcSGlNNroSQo7Fq%}`)nAzQmVd0EO}n~vTd5)!1a z8oGPCW@|c$mKG83ASQqK0bI%U8k+-}W2c;IX!qw>K$Vc-FVMyqRO@bcNmLHi^Ia#n zT#I}?s<2-2%9N}sKyJq6QKQ;OawN z2MU$$wbC|~l7q?^XN1F#@lW61&1s?d?=Z_dj{L*Ke`K4V1DPt8oXcJF- z9a*d8+5BwglOp|S(B>GymhZxO%=>}LW9f9s-zBjbMUZGQQY?EHR?-cL!^R%?hG z8&R+qKB9E`$j9O=o8+^f0p5tQ7!>F%{(1JpqF7A{r=$+8z^G=`2Nl&Uz8Z_3|A(tH zfrfhj|9?m-*(!q!LN`kj*>_{FTOvEz$x>Oelb!5RN_NJUwQQ3uyKGrzDErvO$Uer- z@Ow|o{r=DYoO_OQ?zx>i`poD3el5@E;|Zg5kihUQ&6&X(y(=8*QuYZSnUXmUf~=_; z3i9KF-F>JjGzGYM%@9kupWrJoTQheh$j1FSXbO+5N$9dsnr`6=`mSIA*S!b=A~*m` z>AS#KMvD*tG3wrN56zZEWn?CCIZ;toaAaNbD5Ireg4O_6uN&&|S~q2Cr7_F+nO@Nr z1@T_jpvuBK&&u?p8)m}5Uo174bGa8Z{X=n91TWO+k7FWzd8OwEUWC?5&tLs=H>pu^ z7@7B8bnsgvhTyB*l=}44vyVj=q@12GEY1h8n3g1EiJ$$w)|^btRr)b*ZJZd4fc`i= zZVh>0>8G4j5F#_ifAl4B#)v9(85-@kxf`H;)esZ4d5dOKo!$w56lDo?ZXT&^Xy}JF zeK|(>l?nCtVd?(#c~3J8Iy9AkLVd8_z;+=RndMo%Yj)-LqOFHQRY&JL-~)yqs&=Nf zG0EPkEHOVUGtPDwKGbx})pwYe5&R5*nxpRNS6(UNwEuqDEC`wsz~sZ zRUNz=w23ae@=^ttHnpFIv!B|rr^6XNB7h7s&-MD7Vk;wR`+Yhp@QiZ5Tgqy?*_V zVC&4EjjJjU&E#`fbdY}h4I2bsC$5#iM8J3?E>CtsT%^!=Fz>vSGBW~XHxXH&sRpYE zm(;?Mu(YHjrV1%gWPr*A3}C=@HQ_L9)d(yKpu7ci2+WgMA-DYS@HWe5`N(NXd#k*{ z^W)D_-|{;zXh2Y9cq5i&*g`Nqo@G9{H;$!s$#Y1K#HtXrDeZBFsPa@v$KJWtJexI>+jnDF{l(~1knDMGVFjEPhIbi08Db&3XZ-GS;8=j5i^ zV46BJfRkSH#vCUM8O~|_Dw&6iM{)-XaX*zyUQe->S=b>qcQu(1&rw(ZxIZ|Q5e+Rxn=?X(C4L6WE3f3U(6Z8JCGmH@zxm&f;fq_o3Bit zWL{1PF3W5>@DrZ;b-)rO7a*S=mgP8AcB0A9xHO9jUp$xW^pbDj<;X4_k|q6NYf+S| z6ZN`6PSoR3(fPJkAJ#*G4R64o{Fkdw^ilXina1I3h67p9$u}(5Hr$ZKCxHOvRv+2* za#;kBW&cGQTbW9#3*K{=Utu4`Amx=`7s6yu7yD zWVk`k>Gs;nK#KL12lT;rWllOm0O#aP^39~ST7dpZ;w}N6Hb8Q9`+Qa@`1#S~fbum- zhK#gCAz{l~q-iksceurKu?8=SNOY((ocrPrLz-@(Szy%G;@$#?D8YU%R^)*GPdDi0 zcE-YL#txBZAAPNHj=X!32q>+3#G8tjS6qQeb;5(Ofq(qEFGN5EHWIdI(DvDcCFhv+gjI)c6W2_*3klhtaZ!9Y}eB0~E4;rOrlc)LVElw^_7zExWlj9J}5Lig$#E z{UUjnu+Zyxq&)Vahu{!w1!v-`l~M964ftVyr`88t0$yA zs6p3%N|fI$NWTWwy@m%E6+l64%*!ZwNI|*mbqr!NfJs8n6d=S-7_Qt|2!QX(aC|H3 z_;t~OtuNUl_~vDo0*Xwh=e zQ<@4@wxBfGDjY3x!zxv3)UcTWvuBn6VO58RPltzVEi@gR0D6rFgG6B?7-4R?%beyR z@o23l6fq$U_Ij}{{v&F`F8g_7pY4j4WgcNnLZ(-QX5F1nJ`wg*m4|+~*n*Z5E*0^+ zPk3MYCvC?S3^$05MJBotrvi?taPOHukb#prQdd6-&i&(=b!qT0)LIkQdLO__=VT>jgq_ETLW+V zdEmTt$eat5c~j^0k(~FkKdWj=f&>N|=r=oU@!Vk?2YoLHP%-s9TL$AMw0X z@HjMOY_;iLOlGafvw#E!{>O$|&CaZpR3o!o3EgNGHp{J=CIX110VVCO9`w(<4jc&% zRZ#hu*04W zFPJ-cyZV%sAC=p?8`Tj`xICU7cQdU#gr<#c>!GY3g8iz+7LeeMJHE61UGho%w;Bg= z0ss?_0V7UeKu;36MBO2!(VNcwQrR4A|FPw_sIpA$Ziip!+hb9%6)&auHK0&)?P+;J z?;|hQ%VFmhnft4$}J~(mG+YL6;aTZb5Xxi;Kd2WRjoGvCb2a z^82-%q_HksSh?bZW^}uTbn&d6U?r#_SS+LeE$uG13-h3x^e?#3>`AfAK~G;jE7`!h zt^hl&QO4s~6g8b6876`h?CS6dnIP5f^X4|otEF2cWujW!JY@CNjpggIocS18CvwVj zF|C9tjyer3|CH*HOP}_7p2Pi~mPZZhi5?=$3{}d=&}E@7yMb6szfjMf2XH|#;AODd zRgv;yzqCfS;7pMHvOV)~s|L&_kl)Gq!&E|P9a6@wR_VLWj1NdHe(XCit3 zJM@cbL4)3-d)CZw4oNl=JH{P;yOgbrEHFFk(1;6k$SUXjwtlNv0)>T7h7=E#i%%&ANX^i*Q42(tj% zS2}D)h+5p)SMoYkdO@`h+B1;BZTdyth)Nvq@n(RO4N|%+)TUr&^5X>-tW5fJLPo34 zScVJsLr_^EPPeBKhuw{H>jPPN14sbj^Yyz{jX6BINH>}pQ2y(96lnK(Abj5i>eSd* z4eOqC2;92>m$)H>3Z&|mC8^}}3cLYH+YB=A?Ycl65vOxH+GW5GTZ!x~w0d8DZ8>W> zjS+WWEShC~#q@Qo<)c`ik zPVc%^Sh>191KdS|M?-{D)UllHGCCg^I^W;>Z8Bk0E+3T?Jpt-~y(yKQ*&#s7IbOY6d=_>dCs$+u7QzDTC<7_H^@-4y~vLD0hvCt-YP3gor(soO9Rf$+1zls~&u`&W&7zaEPaQZIm3yX>kMaH$Hg*4Cbf& z92TzINWyQXc2km^JD4GFwtB3Pd%2I)l!+AO1qk-f#OUuy{}TeyNe%c$K>Q(tI5igPJWv_E$j_=5`>e}d8%}{aTJl#(va2d@ zLCXK~2(YAn>KtLBOXKtxz5>wVGG*ds=FUp+F91UfyR4PTEOiV7J|HJT>VPIt zg!22pP|sWHLh-7Vm;CVF5Tg7+R(CTW9F-V3r<$%hnW`)VMl6K zkK1j={TlqMZ3+Zhgj%d@AF!QtY_k95u&x+y((VZ56JE~o9$OuMII%(-Xiv{wf!uK!O|FkU%;FG$gwG{| zcI@5D#sr{rD*(D0KFqnUxdtSXal0tve1||fP(?l!i#h;OEQyyo!g@M`*(KXPp!61# z1CkazK&Ua+Wd~Sux7S_{ybI}jV$GH=^+2}k%Pb@m%U;LkC3cExNPeZq!ru49*;EsY z1E-sDsb;Vblu<`Oc=z4ZOo5Y}OsdSow(>ARu1wi+GE^lX8jNO$pZ&^V-Qb_x7IFA- zbp~fiB5WGv?8P_d^rOKAQBA`uyU=!98Z`n&uo38ezxQioHVZ1g2QqhpkoDxM&r9|t zkJDf5luZ+g#}Ao*mo~%|u;rdeS<@xIyA|G?KrXkEL)i~DytIW6Qzpn(xkexgt(QfqzjJwP%mQbZ3MR9avkY&g)biyi!A>0v}Mu^vza8DC;Mw#^PlV^AH0*F&!Fd z{Pa3CeJ0KcqGBE`LdGMj$js>E%0@sTpqA02+2C*lVN>H->$~A2-ml6%hi9*Oh$Sr$1_-leH>Vi*m=QB38$xd`hPxPxx1-Nc_|U0#I6#1k z!9|qf4$fC87F`OQzu@$e%i2_T8z~Ya^=3T}O&#?sa)1&FI_b zd{a^oMWin}%F|7tW~}Xschk0y>_Nvdb7l5As{XEf)34`RC-}F%dJasz%W>TQlIte> zzGf+*>pxTtF*<--h0cZ&Ih#ogka)pUNYZ$dYu~1u0 z#>A3)z&5PcV$|VHx4$x4X4QKeAW!YCd9EABpSSyY829SE(x(Esl*oq?a=P(W>pm#j z59`a?xh4TD7d=_E1Gh6J0?10}c0oK5=drQ!05{@QCQIE75}OYSUIjJANK>Z?+GXcc zahMmz9MyiZ6pc5y4XfyN#SiJ1`jp|HY3~RnVi$aTaNrw_qLCSXS%9*x~DRBj8JfmmPh^; z=7F7_6SF3zGbhK-du9m1vA~0Aj|K9Q(%4bzxyI3x0K7kXeP0G=Jhg31RLFoiC@~0u z$g3bqCBQS*)~QHX30hU!5y?k0)pc68CuaCQ!7L|kcoy;hc%4*$3yAYYNXB@FdInU& z-5N(!^l)OnekpeOznfvJzs)eW-V)S`gf_}Xg6xccJ0RToQV98<(SFoUtqO7aIrJO` zv5cjMqQG1p@VmfQKu!9BxiDo8yGalc)dwViX(Qk#7@K;qobCZSqSiKArM%XESB$Jj z=vZ*l;2c2;TVLo|W3^7u#Z+d)FlwguBSK`BQA~12~1FY>}`cnsY)D_q2FH zyu~HnjCu6lL~?R1#~MC38gFbsx}avm7qqy6C2^-bfR)33oKspT@r3&>x;leMEuj9P^*VkXJAEDM)?7BfKL>zDuEz3j&KA1=z zP%`uXbG=<$dCSAt!Z6L=YnvgzG5FG(e3|o}Mw%_IpNvDgmY8Rp7M^NWmPbz1^u(=m z&))_gh~rl&&~xME-+LD9G@t8&bav8>=M|26toMD?dlR3~4d2|wsIS^m&l!qtlQ)Y)fdRdKr*t*EU zDTQ+_qzk4yBq7+HZWA&)&2my4sNq0E!6st(>5QXSwEh+| zUHwP<{VS_N6e1Fb<>@r?Vif-SCZ!LOkU~#0k~*T-S!||=Y}*Om7Ypvo$Q)98>d8$G z4wH>m1$S1qwe0gb26xct{K?z&o}8ZOz-8@ciRfmJ%b&`)Bl)};tCBjB{g=f5g08wj z#^}mD(*wrbd$bCtea>A80;ssMj%ET7V#-(#da zx%67aYteTDr{^uBU2or@*UUTO9TSrcTdz3Kavk5A-0jf*hV;&H- zpW++!W=<0UbAIjott5@vagGeTAq1$JyLc@t5q)3`5; zGoudzrTLfcTD@-92N{Rxiw#jTp8?~@NyTfR3bw8K-}bRBtyiywHAtpKc3!*PwDPIu zXn+>SV`J^^C{@k_DbBK&Ih9v1`F6`?Bgx1+PbI_wrze0v4Sv{TBYWvr*9t_-AfNVWA!Sh#Co6{2JJo?|0UQDWA_P9&vQG7$WCM8@vU4up^j)+RPU@I;7u zNj!J~Jf^HPF8HD6I?kvmuw0Qt=)F=rG};A>Q+`;r`*N7q#3B zSm*1HR=Kk0LXPnsXQ;Koy2QZQ=2z&AEypJ0&fEd zo&hTLXyVxmo;py;-@DQxdULE*)^jVW{WJ3=dYYm|=3(bU%`EeA%1Y&Jr1q42mrcnr znQVf+w|!M4lBSLIL0C*|%wvtqVie4Of+zpe707H#n<^GUAf8}(DNI*EbZ0h4AvM;piE-J8e zbU#IEwuQCBCDfcr-ZS?{tU^5@sjHC)N{FFLMoQa=Pf0(KIdCbOj8!i^ zFP1>rQMPf;?L9;U=fN0P3rH}Oy<4OAB69mfD&e=F-0+zjkS>-tiy0eFxTJ|%31t*?h>W77&?Ee~1fo&Zq zV}V;A@I50zS|DgEcF9y^Bjc#@8f>>K@ahvh|N7ooBJ2Ob8RqjdU(voRu0Cz)?ZM7q zRW>vdo#^kh`D7guNTK$#K{k&fLggai zbC%)>V86d6?q?G#wyU0o<=q5nl5}+7TgwUpQxU+zy$s+#Ap5ezAMgnq!AukW7_(E~ zY*y;Gw~>idWVURe8-fMtXv%*G7vC$k65wf^+E`PpG=?#n$MRC@;2hK=ia5Vv3d@@k z$=i4{+6AaOop$E5<+P?|I)@M!L*^bn;%Gk#mQV^V<97KqZIme!d{K3!uWh>;;%1u* zE2bGJ{%Z>|s=yE{R0@JE2G$gQ4!$ zo*<`&DcBD+nZsl^qmx(DvdC#e@|p3D35SFV`={i;!}tK?7z_~8v0lY~cXrO@LF!bt zJTMx74h%14a|`3HG##CM1n`U+hYPYBj^7cW&npRxgf2|iepiS0&_1TofCijT?zit z*lsX)GIH0m$+kyaUsPkmjO`rPn4cb4nb#y#fTKiz%EX#xs z1d~)hyU$z^pT%7|0he?|6xr#p)FGZ3(|9W{CDpJmGgwR|K}bi3kR*+++Q;`yH*UQv z@tN-cj9LcpmirrDZrcy0pjmR*2Vx7PYwA{PGLn)EV7w271I^&jp4B)q*N z-M}2IhBs7a=7woekPZDkd@VhR!q%(9CbvA&#&LMsoc>~u3or0gAGd7R^@Wkw!T1)Q zi!TcukdTNbL~Uxi+(Hf8buzL^la0%sl6U9z>~axlZSP$A*!%!x^b%|^jh20f%e2ge zrTj?Y3c%k&(3;>EV~Cp4B`zuUD5+X23( z!&4(VrjRE94r zUQQ>wXz-5{b<{-uO8timOLy+uzoHmOim>Djwd@eFi5`Hx8-pLAs4ZpKY%A61KNsA3 zb$E(m3moiLE-~SJmOp`08!(Fjw*;_}&-@Dk;d1?HwI(G}vBF(5_6&oWOr-Ogpl>UnDxEhA975VvO^cbzDQ7r z1UC4)&YW*tm!K40fE*RC^QD(;P^*;EG|oZmgf!rkxgckLwfQJa7H8BPr~xrShU+nO zZS2%tIjfwaQF1;~VzEHMjF3WB2+dJSgC(|A=eE{J>yb8uNl%r%X0~i=c39)*XZ+?= z1pclmVwPuN4rE|to#cmF{b6}TkXJ@07Hubefj_#6wYfx?_DU~l7S9LQ|5Hf3i=jwH z&+vo&q~nv{;!NV|1U!7Y*xOsHm+AAI8*H?kNyCkidcrd>+4)wGp|GpA$5JYSTaP#;ddgYT?ndhs|Ce zDo*Suv-y+V3|FnT3-XTIrOzx~qFCbB!^B}w_A}45RH?V>9zBt*SmoEbj_nVZ6~==I^XyALMHN5OA8{Ex%V0#)3>9 z4Z<`NEJ+Nza6PEyxbHr-6YjITcG$BdLd77YTuK(el9+PXmu_?eL0$NS0|RKlxT-Da zATdu>=;jD!@fv1)1$EnzxCZ~c_TMF7F#2Ge>G6HW?jb%X} zDt(j6&3agDh z+GQLTlum!1?uW?23e5TaSG@!9*o|@+vu&u!5lX?VqR~r0;E-&ZE98`T#npF&GqB4G zE`zM!S{aPgcvEi0{N$77#scLhsCj_)18l*(v6)cgN8M2tBr7V$ogjlpmi`Du`FfP0 z*M43!$LHD;y``4PfqF}}3sZ0c%kHAG6UlZBelOoYgdEM|onW`&E)Ff;Rr`b8xcp!L zrK~Xkm=Ke?t1uIQt_yc$!f2W&)Au-OPY>)qVXzIZ5q>F~oM?=^f-p&B;IOLH*WpN=d zlaaQ0Nu;U4{KxBa!y&;r({2|7re^`Lg=2^PAWwPjdx9xRLg$)J?59AJ%&# zKT`Lv_}-039W7R_S+bG%!9Wpa=Xf&#u0BCSZ-}puZjdbY=okYfQa^U^_YnKxe?x3= zA%pNJu%M?l7pDh$4|SzDK-uYar|b7fEbj~tkvS5Jc@Ir{7SIx#;+*s3jBW9&S8Nxr zJ`O$SzE()f|E?FOY*8Jjn6%vPBtB%2NX{iHHH4FDMbq8}Hd?i7p{fP6@^eBEZIA~# z06fnV=MY%D7rVoKX2JSRqi~`qIe?sHYJR1Syf9QD9$96L3e-z~%Y#zO@|E+TM zOpspP@P?RD9W?xh2anC=A&+_EQEw6fSQgQNjZGmm0Hkp!|j6NIK319>ljbI6@_>(3H6TI?YA8`mny;Rss!4$ zG{!5#bCck?5SBQYZ3FqB`f=S%;rhbeln&)~{vLs~M)tf@nBSb*daQgJb$BbcRHmq-e~ z$}}F^3HNjVC$2TeeX@nPV zH{`g>YT^VEI%NH}n->X#X^DI3IWN8~am{SjeB?3zbkNJ0#X=pni*orjd&l4X&np;< z_4;198Xuy?8>%UPnKEvzYovRcj?TN~n%lTSlk1&R9WfTgT>n_i?UX4psX51Gqc-Ed z>$9Mfd9>0NczrCfMUj;i$J&q!tcFJ)lQc&&WAI>5Di%{TSa?Z-(-I5ln;?qKAOk4E zv$(VD5jLNs!E*+xvh_N=8qtOf5=y~l61a_sdrCl&Cwhws>L`a^{Ov--fml_<@+_{6l%ei>4d2;xgHFn3!Ki^6er~CMx^((Q z55k^n;&c37P5Y0lIVb|mCP6o|!us6;HW)#{2O0_YT_Z#@`0&60P}L>?zvt6fiXp9f zi=cG4(RGIQKJr!oLT17usnI5d!?9=n=f2Ks~J?$p6HOEnscK#lu)nrHju( zD$&0EmlH&$_Ocs}Ps!&dB5xi!(avH16Pw;hTIsmt1BSqj16&yj*7Qa$QzIx{wz4&q z)}Te8aai5U-_HM7w5r#58q=S8N{Ikjfi|-=M?%R+hU~DyrkG0x0$YgI(cmVQ5 zz_>mF?YD!(-JjaJk6TD_RKZl@KwI_?5dJGEfj3^wOf*eRz#R!@O;ZP75r;L1!{hbi zwe{n9$3+t1_Bu^aqrW_}%5gwx05I=Kdq&jLIO$eOQ);X5*%desyKtW>ICw}ZwEJS< z!DjJTdeoDTF0+}iZwJTlxL*C>*Jn3?dEzC#yEJfQ%k;Yd^kJhGULVAPeX)gbQ)Mls zewgc&cc7A79*YjSKm%dRw%NX?vRCqQd2umjo z-aEacnFc6d0)D+VmiA?ebOnyUif}H2$w>) zKdM!?H`&>Do*GbpSuRjnCznVdYVn3mA<2!MllOg#IcywK4rCb{bP1c|C2<)K3Fodz zO@FTW0P9W$*LaEQ?}ci~|7tc6qyS>xS^61#9;=*nySBWZ>K3TM^*%CskSX%1c2nF% zrWs_d-xdm3bC+JaN^PCaG=V&nAvLgpHu-yTMe9@Hi{uaX z(HxM`-ln&c zoX*)GexjHJh}jI~g3IPs{oUAUTx|K~48BipSWJS$hOD}_YNzy-k)}MVl^w9 zU}sMq`idyvjPKT@_&D^j<$6XI7rnHL_ekc4;h%fCsV%&Iv*-toK=ReG3jlF|2nJa4 zpobKT0W$=mB51z<7%1UDWyZlle7OFEVSj=R(d&+vYS>R{+`j?JvJv1GxX!UNIS<b4|e(E>8bq3_RO z8==|)9-_e>jxX$%7bpjSB36$-sGjx|z7C~elQzeh)m;n-w*1}OK!V=701WhCTnj`^ z+n2JQ(YpYaGNG-8k)omG?3zWOS|My)?{r}7&*XK^-4MiWD&aiRilevdT=3w%=tj;B z&)jr9DnGW*6v?B8jp}Abd$j`-yQlwSDc5N)eU^QK5e;5#r?fIxd;*yd_mxUsg--r^ zyRE_wgP*l|T~4nxI~$IzWqa>_(}MYO&BL6cpBZhJW950QyR`-q|v5zv!lOC za-SbW+!OI0->UA8e3oW4D&^t79uYJmkbLn+;RB||ymE!5ecrvh=YsS4+ka}UC<21>qmixv^$X_tH#_!eoAh0=!T&;yk> zJslk|?-Runz&ZkI?*!$yfqUl(>Alv#=L7g_2Q%oS9`w;1kwA2eBGS0lLqS2N{9X8^ zgJM^pjIaNcF*0G$gv{hXEi60%8}Ms}?v98HMe?=~gFql&}={Z*1QGY#WJg-s{I({qf6#i7TL12wRw*>haU5 zBsaMFkuuHvyBQaJBou4~%J1S)>U4x_kk2DJ_L3tVwqXZ>UhF03^R}Td-H^1-Iokdz z?-~{!fm@i*Jj}X;db}ZVDJ|#ZSJ)d=0xtrH);kl>JG(!9uw;o({ zNp)X$Ej_b~34nS)t6<{0v%4(%t7l+)O61vt7hU357t15X&i=`Q>snOkh;gFnfvXoqH;qxM|8F;+P2+z3K2Z@crcb=?J8GFE?jt)eDM zH46y!=3ZIpeR5MqE&6mzs6cTt`{nr=sQV7u8c9SY_S%QvEw5Jk@h2%jgIfZo`(8nLcNq>gw~5 z*?l=x0Z@;CX7k&=np7H@b?1!UzJ5A3O+0aVekc2WqN%~1?pdp&7#Cn_1t$-9@qxj; zu#hN#C(_{o3Qe@(VZMm%l`bUTj8$g)Faw4<$fAE=+u{2gVr*9ikvJXb)&VeO%+ zy^T+LdG;xv*G6Z2GLx%=7+`rT$8m&^&(ns3Z7un4R~76zG1;)t1=(lD;uN*wWhac- zGUJ4Ej;wr zNUem!w2NAx;U=W9^vWsgJiLwwmi%PTYiA)ZDitwUgKl}sa>M;aky$FsQ0HXQMdO(< zZMh8YNTNCrgbFFgTR9TI3*7^MzB}PzsxIRKbj5G8xJB!3DF|I=|DvvRjUjF0P3CZf~yN`+$MC9K0(Qa>{AVseBu--AxUop2QkoRV=>+s(+50|7v6OaRaRXa!Ae16LS-|fDKfqN323NlVHkrWc z859!$fT5<^I|X;`ry*^x+dGs08X%h7hb@lwy~DEt&8Wtfpv8E8M3|k0ZBgVD?rkIT z85XC$NlRj(H0=M>&41|Q zIpIakN$TfESC-z-XNuDqFQR-0)E2A9ttTVtLo7bp7kc~#<5rV4kx#vGNe6s={>SIM z5$l1G-}fhR3Wlt&2K4d17Ot@U1BRDUz<2W&Q|y*=H0za)_|IC+^Y?q^4a!H#qvBBx z{p$Fx2c5&yo_9aRJCBn>wL0=8>$Nzl!WXUH>tbuqXKy|4Wh?|2^xJ~BI%pj_=O@w+ zAi>9qs=1bd%LW^v4W*1SgOhQJ2IQe*CX+$0g^HeyE`18)1pKCUu=)W0YjuBIl2V@O$p!Au??h9XQkvnbCt-sw!a`1EPKxh%!*Da&TUmnrF!(o*B# zcpfK7QdFn4F9-n!mIfy$r~YmFtSNvl0c$9*#W~LO8|UiHZwq_|VZkHAyj#&E6b<{1 z^l<>Nw~}#xFK;*CUzx)zi|y-2M>)rAi^wp^_r*Pb4nt5~za_@2nOL9X9niWlNN(?g zhlr}C9^R~})4GH)dy>*ztYiA=z(r)A?9gbGH6}d$BO$8|X?Kz-GcLMKcv8=(M-OxH zl8j&U2Xx2P;<=PfxS=-DYp(T6V>!hQ_GsLw!@-_gAELDfxx!2YUL<(WLGX^kFe zq@6EtS^-E0BC;F^UUmsv>L**T0G>W)d^ucT;T<4dJ`9e9M$hfWMF#FqP>Mh0i*nwV ztb4m5`yJLU9yX;nFd0m8n=0Q~^yh%LE})8kPywOSTPQ#(0`C`?x`LXSt{?rdZ5z-* zCw&4f>+bM~uq{!Oeoj=u)>PU9Re1XAR*gSUC(pIuX{Sun3?;&&?Yckjg(K*WSu<;IZRoZi*u8%- zeIWA!P9dGnTZcUcQ$Ri`u`1k}%l{gvm${E)7J(Ld_m#>x{|_C+KbYi#kQ^RdDW9t@ zhQDGu(F5`=r02;l5+VMs{^03o2amZ}OqqC!z10@U>LXMBLxa&`o5oX=-A;TfQ*kBx zeZG=gQtj_L0++SQ#H(W0Sq`-V_*Af))hwUG4d$pgmKy#D#k&3q#YQcwFcVD%XY;H< z^1=PXrWV28j9vx4qmQ%OppTDexWx)Ys-T{Rt}dyDdfpGd zB+d{>6`rB4uFlDEJOZ2qC)4oy>gv*~-HCds{kESTC+7}&xPxR(5VW-7=vcUZ*;vW> zY#qY$-f%c!SEw3oVpLqe{LGFSHO9%P(PeS>(pm}M z>|OFsjRtGvEH;LmZ~)5@d^`2-=l<_ZaX|I6OH0f^M8C@}=UiZnP^c-B%ffpYjwZ4k#zwTYVw<>wsI{{N1p)lZ%MZ0PUW3UAi zDXu=$FWJNip>|MQUsJ7qj9gsuAc7k0r@sb$A$3_#J^Ph|9epuXxzq$?((trK2+i z(U*@TiU(J^crUylOIwx{ZrF=nXO~(Uj6lzYd-n#O3MD(w+ofO@%rgC(vz7?Fb^{6#x{BAg({i|SC9MK#MBWm_!8^(A3CNkknePggyJ z@4h?CSXG8xKdl4AXv9HEG_wp_OLxKx72y<~t{U>;*mbOR6p4{m29JrR)oX{~Q-(!GL*^bB`a3+x3uM9_&AY0?yX4aY*g9 z;iUk;B$O#5OFoS2(gntxrF+{q=YL@RSh}8k#GKA;9ZALs(q9n2COo(NX&hFIRy&_3 zE9jTk4&7BDH-U{`p$;Qry}`Pzq;TnE$FOnRaD9c|BHGIeOogJRL{23>N8~Df4q&i= zcAfvYF36Wa-aFlwMI#$JwQt;u=WI;T+3H^ZH#{B32kRCD`CH&51(tpO+LALyT3Jue ztUrNZHuc#%zuLEBrD>eK_x%>Lpgq0?D<;qn^ZP-;-8^OdrrmBCFi5o6eefrV`MX4_ z-1fGc*!umv?~~&ZHen3%Iy!?DEW7tRqC4)9^+>nV+T!c`F3dnZtu;g`oJBfIm^!M} zeWu1hl{4LB>8tnucv!E1FoSj=w_hVvlv)lZoHe|QymWi~(9o@ly%J+?h!c=u+s-+S zTCq_Z^|56;9{K^YIx~=8G>4Z+&9^8U0^`tuC0MjqPoK51UGc2VNW=(9M95E`M%5=a zd5Q|Q4pEi&I}DXE4-+PDY#ZX;!j4XsN-}m#LVi6$ulfHk1liCqC2=S;?G;8|DoNwC zAwUG95Rtva%*_W7+a~p?Oy0tIJG~=R*eyM*Bo&|YsW;tWSD9y*2c$pZ*MKIK^n($9 zmCo|F^|Sd=>o;tED%6U5eg@zckb6gLbm~oR{|+<&36$=f(|(VE{*ZyPS~E+OF9of~ zRb<_yZ7vd3S?$Y{2ir}6-?RGR8Ed)sdXBkKF*-~@la78YZ?4(iOg=M`#!GbuHrxO< z$l%+36@KZLcm()jP6quq)sMe={2yCy9o7WfzK^S@h@uEsNa;WZN+{hS4YJXpgi3dp zz)(;DDd`-eQBt}=r9nU>M)&A3VZeYf_};$HYge4td7bAw&@_Sj zzT0n9`!;&$0^TqM1`7(5tUO8++IPI-J15bGvqI=OSIuk3Tc)T?a?^B9lZzs!mMjsipm{DC-_fHSR=!96v|x;SIJ>sP{Qf4u&-#6Wrl zg8XX@RZxq>fS^D6#hj4knT6%|J&ViiyNu^$?82zqLk~y&h5v&KfJ1>mOrpK|aR*)c zX}cTODHP?F`DWW1f^Ix0pUOt)@A2F*EjzRxGhULP;QXn3T5vSS$@AwLEhVGUuNyaLXU?D-$)wuJ3sq_k0XrNRFx0h)g>e4Rc;~c@(eu< z;`MyUtp7tgHU6(+0LKzFA%L;(@Ds%7m@cZ%_s1CD*jVosjBKB3DvHM2noZ%x_0<`U z31sELhJU^$nX|uyFZFZT_X^ z24-Pg7EhDVi_^S*UvcA-RV^n11*|I9cVFR*`s(jz2P911cx|iCANo4;yvzXf>{|oM zUiA7=Cu!l(T~hYhmpeg$`M%ub?#@PQX=@TcongI!7g7r@_<(*FkR*Y+$YIq4*0@=i zy`-ONT$14m;fBl>;k;yV5>n&Fj4g>NbD`U`+e%kJvTwm#sH5GA|MoGc^+W!9u2KZo zlPutgbCL##wPP$S;oT+O(Ug(Cb?0$I^lS~63*#i%3gNz zJ=7uf(1`8{f1d_*DYtgp8U4MR+0lqkj&c6WZ3VBcT}JhRq+4qauCZ?_Ix^^VZ{NETfS2GorxM2#M!p9pSuA zNl@;HWgG|jOiv#Ex!GVp7q%Vy@Cw>?NwtajDveF8c++RQU-#`yPmfNC_#Xj=W}Xk3 zdDuaxtGoNKf*k$8&4;cY(7w)W8Pzn)Yia(%R`2Wh6T5N0f)OKZ2tDhM(f!NbZzkTQ z=bsn7TVuqX@aL??exa6q*aS(-Uz4}&DrlbC^Nh?^TAi$gnp$3ibvZ$s{&XZ2d6>wl zFchculI;Q0iwKNA*rd?&92L7>;%S|$0^|npi3A*@GR_zoJHPgQrdh|cHSXfni_5i9 zd@phWhK`WzyOS>7(l?RL>M1>PY*t}|F10^^#N`Rla3%U185$mK|AEE`K#0YkxQy5Y zzj#i{{rCD2`@qg{5VTn_f4O`!rva#Ho4iyR>^H+UA^8RO<*T+mHr6Dz?H7j+140!x z`>o2k74a)1cqOFFS@P)Gq{E)xtgi!eLU^5aMWI2=aI^Eu(@mD@PL&7-56Q>Xs< zy8e%?^pvrQi6?~hhV-{@!FDOhb6fJ6&)lub+3&xcQSSTB<$kpwQH>Gf%Y-fgQ%_1a zr}qkj2W0^t>fDetpNxy3;&tY{w-y{7#UBQB)Z0xHX-M*NH{E`&5070Y7dZ^&)oJ+D ze}3(?ER#JjkEK(yp>hQ$5waNbt&6OPva7D?Bouu@jskYE={DlddANdK01gh6Q+N z|AV@#(CcoCwNE?L$)ddA>xnKC`%f!O$Rb2%@|N^2zuz8R5zp_JQ5g*vt-;nHY7O_! zP9KV|deT)yF7q&6VtRIVayQN8tIso@+rJ$a`4LT&9P!&M)*fO6+Hfe z7V1zN2=)Tny+YQ2M%wbpudS`E=86gIu^y1=m=aXuJIOoQK^<$#9U+0AeU@V6@v4`& zq(8VQX8Z??x`jWpdA3)+TMDRffO&jV{05EU4jQ=EO@rnnX2~~66hfk%# z30Qvm%dpT<1b&#g$Ta)-4x*{Xo}>P7e}D8}I7RaO-wo0pKm(1<0RPC6!}&Tx(^~7| z#!X=p`D&-x{C%~4RloM{?CH(SG}Ji^)xN0{z0yZLeRhTkE|2pVYQUaYv%uB(ou+RX zvX>)|uVwxbSIRl3wVLHUXX4$fgZ7uf=|+Gs6H9SIM{qmuGtL`eHI2VmHi1p9vVV5H zXD<_<Mu(@yVWt2$)4KLuQAB)lhjzlfY9ANm^;u9tp04N->m24 zQ4t*c=f)7IDFM9hj}9-GcKs4KK0Gduzl<06|7bqO91$$VK#c`$w;zxvBjTk_@Fzei zRZ0?A54pX1b!Z#YwFv&hz3PST{PXCEk$eV|)>lR&G@hxDA`g8^q)Wfu^{`-u^0W{8 za~dwm_ZhNNE+a*htiWh zr9w33fX|}|?|#+c+dv=8@-hR%ZE`Gq@j{uGo$=y^g49*@SxQvhE=#o zR!u&`ES&z~l|F-!jt=zU(!qs=%;mg*`m2JbO>GjK;P96DAT4j{X|GZ*;a#=;h;8kO zI2$MTvj60jM)V3WE^V|-0tNEl3m8Be|8r0L2RTD8N4(qRe{YbsY#wi30){LpI%@y2 z;`KdH%2I#_)d6rPSCtaEMR~lpy1FWr{DjSfE?faWW>FC6Lse~N9 zw5&=P6S^R#Cg0N-ApfMtRhRNA(;2mOcp`(xldn2{nq>bCx5-bP7(dNzH%_SxGA{J^Aj9h2<@s)0KN% zI#*g2TI>~OI{kkxc{fRpdi|65yPyBN;~E13Fe85mkw#=^z62A0L<@sM=HC2oR~$Sb z;NDMO;eLQtN1XHwhAnqv%LNy$X6vc zcTB;pp_20Yn}Q3^7<(t%fv^{73u5@<^H;#FC|@vM0%)QQmK*?qOvw*+Ks1r?edzT| zIg__tmmGcz{d~uej4>uda3*7338*@Qdmmu6ByfA>C4+H#famSj24D{aG>A$N*DV%+ zctHjeqGK)dCR2>8Upq0et?cvjd)@PoMqX*U-iy3DLluTPujCwA^JJ(k(;}@v8t_0| ze+ph^#WNK5hxCy+quVX5fR_t$_Gxqf3W1V|?1mIx7!1<@#U!DBj31_MHxzs`YAUI_ z#~)e%NQr;OYcO5B?Y~9O1Ql<-T7hpIES=v2o(*;nZ-q@%`PJJ`NJ)U#-`U;W-8?*e z)o5J8eDaHj^lOIhN|67_{{H^5W%*dWxk0f-`PdwL?LTP6Qe1}p1Q0j7JMreek~#h5 zW;{f#Dr9u|)_LJ43XAExG_ODj9vr6|GY5yQ-So9WIgYQIT6G4pUyH8hE?Yi03-$= zFhFp1HH1{#^Q(i3}JJK#_g4 zo?LWmI)MO07tf#0NlFzh9-udicVYL9kJj@nF)N`dY= zN?byMR03?7wtvsH^cu_jtqtP#6HC;Ol*W|oE-8pti_OwoFs~VjD9@O8mvnhh*(vRD zeYxC&{)Eg%Jee+4q_zLV<<;3|p&?KVC-vG7vR8WZ1b$ZB+wp=`c-9q{g>WS z9ZZhtWrpUv-!0;HfQ$1rI%|F_KQz#kggEd>@oD!tfDF)e{y!P&|86>dFqs=T01NJ{ zmxdQCM_2Qcn02nTM?Af;n@@JTLq9ebz2NKqK7S!WUj2T+!jBsOoqThyaT4LNH}9L8 zK-1$~yY_|LX{4OYK;GCeLex#9M`_L1-c{uxP$u`ezGYYwfnTrNoPzd3iWcyYErH^$ zvJGJ{-Z8YyIaNPW&b{djAq}JBFw4j zw%25thtqo00{x+#-L06cN$owO%WgIvoYR80uxM}iJ9OQ{;Ps)}&z`WAS%01}kBbHXjq$=k2=3EsSDY3HJY>Eh)X={?XxqX+^kvH)k{~oPv4q&MO{WoebMgH8%i;=!E0u6>j>K380C1c87rzp`mU>%n1GBbZq1o zDBd3lKJ(0B!BRDb+$W^AmjIEd7Ha-|srk1F#{1ZGaCL_{Ej9J1+e^F&Y}=h5{=@M| zj1+b^qWX||OK!(rdrz;dw^fjLLdDL%)UTzvoU12PgaratX(9O{6hUlz!mO!rl;3>} za>v-dZ%S?G{j?k2|15S~ns_MRbgF7%h`d1a;~eVyvFF#f26DrZv9`8czBDSdcaEeg8SF+8Wd3ORItVm zAML+D$=~u;R8wcP@MUVOKKZV76@|xfetB%0)YB`)ZTepxhPFL*dYPwAU1J>StV)ri z^|Ih*NNRI;6-bk2vhOjh%*tPJxgPC`D(9qUE}R4-!M%PwTThv8guI-T zYBYCoNDUSLd}{2S8&U?qIVehm{qv>g+F?bm=hf#Ph3bl2lC(4dy*V23gL+aBY5LPR zEl<6;srqTbD2y1xFd&=ra372JFS;i!FJwPmd`0MEZQgM_E>-q zzhl(p?!{W!z{zo;-n1Wtt7jGgC=0AB{&D62q$!&>@miDra-fN!WL&3d;-*6(fOjm?W^`aY$Y|T=qX+_6NF~$D>yKhdeW03*j@J z_@hH007H`R{->e9*GKPppI;F-&l(h&f{(tjn<>NIENym5z1~Jn)`V) zNCuimw!f(CrGWI>itD>&*$x!(l~4rWmR9ln2ZH*a@d21O&`KAu@XaGq+^*Mt$%-mh z%s$(*FLp0NEu>%nZ5GVZfowM;!TWLfGr7soa82|)pF_Pxxw^)F#v_f4kD_bCNs-&m z5@H0c$J^SCzz!s7PP|E>XZFyb0UWM8mT_0GZC8%%u(ueP1l;1fVvS8VoC4^lwt>Qm zU_YL*`2qi}{5NXXMe&B;@nk5f-_vhq=`ywbPUe{VR70ML(DO_?i&H%xpfU+u*FIZF z_tD)!x%b_EYLBi))d#piMYoI&QmlsC{^ocuKHhdGobhbcu+%@R|)+jCB+v}Q#3(@7_mIFrD8J;g_o zcBmLAe#vjBDBpqqw$=08)4#G6Vnuwdo+M?yUsUIp%|7_jo@w<;IF~6qAe)OrNh{kb z>26Q<<8MKWHw6&BPWyq3FBJDLF@C%H=+qnQQF>HP~|e6J7>NN`xxQ5VYB{?>bV!_F^Nl!UPGe$FbGf4sbEdOhH*G$C@3C?!^! z8Jb(~Gw9!EVCx)0KRuyOZZ#acbljd|l~o{ka7d3_takU&I9P?Js9Mu=CG=EI$)1#K zbLA9bUyYZIe^LE8?dmga@1M{TGPdKccPXW)*k<@gwZ%Qlmm z`ySHiW_S2G5vJ?nQYof@yrbY^FZang(^+oM8Jdr3@8tgx1T)Sd(5l99Ll&ZTRLNc3 zUXtUWcX?bclphyH7K>=8y3c>kNkfTkHF8F881{?D4JvCNZNk>N%rtL=whibiK4GQl zKcgF|{4*z(Cc-Euw#fTihpv(9y!AC@aNRPd4Atx0(GJ-UQ90yJ*O?EEq#-RMX^ z1~v};h0@N_RGf{OH8ajHD-1RMge12;0(&Gzf3ip96p_QM)U&s zB0*Df)P0H&zOe7-xj9LUVTA@w`in z#CA*+sZDLr0ooO`xoA87mX%&CX^e!9mS44g<~_zuULtak6l^Dijv_WR_BN{7R#|B0 zq6^+TD(rQLuBPO6^;Z1*`u(S)Pa#2Q{`u$V<3awGhm<{nr9xtjz1{*Y+fiqzSj`j zN^TX84zm@_fyHZ%p3NQW+D?P(Ijt%NbFQ z=q{sm^3(cA{z17oUVI3dKxcnp`@j%t_L+OqjJB)Cxp`02v`I(WdW`AftpYBCDy2`cF+24j>p;VgKyPl`GvZOW7BMi_sD`j%l0NH>4N0MoxR}a;zH8 z$h)M$@}7|@Vl`nfST}gx9_&Ol`jwQhFni0x*e0CNl4DvX7afEY^QE|MJ*GcbUF_UA zT8t7bnTF!3x$qVyb9ikP4kL7BPHdnvLo@I@@&|JDhps{nli(9rQ0~m&zX$c-hDwd| z_d-p)F>xrn@)wWNPvNQo8E_9((sDCx=V@s7#ZXXOKvFt_GH)LU@2b38R} zp+(Rd+|y{PNHWK7UzV*5Z>uOWa=<+Baj!LWI0#H)_UkMoS(&U#67at~^6ai)6lY}R z$~=h07MC{f_bX2}z?i?d-5%T6wA|utG_0Z}wwaQ+CaQYF%m06)Wuj`qjJNh`*Za5m zO*nL48~6i_NsrAMg?9#DsLhGx`gINOOcTHTVSA63T=}evOI%Fds#k7I3Wn%8@(itf zKb{h{;wqsb30)NF3PvZg{d#~gN8ZxDLy=MjJgW0dx)CRiE98x5X*-keIn_{+Bl(Gn}^a+YQ zb!SaRh@|j4+dLwRnr`TXz<=EJXhgYN620FzK%ve$rZRJ}wTw%|^0#Nz=aSQP#m~q+ zNfj^7rPXeIARJKiz+>71#{sJaKpEGcBsc&dN8!M?sO&JfnhU-On87)*P`N+(4a~L4 zJ5S1v0Zqh!^M?7Y_uC-zxF8V5hfOByGTF;u2x2=5J;LR^vqtPmVq7IAj87vlEz*bz zL43be@pAch;z6>l|9O2XlLw=Cfh1U-Uc2*AajtcfEkj519yli92F0f9Kj&a_GX&8-p~n4Ug`KSZ`H1O&JR(pHcrO(rcthx70q3}QzAFb@FuB{Z7`NTArsW^gW!BQ) z*V|nYo?6H__MDYjs@G9d#h1oa&MLRhszBacS@HPUqN?Y!$SQG+$4Nu=i(crla4&@7 z=ikU7|DQbb9Yl3U^9gYOLLT@Y-!*cz%%-*7NnxmVyMgZfL4CR%K5X_%>T!+tZD;YePvm+=~It3U}g}A#o(A4qXsjK-?Zr%>7Fk#BEd)` zhoi&30^xrLO%-buj@3jMYua6)m-s=u`|G{sbA5N2D9anZAH4o~p5fdRWNX2;*LMkg zQ5+T@OWVb@!8{iN6cYbCrJsU+VFIJW4&B@0vFpRKKzI2}dk@TBI^VSRYK~;pXmk z6XgP4=YHemu=`rlNIVf(&ycSJ57eao<@K+k@J-zr-K%M>XQBr```}zRF4^%_g%Ylt zhpFn(`>ryXtx`!utD(%9HoY@K{_yo%IlgeFZpGjss!LR+8&2XER3>S_70 z+gpKwfkMV!bMJU?I2;Nn!Ps+m|LsLWTKymF_%$o~ObhiZqzIXJ{N{3Iy*=1B+*lEM zuDZjI>;ab9pZ4R#be#gKXz}Wfg9-Jd~UZFf%pta736q&hQTx!C+upnKyO zt0`#jK0dQDVAmu)fJ`EPK9 zTwM^BbP0kgE3jTzHTw?q-=LQipmZ@0<;nBJtfsuX^~gqoEdx*t)KQ+PVQp?v46yhc z12C97O$O47L1YB^1U8kRS@mn+fahcC=9L#v1@z92yn?JuJE(4;pI z@!gq!vySp@Oql8z>uJ}`-{C?{k3Plokd<-=21Fh%QfN)<=2ye!ZIUh2*4zzrs8B?S z(I3(RWP{Vwl0n|5bea!Ru0d!Ty643)d9k6hy#hgN1?%DiVwOh+?;Q>?s-GG0c@Cr#6)Mp*(`i@QGI zN;CXwPPKW=e3F_g69BUhQ*yzY>w8@w^5{yc}SUU9_NL(vqa2=7T3!qaWZtJY;#dr>)hylag17BS&fA{pZp951EIG{BVZOPf9bxQe z?Mqc*#kEInPJ2n8xQw`q6-O1dn`noPgd&NL`6yeC=jP_flXDM_U)*Xs0fn;VWvMXZ z`#IY`hMZDh4%rV`SXf||l9W7FK)c^0CnxvT)c@OlZmB(I=UwOs#{&@K+N80if^0i+M?t11MhXmZ9&fi^kQGodKgv9J8|dOjqSj8 za=0Emi^Y68Rw+>HtiVDhK44``f+kF(Ow!5}$ZdqjMsazYM`o6eLfzOVimF;7rx%Jy z$<#wi{~L>Gmsn4W{uz`&(VzwhlTQ?%<`u(e6Ab0KBmr@X$KJxqclStMCK%Th#3C z&E(Lec+j*@fcbM+Z0jl;tTzhi^_=Rc9(_-SmCh18&kpc7PnNwHLI`-pO_L^ zkK9Z~^k$G|JvbXhREmISp>9E$KBwS?*219T;WM99I;slJd5c)`p2Dt5oaz&J{fncM zGXVdPa{YLH{WMPM;!7=PA&Uv|$1$CsrT-n}6dAYfHP_-M+}hwY)5f!l#z1foxy}Q~4_~qi4}pWKYAS#moO5h0K9~+MtJ#XO49;jy=csPoGI(7Wev6=e|C&`jFD( z5XiFs9#}`0_|K15+Dc6U0$hP!33t_5Fq{2burV7O8?QaC3a!`_ZF;a_jjQcdIOwYi zf3YKpE>oLX*jY!x`}ZW%A!Qt@962~5Z%S{~(P%}pHgw!EHq^{%{C=Sj+#SeK&2{~1 zTCG@`$VFxg-CDJmrly-9ofThc=~~>Boh7}EK_*S_Vg-@QxZS+|_XII#AWOz74gKf4 z5Qi%LN!b4cMC(IJs@25dJce|LPt<4@Ef4aw4$G1POc&}=%aZWcq1}v)W+t zN@L36%Df>J?Wze=g9>kys5(m{B-3n)hZ)w*td?+Q>Ip`85ut0!isA#wqTxzqZ>w40 z1*G`$B3zJypcu3(=W zkah@0yBSB3C2FATMs$Ea5=Wf3?=9*lq4Q$Du)*!LXVw0Zg zL?df`q3RB6zB0zdNTLXPdBTBy9--j-zwghQ#_>N1;Uz-{ZFI#XwKDmGu5yU&aBv;$ zg2x${+qi7_)xsIb_xPFhKBs7(IB3W-*pkleu3N+J&hm*iBGY?Cg{ixDXWufD6pVf^ z(uh<{l|EtAf*YUQu6;uIsJ~ceo}!)rJIds~t0&eZ8vq0N#8sxq%Z;ew4SG9aL9Z{` z(2K;Q*|*PW5=D&fTdkT3nD4-uSqucpVp*y1k>+AAp5e1mujRe9Bih~k{dji2rl={-a>O13}^AG+PUPPlhRy^$bCc-qEmlJ7xiaQrk45dr{1S)?7f#K=;Hk| z`J4U8=3&kzd-K}TqMb?B#|yJ>Eq8^^_xKsH8SRe;ihh{Zyeq=;Sn`A*THs&STwmPC zv$-ZT?J;oT%jR3O6r7e~r6uRqzu-0q`f4!EH#;(P%n)Y31#SVCcT!th8;O}%%IxFE z(827BiPM{2soN|7cPHS{=kotPI88tG`xnAaK4HfLow&~@N%8b3RSsKbR;(PfU15)r zLnebT*u6Hl7R|2#Pm`6eEjKq2vE z-ucEH@Czb2;?B~)C{)OuIVQ|vgHs=$xy{%IGjz_>a@$6AXP1wL^odKfhKRu=LmAov zVtkRmTk7Oi8|_40rVcjKO(%LnJKbS*kPPIvK(LDN__!Vy5+%;6RNfeucL(r28=n@9 zV_cHX_Gb`Z@;DGN;v1ghX=qNw`wQ{h+##&Ytd=-N*|~1BSHc*maiKl~n!8 zFYCM~e=o5@ze_&y#_uax!2rW&4_(Qjl<^Mb89Vwlb-(W27C}p&@}?h(-&}Cb`Jphn zK}XiU@+oosP20E?gKe#3jsi1?^#oe!S9r`PgDVp)Xu%;aqKurJMe`!xddk$NEG4Rq z7GrWA9*CjoX`>aDxWT_H#sv@ zAD!J~$tj$?`h;ixKe8q{^$uAazrNEoD&N_rx=reahx^X!ls z(p*Jb=nh}h%0oyj->N01#bl|jO=O=VmjYP(akmMj@dgY0CWj#ny%SO?qRSCqgfG*Eg8&t33-0*?B! zZiC8T6nfLd*Vz{s7VG)=_|Pu|#V|^w>(Jxfn*-icdfi918;8Gpw2&Z{z?F7y4!?EAH zAEd|(sZ=_em^2Z_P1UG#J3tRq&@p*Q79gd}Hpxpw$LWUJx|$kcRIi02Vh-r3DdxnY zC3iBY{4!#<_ok<(+vet8_z4;PH%2zU-^HeDR*_1Z(mZL3iDpxdPaynQlVY^BqQYLt zM8PJZ(Ee?_y_>gpZJZF+m9QSKS#|USFv+%RZDVF|IMQ3g%iKhg5mYGP0B zioR&ZuHwAPV1w&Rc`$(ELfc+0c#7Ut-gDVjb$j`iwseIvGBt;Ks{?*HY}*X6xf8!p zf9#o8e_2f<}qEu%!ODH?*nsiKZv>4g7 z_@UdLxz0%H`B5~0`R8*HVyG1|sNXkqJdmHXr`i$%-NccQ|hFTM2 zYKZ9Epd6gxfsQo=WC5jCAn4`(i#I_vL2 z5+y2Py?^8EgiI`J!wmgPxmX^*E^>#0xBwC0|AIH^=+c7lF}Y*o?#LR*3Kg;2gMS8% zlexGDddL0%km`mrgT?R*%-)yvweHcW6Jc*PT&{Ff1~3Hb};5|jZ0GuTku*k zy9JeqT9GNciu?=<&S8l&V+OW1r+>ukD}8Z+FfvZC8f|4i7M(Z;-QUj>E3t(Je2IX4 zcb<<}j7+T=3h#k4sN(qi?ArEB z<9MU5i_5kNBNG#1^Kf^a$GG03=!ZqQfJ_p28Qz34wOPz+^C9c!!LCHs0q~(%I(_aO zsdaSxvugA^^*b87;8Um{`8hu&1|?$h>UG3fqhWb7n-Kv>{o#?41aJBek&eJfhOFyh zd#{KjNz0F^J++#r(NDeaE1L5Oj2YP!d~KyQ)p-_W0SZ zGY%`OpVG}Uf{GQ#LaQ!da*%Qp(&XjyQ zKEN?DFdQwkz1+Hqo2sw&1li*ca{SBPDCr5Cxuau=n~@%<#)20*avEg04Y?E6OJ%av zp$_+p&iJwh@m^4N+SsP`2KW?V&5VP&g^7Hi+l-gv&%R3(84n0MF2p^oi?een6RjT^ zWe;Xj{#OC5#X0KNB8dCJKMq(S=X}0KqhO-Dvt@{^&HXilX($rkdtM_wr7mnK*ox)y z@(XmvY~B+N=5tl5W4`8PJD65Ws?0+Mm4J%noA%?|uSF*AjT_3935C?A1}gJfP8}!) zJX~L0KOIn(&*hDDk>6If)L^zC#&2J_Yg~5FWjl=;yIE7UC7FHPk?s7R2u`)3?|8)B2*_4Dlo&T2t^pDm4{0{VvFV^G`oE!bX`l*AZO>MXuc?ag zO>ByaLLF{8n%te!qkmp|pjq`0dzQdro8`bUan>l>8h@{pD@A*^bY?6g7sP+AQ_!W5q9uI0BQ^j;Js-;tomdEgTVw5n|SPreGi_3zeC$H!MYOY#q|L8rNSL2 zNt9#wGs@Rdzq__7W7QsKOU6xi^o`l+0vhpZor5XtWqOGq&!b?mq$l0L9;Vih=<%Q5 z4Go+*vEk?+y!+j}NcA7#aU!()SN&aRJ#)VN@hvbGL zH~MUXEvv6Xa;>ImnH$-M#`4=N?wkFOWS z_!?o>qpj=}=nRW*C*66Gpnb7JXVwERu+G&A49VQuh9ePiFrlyTh5 zYg-HevW_=dO~><}TK4D;pVu$`X5fH!U)M^t_T-bQZUZpfjTd9s{NUFcuRit~bpvks z41s>v*(V4i@9ym9npGZ?z(Iwr`Q$skwHfFkbqV9-lg8`qA8c21n_?PcdAwob5EQ|1>2l#N*6Z-iU?K*fNrhr>G!FjyyW^$e4tKX`M*8G}N)gu-+H7 zpb#BW77kJ3+I))%Y5M_3v7&wXSm{f&&Z1?xBp8RN584^GS+in3UPoqk)qO4kDsd>A zaeg>VIu4)48_JHsmblzUr+^S4sdIpi_1SH(k3LWXke~lLz;vi~{bmjg@4nNhD0@Odz7{VTURP7^D7KdIBDQccTws z#B}WV`1tTGN5nynxHq8A=IyFgFU`58F?7~070$JBRVcc3tRq!j+RMnu5f;3M_~DU$WE>y!-Fs@c z!{d%M#D)jW*LCV>1}(w5sG9q%+957Q$T1!O8@%9Zm0apyNGWRn1~}<%6QGW(eII{W zt9wZ_^<+KSaRY$2VEHakOfp}HVdeBOZi3U~OexY)BWg>Ns=|q{vo4Qp65S_Wo7n_Z zQITd5pMp19gKM4$*QOw%k|R?^JsCBYI{RKC5B#%j@0JZtS(x9h?q%^8@fVYnl;rx` zku0D2pV08yYP-oiRpV^RDpRPydn0v&^*arPnLtpEI!oejAz)02j5%*FTlFry%8%cq=}v>-|9e{#ae{1mt(IZoxJH8C+akG+}T! z+8m3;7Io-R*C6logx{IGm0d>+8GyBiFY%R>OZqXnelLzm(5Z@1pbOjk`VfwdL+sF< zZMMCc|p>-+BGCPz2{S0Cg5lHh7nZE$C05923^Hk9zgY|C>i}G?Xn)D=7xb zk3D?e?1d6tKnd)*8qx+~7!=IxRr7&YNu%A(OZDwWA4c(vkmzI>g*I%ueq0_s>z`ns z*+9ZR$%p#=b|_iLO6>$`amT}(OPN1p_)PXWi;W4j)b)#~EZfuBbMCqr5e9G-MGe!N zwn1rNLBU;poA=*1-FotWi`0;-_=5)26E+qK@qifnm7l}bNSKlfq>@%Eak@)`H9^ko z2DD*C42K593GJJ?&^Hl;NB%r~E;WaaZfA&H9}0tFT0EjsAp!86Ro+_eM#OzRl!_`Z zGdx9GG)-kbTgnkGwF*|(xv?%aIjwS#Ev_IR!X_4n#ge)JsN@M66i?Fpd}i#nnH^!! zR+;_!8#ll%NEL6@(i6$$Sb=78D2GC{BNuAebQNXFGzCq_*1!Gu(}aMbFWwsvaKP7< z8@JH_l^pRdb-1r8w+2RVaMw>)A6rKKWA{Mz?9(+i(bAda>(d=G!ka{EI37+KhsMlR&E6Kz6u(!_1HM-w*+EF;q=c69sQfj|`UX?vsW+~TNP-(T0%AK}1 zgOx(d^T~qk9ja3anj^LkRtu}*f0fg$s+4U@?x~q9e38iNH5mfcXy=uN-jJugt5F4a zCZ#dkL`phm>;wv0mA8%Q+GZuMNfW0+`%P3~z>hvz?^!Zg=U&k8`}-x#>?}A!5B;;` z2bf9q&FH_M?$-KKfZWy^d8sa-jZ9{tNtw8F+YL6z!4)Xsuvv|Qi{9FD`)e><@TN5o2nd=zDr;Q85%UW8?X>W@kwZdpJl@wgJg_NbJyCy<3jisd8 zG`H2EtV<6WcWE)qm4RYWpIvFbrC#fZd8+jG1B~@LQ=Zf)4O^6wZ_n&pOHd3TwGf0O zP7*LK2lNip4P(J~x*sVlG%a0}Siem!B1to8_br`C3Y0K%9%VaBNI9^TT&GQwOCDLa z6MO(j2c*2`83769V}+mt28l^Qx>v~lOIqr)ngf>Gs`o7UJ%zWbV?6^35oJ-dp(6cC z%+y_D6WtV_1-2hjq~|Nj#bPEmQcT!ymH>#adNBimWbNfOI=_UGF-D#EVWlC$yG*^c zP3MCTD;JjvqUbtr)FS;lh|wjN*>6%{MUxWGZho?Ni)@~f_1=Cfutz+I0}G|zO4}&xvSjqr@#M?F9?YQ0$^4tz{y*!sm%K@wfY>q%h16^DLAdbQ&9_%r zBa|wmTJ+OtQ~I7aof%MmOCg7Ex8Mmo*Meha%ngo?G){~k- z0Zruk``@Ck7*#l)eLJ0%{rnUcHS+zpk0`T2gJmQ!ZurA8tclov7gQ6RqLd;mZWCDE9R~T^$3hcy%x67 z{6e3FHQdqSta8v9E%Ju;QydiOsR=t`?(_JMkvNTMJNk1^bNJ#_jS3q1VXhH-T2)A4 z?CCzEx6fAJoz?H-IPArk8+rESy=2bV}WI z36Pdc{4L28M;(Q^M+BUpT5r6CL6I(|?WPGQkp2ZqGVy>nwo~!6i0xU@ek}~aw!2gI=_~2vW8@WGRui>GvJ>S? zV!8dPRXM~`OhWpV)s#HuRKdh$Al%}n##npOWU-vzcvMGZ5$B2PXhlSR1hngQKe9JeKlB)16nDZ z)ZGO|NJIw`YG~u-(pE$0krW?q7`Gv9u2E0O|iyPazdj|afD2n9vf+ek+S zE&dyT!?3&BbGtuvr+W+CA$;s^RP7uY+|No4#QMrWXdti;D1O#e$6{mlkt?g;;LQC< zJBHr4!x@SM80GG4kt8Xb4SE3}74hqJZtc<)?cU7g*Kgf3NO)r%-9s0)>tT8|x(pD`eR$Ql^0i%s?r)Fn-4ER_MR6qq4IQuep7%-KLY`mRK6I}N zTSdiim-vKj zQ1hip(bX~7Q`*6i!ZC^l_(3gv6w7p=fvo5`GJnwBKFfw>`GJJc&tJNWxzFP054=8`PWAV84k4?V{ifQ}r3#j7myII^?-2nH3I;1+dm zB|CGZ_U(eyTM zuAhEpol4m=7$>2>{OvjVbAKcx@K9Wi&VXm++n`v+khumzGSY>6wx)mE)}D@9ZP-Jy z|33TXX=iA?3J14$^kG#GYgM`dQuQb8p7bUXU@D+DXy2?vOr}p33Cv z>nH)-!dvq1ep#Asyk!CNzBgjq(WhA%@CPr_SUIg2Le@H}SfVC{Hbmwoh=RKvZk&O2 zFG-)sc$PtP>Wg_`!U4{$*m)XvG)2V4IjNW>Id9&)x!yoptcjK!|NAucS6d$PgQ;Al zzOCzXg{7+Zys59RztT&0F*F+6#Fi&9yB9bi6NP2W$>5TvS6ufRTLdi4v3rUf=BBh> zX0}>47la+`Mm_xMOcD=YB<;i~?O82UFe}U>t}XHSi7BU+l^T8Whq4nDyt-%Y8O8#4 z=zbR803iU_RR4w0(rB|?CH_m|u%F0?EsMoJgghOnRe?+h$#UXnY+%+rvM_j8i(>(|(Y=7qE@fC(Ygw!j49QEP}GJfuX`H#8jiH<0!waDU3}Mg7CX+u=Nt zBL@^j23ud*3p0{mFVjM9x%#F8V)eoAYbM?8&p#a#9*qzF7K(68o9-~^T4RNGx6?-0 zxLR1kyBj`HF=xO=;wil8E?jTY8=J1L|0iv@83}FTa6FjF;gGoFLuu%B5gB&K|D)==-pB zn>^dYpGbrd+){ZBHRcwT9HHtwG0PJkT(zIiEr&nN+8%}}>-)ft!!?hpW`ulJ0sKtf zL7>QI4wie+ns+w9?8_T1ti0X|HXlYJYcrhouW0pfN`?P!(&bt=v^XUfoA<<7Z>U4A z$c=N+z}lN|pk3lZgHCgE)dq=cZy%%O_OP&fzYhvD~WZ^&CR@V%K;Q`(=q)v z3<7nNth?0KRGBT^;K%jEpMl?Vhe0UDlZ-Dfs@?z zDNuH2L6@ZTew5-53cbic)FXG!lN!2;UmlgMriOKxwoaJr4LYqgA>e9`P6#3VXxOT> zz?A0qOQdZzRh5VT-cmRsJTmMv0{#?0^Xcar1nv{!8y*qo% z8g4grz{f5Ze}9tmlFianEjU)Y2XW@ct3uNPwK{bfUwGdsoz(8}ThGI%e1LHYD!O+}Siru? z>KXtxtX@#Hnx%fanFy!D_jY&5gmh-#P*t@#wbk~>-8rhumus^i*$74sT`}UMqctGqLg70lDsxf`dhOqW{3*C&$ZTOtMIntOVT0oMTHzdUl} z$Yi7l-3x!_FWIh9bqKIDz3zfA?5mKx)_&BaPq<}tH%$v=8ijCBDIv^A_j1Q-5AB!? zqSEb})2db`q&QqqH*d#;*?X2d*Lh(I?>#iHU<4ju?lus~^_{-P(({dN=V}h~s%03t zShp;mayII-N{zmq9HFgtiNXxLaC{y2w1g>ta(%MH6_b2n6twP$E9LbRYPVV05s zBU3dUI@qaCh`H)@9<*7a`$9U8>y6^$bZ%~f>bZcVZ7ndP)Hpm`TNoYya5@33@7U=9 z&Y_)F7K`;2Jgk%Fm)upX&IWgS@2@{O$ru#fBi3+)U?3k4=YDGi`^tJmiv^mM!g^U) z$9i}fv_aiU86*5+Pk?Y)L}Q+X9kRcv;TEh^-0jr9!?%PnRwI4aAaWD8OA6T~lG9J^ zt4uah2H0!!`+?L)FqJ(e?B!|Ys9Cat&ch%oZ0u%0RP`mO;>!3` zYM_S1J7J|P^2$3V45{k^;F;1vY=Cw!jc*ey-`|q$gaOvdpd-_^$%KDozy-DA^ z;Qa+l_6DfBJH5`m*Mx9^Hm2=!aY!TD&m-Y8GmY`@2_?W-C3lJgM+jjqfqCS|?4fA` z8}-!$Y^O3w!DRIVJ)HGfhuJS3jP(tc4rcm@_63h^JzMv^?`fS-k+-`Hnb`V|M0hdj zf5hVA06Cgd#6=#lhHaINcFvzwiEJ}W`FK)6+Phz+SYELH+Pd*)y|QV%U&`y>ctM& zxy=`&tFzQruw}~}VCSyOK|4DDPYoo4<>cO;9K%*FY&=?;sfLeU`T1STw@*px`UKDs z!ql7FJD!MpuO#6;l<<^O6UU&(ia4GMcpB}e@jm=^1$ox)*iq1R&;vDpjz4Vn8R7V8 zVHZ=ad1B>@#MhxSbb);`tlPWIBV^U5@JnWZeo(m|-!fFjp27d)wjb8xy!b%FVCbo9(Wb9eU$%oW+WzrEwv53tp;Vz&j(JU6F?zmev z4+Z{L+c9DunrVNIc4hE%?`2)nM8^kAOLeRr?0P3z)3kBc=yAy_s_%9(yY1y_S4dps zh^zX@e5_tcHPu@S!=JiWTxn-gx*$5E5>PNDzBbVn)eSyr$;W!$;*@6#*6hYiJ+`Eg z>sQky6KeDP5YE&AuHe5)R3-es8qm}i06PrzcnKd)i`6YK5VMImYS6suxYSpENvZWr zbAho$p5oVw9%Bqu1pJ*j0-1anvI}=}tnM<*wep5M^ZOykf;1 zENL0no*l4;kn|*w_u}e=k#Wx+?~<>It~~;ZAGXJBexTY?E*ZT;NJvOPdQG$?5Bg)V z1FFQrfSa$Z5(o!d+&dej_UEWdjIX`lQO=rre2sMF^r;=C0}bzz>!HZFJD$6m!qD=! zPQei3pR=lz+$PpP;bgrfC(c?h6+(z?bOcT_xvF{N__fu*E!_jBh??2s%7_|wtCvhZ zWyFKBg zi&To#jDeGYt0^h`@hp8wfnr0NOKoFA7GLro_>KKRp_Z$UjBmw8es%7@(E-=oLn@)F z9sF6CTlFSXV;8#4_f6{dm*xLhoo)jr91L8hEZn4U@z+tWsWjdH)`BYfPi9c5Nsft2 ziZ|gRWkm;8mXlLT1ISKfWE5%lYed6&470Uj=ZW8%xKq# zms;KnWf!?H%aWFdFOVC3(uFdsSWSbF%9I7&hB@9BUaDm~Vc_q!tcJ+-@kw#k{^{@k z)5bn@dDXV^w`VyH;8knc#Aj`qDI=PpIor`;Mw^Ck*q*6ixZ*z8YT1prHoFx0sk*cA z4ZP7DzI*6JoXs%ya>aDfpv8c(Bwyt+gCy2kco=4HQ-g)DP-8JXtnaLlqJ20M(5Ue( zwEbd{TeU)qRX`sbN4yOn%}wcHpmkXX;Dn`|?h+oHh@DPA$od>S$0OYJkvl;2n`lGq z11CBlR|RSItrw9HwfF)BTY10kJip7IeHeLTHaCl7ol~KEaZp{<5-x#8IiKg+_hH`y znY{1^^rd99#i&rcF7$3g_NxXIarki4K|) z`-2o3q~}dU^i3>?*|A@ndW5gpDFWF2$jA~)f2%D23x>nMG~beu0+d0nJd?+*VXXcQ zzKxhtg{Dq~CF9IX+BdK=EqZThrEQ7|7};y}3_!K1ea?P8h_1(*>6^Ot{pyCw4g%zU)Nsj1V!LUk zVX%kGYe|g-j!%1Y>D?+$TnH5GHcRQ-Va;X(6?1Mo<#*!AA6(v!nz>AcFXiHGx85vZ z>mSuHk2igk!6T|I^PS?-iu`S>YP8q~h{~_#Y}6im#FYuhj}X-51jrlzqPktSE?@`#WI* z!X5ZnJKY6MOMRECV_OeDEecQ5#b+oPlO4Atd9KQZz4-mfTP7$4B8U>Owiozmkyf>y zTUbH$s}i>J8XoXwxAfsv!t+@+W|H~W1Hh*ui1p!xvw;6HdJa% zaZg1>dBO?Rx?;$A8!VP<tjxy9jWzuEj$^iyh+OMGUtW6M!b_DIg5s)FI=zVbU5FteZA8i zN@Qo5(MC_%c-)s*5lZ$^>#xL`i6AIaIgQ`MQU2{a-1bS#7{iv0R5+!#F@&IGPmv>i zj(!z8|M+IpFikvopEm#ROeF+zqxYGVm`FVFQDui1vimV(eV!A7f<*$WsLYu=HuDF^ z7z);3QdZ7=?Vh*#N$}G^Jf?`T2QL{=&RzR)UV5w?*}fIW#%1fKC``faj9W#HH)s-jJvKL9%xP^%+;*6w%}Sv zxA)K_gZ^AChqF>@O3%<+i&R8@fBw~Pr%D}ge$a#o5<@b>RefNyR_mMy1z6HQ%l( z^*oQx!w5v50*5i!0l<+#lfYcF!vtdkroSe5rxI}E0x51S6B3Y3HF8$RMs*biS~uwh zp-mC5qVghbZgzxNAV|Ei(Xe{|UC~yg=nsgR%R`zS_phSG?`l^+bc^w)395~VPh3Nq zhZ9ZJh>Exw{#H2zxg3#2c~JXuY@u{dRvTicjC0dE0OuyOPraumscJgt<(TWVn#~6F z==o1%JXBiR`O<^Apf~=pPEPDGVQ=oJmaObrmPaUXLYxZq)@~O|>I+dn;O$#C4P@>owzxeTp=HCA2KxP#3uVCTbPx zELzG7Zr(1J-CKMp1Oj0Q^!1hAsU@m*#D5Z zFL-ghiAUUF4;G75;1$(@C3a(d3Bno=A?4Yzx;#lOjh*mTm4U;xuVl3#i{vmMK>PE0&uQlYUvtLbi|xOPplsYWK{gFk)n*OxTO_GgBeWUQ!sL@d!_d` z(Id6|xraj(g!Ovqc;^Si#fY(46FBT?xAo7>X^)u8I@j~b+D-x#A?mZ0hyz22P*22= zjLTIIDJh$784Swr=^DyQb09=WF!7?{@Z25`wixw!ZRFwasLG2dXRadU* zkeXlX%9z(_+w$t}obQg9CrD6$^e{9ulom7}V9ENzj<^Z>$ddJ^+=BpWSo(*HuB$vU zDnA!F`n$|EUiL6$Lq-JVtY6v$!#DXa!8#chIb^k~KHvrl&Y95s{Od!fmPpg&wo|FO zJyFk=_0!(59FrhRno!$#OKW&e5GwG{@-e>yP?{60MxhUL zCw;FU5vrcc%B)R%DvmsE%))by(Jllxk9hnNtbt+1B%Jvre7G0I4yBq9rO`@siXnM*$wusxFI;+=2 z>0diz;#_B;mx^(`sGdyDFIxKvl|A#D2m&mt1x#sI1}m#_P21eLHIs?XVv;2WSM#(j z+dtF`|BiQprYb7Dwts#5^aq7?G%MY6RkH*i_MN0~@$DeXY(u@Y*9hYG3w@E`&zQhD zYEu-brK?Ko@bHQV*{5psPrd4j!6%GMrbmPH?EfTgfasY&q$n^b0o93zk55S(S4GPT z=5H1MGk1;`MD~s6dkw2MH~J3Ce(YGhB)*QWj4in-mdI|~C}Pq)ZmS(<+?*-&Y4d60 z9o=9B=WM{EfgLT>6{T0-Cnfdq{h(OV+ZUry#q_J39(A>M1Nl6uR zs;QH{O)4>Zsv2p55X==Wo>zUiORB2Q+rr6@G$-=$)2RjmTfupDVu>(uN+Sx}0ZE?J z%HuT=WpKAdjNJi+(7llpdyG9ssk3z9gvh( z73kx0TdPM9mc%wqzCh3(e0{TdHM}V$ntf&yv2VZT%rXUF_KofdDk}RokA1c_7Ea<# zeZ=2jvcG4O`50-RlTYoP zB}I7{8zZ?E3@ky23SF4nI|G$sHa-jS`<)<9TskH-pxyKPj)N6@c%Mu`DKcT^j+vcD z&ajnsQLcyT=<8l;$h4F8mIRBXWKim)IMqfiiuDcKkgQs`?l+Z@(ELY1!PsWj)RXk3Pa`m5WO;cx%b8kF>BgB)`d~q#&Z&d~`)Iel=eKqj z9fuUi%v$v5GtO4(rb?|SaNby}KiNbVc%U-H+fiMGR#rn8Gwm)U z2OjD|(z=4?65exOYzX4enQ%Q|XwhC>^x^mT=Abi4!`J0d)Tq(;lHWfaM~dj!zwrj* z_3lam6IM=1jpNXhDQ%N576&^0y_G>tfQj!UW1v^F)+1AW?1XQO;u&!W({EcQR7$AO z>u1N5gg$@g8pnGjoWaWHI~jRPk$d*#BC*6yWyoT=bl*yYl&C(>-u-%tS=-Y$yv*`$ ze`<0l)&iE`)W~8DHRo^EeMyYor}wT2!^5~@ zNRd}x7|Q^{DK?#`a0JS2bG7q@XooE3UaCc^?s-J1U$T6C0s2&$sPXY*-jEN`6!@%( zm6F^l&^_h&vp!U}S2Za?iR1*~&$K?;((xsx?v*62*F@K`aI^zs(@3OgW-Dq*e0b|& zx!H5rl}ZbFKK&Cr&OkJFv_pZSaBpz$21y}e{g_YkbKrAN_ulu~SlDLaOJOZt*AMc< zP1V*evFpGZHkxVP9hvSI-&%4^qkF>k$%B_mhuKM_rK_=T2vyPk-Rn_S2Prufcc3f4 zp_LDaX$CO0#sW>f97xvA+m4gOE=C{=%_NYF0VauQ0Bnzhnc3O?a-Z2=h@tI&%ME1F z@#QZEndrt((4P2$^2~Ag+a3JO%qos*Q8DKl_+qnlIY%9Fuk@L5?j~6as8`~*MzDOn z&niN_?+nB?th}$<{K7RAN=Y`%#`K2HMcfj))s|br?O<)yTfH3c$&7hib@n^FqF<}r ztY*&2&#YS>_}J#=%Kw>XIsQ>@X&Ab%O#fmBL#CtMeZVZi*43bV@KDij$%A|u+(~sP zVpfRi8CZ4`t0Lm}xHYujR57DYs1{N@X^1<3w)U`-3&y|fP_PMal$&$2+lq^xXdTqN zcwdnYx5-J)9a$#|i^(B}KL>kQ>p*Y^{*136Wtvb8m{ZLBU`?=^RS|oJ(p^J=+LN)P zM(^@F8j{X`uBW3nFJ@#nsEQyBqZoYmihU|_@O(j}u=;CUVJ{w@Y*ok=+0UVQAK)+! zic_(kcc3DcWPx9`7`#Wpg}sSr;3v?Vem0w@l+Z$}Z>kh#TfO#?chtA_hVa9)?q;+I z&fFC>FaHus>k8CEc>)5ntc*(YemvG`%B!Jo7o=HbV_vnLExi%Lv@cFrKDNSDLvU8& ztnFUP#11mIZtoC}q+zv`3th_ws*^dot4m52ANdrKMm*J&7k*Ko`&1eE1KfV*_J(}( z0y7C!_3j~7u$7h_;}mO9)}1@AQnbW&JUXxLFn~X!9>Cz0k{L;XtA&Iu+?3Zk?v8~Y ztrK`EEJ5H8*B`B)Z~fnEfv2V!Xm(K8X~{vY8v?(a&wt~(_fEtMp6rs{*$)D}#7roF znq2+mVBXeRphe!Ww_4Ek{}|eAYYsGR&#OTud>#nui7Z`EMcDR^TufL!BzKs%NZN?2 z)LgVuJB#%p4KpPVQL1$6%9s#heK;Q->}&d)R^>BmlJYmaYfrC33_sv19$I%S(x?;6$Q0bD`bzjP%mTZLvV`PwT0S|{K)b3YOA5PTrE1Lodmn)W`1B^7k zzkz3#2^^8ZlYm?WK@@(p&CNh7v#fpD01J3{akbNGC7GNV9TFHH7p1Ba6{+O+nucH2 zVn}fGaE3W#bNfU(R#>uGb!#$SWlgKpYp@r$!Yo{)ywTm`M$H8rt^^?IeDYN9w7y@( zw(>4B(Gw^YhwD?Sd!jUe6O~jU4_Bd3uc_Q8P|^&lQ-?lxL@a!&QcJb9^t_+Vlq0yv^W*E4ZeDIS@V%jW?5>1y**Ci#Sg+R^F!^qVVr9WiGCa(JwCV*aCf2_tn+_ zkk>?ces7He#EuGJYW*%BRXPBYD=~j^SjIq0JUG!?5=0*w8d_dha9jHN550nYmTz=1 z>OqaWvTn_;twd5j&h?px2;1yWec7$Z&4{^MCOut&bo^#9y3t$lg{xs|e@+FEUH=h1 z-J5UTKXlGyx|VA-Ebw=cW?!36V*Tv-AYY-f!{65{bSz4!DlQ>~p#^oaC01GYtdiNy2VnJ?9n%A5Dl z58(enV95_Zw?5{Z5-`v%b^;yfgUY|AEN`qa75Cg`+Shj|K%w0mHeH4g<%p|%$ zH2@+UeayP9AAVOI85CM$i3E&Mc(`inA3bdkmAY{Wj1D`Yot>TY2qe-qscU-FO^lkS zyfT0NYLwboQ}4;y$7=EBT0IAMdCYW$*OJ^-?KNX=_siRce{R_&(okbwr$?Kw(|Q8^ z@qqJed3Q*ZAf_6t6!aopJHCna(&k|$iYawqdPzg|NX8~w-P%Q1V1jFw1 z8x@27s#|OW4|11emx~5aZ=zs|a=L{oMH77)*Md~i9 z{6Aa7Hrd#|Dap@HZna&~Z!V3~-yXZn8O(6B+~~cjr6AC-m_rVl^Awq_mhQ3r!ndQvgAUP9$_uVJ0# zoHBMu&1USLG=`_g8+?2$pd?+oa$;d$*;hGy-zqAEwYeeBq}#t82iRI3Kw3b0-ybQ* zkbG2dPAtQ2uCH7gtXME5mlM`__cb4gx*&XQv~0{uB5$e^ujSi%_>`+*JYGsHul@p# zCn($FjTzX!c|&ULIcI{w)N;*%UUbLHWmrrp1078ZvA?$l|;#(k!5Cw;kvf=-nYtQ6Wv8F&Uj!>{Q0q1Aaal z1OP>WyGjU{b2t8*D~JNiPx*pvfiP;OIqm`>kQ^|u)Cr8!ZD3u;KT2Sp8lA}sm$}6F zeL3dTl1t{4I3NoEQHVgr^4yjsUxtVZtb|H?&N?H$yXi_$8)t9evh4X-&yAYKODZ-> z`cXG33xJgf-ut>}?}NOuSyTY7#AvKDQ~8Wgr8$aaEYd62{`^*)q`4aQJXT%cjcD-Y zr4^4p+sLsGYlWd8DYd+C^xS`yO8=Yrp$F<`guCFKPrn?lvu7w;Obw-X!acIp(~qUR zM#XSoMj{#|ys~0mkD%|s1gCB-Ky-2M)F(bDCiTCcp=FUWYge|edug3cZiG(iNybJj z@XGb^>#&nrzVR9+72P@nl~-xR*u6ySEmvt2+}L^xJX7|X&=gN4|K&*#)VAfTB^Ero zy|r;?8E(XNQ|)Q9{)jtj;hO$z%7e|9dn`FeuAI-(<;_syrvT;5dPTh@K~BEm6&wBO zwf!8T9`9UF^EddSH&)#3`M!2&M#Log4+l;%DQJ9Zm2kTC&7Ykpn{`3{sanjl5i=XB zh5F~mw{n$I4__9K9`oV4xY5Ur3(GiE0tPX$Vf5=2ndj_}HLrPRA&NUcYbfRJvo}VS zL?b^5U$eDj%4i(>vMN)TyMnV`SyW-Z`YE(;j)kO;IBN)rOTu(EPKldXcBMp{!^5U$ zn3v6ueX*l%RK(D3ri8_k?asriTU*9m+t;{r=q~8*+gya~&KZvWTEy61YfcO^^P@h-z#a+|4&K^R9eDr|S>o z3wZ4*!V)8=C^j4IB10t3+xc4r#fvFuY-FB&DzFhm7))M{qXvc}%O^e0+hk zBBgt^D6SuM-Oqe*j`?bXXg@9UMy~LRvhZrkb#-Euw78z!QmUl-Hc^^PRa}+;M?eekv$Xl&3ByO`& zcmIs|jlrqkQDF{MlqNZ7^JkqrSHLot(a@gLE%XLPveT&bJB^x)U_+%|0A3#ELBLo2 z#w7K9_xM0>pvl%={xkGVoN%q#T3rU%Z}44s^0p-iURrnzK;T#BPwiXTGy%yaMi9Ud zjnDc`p2C>Wlm$Pfx}SmQdGswEKGt6KZNprahl{1C*^a717QQwl9RAF(bO>wyRHl}H0C2ZVtx=NP0E@rkKSz!zB zuB9KtoiyV@9~(MVFDLZsk*-ihQlNy{9X$d=#zgg1v=^^3N-v-yCAsffd0_U-=GE=- zim-Z_3x#4CKS1wCww7Yu0GWjE!9BhR-XA{Q&c5K$NV)BH@KU`8p@igWM)L(raJBvE zf(m#4HPwdia;6F|Ijfow(EowW>isPoeZS3Kp{b;aENYon%?k_5-`{r@Dl^mKmSJ&O)WykeaJD z-hM&653J|QMIN)%5ND@n^L1`eyvv)U|37>%qHz765uWE37$RwxIn!#eKQ$eozU877 z>Qy`r)?&$B{9l{yXDFRH(yo_X1bMEI#5n=w85b~5lU9J7yi$!$juPx^7fXW{DBzw? zk@)xUd$)SwMBgx5rZ7@hJ12vK&njs?;Jo;--)PlJ=&GHa-NwB%7!O(gk3`XQVu>~Q zX9`OJw)s*Z=8Y&qNu8Fnj4e<|QDajK@*Vkj^N_q6@s(8M9L<&^=AbuW8YH_lG))Fe zMih8B4VV4MH}mkj8Rt)vSL^prHY_O(;gw3vG$y$G^6sy<{~g=EGa*(-@~fkXPT|>f z379~%+n!?Cf>&Q!6_nv(M(e9zic2qXGCxFh5I@w%6%|-=Hl*iEIwB*ZlPEj|4`V2!IM1 zasM5tCjf*yQU;_*GCpEdfur`w%Kq7sDyrrW{Avi=Yy9~QmUuBbJ_t?Ch}GSAE$~!K zGH=Q7!Mgl%$%P(91!dOIGObdmwpcl67xeYKzrd?y6`s;&Uy&SY!t#8@fG8DLBHQ9y zrd-c}i0pFiZG?UI$?j1xr{wgO^m`fo!%Eu!%S!5f2O%IpJ$M!qoQZF@T(Z#m059kt z)@ILAtW55E9}wHkVS)Ddcr$r3Zt2a_s{;bumJkIkzmfCA!fuQJP67gv@jk}=F6r}F zg=gwZMdDP~iN%W$UNttc680uHVZktjF^cPYnN^Yv0xc&QUg!DrPx=IiAl-JLmITj% zw^2F@29FD^Q-O&el+iE5b1EB+LoFn08!m9UEedm`PnC~*r#v+i$TO0Q;_hId5dNhY zgRwedv#{7Uu|JBEZ3!jJMLx+ir#Nrcm*evK&gOSbu<@WjaFv9T6yF#u3GU537{8u* zye;G4L0v4Uk40e}Y(ZH(@6ZSnWqj^sGy#EVj-m#6|g}O_*PxIGol!-JL;JJmodMKvOB z!8P9~c57?v5`UIsx2E$r+HqbI^n>5;yWivqpV(FE(hrA&6iHI1{q`!bf<_-V^DJ<< z+Qu?6R^*QzQ;Ql#H%1=tKny7G$BSQkq3|UskJz)XL$T4qO>FmP^IER+^Tv$N5KW7*2~ujV zTW&(Cqhd=PuV)xH&u!03q1N*vVKJt&jWUv*W#~7==))x3*OuWWmHvINL6FNQ0DaV? z#WEDZ_FF%&6kr1sBD`ea@F9Z0^I9!XC}4Q1f+wRt zIr^3MX!+UA_AfNLu5>jZ?Smmu+xkuC`PWH6#GPm3 zF7miJT@a`H5#CXsu6wj+-}0?WXQ)E;5lBR3bV7kN*Z62j7}0%0)tk9}^q2X&ow^{g zF5VWe0Gt#^kF@E$y6AZJ@7+s={-d_UWdX;%VzZnz5pku@(Twhv|#gV2b5($LgC{z)FF;U??;o7Ru zTC|7bQLZR59|V#-hudtW8E6^>cN^FM)C)`|!to%_yB@rW6`*t@K`0p)*fmuJqERY} zue^_4>$(j&2wfzFbs3AUi&f)!k}pnMCE-Ox^(~gyZ|z^zIDKMK`e4`<$%I6LUcZuj z{ZJ|)UbWnaFF{c}5#E!*7pGkfSLtv0xWYw1u9l-|#ZJUf7`x};RYJhdE38ajp&-w2 zMw-S1NhLzc-~?=hGOhcDl^pbFtBv+v!hw7@XNQpzR%R*?{F@yzQWzbYt3Caju%lsN z8KO4odR6$d#1p(!;O4@WNb1W4F%RT%Y-qRz;-i-W;e|IY{m)`6oONGo< zAk_eT)0A2qJZ6g1`GInMGrfVmAy*k#$e8Hh8YZ30h?YgpGq|oKZ)Alx+VQaRl`sP$ zJ@Fmo)RG5jK*n7cmGO_bKm1>D|HlV!Z3P?heV^=0{-sg5?UnjH7cVDjXRG@AN_h$T zsavSKs{e3PVodm;v8>Qnw9kvA9CXS(i`d8BcBkMq#wR-UEa#NYK^SP&Zw#Mz+i_f- z4|_B1yN^8F2hY00vzhdJ6z%n@nZY($Cmr!8bjbHlc#P$r{X*NMc`DG3x{Ze64{q^) zbUw9cr|tG6C4?-iS%CgwWg*=7LN;X5->@XQ{owv-Ii82NQtqN6wSFJ4u z_%t78>cFd;C&Xbc8-Ziw@X|{1C ziQudi0V_F&{|H?{LiWJ=u*mjsw2bajZzytem<(M1)yi*l+PJv5@UQ-B2Uv6(s?Kl{ zd3&bvg>1}`J45h9x=U{mDJ3K5;`Pt2*Sb%cx(PTHo5W3dnP`PmW}0u1teWm<8P`;6 zF|~xbQ~S5mMIO;z2E8g;q7o#|R?70Aruw;NY5;jv9Q_>==@YEl%FfM#1a=m>KDlG! z(wj4EFQCU^9x=l1OkH)RW>)`~==;A@-t&7W0jIFlWX;$O`xbr;qR$zw3fS2L5>P|1 zKA`S^Obq9aTu*7^6@TwaUdtq>Y z)^DH9K~2+(o#E!Xo!J~Oy|(EVuwHq4Vyyl;i3~V$br#Qv)d3RlYyK6B3CW zJjJfOKpSoC3~NQiPoHY~CMZ%B*gqk4d9e3k!-lH$xKS|FpsAOLmC) zi9ABI%)v%nSYvr4BWAPF{bz$}T+>}5-f4@?vE)LqZ;-(eu1WRL%S~f%myW$Yelpf) z>&h!S@rQoGK?`*iE!e7mz^9y^BX84;?e^P=rUEVOxcPMB-Y&hG_b&WKnKMaz%GWHL z@pmQV?%;+EZWZUh?tTL~iGT1TG8GryOKEn>oR7WldSgN^kL9N|4$YBlhx7?9XKY+ zm83D2H|uks53~GpejBt}ZQ8!?<{_Yji+E#y?7M64*9fz zW^@c;_s#tauT#7u>JJUH_z-GA?MdI@hY;IhpQk+^jjQ8cDBtCe zECs$g+vEGt$6wn7_zw;dhuH2-YZAS~%YLllg#B7MNbAWec9~4Sm@)m}+o`8N4bIo# z*ywo%t9KPJk9`gqDYw_PMbAmNK^gfC6Hk~!s6r+7Iy2q6G zjp&_V1q@LJR40&d-3@(koo?zfl%Xr0>MAOAPGqYe#>X@t4iS!ad&w0AQb*pMH`xFvnKMVF_J==u6|aEnjK z%K84i)d*{3eutX|Pk`|2J)byq+g zE~?PmvZ%E3a{a?1=E5Mg%ljj_7yhf^fTfi>%dh&kI*wF+JM#x(XU(J^Q(~8#wj$YZ zex3=sG@u^PP0aKgURYS*DstZVBim{KX$38r_QHX4o`j9}CC*46H@AgyAUCMCOeRl6 z|53uR=l$)B@{YeH&D#}3gR9!Vf6f&X5WFDo-HMOK1B$6+4Zl#?Ho6nD_&;#zk6BFF5UNr0X<-G0|7Y>04~ zzY+ zwaxGy(NUcdoeaATe{8K()4*YgO%+{wA@~_Or)n*f@EC1j?hBI(mqI^@Xl|eP;OR8R z?1|#VnGHH{!BdoP4tXf3G=}U0cPQo{x8~2}zU)d$#Oy3lN*_eo=f#3hyO+R2v7HHK z@!OqOgBQAUOnLV$`y}ZUddCpiQ@o;)4cz>tK5x;>iFnGx=%bOhIBmr+t-BFz4+c)B zUW4SJ(yxEh4BIomqI&}UG&AsE$26jwOk2diH#-7*;84|NduIH@DqgUPviA#CJcg3^ zxCZdyb>cBEjb*7SQ@8eO#?Bn#v@O_~vKE6yYUM%sC|-tIJ+I<|3}Na4{y-q(ca_|w zQGYNCMSeesA_})KHXvlI-9Xtyo_`!D6m%P*YEO%6`a7>iQ zjgw`})u?VgGp?JKB#zn*jb$DACJNPPS0n1l`-yq%*?LIzCfHaNZ3U4NO-pxSgwHB;tdMg0P>-I;wYC_K+U+auv=7PivQUwA@8$qbR|H^ zx!zCNA82x}Y}e{)aGvwDieay#mYCPbz6q+;9B+=!lg`xXvMTC+_tNYR3tqS3?VNPC zzbE=3rfXuEvp`snkUk@P(U(8nZl2Ex8LS>ywY2HD)k?VJf?goiEnbP~p-eUWy$*pCO1DFGxA(u*yCH%ciGsB{gOw`eK%U24>F_6 z`sZiWgUV)sRd2oYlC)o=7lfkaGy!@xMh3Qk|jS^^Xc%(UA88xd|c3g)13|2 zehg1$eNen6B*Qffl5Ya_o2Mr6C8>U396N7U6YB)^;Jrw<|7twH!|7khbuch@Ys}Hr z6k*vcH_ZqA5RihMKCu+Nr^^D>jW2M-uFBf*>k-0I&a6sC9c-3h(7Hk%PUNCHo;S8{tqQUV|$%eBbOTBL~< zs}XDtLvD>kNN#U}P@=80w6uRVRcsdAFE<0ck>&+~wAJpjIiA|#gB?69305N7H1krk zT#B2nWH4CpF(b6jxg39niK^5o>U;nb7s;`=-zl0^Bue}lL6voO)SYjnViRUuB2e3B zb7}S{Rji=-sCrOI^ikH$z#G!R6y+|$#vupNUGiXOnex}=B8r&EwA;THqznIo{rSAQ zok_2Z&e-KBp7eV%Ho763)C65oCCYVhOsgJ7`bDwv!<`+Y+8c4R6xz`pTMdD#&^EIH zK5joqOyrb*MApbU)HuomT;q~UzCCQPnTJ71WNOgFDz)!;@&nYKB=(;`-`G5> zes9mnP9ufDXo|K^AW8m#B>P>syUJwJamOeAJSdg-d%=6TDnWE(I&Fd0|L zX`wi!uj2Ge67rcx*lpab)J#Hdy{I`e*TJ(KSy)m3C?HaPZnvAcZ)#<4FNU?^UQgf{ zAd^O+Ueh77@0Tr*@l8HU6KxdPZE+`9(Z=s#uykX90@PEAn$-Cv(h%9@s>Ds#4)3ej z!lW$a)MB0nqka+Rhhg=w?wr_JIhU^9=%7m`^Z?|NcR*3*FWCIO4OT^W)2ScGkHnR7 zu=xbj;9fOwwRK+P`7o1^k`e_bEI@RKiqW_sau)x#S1m z8Nu50R>{OvZrnXzIbm5?nC1`M1slMR_#d8W(d>T|fW%=EFLJUjy))ig4*q-#TGe=O z3hnOu8r5d}HJI16?@~4m>?H>lLzK@MK$WiJXSqE{cUCZNFe2& z>Ny7EAy_ZVNIy!}hWRbU#X;+&xhTX^9Q%1_Xf9VRm{96Um4FRyg)Af@vcm^DlHg^K z`^O6-fxS2$u90iwY;v%5ZnWyMdx4LG!==ePhY)^W!beZmY}g~v<5B3%OE#X;oFPGI zhnE^u1a_^g$zAePt%8UjKSEM0!T!0p?j1^y36Zr_U?x#&;n}*{ zrL1I}w9+XOyySh~@Jb4f%b0-Fkpzu_D`b@=Gz)+7+nl{vTau8VL2;|Nn~8N@x+H z#?+)NS+X0Iu~s8gvY$edeHrV_D4dXxJ?oTRS+eh2$z;!x!C;874aPQ@8O#52pL6c} z{2u(DdSV`2-|PA;@AvDyH(vu1zKz<9XsWV`iXe7z8oLN`ZVGCboB41&_~k$|4DDCf z`Sa&77LxHvf&v1~)lPrwWVnnUi^TzIiw&APpIB7)F*H#Dj1HO=xV#E56`b+!DW)5h zn+ih^%d}V z^OEj?g_Gs4>dukg_%do8@I{yr0e~#<_#ZF*UpsO|Fl!cA#|TEst%@G3y|0{q6H5Ae!_fX%M> zXuYrR?(g4Ew}&?m?Gubs3M#Wr;%;^xmXmlyP#PmoIJkX9o^o3W<;8Mn6?5*FgjlLi z2wH_5NQ9nX@{dE+NN&F;E(Avj{IJ*&P?~HGyW-heh=aBTDa{u}9A8v;wy&Eqv+@ax zbXu2)9rNt+F%;)eSW!H(kz}0Op)h(zAo`ghGRf`0GsN%|f0~c73PEsMa+@UG!HAyL zbZ`Cr>RC&sG}bS+Ts2g4(dzIhyhek<;(I2|Ie_-YG8JBdbX7*6mP)lsVxvq(>$g~? z1lvs3^<$yUpO(`;z-WBG3XzjBCp~^pA@!8f0lEJgYJhBZ5&! z>FdnAHvO(RGCAcFb#&YM{)33=Ha1?=pq|~;=5BVG|6$w3*Xf=qFYJZ@F6P&kZWx=CD@{| zd(6tR4&Vr8-FWL$MgO_!+W&>a%^DA|JnRt^yE56=wrBtL><@12*80;85!G}uLS$HL z!7Gx7TV7l1w)4{nILg}`!5YS21YMUCZqssux@)?_xP#w*kGhrZ;o+_?<8ksBw7TLO zkv8x3`JT}4j2~CDrvqYVPKV~km0zL&6v6l-wmVR4sI!ZUBnU$3 zD5RwJOe%8ejg08#0C|6fUh5%=iuEL)mv1NTA!b%@8X@3N;RK6=tCLyW+($SLYs(&o zFowT2JQIDN=~jAA20O&P>IMqoX5xiUccdL7qUXGqyoBejbw3v19IWO46;rR+ec!7v zG)3Ky_D9~-jrEH-eIe6A(Nyf2QYqqtU0XOLUeC$JUG!xew~wuhe%6kW#oX(}4+CM< znj1Zrta3ZZeTfCPu5b_wVmX*w`4ShZI=9fG-zj~fvN!wOzM}TGoG2|DPhoeX#Lw)A zY(tKGskADeQ4x~PyYR)&d5X39AX^zI$$-sk#{-08n*u+>?lOQW@; zwzsF5-Kd#XHU|%DjR%NLKmO<6v0ktO; z04i8skIYuDYp}G#deF%Tv~H`6O<+1#m0V=8}Fn?J9tB#Os#rKkvwm2h{p~Y~o zq6;lhq;|SUZla=}5Z>j10SxAqf~-nc9Z04u2IWWSy5amzEdGS)YOO>Z7v%JM;7%;l zc=8dj%l11AS9A;T^Ka#Yg16oSB#9&fiv|e+JIy@Aez5gL`s7gYJWe2Y0@a8=z_E2- z0QTnB0lQCU{hx|-;YG#U@N$ttG{xX5xcjeWW{V|Pir78nWjFn>)o%58(_4yV*I0s} zeBLU5Bx;b~J?K<$Rz1=34$2u>a~E?*CZ((#9KpmzbO^zhAI$-1OP^c;op!kkfs5h|yx&cY-N_+fN8AP)sGI zg+3V-TvH^5rF-DwF#M@o-MqgO&zBEmRp$3#x+^C5YQS#Wl<=p*FA!3eTGyX z2hM@C8&%sk3hlbiIQxxg48~E$%F(A;0_WM(DR`?q9X&_+)zniV1 zDQ0e7ZO5pUVb`#qnb1p@64aHsOf@@5V-q9+m`@M4Nlb%0p$fyL+u| zDPR=`b6{pv3jkEqd`}JH=H^y%_3z`*B?zKK?L@9rj;1TiBqPhW-qxk`4z+6)S6%k` z8113?qe`8qMKPPwVXE#{`xZrSo@CGW2a;^aWRFY)Rc%AAu(GUDvPc!ZpyP$Eorj;o ztcYS$;4fGTs-tp8y2jnr>{qX0u5ID6u+{d{Ei@c0#ctGy zDvTqhNbBiXmbt6m>!eKR$9Hy(q}e|%L3-2?YZtp)sIF|zh#(;e4Z{0QDk}9)?sW1% z*bgx%KnnUxR&x*f?~f1~T?O9;L_znmO5r64tMJko;?!K@`MF2yG{DU-qXOfC#X1VI z{5hc7gSzt?aKLe(S)$egaC|zIDSG>%a0aiYOHbkk<|5>x_rAa;byEv3f$Sk#yHv#_ z%vaszerHfL-WdW}j+ilNGnhDw!qZh>^$tCrS-CDsexv!hd-rZz;ZL2&r|}tfDLVz; zPA2XUMOtRb@!z@vj)E!t8Il-w;NIyCdD~7;LOc`P9W>YEIo+K=TiKzkUZgdzQ>(jop=2)xDoalI`~qt;i- zyB6w#+o+-aY&%=@fgjA|yNi^Yjk4WdrfBri){7Ow4{EL;)v7L{Zs06Nbk^&r(yWmc z-H5=9C_ff_0G>(E?0#`9vWGsujEw_W;u}vACUQ2UI#CgeCRF&2tI0}{l8X7RYyN$~ z-!+XcFKBD>-|;LnpF#YL&xBmvFlwY;9?*q4_+%Z9@3k9XP0_qJ$O{LvJ3M@|kz;2D zC?*+b;DwNr3-aLk+i;{Lv`5;|)1I(>lE+QUyg8@^C>y@(VDUA0`G-rbdQUO&2s-T) z0hGmQwF|Z$`8lPp-)h#Z**ghYM2Arv?I(XZ+7lfHKGa=ISfNz+FV)#Zk-xx89$Ln& zgd$5QH67?=o#cvp7Z5V1cekP)%Grc`H7wJ*!`?XzW4ZH9tJg0q7XJ5sJpHfxu?b8d zXZ_g{v8phecP5iaa|KaUfnux{yK5@X`Oj`upN_XqvYT`HKvv#pqLh@QHhwP8u|fz3 zlNT4I<8s}Mq*SK9p>tr7)M4Sgnrv9>$=U4wl&V0>Oa0Y037{O8)l@1ib50E@Pn=%n z0j!boKkq`ZF;1&f9cK%`&pHcc@VgUW*1{5LmaMd1GTp1SyK@&|sm(Em*e?hZT9L(g zNT!1J_}2j)Kz(G17uk^4;4XfVziB4b}8KiqJd6k?QRv!RuSA98(@n znP*c94%%-v%J*tQnKnBiO#AHBp|hTuG9dW=b(6KDPgooB{j;CZ-Vdr~q-{HM`mzf4 zqmh=lamLMnyZs$4H9fVsGj*TCnKkz$6^P(wqiIv;WxyJ|M2HVO0Qd@#p`KiBs)60v^bp^#GXQH;hl^>cd z2A71-gZl16eK+!iX~`75awZtm%rdbSp@M^g8PR#N=}x9yC>g@b?#w#^hdyr2GM#qW zR?|;p?~XJ(KP_Z-UQ#4yo}aCItp}DW=4XrZ7tgvY>O1+|CVLL%vMmfJERLv?Z;(zI zYM%pJmQL+|8uQA3w<_Hm+ut|Yc@>^%H9aSm0iyh#z2DgnD(P{umy?n%HbM>48x?ms zdOjchy&MOfW;dOh=ydXk?!9>%N*o+4S2IB z9p>jWI(KsA4+8{rqGAFzi;wKllabJpOO_fVR3v_e=KU^rmzkY zOBUARZKEX~c#~itciE@m{*trei#uVeaDnQSv?#{lsM%$dhGZd|h*s)DZ%h09I0z(r<5+*K`h|_kNE=TM8rd7AELqz{=u6vZ)WmaY4dV=A&UX0B zOZEN97Om__^}b+JlIc3qyMY13b;`QCe46z)!l_ZLS$^DX*HzTR*30s7Q2l)Bi^M|} z&8t49VpOSi0<)r^E7jf7Xx)Izmc}nBil+scP$q6mJE*&8`*yqj&iZi&t1>%En?pFX zOiCg!B)ocozY1YTNsaQ1suBU0OY!#oqY}QzEoR*3D`dJUcdn&r=gcg{nPj)Iu@Rn_ zNnZe@gz`AOojGI2+R}OE&bVzs?YadxhiSm0iSwqD!PpuYUN*q&Cid?U2?$UEDlY?V zn_)n@EAIDQWSdmicC|t!UymcGnzFPNsUmOZA`g82|6Ldl@ivaCLxE3<4WOTNIQ!{3gXb9OCp;FnwBl47ce#l3+x4 zbQZ2(*R`RF`-Y1Pg&}qua(>lsZ4wp~S<~!uXYlfzS~_3cB?zxV%WDQC0Q()M>5{+Uay^?#Cy%HqvIeQ9GG3}S2s5|eSJYKDV~DE$?haY zxrr>%m#y*mi@R=;W{BLd!@+hO(z6( z;5^<4CUP}2yc#Rc5-LJE;;w}GLF^!w%7i;5x%QYutI(!d;VDY3`oVE+Rv>q3dj!7& z8l&aHel~e)*WBsNdDv;f)a^rwF=6{{GB++r9ogDJ-xq|}&kC4xfN*;i^Lf8ZpzxW7uif%fAda$h_7zY}aNTla_B=Gzbv8#wSalIj-2&&> z9wcKX$C*^`;|*hKRQ(s&%G}>C4tYM~)%SRU@?vC~>|Jkt4j!i`TN7ARZC2r>Rjs_2R=ODpiL zj7UUX${8eWW=UG<7v)Djq!%sr#kVyoIG>nz^!b=~d*qt3{he|t!$mRQs1-7*TuWJ} zm6Nm6R^~7YtW6SgZ4y4(Bz%AL^}ma`(Eq!b`+ohng>WKN7#8yjS(9CxTBF_+71gI@ zd?PiQ+uXAwc}~ncbW_y};+1@#`&Wm#JTlM;!Joq^U@Fir9QhChZ3*0eF!E#4^=}MG zrw=7SGp))FE0NRH48x|}|KwIxK&b+OFj`)2d$fXUVStvkTLmJ>cO1pV#CDqUjLQ{j zU&nNX`dW|WMla}tSRFD?lMeY?VaNv4S~_!93i6Wv{-IDFy|_yWW0!SYz%qS{HQ2o` z-aK69HKIup+kbcl$=bjD`PWsbEF-5?_d~&%n`>U}M+UAMY^Y@!EtfV3oZNG=n{li} z{_N;|uI%*5CA9%I?j45Q$bfIoW@&1@p0OkajkPzF`c){Mz6RlB4$pT5ao?_0Hq4sA zw#+e{O>AD>W%|5Z4F>U|L?lk zg8KJ>5qkoVkewfB+h}{a%v~qg)Wx?Gl1u)KVY7G5>nMQBsaHZLke+TmE=;a@jM1dB@ipk2S?>3?D(Ju@Tz2M$6?-|Gb-HX-eIpCW{b zFv~ev1!;alD(d%0k9eU5d)+3UmfV*StlS>gSU+uH~Nb(t4z9xVtSEV8|2 zr+g<;jW+2yO`efn4Z0xel~#`ZQkR>yvQZcYk_Rdra_vuz4Mi_B?AjJd3C5n!J2of_ zsdbS`SZkd&L#5uGkFxV{ykp+h-|S&#LEKcXYwo9tboJ6#8)P0RB>(IrJuY}|=ELjd zm+mff%`thCf3}69);D_eR&AL*aS_iH%~I0vf8i+q*2<*XBv`F>QYK`Q8W)q? zR(d9U%6H->2G7SXDxrD~Cg&-f)|*X2lf8~CJ`ew)TH3pGAk`t}f+|-zw;=>_n4&Q_ zc{6h&4(wVA7FT;O=P9dZRS|;ebS+3U@fN;p2c|o$!~XGYxC(4SZVFfn%{hm`yjv!* zqs{}2FLpfv)g?|$oHWiMF>txB`DDgKv9ZvA+Wxd4w=)-y^85;NLpJNh@6U%x*w8@YJzfkOE2NR4-EnZYc zq-bLByjh&4?~Pi9YlnjF>*pB$4$hiDD-D;;1YH*d>Z!`g`kTZ35%A5o66RsOoLcZ9 z&kxfEk$QWk6tcWn>5@VwS=tXXb8ODx-N1UQ-H zUP6KS?%<%EJ9TE}O0d9Ry)X9R93q3;57s4IJ4Em_QcpaUl&brd;P)dCdIDb zAV-=?#Dx@NWv;EdDGp$6F?=gc@(FXT1X5U<%L5q#X~<4kr3{%NmSIO1gj9E97D^1S zlowQdCn7>&+-sW8GM|(Tp|ASrjxIJ<2Q2h0Rcb)s6 ze`6pR*iXp7XBNZ7&ARsKw#QfXAf#tV&_Op5#r+@E*O#}Fqty`5aNcu9E1SXus1-s| zp|NV}eW<1*W0C#|EnjTgbULNphJN{#<#a3_0+w^&B1sD_oLpZx|er zxhHjkPb^~7x@mz}o(QDZiXi%OWkW#Odrcf9vV7s}?!{H>%~_fX)&r>Q8K+2lVd5=* z4ul#X`{OWkgA{(IQZ{)^?qoz~(shGlp3Z53aol9XUQU0B3X*GjG7OLi*CXh-xJ@&}_!jT5r?Q<^@Ssts* z5nB=t$R2kRajvBsy{!r#vn`zIlL{=@g}BuB=*n;%LyH8boNyGJGN({Rt!qh}kH-ng zAKILgyqJtWCi{``=xdRxI6EEj5I(U1YTB}~{Y;`{wmwYMvzm^cmGr^F;S8l)$;_G- z1)uY&CFqp2%05Elyj1t@Xmg*aRWGJ5xF8SH=`m8tKE3K?pk4V$o1Ws#Uq208dlTEt z4G_-)2QU#?_#kRT!`zD;BMTnxL_jj?2D#gFuMPj|GMaqv0EJQ)YS~iq2&O8aU;;BT zDU-H1UZu6+9NK~64gTTnbIRV0D?mu)z(NIB{qIJhfjOyJ>lfJKFSjf-94;|TEl&dC zFM=rfw*pS46C~NZyLNzfl74wpxkz-F-HG_vOD-abVmeyf23stH**COU7TG0a=CA#? zn*5jR!~JQgQ69*pHRzpn`}RaQ@Qb2+@?F*I?{!>`2K#|=-^_SHSomQ-Q2cuQI(${^ zSOML}H-bAR%;gm!sr{y(_-e)$Cq4TR%*<0cTXkpAQUYdxK%7!&sud{(P4-m~hX~~2 z@7zuuJUK9h?D5;`0NaJAeaV|v-#QXyRnQAVrT<}IQR`i&k%SFQ%yoXwq15S%M}HtJ zLb=yjec`E0etuX@&GYsUzuQQ72$K6vkOj2N>q6UV*yM&Y@kms=EzhX@_c}^d=<=gm zG7eQwyOju#hC{|#8Ae!*ySd*F&T98Mga;@scE+(%wgGOaI_ z70dPwes`{=?dGx@qqF2}G8Z3>`%p<*X{-u3eD6K_1chO}hmn4Hp(kqMtd^Q2%LE%y z_f8$&sPcYC!WkCu5$v=zQdyYCaOccI`op2u5M*74xgLCqsjV>eY(9s>(nq^K(Y9>+ zPZrE7B!CI1rpsm$2J$6Fm@#o(44*{F^MvZ82@{=~MTVtH$P_B>8U%B_>-i{bf64^Z zYGdUEB?RwvQVFkTK2fH!>q=>fI`1`D?9AwnhU#|DFGasBc@n;_C$gm@3>>P@F!n0>ZG77OhKMj&Fi`QzW z&N>_GZnOzD_9oEliJk3jvIbR-aw}=sVm%SWN9}P6w9u$_bBg_t|5fp#ti!u1x9!u) zcQzy|cBZDZ7|xLDR?2tD7nI2-JhA`BQu*(O9Q?XKI(oGCq81=N4}+p&p(fp59x}D* z5vevgc}n;;`yY|-0)7k{y1uObme{GUQuz*vYQe9JoV&*+Vig=DCi2ZHBuEjOb6=)a z4OSmFzM|)`CBW&ZB#v2uo<4MZKt?3WYuRk>5WO5UM31WIiL^6I*F`Zco4ca*>n|F@vHTXpIJtqjw#LCOCE}mP-cm}OPSP( zD^^difMef?vpnstn4Gi@tyi*%s>*Ok%AT|53(XKyIr2jHL%+YfP!Jlf;jNOLeBe90 zu}}^|FXRtf=By;pCL5cKzQlvhdaXBWpc$*2zzr>^7rjjh)N5^Sd4PPjenK}=C*Vb7 zqq1hJHJ3xOQ`=4WCe1S( zAF7kg!Ziz0aB-)95s13mGCh2#lgeyxcZwoy)z|FFMW=1m!<69yjLS#;x?Y8I^hJ;~lqp^zb9|xGcPA#qta?^wWDek+9HMjc(mZGw z_;e}CKm6m)r?rH-t#iv|>sy$eB{)I)o?>FhI%vy3XGHq~|C2AXLzcwf?2MK^{>^{{ zZqsm}o^3HO$I$TA`PE+A3|iaYP|)SBmrr=YO8T!_t$qmlPrOrxJ+YMZm|{|Eh}@_O z|I=1Jxv0G~)0fe#Jv1?-x!_)G`PRhLYWMCi*LZiD#_Cca;&);L=*gdfZ`s!p?7a81?j#>j@v!%7dg_7+V4Ie^KvJ;Z zO}I=n7fyX*zevUeRfh$CpW~#wL?~^!a6mR^({n!H8VnzKd}`uLPd2}JSFgmo?>C_| zkcX`>lhd2d%CXNy$(;^KO%DIq{VXo%F~y>IN;5P{mw3$)H~qeVptV%@jdA}G?5_7Y z=IjQnr{5!hX2mrZI0e->cOFz3-mSH<@9y3nCn9cjon>x&3|}W+@FX(S7;3 z<^6nhu}}DlI26$i>u$RB&zS0~aHiiHm2!sTos@5v_)+X?FHek$~~%Fr_Vag zy13s_fJBPb3j>l{kFbf&WP9R{2H+gT#n}_#Xz=7?pYps82MS3HgIK>!++7A;kq^KF zk{|7Xx%PAszyO#3^VyWQx@`>@az2@`75%{-b7!!m;JGWoPBX8!LO6`ixK?Q}wq$mM z^wH-%yr|fQ`((7#5KoS`zD$1<-2aEV6Nznmb@&VHsYkCg2t@(|nsbbX2O8ynR+gbK z)!XBeUS<)1QKYu9;t>a67#N_otg|QncW$I){Xfp~Q=m}i>Fn%80{qITdF$o)wq%@> zj6>4Y#jL!jNFhJY){zT*KhNF0!l6((a&Dp1aB3EDxH0$%)Z<5vdFzx-5<}TVQv;!q zVmX~<^v-S^dfH=6;iI}jnA-x%%~U;IHnN;mrLjPr_X!<2?3A@Jar36s@o#2Y&>i7r zT7hq^*Z7}jv3LN~vIZfN*FXZg4Wo|a*_r&oxOKf{7Fo8|YYVx~qxQQ#>J+_R#iB+W zvMy|j7+sNoFghsX7OM98e&N-}SJcQFl5_AmqK?;7UP8BA7#~!sQyvnn_UaZv6#q=+ zL?6|H*(XzceX~VkxYx≫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 Q$|RMV!Ajm!q35{xO&#jf7}5=O2F)X-Dg3& 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
!dq^=bGFNC!ztow-qvE-T_y}NI-AcY=+0k{l z>`~gKn+T^7U=5>^>{ic$#$(*%BI?A*1KgDT9`%WxMuE%^-oA9#);5C=(*A<1Js{t7 z#<=CdXVY%kE%M<2H>mC?e@07l+r{WED@r*gqR+nd&ybd% z0*>Di(H{f^Q}Dh&R)H|@4Nb9Z!0MRKI8IVoaNZ_-p{eS;4`+yWs2>)}Yhq40F03v- z2VKzF4yqEZF#c@gKepL#*6Y428?kOk>o_od+@8N0qk4Ql^!H~WeJ3huU3|mS03Ru_#U>QLW{#~!~rp{v=0zSVRbi5%wJbX_%kLK_ z(4g56A>R*|^A{G>KDH2piAGJf|;UnDadVV#byOqVbewq(^Kr>YJ9!1g;?I`AWl&O`*^SKVpIlV_wdx6=2dfB61wG)Xt6 z;b6xqz|HiXZVZr(uhqH!p-!mSc@`}D&av9}1$JgoVu`%zI}@(U4=g+2yf7J# zutC~uzcz~?zo)xZU-5C+SRZ1Zm(_FRl;4x2<6P#phs-m0CpKU5*dUe>*(g+%RW>r; zyk6XV`oOhc%kn33*Yv4IucMiQ330qTGp>Z&eYzBdDRdtZI2+XjEv)X8a3 z!}|*K?21zcII50s7GP^Za^-BFko2HK`dCekUl?^UHN>h? ztSUcg2eCMa#X&3%VsQ{rKnxwl&{4z-V(2LLz=+2V;<3YLeIT|DV(ajk8^mJ=@z~-2 cGIlVBMI~&RRX-iM!b-;upFEUv@cixn0md6oOaK4? literal 0 HcmV?d00001 diff --git a/opentrons-ai-client/src/molecules/LabwareDiagram/labware-images.ts b/opentrons-ai-client/src/molecules/LabwareDiagram/labware-images.ts new file mode 100644 index 00000000000..260de0ee8a9 --- /dev/null +++ b/opentrons-ai-client/src/molecules/LabwareDiagram/labware-images.ts @@ -0,0 +1,618 @@ +// images by labware load name +// TODO(mc, 2019-05-29): shared-data? components-library? + +export const labwareImages: Record = { + agilent_1_reservoir_290ml: [ + new URL( + '../../assets/images/labwares/agilent_1_reservoir_290ml_side_view.jpg', + import.meta.url + ).href, + ], + axygen_1_reservoir_90ml: [ + new URL( + '../../assets/images/labwares/axygen_1_reservoir_90ml_side_view.jpg', + import.meta.url + ).href, + ], + biorad_96_wellplate_200ul_pcr: [ + new URL( + '../../assets/images/labwares/biorad_96_wellplate_200ul_pcr_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + 'corning_12_wellplate_6.9ml_flat': [ + new URL( + '../../assets/images/labwares/corning_12_wellplate_6.9ml_flat_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + 'corning_24_wellplate_3.4ml_flat': [ + new URL( + '../../assets/images/labwares/corning_24_wellplate_3.4ml_flat_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + corning_384_wellplate_112ul_flat: [ + new URL( + '../../assets/images/labwares/corning_384_wellplate_112ul_flat_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + corning_96_wellplate_360ul_flat: [ + new URL( + '../../assets/images/labwares/corning_96_wellplate_360ul_flat_three_quarters.jpg', + import.meta.url + ).href, + ], + 'corning_48_wellplate_1.6ml_flat': [ + new URL( + '../../assets/images/labwares/corning_48_wellplate_1.6ml_flat_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + 'corning_6_wellplate_16.8ml_flat': [ + new URL( + '../../assets/images/labwares/corning_6_wellplate_16.8ml_flat_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + eppendorf_96_tiprack_1000ul_eptips: [ + new URL( + '../../assets/images/labwares/eppendorf_1000ul_tip_eptips_side_view.jpg', + import.meta.url + ).href, + ], + eppendorf_96_tiprack_10ul_eptips: [ + new URL( + '../../assets/images/labwares/eppendorf_10ul_tips_eptips_side_view.jpg', + import.meta.url + ).href, + ], + geb_96_tiprack_1000ul: [ + new URL( + '../../assets/images/labwares/geb_96_tiprack_1000ul_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/geb_1000ul_tip_side_view.jpg', + import.meta.url + ).href, + ], + geb_96_tiprack_10ul: [ + new URL( + '../../assets/images/labwares/geb_96_tiprack_10ul_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/geb_10ul_tip_side_view.jpg', + import.meta.url + ).href, + ], + nest_1_reservoir_195ml: [ + new URL( + '../../assets/images/labwares/nest_1_reservoir_195ml_three_quarters.jpg', + import.meta.url + ).href, + ], + nest_1_reservoir_290ml: [ + new URL( + '../../assets/images/labwares/nest_1_reservoir_290ml.jpg', + import.meta.url + ).href, + ], + nest_12_reservoir_15ml: [ + new URL( + '../../assets/images/labwares/nest_12_reservoir_15ml_three_quarters.jpg', + import.meta.url + ).href, + ], + nest_96_wellplate_100ul_pcr_full_skirt: [ + new URL( + '../../assets/images/labwares/nest_96_wellplate_100ul_pcr_full_skirt_three_quarters.jpg', + import.meta.url + ).href, + ], + nest_96_wellplate_200ul_flat: [ + new URL( + '../../assets/images/labwares/nest_96_wellplate_200ul_flat_three_quarters.jpg', + import.meta.url + ).href, + ], + nest_96_wellplate_2ml_deep: [ + new URL( + '../../assets/images/labwares/nest_96_wellplate_2ml_deep.jpg', + import.meta.url + ).href, + ], + opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical: [ + new URL( + '../../assets/images/labwares/opentrons_10_tuberack_4_6_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/falcon_50ml_15ml_conical_tubes.jpg', + import.meta.url + ).href, + ], + opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic: [ + new URL( + '../../assets/images/labwares/falcon_50ml_15ml_conical_tubes.jpg', + import.meta.url + ).href, + ], + opentrons_15_tuberack_falcon_15ml_conical: [ + new URL( + '../../assets/images/labwares/opentrons_15_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/falcon_15ml_conical_tube.jpg', + import.meta.url + ).href, + ], + opentrons_10_tuberack_nest_4x50ml_6x15ml_conical: [ + new URL( + '../../assets/images/labwares/opentrons_10_tuberack_4_6_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_50ml_15ml_conical_tubes.jpg', + import.meta.url + ).href, + ], + opentrons_15_tuberack_nest_15ml_conical: [ + new URL( + '../../assets/images/labwares/opentrons_15_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_15ml_conical_tube.jpg', + import.meta.url + ).href, + ], + opentrons_6_tuberack_nest_50ml_conical: [ + new URL( + '../../assets/images/labwares/opentrons_6_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_50ml_conical_tube.jpg', + import.meta.url + ).href, + ], + opentrons_1_trash_1100ml_fixed: [], + opentrons_1_trash_850ml_fixed: [], + opentrons_24_aluminumblock_generic_2ml_screwcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/generic_2ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_aluminumblock_nest_0.5ml_screwcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_0.5ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_aluminumblock_nest_1.5ml_screwcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_1.5ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_aluminumblock_nest_1.5ml_snapcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_1.5ml_snapcap_tube.jpg', + import.meta.url + ).href, + ], + opentrons_24_aluminumblock_nest_2ml_screwcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_2ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + opentrons_24_aluminumblock_nest_2ml_snapcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_2ml_snapcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/eppendorf_1.5ml_safelock_snapcap_tube.jpg', + import.meta.url + ).href, + ], + opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/eppendorf_2ml_safelock_snapcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_tuberack_nest_0.5ml_screwcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_0.5ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_tuberack_nest_1.5ml_screwcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_1.5ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_tuberack_nest_1.5ml_snapcap': [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_1.5ml_snapcap_tube.jpg', + import.meta.url + ).href, + ], + opentrons_24_tuberack_nest_2ml_screwcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_2ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + opentrons_24_tuberack_nest_2ml_snapcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_2ml_snapcap_tube.jpg', + import.meta.url + ).href, + ], + opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic: [ + new URL( + '../../assets/images/labwares/eppendorf_2ml_safelock_snapcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_24_tuberack_generic_0.75ml_snapcap_acrylic': [], + opentrons_24_tuberack_generic_2ml_screwcap: [ + new URL( + '../../assets/images/labwares/opentrons_24_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/generic_2ml_screwcap_tube.jpg', + import.meta.url + ).href, + ], + 'opentrons_40_aluminumblock_eppendorf_24x2ml_safelock_snapcap_generic_16x0.2ml_pcr_strip': [ + new URL( + '../../assets/images/labwares/eppendorf_2ml_safelock_snapcap_tube.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/generic_pcr_strip_200ul_tubes.jpg', + import.meta.url + ).href, + ], + opentrons_6_tuberack_falcon_50ml_conical: [ + new URL( + '../../assets/images/labwares/opentrons_6_tuberack_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/falcon_50ml_conical_tube.jpg', + import.meta.url + ).href, + ], + opentrons_96_aluminumblock_biorad_wellplate_200ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/biorad_96_wellplate_200ul_pcr_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + opentrons_96_aluminumblock_generic_pcr_strip_200ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/generic_pcr_strip_200ul_tubes.jpg', + import.meta.url + ).href, + ], + opentrons_96_aluminumblock_nest_wellplate_100ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_aluminumblock_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_96_wellplate_100ul_pcr_full_skirt_three_quarters.jpg', + import.meta.url + ).href, + ], + opentrons_96_tiprack_1000ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_1000ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_tiprack_10ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_10ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_tiprack_20ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_10ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_tiprack_300ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_300ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_filtertiprack_1000ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_1000ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_filtertiprack_10ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_10ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_filtertiprack_20ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_10ul_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_filtertiprack_200ul: [ + new URL( + '../../assets/images/labwares/opentrons_96_tiprack_300ul_side_view.jpg', + import.meta.url + ).href, + ], + tipone_96_tiprack_200ul: [ + new URL( + '../../assets/images/labwares/tipone_96_tiprack_200ul_side_view.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/tipone_200ul_tip_side_view.jpg', + import.meta.url + ).href, + ], + usascientific_12_reservoir_22ml: [ + new URL( + '../../assets/images/labwares/usascientific_12_reservoir_22ml_side_view.jpg', + import.meta.url + ).href, + ], + 'usascientific_96_wellplate_2.4ml_deep': [ + new URL( + '../../assets/images/labwares/usascientific_96_wellplate_2.4ml_deep_side_view.jpg', + import.meta.url + ).href, + ], + thermoscientificnunc_96_wellplate_1300ul: [ + new URL( + '../../assets/images/labwares/thermoscientificnunc_96_wellplate_1300ul.jpg', + import.meta.url + ).href, + ], + thermoscientificnunc_96_wellplate_2000ul: [ + new URL( + '../../assets/images/labwares/thermoscientificnunc_96_wellplate_2000ul.jpg', + import.meta.url + ).href, + ], + appliedbiosystemsmicroamp_384_wellplate_40ul: [ + new URL( + '../../assets/images/labwares/appliedbiosystemsmicroamp_384_wellplate_40ul.jpg', + import.meta.url + ).href, + ], + biorad_384_wellplate_50ul: [ + new URL( + '../../assets/images/labwares/biorad_384_wellplate_50ul.jpg', + import.meta.url + ).href, + ], + opentrons_96_deep_well_adapter: [ + new URL( + '../../assets/images/labwares/deep_well_plate_adapter.jpg', + import.meta.url + ).href, + ], + opentrons_96_flat_bottom_adapter: [ + new URL( + '../../assets/images/labwares/flat_bottom_plate_adapter.jpg', + import.meta.url + ).href, + ], + opentrons_96_pcr_adapter: [ + new URL( + '../../assets/images/labwares/pcr_plate_adapter.jpg', + import.meta.url + ).href, + ], + opentrons_universal_flat_adapter: [ + new URL( + '../../assets/images/labwares/universal_flat_adapter.jpg', + import.meta.url + ).href, + ], + opentrons_aluminum_flat_bottom_plate: [ + new URL( + '../../assets/images/labwares/flat_bottom_aluminum.png', + import.meta.url + ).href, + ], + opentrons_96_well_aluminum_block: [ + new URL( + '../../assets/images/labwares/opentrons_96_aluminumblock_side_view.jpg', + import.meta.url + ).href, + ], + opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep: [ + new URL( + '../../assets/images/labwares/deep_well_plate_adapter.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_96_wellplate_2ml_deep.jpg', + import.meta.url + ).href, + ], + opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat: [ + new URL( + '../../assets/images/labwares/flat_bottom_plate_adapter.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_96_wellplate_200ul_flat_three_quarters.jpg', + import.meta.url + ).href, + ], + opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt: [ + new URL( + '../../assets/images/labwares/pcr_plate_adapter.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/nest_96_wellplate_100ul_pcr_full_skirt_three_quarters.jpg', + import.meta.url + ).href, + ], + opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat: [ + new URL( + '../../assets/images/labwares/universal_flat_adapter.jpg', + import.meta.url + ).href, + new URL( + '../../assets/images/labwares/corning_384_wellplate_112ul_flat_photo_three_quarters.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_tiprack_adapter: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_tiprack_adapter.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_tiprack_50ul: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_tiprack_50ul.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_tiprack_200ul: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_tiprack_200ul.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_tiprack_1000ul: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_tiprack_1000ul.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_filtertiprack_50ul: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_filtertiprack_50ul.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_filtertiprack_200ul: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_filtertiprack_200ul.jpg', + import.meta.url + ).href, + ], + opentrons_flex_96_filtertiprack_1000ul: [ + new URL( + '../../assets/images/labwares/opentrons_flex_96_filtertiprack_1000ul.jpg', + import.meta.url + ).href, + ], + opentrons_96_wellplate_200ul_pcr_full_skirt: [ + new URL( + '../../assets/images/labwares/opentrons_96_wellplate_200ul_pcr_full_skirt.jpg', + import.meta.url + ).href, + ], + opentrons_96_deep_well_temp_mod_adapter: [ + new URL( + '../../assets/images/labwares/opentrons_96_deep_well_temp_mod_adapter.png', + import.meta.url + ).href, + ], + opentrons_tough_pcr_auto_sealing_lid: [ + new URL( + '../../assets/images/labwares/opentrons_tough_pcr_auto_sealing_lid.jpg', + import.meta.url + ).href, + ], + opentrons_flex_deck_riser: [ + new URL( + '../../assets/images/labwares/opentrons_flex_deck_riser.png', + import.meta.url + ).href, + ], +} From 888a0abd0241c67732b61d2409832cacdd4b79c2 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 19 Nov 2024 11:54:34 -0500 Subject: [PATCH 030/220] fix(app): fix estimator update command failure copy during drop tip (#16884) Closes RQA-3583 Currently, the app inspects an errorType on a failed drop tip command to determine whether to throw the special case "home the gantry" error modal. Recently, the error type changed for failed update estimator commands, so the special modal was broken. Instead of special-casing the errorType for failed estimator commands, let's just assume that any failed estimator command is caused by an unknown position error and pop the special modal. Note that this also handles any error in the same manner with a "MustHomeError" errorType, too. --- .../hooks/__tests__/errors.test.tsx | 6 +- .../DropTipWizardFlows/hooks/errors.tsx | 15 +- .../hooks/useDropTipCommands.ts | 146 +++++++++++------- 3 files changed, 93 insertions(+), 74 deletions(-) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/__tests__/errors.test.tsx b/app/src/organisms/DropTipWizardFlows/hooks/__tests__/errors.test.tsx index 08caf96c946..476513706f9 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/__tests__/errors.test.tsx +++ b/app/src/organisms/DropTipWizardFlows/hooks/__tests__/errors.test.tsx @@ -29,9 +29,9 @@ describe('useDropTipCommandErrors', () => { act(() => { result.current({ - runCommandError: { - errorType: DROP_TIP_SPECIAL_ERROR_TYPES.MUST_HOME_ERROR, - } as any, + type: DROP_TIP_SPECIAL_ERROR_TYPES.MUST_HOME_ERROR, + message: 'remove_the_tips_manually', + header: 'cant_safely_drop_tips', }) }) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/errors.tsx b/app/src/organisms/DropTipWizardFlows/hooks/errors.tsx index c8df4d239a9..1f7d6cf09ff 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/errors.tsx +++ b/app/src/organisms/DropTipWizardFlows/hooks/errors.tsx @@ -9,8 +9,7 @@ import type { RunCommandError } from '@opentrons/shared-data' import type { ErrorDetails } from '../types' export interface SetRobotErrorDetailsParams { - runCommandError?: RunCommandError - message?: string + message: string | null header?: string type?: RunCommandError['errorType'] } @@ -23,16 +22,8 @@ export function useDropTipCommandErrors( ): (cbProps: SetRobotErrorDetailsParams) => void { const { t } = useTranslation('drop_tip_wizard') - return ({ - runCommandError, - message, - header, - type, - }: SetRobotErrorDetailsParams) => { - if ( - runCommandError?.errorType === - DROP_TIP_SPECIAL_ERROR_TYPES.MUST_HOME_ERROR - ) { + return ({ message, header, type }: SetRobotErrorDetailsParams) => { + if (type === DROP_TIP_SPECIAL_ERROR_TYPES.MUST_HOME_ERROR) { const headerText = t('cant_safely_drop_tips') const messageText = t('remove_the_tips_manually') diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts b/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts index 493b4a77bff..c3162a48f07 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/useDropTipCommands.ts @@ -2,13 +2,18 @@ import { useState, useEffect } from 'react' import { useDeleteMaintenanceRunMutation } from '@opentrons/react-api-client' -import { DT_ROUTES, MANAGED_PIPETTE_ID } from '../constants' +import { + DROP_TIP_SPECIAL_ERROR_TYPES, + DT_ROUTES, + MANAGED_PIPETTE_ID, +} from '../constants' import { getAddressableAreaFromConfig } from '../utils' import { useNotifyDeckConfigurationQuery } from '/app/resources/deck_configuration' import type { CreateCommand, AddressableAreaName, PipetteModelSpecs, + RunCommandError, } from '@opentrons/shared-data' import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' import type { CommandData, PipetteData } from '@opentrons/api-client' @@ -129,17 +134,25 @@ export function useDropTipCommands({ issuedCommandsType ) - return chainRunCommands( - isFlex - ? [ - ENGAGE_AXES, - UPDATE_ESTIMATORS_EXCEPT_PLUNGERS, - Z_HOME, - moveToAACommand, - ] - : [Z_HOME, moveToAACommand], - false - ) + if (isFlex) { + return chainRunCommands( + [ENGAGE_AXES, UPDATE_ESTIMATORS_EXCEPT_PLUNGERS], + false + ) + .catch(error => { + // If one of the engage/estimator commands fails, we can safely assume it's because the position is + // unknown, so show the special error modal. + throw { + ...error, + errorType: DROP_TIP_SPECIAL_ERROR_TYPES.MUST_HOME_ERROR, + } + }) + .then(() => { + return chainRunCommands([Z_HOME, moveToAACommand], false) + }) + } else { + return chainRunCommands([Z_HOME, moveToAACommand], false) + } }) .then((commandData: CommandData[]) => { const error = commandData[0].data.error @@ -149,12 +162,12 @@ export function useDropTipCommands({ } resolve() }) - .catch(error => { + .catch((error: RunCommandError) => { if (fixitCommandTypeUtils != null && issuedCommandsType === 'fixit') { fixitCommandTypeUtils.errorOverrides.generalFailure() } else { setErrorDetails({ - runCommandError: error, + type: error.errorType ?? null, message: error.detail ? `Error moving to position: ${error.detail}` : 'Error moving to position: invalid addressable area.', @@ -224,51 +237,70 @@ export function useDropTipCommands({ proceed: () => void ): Promise => { return new Promise((resolve, reject) => { - chainRunCommands( - currentRoute === DT_ROUTES.BLOWOUT - ? buildBlowoutCommands(instrumentModelSpecs, isFlex, pipetteId) - : buildDropTipInPlaceCommand(isFlex, pipetteId), - false - ) - .then((commandData: CommandData[]) => { - const error = commandData[0].data.error - if (error != null) { - if ( - fixitCommandTypeUtils != null && - issuedCommandsType === 'fixit' - ) { - if (currentRoute === DT_ROUTES.BLOWOUT) { - fixitCommandTypeUtils.errorOverrides.blowoutFailed() - } else { - fixitCommandTypeUtils.errorOverrides.tipDropFailed() - } - } - - setErrorDetails({ - runCommandError: error, - message: `Error moving to position: ${error.detail}`, - }) - } else { - proceed() - resolve() - } - }) - .catch((error: Error) => { - if (fixitCommandTypeUtils != null && issuedCommandsType === 'fixit') { - if (currentRoute === DT_ROUTES.BLOWOUT) { - fixitCommandTypeUtils.errorOverrides.blowoutFailed() - } else { - fixitCommandTypeUtils.errorOverrides.tipDropFailed() - } - } + const isBlowoutRoute = currentRoute === DT_ROUTES.BLOWOUT + + const handleError = (error: RunCommandError | Error): void => { + if (fixitCommandTypeUtils != null && issuedCommandsType === 'fixit') { + isBlowoutRoute + ? fixitCommandTypeUtils.errorOverrides.blowoutFailed() + : fixitCommandTypeUtils.errorOverrides.tipDropFailed() + } else { + const operation = isBlowoutRoute ? 'blowout' : 'drop tip' + const type = 'errorType' in error ? error.errorType : undefined + const messageDetail = + 'message' in error ? error.message : error.detail setErrorDetails({ - message: `Error issuing ${ - currentRoute === DT_ROUTES.BLOWOUT ? 'blowout' : 'drop tip' - } command: ${error.message}`, + type, + message: + messageDetail != null + ? `Error during ${operation}: ${messageDetail}` + : null, }) - resolve() + } + reject(error) + } + + // Throw any errors in the response body if any. + const handleSuccess = (commandData: CommandData[]): void => { + const error = commandData[0].data.error + if (error != null) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal + throw error + } + proceed() + resolve() + } + + // For Flex, we need extra preparation steps + const prepareFlexBlowout = (): Promise => { + return chainRunCommands( + [ENGAGE_AXES, UPDATE_PLUNGER_ESTIMATORS], + false + ).catch(error => { + throw { + ...error, + errorType: DROP_TIP_SPECIAL_ERROR_TYPES.MUST_HOME_ERROR, + } }) + } + + const executeCommands = (): Promise => { + const commands = isBlowoutRoute + ? buildBlowoutCommands(instrumentModelSpecs, isFlex, pipetteId) + : buildDropTipInPlaceCommand(isFlex, pipetteId) + + return chainRunCommands(commands, false) + } + + if (isBlowoutRoute && isFlex) { + prepareFlexBlowout() + .then(executeCommands) + .then(handleSuccess) + .catch(handleError) + } else { + executeCommands().then(handleSuccess).catch(handleError) + } }) } @@ -356,13 +388,10 @@ const buildBlowoutCommands = ( ): CreateCommand[] => isFlex ? [ - ENGAGE_AXES, - UPDATE_PLUNGER_ESTIMATORS, { commandType: 'unsafe/blowOutInPlace', params: { pipetteId: pipetteId ?? MANAGED_PIPETTE_ID, - flowRate: Math.min( specs.defaultBlowOutFlowRate.value, MAXIMUM_BLOWOUT_FLOW_RATE_UL_PER_S @@ -376,7 +405,6 @@ const buildBlowoutCommands = ( commandType: 'blowOutInPlace', params: { pipetteId: pipetteId ?? MANAGED_PIPETTE_ID, - flowRate: specs.defaultBlowOutFlowRate.value, }, }, From 556329b0e1abed31f5c70075d77b2c84e05b5583 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 19 Nov 2024 15:59:26 -0500 Subject: [PATCH 031/220] fix(app): fix ODD liquids CSS (#16886) Closes RQA-3581 --- .../ProtocolSetup/ProtocolSetupLiquids/index.tsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx index 551b7e716cd..153315d294b 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx @@ -153,26 +153,30 @@ export function LiquidsList(props: LiquidsListProps): JSX.Element { - {liquid.displayName} + {liquid.displayName.length > 33 + ? `${liquid.displayName.substring(0, 33)}...` + : liquid.displayName} - + {getTotalVolumePerLiquidId(liquid.id, labwareByLiquidId)}{' '} {MICRO_LITERS} + - {openItem ? ( Date: Tue, 19 Nov 2024 16:07:39 -0500 Subject: [PATCH 032/220] fix(app): update air gap aspirate copy, high res mag block image (#16890) fix RQA-3482 --- .../assets/images/magnetic_block_gen_1@3x.png | Bin 0 -> 64652 bytes .../assets/localization/en/quick_transfer.json | 2 +- .../assets/localization/zh/quick_transfer.json | 1 - .../modules/utils/getModuleImage.ts | 3 ++- .../QuickTransferAdvancedSettings/AirGap.tsx | 2 +- .../AirGap.test.tsx | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 app/src/assets/images/magnetic_block_gen_1@3x.png diff --git a/app/src/assets/images/magnetic_block_gen_1@3x.png b/app/src/assets/images/magnetic_block_gen_1@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..860966e07a31b6727c33aa3e1404f266b5b2ad9d GIT binary patch literal 64652 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 literal 0 HcmV?d00001 diff --git a/app/src/assets/localization/en/quick_transfer.json b/app/src/assets/localization/en/quick_transfer.json index c986da098c1..2ebdb5699b8 100644 --- a/app/src/assets/localization/en/quick_transfer.json +++ b/app/src/assets/localization/en/quick_transfer.json @@ -5,7 +5,7 @@ "advanced_setting_disabled": "Advanced setting disabled for this transfer", "advanced_settings": "Advanced settings", "air_gap": "Air gap", - "air_gap_before_aspirating": "Air gap before aspirating", + "air_gap_after_aspirating": "Air gap after aspirating", "air_gap_before_dispensing": "Air gap before dispensing", "air_gap_capacity_error": "The tip is too full to add an air gap.", "air_gap_value": "{{volume}} µL", diff --git a/app/src/assets/localization/zh/quick_transfer.json b/app/src/assets/localization/zh/quick_transfer.json index f57d7315651..5ecce11bb9c 100644 --- a/app/src/assets/localization/zh/quick_transfer.json +++ b/app/src/assets/localization/zh/quick_transfer.json @@ -4,7 +4,6 @@ "add_or_remove": "添加或移除", "advanced_setting_disabled": "此移液的高级设置已禁用", "advanced_settings": "高级设置", - "air_gap_before_aspirating": "在吸液前设置空气间隙", "air_gap_before_dispensing": "在分液前设置空气间隙", "air_gap_capacity_error": "移液器空间已满,无法添加空气间隙。", "air_gap_value": "{{volume}} µL", diff --git a/app/src/local-resources/modules/utils/getModuleImage.ts b/app/src/local-resources/modules/utils/getModuleImage.ts index f5db2094dcc..b68d5aa8562 100644 --- a/app/src/local-resources/modules/utils/getModuleImage.ts +++ b/app/src/local-resources/modules/utils/getModuleImage.ts @@ -8,6 +8,7 @@ import thermoModuleGen1HighRes from '/app/assets/images/modules/thermocyclerModu import heaterShakerModuleHighRes from '/app/assets/images/modules/heaterShakerModuleV1@3x.png' import thermoModuleGen2 from '/app/assets/images/thermocycler_gen_2_closed.png' import magneticBlockGen1 from '/app/assets/images/magnetic_block_gen_1.png' +import magneticBlockGen1HighRes from '/app/assets/images/magnetic_block_gen_1@3x.png' import absorbanceReader from '/app/assets/images/opentrons_plate_reader.png' import type { ModuleModel } from '@opentrons/shared-data' @@ -30,7 +31,7 @@ export function getModuleImage( case 'thermocyclerModuleV2': return thermoModuleGen2 case 'magneticBlockV1': - return magneticBlockGen1 + return highRes ? magneticBlockGen1HighRes : magneticBlockGen1 case 'absorbanceReaderV1': return absorbanceReader default: diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx index 594faa6372b..d1cf5ae2c0a 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx @@ -160,7 +160,7 @@ export function AirGap(props: AirGapProps): JSX.Element { { it('renders the first air gap screen, continue, and back buttons', () => { render(props) - screen.getByText('Air gap before aspirating') + screen.getByText('Air gap after aspirating') screen.getByTestId('ChildNavigation_Primary_Button') screen.getByText('Enabled') screen.getByText('Disabled') From 28751509052db2383e11d709226085b83aa8eed2 Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Tue, 19 Nov 2024 16:14:58 -0500 Subject: [PATCH 033/220] chore(release): known issue for downgrading with plate reader (#16822) # Overview Known issue for downgrading below 8.2 with a plate reader attached. ## Test Plan and Hands on Testing Check in next alpha. ## Changelog Single bullet in API release notes. ## Review requests - Does this capture the issue properly? Is there a related app-side issue? - Do we need to mention the problem of downgrading a robot _on the same network_ as a plate reader? ## Risk assessment nil --- api/release-notes.md | 4 ++++ app-shell/build/release-notes.md | 3 +++ 2 files changed, 7 insertions(+) diff --git a/api/release-notes.md b/api/release-notes.md index e41d415d83e..1fdd9a033d9 100644 --- a/api/release-notes.md +++ b/api/release-notes.md @@ -24,6 +24,10 @@ Welcome to the v8.2.0 release of the Opentrons robot software! This release adds - Error recovery no longer causes an `AssertionError` when a Python protocol changes the pipette speed. +### Known Issues + +- You can't downgrade the robot software with an Absorbance Plate Reader attached. Disconnect the module first if you need to downgrade. + --- ## Opentrons Robot Software Changes in 8.1.0 diff --git a/app-shell/build/release-notes.md b/app-shell/build/release-notes.md index a093e29e6ed..43d74275cbb 100644 --- a/app-shell/build/release-notes.md +++ b/app-shell/build/release-notes.md @@ -30,6 +30,9 @@ Welcome to the v8.2.0 release of the Opentrons App! This release adds support fo - Fixed an app crash when performing certain error recovery steps with Python API version 2.15 protocols. +### Known Issues +- If you attach an Absorbance Plate Reader to _any_ Flex on your local network, you must update all copies of the Opentrons App on the same network to at least v8.1.0. + --- ## Opentrons App Changes in 8.1.0 From 90389ebc20710d832ecfec71d629c1ee55667d2a Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 19 Nov 2024 17:17:08 -0500 Subject: [PATCH 034/220] fix(app): Fix post run drop tip wizard always displaying after error recovery (#16893) Closes RQA-3614 --- api-client/src/runs/commands/types.ts | 4 +-- .../hooks/useActionButtonProperties.ts | 1 + .../hooks/useRunHeaderDropTip.ts | 14 ++++++--- .../Devices/hooks/useDownloadRunLog.ts | 1 - .../__tests__/RunProgressMeter.test.tsx | 1 - .../Desktop/RunProgressMeter/index.tsx | 1 - .../getPipettesWithTipAttached.ts | 2 -- .../useCurrentlyRecoveringFrom.test.ts | 2 +- .../hooks/useCurrentlyRecoveringFrom.ts | 2 +- .../CurrentRunningProtocolCommand.tsx | 1 - app/src/pages/ODD/RunSummary/index.tsx | 3 +- .../__tests__/RunningProtocol.test.tsx | 1 - .../runs/__tests__/useRunTimestamps.test.ts | 2 +- app/src/resources/runs/useLastRunCommand.ts | 2 +- .../runs/useNotifyAllCommandsQuery.ts | 28 ++--------------- app/src/resources/runs/useRunTimestamps.ts | 2 +- .../runs/useAllCommandsAsPreSerializedList.ts | 18 ++++------- .../src/runs/useAllCommandsQuery.ts | 31 +++++-------------- .../src/runs/useRunCommandErrors.ts | 15 +++++---- 19 files changed, 43 insertions(+), 88 deletions(-) diff --git a/api-client/src/runs/commands/types.ts b/api-client/src/runs/commands/types.ts index 8c5517a1fe3..215756ede66 100644 --- a/api-client/src/runs/commands/types.ts +++ b/api-client/src/runs/commands/types.ts @@ -1,8 +1,8 @@ import type { RunTimeCommand, RunCommandError } from '@opentrons/shared-data' export interface GetCommandsParams { - cursor: number | null // the index of the command at the center of the window pageLength: number // the number of items to include + cursor?: number } export interface GetRunCommandsParams extends GetCommandsParams { @@ -10,7 +10,7 @@ export interface GetRunCommandsParams extends GetCommandsParams { } export interface GetRunCommandsParamsRequest extends GetCommandsParams { - includeFixitCommands: boolean | null + includeFixitCommands?: boolean } export interface RunCommandErrors { diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderContent/ActionButton/hooks/useActionButtonProperties.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderContent/ActionButton/hooks/useActionButtonProperties.ts index 4c5486eb6e7..f9ea87080ca 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderContent/ActionButton/hooks/useActionButtonProperties.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderContent/ActionButton/hooks/useActionButtonProperties.ts @@ -132,6 +132,7 @@ export function useActionButtonProperties({ handleButtonClick = () => { isResetRunLoadingRef.current = true reset() + runHeaderModalContainerUtils.dropTipUtils.resetTipStatus() trackEvent({ name: ANALYTICS_PROTOCOL_PROCEED_TO_RUN, properties: { sourceLocation: 'RunRecordDetail', robotSerialNumber }, diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts index 48887d4ac17..2e1da26cd88 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts @@ -22,6 +22,7 @@ import type { Run, RunStatus } from '@opentrons/api-client' import type { DropTipWizardFlowsProps, PipetteWithTip, + TipAttachmentStatusResult, } from '/app/organisms/DropTipWizardFlows' import type { UseProtocolDropTipModalResult } from '../modals' import type { PipetteDetails } from '/app/resources/maintenance_runs' @@ -40,6 +41,7 @@ export interface UseRunHeaderDropTipParams { export interface UseRunHeaderDropTipResult { dropTipModalUtils: UseProtocolDropTipModalResult dropTipWizardUtils: RunHeaderDropTipWizProps + resetTipStatus: TipAttachmentStatusResult['resetTipStatus'] } // Handles all the tip related logic during a protocol run on the desktop app. @@ -111,11 +113,9 @@ export function useRunHeaderDropTip({ { includeFixitCommands: false, pageLength: 1, - cursor: null, }, { enabled: isTerminalRunStatus(runStatus) } ) - // Manage tip checking useEffect(() => { // If a user begins a new run without navigating away from the run page, reset tip status. @@ -127,7 +127,9 @@ export function useRunHeaderDropTip({ // have to do it here if done during Error Recovery. else if ( runSummaryNoFixit != null && - !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) + runSummaryNoFixit.length > 0 && + !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) && + isTerminalRunStatus(runStatus) ) { void determineTipStatus() } @@ -150,7 +152,11 @@ export function useRunHeaderDropTip({ } }, [runStatus, isRunCurrent, enteredER, initialPipettesWithTipsCount]) - return { dropTipModalUtils, dropTipWizardUtils: buildDTWizUtils() } + return { + dropTipModalUtils, + dropTipWizardUtils: buildDTWizUtils(), + resetTipStatus, + } } // TODO(jh, 09-12-24): Consolidate this with the same utility that exists elsewhere. diff --git a/app/src/organisms/Desktop/Devices/hooks/useDownloadRunLog.ts b/app/src/organisms/Desktop/Devices/hooks/useDownloadRunLog.ts index 61acbfb12c4..6e07d5bbfab 100644 --- a/app/src/organisms/Desktop/Devices/hooks/useDownloadRunLog.ts +++ b/app/src/organisms/Desktop/Devices/hooks/useDownloadRunLog.ts @@ -27,7 +27,6 @@ export function useDownloadRunLog( if (host == null) return // first getCommands to get total length of commands getCommands(host, runId, { - cursor: null, pageLength: 0, includeFixitCommands: true, }) diff --git a/app/src/organisms/Desktop/RunProgressMeter/__tests__/RunProgressMeter.test.tsx b/app/src/organisms/Desktop/RunProgressMeter/__tests__/RunProgressMeter.test.tsx index 3618b0ce586..928bd2572a9 100644 --- a/app/src/organisms/Desktop/RunProgressMeter/__tests__/RunProgressMeter.test.tsx +++ b/app/src/organisms/Desktop/RunProgressMeter/__tests__/RunProgressMeter.test.tsx @@ -77,7 +77,6 @@ describe('RunProgressMeter', () => { .thenReturn(null) when(useNotifyAllCommandsQuery) .calledWith(NON_DETERMINISTIC_RUN_ID, { - cursor: null, pageLength: 1, }) .thenReturn(mockUseAllCommandsResponseNonDeterministic) diff --git a/app/src/organisms/Desktop/RunProgressMeter/index.tsx b/app/src/organisms/Desktop/RunProgressMeter/index.tsx index 481947e1707..fb158f5d686 100644 --- a/app/src/organisms/Desktop/RunProgressMeter/index.tsx +++ b/app/src/organisms/Desktop/RunProgressMeter/index.tsx @@ -67,7 +67,6 @@ export function RunProgressMeter(props: RunProgressMeterProps): JSX.Element { const runData = runRecord?.data ?? null const { data: mostRecentCommandData } = useNotifyAllCommandsQuery(runId, { - cursor: null, pageLength: 1, }) // This lastRunCommand also includes "fixit" commands. diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts index b710ba5a810..39d4c7dd94f 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts @@ -50,7 +50,6 @@ function getCommandsExecutedDuringRun( runId: string ): Promise { return getCommands(host, runId, { - cursor: null, pageLength: 0, includeFixitCommands: true, }).then(response => { @@ -58,7 +57,6 @@ function getCommandsExecutedDuringRun( return getCommands(host, runId, { cursor: 0, pageLength: totalLength, - includeFixitCommands: null, }).then(response => response.data) }) } diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts index dc3bb2dd2be..cc27994d671 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useCurrentlyRecoveringFrom.test.ts @@ -55,7 +55,7 @@ describe('useCurrentlyRecoveringFrom', () => { expect(vi.mocked(useNotifyAllCommandsQuery)).toHaveBeenCalledWith( MOCK_RUN_ID, - { cursor: null, pageLength: 0 }, + { pageLength: 0 }, { enabled: false, refetchInterval: 5000 } ) expect(vi.mocked(useCommandQuery)).toHaveBeenCalledWith( diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts index 9ea9d468697..38f9e39165a 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useCurrentlyRecoveringFrom.ts @@ -50,7 +50,7 @@ export function useCurrentlyRecoveringFrom( isFetching: isAllCommandsFetching, } = useNotifyAllCommandsQuery( runId, - { cursor: null, pageLength: 0 }, // pageLength 0 because we only care about the links. + { pageLength: 0 }, // pageLength 0 because we only care about the links. { enabled: isRunInRecoveryMode, refetchInterval: ALL_COMMANDS_POLL_MS, diff --git a/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx b/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx index 2866c3f95dd..92c1d1f5733 100644 --- a/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx +++ b/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx @@ -149,7 +149,6 @@ export function CurrentRunningProtocolCommand({ }: CurrentRunningProtocolCommandProps): JSX.Element | null { const { t } = useTranslation('run_details') const { data: mostRecentCommandData } = useNotifyAllCommandsQuery(runId, { - cursor: null, pageLength: 1, }) diff --git a/app/src/pages/ODD/RunSummary/index.tsx b/app/src/pages/ODD/RunSummary/index.tsx index ce7fd3c0ef6..dee57377d79 100644 --- a/app/src/pages/ODD/RunSummary/index.tsx +++ b/app/src/pages/ODD/RunSummary/index.tsx @@ -243,15 +243,14 @@ export function RunSummary(): JSX.Element { const runSummaryNoFixit = useCurrentRunCommands({ includeFixitCommands: false, pageLength: 1, - cursor: null, }) useEffect(() => { if ( isRunCurrent && runSummaryNoFixit != null && + runSummaryNoFixit.length > 0 && !lastRunCommandPromptedErrorRecovery(runSummaryNoFixit) ) { - console.log('HITTING THIS') void determineTipStatus() } }, [runSummaryNoFixit, isRunCurrent]) diff --git a/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx b/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx index f98666d3cbd..33d6f79e9a7 100644 --- a/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx +++ b/app/src/pages/ODD/RunningProtocol/__tests__/RunningProtocol.test.tsx @@ -146,7 +146,6 @@ describe('RunningProtocol', () => { .thenReturn(mockRobotSideAnalysis) when(vi.mocked(useNotifyAllCommandsQuery)) .calledWith(RUN_ID, { - cursor: null, pageLength: 1, }) .thenReturn(mockUseAllCommandsResponseNonDeterministic) diff --git a/app/src/resources/runs/__tests__/useRunTimestamps.test.ts b/app/src/resources/runs/__tests__/useRunTimestamps.test.ts index 1417be1e96d..cbe714472e9 100644 --- a/app/src/resources/runs/__tests__/useRunTimestamps.test.ts +++ b/app/src/resources/runs/__tests__/useRunTimestamps.test.ts @@ -24,7 +24,7 @@ vi.mock('../useNotifyRunQuery') describe('useRunTimestamps hook', () => { beforeEach(() => { when(useRunCommands) - .calledWith(RUN_ID_2, { cursor: null, pageLength: 1 }, expect.any(Object)) + .calledWith(RUN_ID_2, { pageLength: 1 }, expect.any(Object)) .thenReturn([mockCommand.data as any]) }) diff --git a/app/src/resources/runs/useLastRunCommand.ts b/app/src/resources/runs/useLastRunCommand.ts index b061b46c7c8..a8ee6e249d3 100644 --- a/app/src/resources/runs/useLastRunCommand.ts +++ b/app/src/resources/runs/useLastRunCommand.ts @@ -18,7 +18,7 @@ export function useLastRunCommand( const runStatus = useRunStatus(runId) const { data: commandsData } = useNotifyAllCommandsQuery( runId, - { cursor: null, pageLength: 1 }, + { pageLength: 1 }, { ...options, refetchInterval: diff --git a/app/src/resources/runs/useNotifyAllCommandsQuery.ts b/app/src/resources/runs/useNotifyAllCommandsQuery.ts index 12bafb21ef3..e0082d26dd2 100644 --- a/app/src/resources/runs/useNotifyAllCommandsQuery.ts +++ b/app/src/resources/runs/useNotifyAllCommandsQuery.ts @@ -3,23 +3,12 @@ import { useAllCommandsQuery } from '@opentrons/react-api-client' import { useNotifyDataReady } from '../useNotifyDataReady' import type { UseQueryResult } from 'react-query' -import type { - CommandsData, - GetRunCommandsParams, - GetCommandsParams, -} from '@opentrons/api-client' +import type { CommandsData, GetRunCommandsParams } from '@opentrons/api-client' import type { QueryOptionsWithPolling } from '../useNotifyDataReady' -const DEFAULT_PAGE_LENGTH = 30 - -export const DEFAULT_PARAMS: GetCommandsParams = { - cursor: null, - pageLength: DEFAULT_PAGE_LENGTH, -} - export function useNotifyAllCommandsQuery( runId: string | null, - params?: GetRunCommandsParams | null, + params?: GetRunCommandsParams, options: QueryOptionsWithPolling = {} ): UseQueryResult { // Assume the useAllCommandsQuery() response can only change when the command links change. @@ -32,19 +21,8 @@ export function useNotifyAllCommandsQuery( topic: 'robot-server/runs/commands_links', options, }) - const nullCheckedParams = params ?? DEFAULT_PARAMS - - const nullCheckedFixitCommands = params?.includeFixitCommands ?? null - const finalizedNullCheckParams = { - ...nullCheckedParams, - includeFixitCommands: nullCheckedFixitCommands, - } - const httpQueryResult = useAllCommandsQuery( - runId, - finalizedNullCheckParams, - queryOptionsNotify - ) + const httpQueryResult = useAllCommandsQuery(runId, params, queryOptionsNotify) if (shouldRefetch) { void httpQueryResult.refetch() diff --git a/app/src/resources/runs/useRunTimestamps.ts b/app/src/resources/runs/useRunTimestamps.ts index f3ae3f1a803..b19cbe42193 100644 --- a/app/src/resources/runs/useRunTimestamps.ts +++ b/app/src/resources/runs/useRunTimestamps.ts @@ -30,7 +30,7 @@ export function useRunTimestamps(runId: string | null): RunTimestamps { const runCommands = useRunCommands( runId, - { cursor: null, pageLength: 1 }, + { pageLength: 1 }, { enabled: runStatus === RUN_STATUS_SUCCEEDED || diff --git a/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts b/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts index 4f7e2fdc0e0..c441fcc3553 100644 --- a/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts +++ b/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts @@ -14,10 +14,6 @@ import type { } from '@opentrons/api-client' const DEFAULT_PAGE_LENGTH = 30 -export const DEFAULT_PARAMS: GetRunCommandsParams = { - cursor: null, - pageLength: DEFAULT_PAGE_LENGTH, -} export function useAllCommandsAsPreSerializedList( runId: string | null, @@ -25,17 +21,15 @@ export function useAllCommandsAsPreSerializedList( options: UseQueryOptions = {} ): UseQueryResult { const host = useHost() - const nullCheckedParams = params ?? DEFAULT_PARAMS const allOptions: UseQueryOptions = { ...options, enabled: host !== null && runId != null && options.enabled !== false, } - const { cursor, pageLength } = nullCheckedParams - const nullCheckedFixitCommands = params?.includeFixitCommands ?? null - const finalizedNullCheckParams = { - ...nullCheckedParams, - includeFixitCommands: nullCheckedFixitCommands, + const { cursor, pageLength, includeFixitCommands } = params ?? {} + const finalizedParams = { + ...params, + pageLength: params?.pageLength ?? DEFAULT_PAGE_LENGTH, } // map undefined values to null to agree with react query caching @@ -50,13 +44,13 @@ export function useAllCommandsAsPreSerializedList( 'getCommandsAsPreSerializedList', cursor, pageLength, - nullCheckedFixitCommands, + includeFixitCommands, ], () => { return getCommandsAsPreSerializedList( host as HostConfig, runId as string, - finalizedNullCheckParams + finalizedParams ).then(response => { const responseData = response.data return { diff --git a/react-api-client/src/runs/useAllCommandsQuery.ts b/react-api-client/src/runs/useAllCommandsQuery.ts index 427e96b554f..a1fd6047fe0 100644 --- a/react-api-client/src/runs/useAllCommandsQuery.ts +++ b/react-api-client/src/runs/useAllCommandsQuery.ts @@ -9,45 +9,30 @@ import type { } from '@opentrons/api-client' const DEFAULT_PAGE_LENGTH = 30 -export const DEFAULT_PARAMS: GetRunCommandsParamsRequest = { - cursor: null, - pageLength: DEFAULT_PAGE_LENGTH, - includeFixitCommands: null, -} export function useAllCommandsQuery( runId: string | null, - params?: GetRunCommandsParamsRequest | null, + params?: GetRunCommandsParamsRequest, options: UseQueryOptions = {} ): UseQueryResult { const host = useHost() - const nullCheckedParams = params ?? DEFAULT_PARAMS - const allOptions: UseQueryOptions = { ...options, enabled: host !== null && runId != null && options.enabled !== false, } - const { cursor, pageLength } = nullCheckedParams - const nullCheckedFixitCommands = params?.includeFixitCommands ?? null - const finalizedNullCheckParams = { - ...nullCheckedParams, - includeFixitCommands: nullCheckedFixitCommands, + + const { cursor, pageLength, includeFixitCommands } = params ?? {} + const finalizedParams = { + ...params, + pageLength: params?.pageLength ?? DEFAULT_PAGE_LENGTH, } const query = useQuery( - [ - host, - 'runs', - runId, - 'commands', - cursor, - pageLength, - finalizedNullCheckParams, - ], + [host, 'runs', runId, 'commands', cursor, pageLength, includeFixitCommands], () => { return getCommands( host as HostConfig, runId as string, - finalizedNullCheckParams + finalizedParams ).then(response => response.data) }, allOptions diff --git a/react-api-client/src/runs/useRunCommandErrors.ts b/react-api-client/src/runs/useRunCommandErrors.ts index 63dd5875636..ef536d438e0 100644 --- a/react-api-client/src/runs/useRunCommandErrors.ts +++ b/react-api-client/src/runs/useRunCommandErrors.ts @@ -9,10 +9,6 @@ import type { } from '@opentrons/api-client' const DEFAULT_PAGE_LENGTH = 30 -export const DEFAULT_PARAMS: GetCommandsParams = { - cursor: null, - pageLength: DEFAULT_PAGE_LENGTH, -} export function useRunCommandErrors( runId: string | null, @@ -20,20 +16,23 @@ export function useRunCommandErrors( options: UseQueryOptions = {} ): UseQueryResult { const host = useHost() - const nullCheckedParams = params ?? DEFAULT_PARAMS - const allOptions: UseQueryOptions = { ...options, enabled: host !== null && runId != null && options.enabled !== false, } - const { cursor, pageLength } = nullCheckedParams + + const { cursor, pageLength } = params ?? {} + const finalizedParams = { + ...params, + pageLength: params?.pageLength ?? DEFAULT_PAGE_LENGTH, + } const query = useQuery( [host, 'runs', runId, 'commandErrors', cursor, pageLength], () => { return getRunCommandErrors( host as HostConfig, runId as string, - nullCheckedParams + finalizedParams ).then(response => response.data) }, allOptions From 1f8e8d44622bf4ed8b61a1fe666a7f1eedc7973e Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Tue, 19 Nov 2024 18:43:52 -0500 Subject: [PATCH 035/220] chore: fix failing lint on release notes (#16897) # Overview Prettier (or whatever runs in our JS lint action) demands a newline after a markdown header. OK. ## Test Plan and Hands on Testing Pass automated tests plz. ## Changelog `\n` ## Review requests Forgive this shameful and time-wasting PR. ## Risk assessment none --- app-shell/build/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/app-shell/build/release-notes.md b/app-shell/build/release-notes.md index 43d74275cbb..9b9231e9709 100644 --- a/app-shell/build/release-notes.md +++ b/app-shell/build/release-notes.md @@ -31,6 +31,7 @@ Welcome to the v8.2.0 release of the Opentrons App! This release adds support fo - Fixed an app crash when performing certain error recovery steps with Python API version 2.15 protocols. ### Known Issues + - If you attach an Absorbance Plate Reader to _any_ Flex on your local network, you must update all copies of the Opentrons App on the same network to at least v8.1.0. --- From db61a6f142a9d93d93476ad98c26fa19f04a025d Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 20 Nov 2024 09:37:48 -0500 Subject: [PATCH 036/220] fix(protocol-designer): render labware on Thermocycler in deck setup (#16900) --- .../src/pages/CreateNewProtocolWizard/PDListItemCustomize.tsx | 4 +--- .../src/pages/CreateNewProtocolWizard/SelectFixtures.tsx | 1 - .../src/pages/CreateNewProtocolWizard/SelectModules.tsx | 1 - .../src/pages/Designer/DeckSetup/DeckSetupDetails.tsx | 4 +++- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/PDListItemCustomize.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/PDListItemCustomize.tsx index 107449fcbaa..6f0a6c6caa0 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/PDListItemCustomize.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/PDListItemCustomize.tsx @@ -27,7 +27,6 @@ interface PDListItemCustomizeProps { label?: string dropdown?: DropdownMenuProps tag?: TagProps - forceDirection?: boolean } export function PDListItemCustomize({ @@ -38,7 +37,6 @@ export function PDListItemCustomize({ label, dropdown, tag, - forceDirection = false, }: PDListItemCustomizeProps): JSX.Element { const responsiveType = useResponsiveBreakpoints() const isLargeScreen = responsiveType === 'xl' || responsiveType === 'lg' @@ -53,7 +51,7 @@ export function PDListItemCustomize({ )} {dropdown != null && ( - + )} {tag != null && } diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectFixtures.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectFixtures.tsx index b5b86a6fc22..68223dbc183 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectFixtures.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectFixtures.tsx @@ -158,7 +158,6 @@ export function SelectFixtures(props: WizardTileProps): JSX.Element | null { return ( { setValue( diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectModules.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectModules.tsx index 0fdf6511d4b..1b69a3e02db 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectModules.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectModules.tsx @@ -258,7 +258,6 @@ export function SelectModules(props: WizardTileProps): JSX.Element | null { return ( Date: Wed, 20 Nov 2024 09:46:19 -0500 Subject: [PATCH 037/220] fix(shared-data): RABR-669 add biorad pcr plate compatibility with tough_pcr_lid (#16849) # Overview Adds compatibility between `biorad_96_wellplate_200ul_pcr` and `opentrons_tough_pcr_auto_sealing_lid` with stacking z offset ## Test Plan and Hands on Testing - Tested on thermocycler in ABR ## Changelog - added `biorad_96_wellplate_200ul_pcr` stacking offset to shared data file ## Review requests ## Risk assessment --- .../2/opentrons_tough_pcr_auto_sealing_lid/1.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json b/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json index f872649a027..9ae49fd8a5e 100644 --- a/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +++ b/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json @@ -66,6 +66,11 @@ "y": 0, "z": 8.193 }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, "opentrons_flex_deck_riser": { "x": 0, "y": 0, From 71b21ae6702ac2f81931f9b38aafcaa476c4c669 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:11:21 -0500 Subject: [PATCH 038/220] fix(protocol-designer): fix labware tools filtering and expand/collapse behavior (#16889) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR addresses several functional issues with our LabwareTools component, produced when adding labware to the starting deck state. Here, I add filtering to populated expanded categories, allow independent expand/collapse toggling for multiple categories simultaneously, and auto expand/collapse all categories based on the state of the current search term. NOTE: This component is pretty bloated as is, and I think we can address condensing filtering logic and improving performance in a followup. Also, I notice a ton of rerenders after mounting— I will address in a followup. Closes RQA-3590 --- .../ListButtonAccordionContainer.tsx | 2 +- .../localization/en/starting_deck_state.json | 12 +- .../Designer/DeckSetup/DeckSetupTools.tsx | 55 ++++- .../pages/Designer/DeckSetup/LabwareTools.tsx | 206 ++++++++++-------- .../DeckSetup/__tests__/LabwareTools.test.tsx | 42 ++-- .../src/pages/Designer/DeckSetup/constants.ts | 2 + .../src/pages/Designer/DeckSetup/utils.ts | 20 +- 7 files changed, 199 insertions(+), 140 deletions(-) diff --git a/components/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx b/components/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx index 99fde7dd81f..85f76f901b2 100644 --- a/components/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx +++ b/components/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx @@ -16,7 +16,7 @@ export function ListButtonAccordionContainer( const { id, children } = props return ( - + {children} ) diff --git a/protocol-designer/src/assets/localization/en/starting_deck_state.json b/protocol-designer/src/assets/localization/en/starting_deck_state.json index 31be366c9d7..fcf88c2866e 100644 --- a/protocol-designer/src/assets/localization/en/starting_deck_state.json +++ b/protocol-designer/src/assets/localization/en/starting_deck_state.json @@ -1,6 +1,6 @@ { "adapter_compatible_lab": "Adapter compatible labware", - "adapter": "Adapter", + "adapter": "Adapters", "add_fixture": "Add a fixture", "add_hardware_labware": "Add hardware/labware", "add_hw_lw": "Add hardware/labware", @@ -9,7 +9,7 @@ "add_module": "Add a module", "add_rest": "Add labware and liquids to complete deck setup", "alter_pause": "You may also need to alter the time you pause while your magnet is engaged.", - "aluminumBlock": "Aluminum block", + "aluminumBlock": "Aluminum blocks", "clear_labware": "Clear labware", "clear_slot": "Clear slot", "clear": "Clear", @@ -47,16 +47,16 @@ "protocol_starting_deck": "Protocol starting deck", "read_more_gen1_gen2": "Read more about the differences between GEN1 and GEN2 Magnetic Modules", "rename_lab": "Rename labware", - "reservoir": "Reservoir", + "reservoir": "Reservoirs", "shift_click_to_select_all": "Shift + Click to select all", "starting_deck_state": "Starting deck state", "tc_slots_occupied_flex": "The Thermocycler needs slots A1 and B1. Slot A1 is occupied", "tc_slots_occupied_ot2": "The Thermocycler needs slots 7, 8, 10, and 11. One or more of those slots is occupied", - "tipRack": "Tip rack", + "tipRack": "Tip racks", "trash_required": "A trash bin or waste chute is required", - "tubeRack": "Tube rack", + "tubeRack": "Tube racks", "untitled_protocol": "Untitled protocol", "upload_custom_labware": "Upload custom labware", "we_added_hardware": "We've added your deck hardware!", - "wellPlate": "Well plate" + "wellPlate": "Well plates" } diff --git a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx index 4e2db1df4b8..62a5f92d46e 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx @@ -52,11 +52,11 @@ import { getDismissedHints } from '../../../tutorial/selectors' import { createContainerAboveModule } from '../../../step-forms/actions/thunks' import { ConfirmDeleteStagingAreaModal } from '../../../organisms' import { BUTTON_LINK_STYLE } from '../../../atoms' -import { FIXTURES, MOAM_MODELS } from './constants' import { getSlotInformation } from '../utils' -import { getModuleModelsBySlot, getDeckErrors } from './utils' -import { MagnetModuleChangeContent } from './MagnetModuleChangeContent' +import { ALL_ORDERED_CATEGORIES, FIXTURES, MOAM_MODELS } from './constants' import { LabwareTools } from './LabwareTools' +import { MagnetModuleChangeContent } from './MagnetModuleChangeContent' +import { getModuleModelsBySlot, getDeckErrors } from './utils' import type { ModuleModel } from '@opentrons/shared-data' import type { ThunkDispatch } from '../../../types' @@ -71,6 +71,8 @@ interface DeckSetupToolsProps { } | null } +export type CategoryExpand = Record + export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { const { onCloseClick, setHoveredLabware, onDeckProps } = props const { t, i18n } = useTranslation(['starting_deck_state', 'shared']) @@ -117,6 +119,28 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { const [tab, setTab] = useState<'hardware' | 'labware'>( moduleModels?.length === 0 || slot === 'offDeck' ? 'labware' : 'hardware' ) + + const setAllCategories = (state: boolean): Record => + ALL_ORDERED_CATEGORIES.reduce>( + (acc, category) => ({ ...acc, [category]: state }), + {} + ) + const allCategoriesExpanded = setAllCategories(true) + const allCategoriesCollapsed = setAllCategories(false) + const [ + areCategoriesExpanded, + setAreCategoriesExpanded, + ] = useState(allCategoriesCollapsed) + const [searchTerm, setSearchTerm] = useState('') + + useEffect(() => { + if (searchTerm !== '') { + setAreCategoriesExpanded(allCategoriesExpanded) + } else { + setAreCategoriesExpanded(allCategoriesCollapsed) + } + }, [searchTerm]) + const hasMagneticModule = Object.values(deckSetup.modules).some( module => module.type === MAGNETIC_MODULE_TYPE ) @@ -124,6 +148,12 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { Object.values(deckSetup.modules).find(module => module.slot === slot) ?.model === MAGNETIC_MODULE_V1 + const handleCollapseAllCategories = (): void => { + setAreCategoriesExpanded(allCategoriesCollapsed) + } + const handleResetSearchTerm = (): void => { + setSearchTerm('') + } const changeModuleWarning = useBlockingHint({ hintKey: 'change_magnet_module_model', handleCancel: () => { @@ -207,6 +237,11 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { ) } + const handleResetLabwareTools = (): void => { + handleCollapseAllCategories() + handleResetSearchTerm() + } + const handleClear = (): void => { onDeckProps?.setHoveredModule(null) onDeckProps?.setHoveredFixture(null) @@ -242,7 +277,11 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { } } handleResetToolbox() + handleResetLabwareTools() setSelectedHardware(null) + if (selectedHardware != null) { + setTab('hardware') + } } const handleConfirm = (): void => { // clear entities first before recreating them @@ -548,7 +587,15 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { )} ) : ( - + )} diff --git a/protocol-designer/src/pages/Designer/DeckSetup/LabwareTools.tsx b/protocol-designer/src/pages/Designer/DeckSetup/LabwareTools.tsx index dec0d114f83..be4f457429e 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/LabwareTools.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/LabwareTools.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { Fragment, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import reduce from 'lodash/reduce' import styled from 'styled-components' @@ -49,7 +49,11 @@ import { selectLabware, selectNestedLabware, } from '../../../labware-ingred/actions' -import { ORDERED_CATEGORIES } from './constants' +import { + ALL_ORDERED_CATEGORIES, + CUSTOM_CATEGORY, + ORDERED_CATEGORIES, +} from './constants' import { getLabwareIsRecommended, getLabwareCompatibleWithAdapter, @@ -59,8 +63,8 @@ import type { DeckSlotId, LabwareDefinition2 } from '@opentrons/shared-data' import type { ModuleOnDeck } from '../../../step-forms' import type { ThunkDispatch } from '../../../types' import type { LabwareDefByDefURI } from '../../../labware-defs' +import type { CategoryExpand } from './DeckSetupTools' -const CUSTOM_CATEGORY = 'custom' const STANDARD_X_DIMENSION = 127.75 const STANDARD_Y_DIMENSION = 85.48 const PLATE_READER_LOADNAME = @@ -68,10 +72,28 @@ const PLATE_READER_LOADNAME = interface LabwareToolsProps { slot: DeckSlotId setHoveredLabware: (defUri: string | null) => void + searchTerm: string + setSearchTerm: React.Dispatch> + areCategoriesExpanded: CategoryExpand + setAreCategoriesExpanded: React.Dispatch> + handleReset: () => void +} + +interface LabwareInfo { + uri: string + def: LabwareDefinition2 } export function LabwareTools(props: LabwareToolsProps): JSX.Element { - const { slot, setHoveredLabware } = props + const { + slot, + setHoveredLabware, + searchTerm, + setSearchTerm, + areCategoriesExpanded, + setAreCategoriesExpanded, + handleReset, + } = props const { t } = useTranslation(['starting_deck_state', 'shared']) const robotType = useSelector(getRobotType) const dispatch = useDispatch>() @@ -87,10 +109,6 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { selectedModuleModel, selectedNestedLabwareDefUri, } = zoomedInSlotInfo - const [selectedCategory, setSelectedCategory] = React.useState( - null - ) - const [searchTerm, setSearchTerm] = React.useState('') const searchFilter = (termToCheck: string): boolean => termToCheck.toLowerCase().includes(searchTerm.toLowerCase()) @@ -101,7 +119,7 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { const initialModules: ModuleOnDeck[] = Object.keys(modulesById).map( moduleId => modulesById[moduleId] ) - const [filterRecommended, setFilterRecommended] = React.useState( + const [filterRecommended, setFilterRecommended] = useState( moduleType != null ) // for OT-2 usage only due to H-S collisions @@ -110,11 +128,11 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { hardwareModule.type === HEATERSHAKER_MODULE_TYPE && getAreSlotsHorizontallyAdjacent(hardwareModule.slot, slot) ) - const [filterHeight, setFilterHeight] = React.useState( + const [filterHeight, setFilterHeight] = useState( robotType === OT2_ROBOT_TYPE ? isNextToHeaterShaker : false ) - const getLabwareCompatible = React.useCallback( + const getLabwareCompatible = useCallback( (def: LabwareDefinition2) => { // assume that custom (non-standard) labware is (potentially) compatible if (moduleType == null || !getLabwareDefIsStandard(def)) { @@ -125,7 +143,7 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { [moduleType] ) - const getIsLabwareFiltered = React.useCallback( + const getIsLabwareFiltered = useCallback( (labwareDef: LabwareDefinition2) => { const { dimensions, parameters } = labwareDef const { xDimension, yDimension } = dimensions @@ -155,11 +173,8 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { }, [filterRecommended, filterHeight, getLabwareCompatible, moduleType, slot] ) - const customLabwareURIs: string[] = React.useMemo( - () => Object.keys(customLabwareDefs), - [customLabwareDefs] - ) - const labwareByCategory = React.useMemo(() => { + + const labwareByCategory = useMemo(() => { return reduce< LabwareDefByDefURI, { [category: string]: LabwareDefinition2[] } @@ -184,28 +199,51 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { ) }, [permittedTipracks]) - const populatedCategories: { [category: string]: boolean } = React.useMemo( + const filteredLabwareByCategory: Record = useMemo( () => - ORDERED_CATEGORIES.reduce((acc, category) => { + ALL_ORDERED_CATEGORIES.reduce((acc, category) => { + if (category === 'custom') { + return { + ...acc, + [category]: filterRecommended + ? [] + : Object.entries(customLabwareDefs).reduce( + (accInner, [uri, def]) => { + return searchFilter(def.metadata.displayName) + ? [...accInner, { uri, def }] + : accInner + }, + [] + ), + } + } const isDeckLocationCategory = slot === 'offDeck' ? category !== 'adapter' : true - return category in labwareByCategory && - isDeckLocationCategory && - labwareByCategory[category].some(lw => - searchFilter(lw.metadata.displayName) - ) - ? { - ...acc, - [category]: labwareByCategory[category].some( - def => !getIsLabwareFiltered(def) - ), - } - : acc + if (!(category in labwareByCategory) || !isDeckLocationCategory) { + return { ...acc, [category]: [] } + } + return { + ...acc, + [category]: labwareByCategory[category].reduce( + (accInner, def) => { + return searchFilter(def.metadata.displayName) && + !getIsLabwareFiltered(def) + ? [...accInner, { def, uri: getLabwareDefURI(def) }] + : accInner + }, + [] + ), + } }, {}), [labwareByCategory, getIsLabwareFiltered, searchTerm] ) - const handleCategoryClick = (category: string): void => { - setSelectedCategory(selectedCategory === category ? null : category) + + const handleCategoryClick = (category: string, expand?: boolean): void => { + const updatedExpandState = { + ...areCategoriesExpanded, + [category]: expand ?? !areCategoriesExpanded[category], + } + setAreCategoriesExpanded(updatedExpandState) } return ( @@ -223,9 +261,7 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { size="medium" leftIcon="search" showDeleteIcon - onDelete={() => { - setSearchTerm('') - }} + onDelete={handleReset} /> {moduleType != null || (isNextToHeaterShaker && robotType === OT2_ROBOT_TYPE) ? ( @@ -253,7 +289,7 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { gridGap={SPACING.spacing4} paddingTop={SPACING.spacing8} > - {customLabwareURIs.length === 0 ? null : ( + {filteredLabwareByCategory[CUSTOM_CATEGORY].length > 0 ? ( - {customLabwareURIs.map((labwareURI, index) => ( - { - setHoveredLabware(null) - }} - setHovered={() => { - setHoveredLabware(labwareURI) - }} - buttonValue={labwareURI} - onChange={e => { - e.stopPropagation() - dispatch(selectLabware({ labwareDefUri: labwareURI })) - }} - isSelected={labwareURI === selectedLabwareDefUri} - /> - ))} + {filteredLabwareByCategory[CUSTOM_CATEGORY].map( + ({ uri }, index) => ( + { + setHoveredLabware(null) + }} + setHovered={() => { + setHoveredLabware(uri) + }} + buttonValue={uri} + onChange={e => { + e.stopPropagation() + dispatch(selectLabware({ labwareDefUri: uri })) + }} + isSelected={uri === selectedLabwareDefUri} + /> + ) + )} - )} + ) : null} {ORDERED_CATEGORIES.map(category => { - const isPopulated = populatedCategories[category] - if (isPopulated) { + if (filteredLabwareByCategory[category].length > 0) { return ( - {labwareByCategory[category]?.map((labwareDef, index) => { - const isFiltered = getIsLabwareFiltered(labwareDef) - const labwareURI = getLabwareDefURI(labwareDef) - const loadName = labwareDef.parameters.loadName - const isMatch = searchFilter( - labwareDef.metadata.displayName - ) - if (!isFiltered && isMatch) { - return ( - + {filteredLabwareByCategory[category]?.map( + ({ def, uri }, index) => { + const loadName = def.parameters.loadName + + return searchFilter(def.metadata.displayName) && + !getIsLabwareFiltered(def) ? ( + { setHoveredLabware(null) }} setHovered={() => { - setHoveredLabware(labwareURI) + setHoveredLabware(uri) }} id={`${index}_${category}_${loadName}`} - buttonText={labwareDef.metadata.displayName} - buttonValue={labwareURI} + buttonText={def.metadata.displayName} + buttonValue={uri} onChange={e => { e.stopPropagation() dispatch( selectLabware({ labwareDefUri: - labwareURI === selectedLabwareDefUri + uri === selectedLabwareDefUri ? null - : labwareURI, + : uri, }) ) // reset the nested labware def uri in case it is not compatible @@ -346,10 +376,10 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { }) ) }} - isSelected={labwareURI === selectedLabwareDefUri} + isSelected={uri === selectedLabwareDefUri} /> - {labwareURI === selectedLabwareDefUri && + {uri === selectedLabwareDefUri && getLabwareCompatibleWithAdapter(loadName) ?.length > 0 && ( {has96Channel && loadName === ADAPTER_96_CHANNEL @@ -440,10 +468,10 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { )} - - ) + + ) : null } - })} + )} @@ -464,8 +492,8 @@ export function LabwareTools(props: LabwareToolsProps): JSX.Element { data-testid="customLabwareInput" type="file" onChange={e => { - setSelectedCategory(CUSTOM_CATEGORY) dispatch(createCustomLabwareDef(e)) + handleCategoryClick(CUSTOM_CATEGORY, true) }} /> diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx index b4d444a1cf3..479724f3527 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/LabwareTools.test.tsx @@ -20,10 +20,6 @@ import { selectors } from '../../../../labware-ingred/selectors' import { createCustomLabwareDef } from '../../../../labware-defs/actions' import { getCustomLabwareDefsByURI } from '../../../../labware-defs/selectors' import { getRobotType } from '../../../../file-data/selectors' -import { - selectLabware, - selectNestedLabware, -} from '../../../../labware-ingred/actions' import { LabwareTools } from '../LabwareTools' import type { LabwareDefinition2, PipetteV2Specs } from '@opentrons/shared-data' @@ -48,6 +44,11 @@ describe('LabwareTools', () => { props = { slot: 'D3', setHoveredLabware: vi.fn(), + searchTerm: '', + setSearchTerm: vi.fn(), + areCategoriesExpanded: {}, + setAreCategoriesExpanded: vi.fn(), + handleReset: vi.fn(), } vi.mocked(getCustomLabwareDefsByURI).mockReturnValue({}) vi.mocked(getRobotType).mockReturnValue(FLEX_ROBOT_TYPE) @@ -80,18 +81,14 @@ describe('LabwareTools', () => { it('renders an empty slot with all the labware options', () => { render(props) screen.getByText('Add labware') - screen.getByText('Tube rack') - screen.getByText('Well plate') - screen.getByText('Reservoir') - screen.getByText('Aluminum block') - screen.getByText('Adapter') + screen.getByText('Tube racks') + screen.getByText('Well plates') + screen.getByText('Reservoirs') + screen.getByText('Aluminum blocks') + screen.getByText('Adapters') // click and expand well plate accordion fireEvent.click(screen.getAllByTestId('ListButton_noActive')[1]) - fireEvent.click( - screen.getByRole('label', { name: 'Corning 384 Well Plate' }) - ) - // set labware - expect(vi.mocked(selectLabware)).toHaveBeenCalled() + expect(props.setAreCategoriesExpanded).toBeCalled() }) it('renders deck slot and selects an adapter and labware', () => { vi.mocked(selectors.getZoomedInSlotInfo).mockReturnValue({ @@ -102,23 +99,10 @@ describe('LabwareTools', () => { selectedSlot: { slot: 'D3', cutout: 'cutoutD3' }, }) render(props) - screen.getByText('Adapter') + screen.getByText('Adapters') fireEvent.click(screen.getAllByTestId('ListButton_noActive')[4]) // set adapter - fireEvent.click( - screen.getByRole('label', { - name: 'Fixture Opentrons Universal Flat Heater-Shaker Adapter', - }) - ) - // set labware - screen.getByText('Adapter compatible labware') - screen.getByText('Fixture Corning 96 Well Plate 360 µL Flat') - fireEvent.click( - screen.getByRole('label', { - name: 'Fixture Corning 96 Well Plate 360 µL Flat', - }) - ) - expect(vi.mocked(selectNestedLabware)).toHaveBeenCalled() + expect(props.setAreCategoriesExpanded).toBeCalled() }) it('renders the custom labware flow', () => { diff --git a/protocol-designer/src/pages/Designer/DeckSetup/constants.ts b/protocol-designer/src/pages/Designer/DeckSetup/constants.ts index 53571367f8b..e1acb64424d 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/constants.ts +++ b/protocol-designer/src/pages/Designer/DeckSetup/constants.ts @@ -56,6 +56,8 @@ export const ORDERED_CATEGORIES: string[] = [ 'aluminumBlock', 'adapter', ] +export const CUSTOM_CATEGORY = 'custom' +export const ALL_ORDERED_CATEGORIES = [CUSTOM_CATEGORY, ...ORDERED_CATEGORIES] export const RECOMMENDED_LABWARE_BY_MODULE: { [K in ModuleType]: string[] } = { [TEMPERATURE_MODULE_TYPE]: [ diff --git a/protocol-designer/src/pages/Designer/DeckSetup/utils.ts b/protocol-designer/src/pages/Designer/DeckSetup/utils.ts index 524a19dfc1c..7a1c7c09be3 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/utils.ts +++ b/protocol-designer/src/pages/Designer/DeckSetup/utils.ts @@ -118,18 +118,16 @@ export const getLabwareIsRecommended = ( ): boolean => { // special-casing the thermocycler module V2 recommended labware since the thermocyclerModuleTypes // have different recommended labware - const moduleType = moduleModel != null ? getModuleType(moduleModel) : null - if (moduleModel === THERMOCYCLER_MODULE_V2) { - return ( - def.parameters.loadName === 'opentrons_96_wellplate_200ul_pcr_full_skirt' - ) - } else { - return moduleType != null - ? RECOMMENDED_LABWARE_BY_MODULE[moduleType].includes( - def.parameters.loadName - ) - : false + if (moduleModel == null) { + // permissive early exit if no module passed + return true } + const moduleType = getModuleType(moduleModel) + return moduleModel === THERMOCYCLER_MODULE_V2 + ? def.parameters.loadName === 'opentrons_96_wellplate_200ul_pcr_full_skirt' + : RECOMMENDED_LABWARE_BY_MODULE[moduleType].includes( + def.parameters.loadName + ) } export const getLabwareCompatibleWithAdapter = ( From bb0cf23186e33c4d75f006764aec635614ad6885 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 20 Nov 2024 10:51:45 -0500 Subject: [PATCH 039/220] fix(shared-data): Add biorad pcr plate compatibility with tough_pcr_lid_auto_seal_lid to release (#16903) Covers RABR-669 Adds compatibility between `biorad_96_wellplate_200ul_pcr` and `opentrons_tough_pcr_auto_sealing_lid` with stacking z offset --- .../2/opentrons_tough_pcr_auto_sealing_lid/1.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json b/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json index b08bb84409f..e86f24c6015 100644 --- a/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json +++ b/shared-data/labware/definitions/2/opentrons_tough_pcr_auto_sealing_lid/1.json @@ -66,6 +66,11 @@ "y": 0, "z": 8.193 }, + "biorad_96_wellplate_200ul_pcr": { + "x": 0, + "y": 0, + "z": 8.08 + }, "opentrons_flex_deck_riser": { "x": 0, "y": 0, From 54a40176935133efdf94119153d46659563e8671 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Wed, 20 Nov 2024 11:01:34 -0500 Subject: [PATCH 040/220] feat(shared-data): add peak shared data definition (#16876) # Overview This new pipette type features a different threaded rod drive nut and some other mechanical changes that increase the maximum speed that the plunger can move so that this pipette can be used in emulsification applications. ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- shared-data/command/schemas/11.json | 1 + .../eight_channel_emulsify/p1000/3_0.json | 320 ++++++++++++++++++ .../eight_channel_emulsify/p1000/3_0.json | 55 +++ .../p1000/placeholder.gltf | 0 .../p1000/default/3_0.json | 236 +++++++++++++ .../pipette/load_data.py | 2 + .../pipette/pipette_load_name_conversions.py | 12 +- .../scripts/update_configuration_files.py | 1 + .../opentrons_shared_data/pipette/types.py | 2 + .../pipette/test_max_flow_rates_per_volume.py | 1 + .../tests/pipette/test_validate_schema.py | 3 + 11 files changed, 630 insertions(+), 3 deletions(-) create mode 100644 shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json create mode 100644 shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json create mode 100644 shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf create mode 100644 shared-data/pipette/definitions/2/liquid/eight_channel_emulsify/p1000/default/3_0.json diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 27de3c75b54..37e59f9ef54 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -2690,6 +2690,7 @@ "p1000_single_gen2", "p1000_single_flex", "p1000_multi_flex", + "p1000_multi_emulsify", "p1000_96", "p200_96" ], diff --git a/shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json new file mode 100644 index 00000000000..0d68704a00a --- /dev/null +++ b/shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json @@ -0,0 +1,320 @@ +{ + "$otSharedSchema": "#/pipette/schemas/2/pipettePropertiesSchema.json", + "displayName": "FLEX 8-Channel Emulsifying 1000 μL", + "model": "p1000", + "displayCategory": "FLEX", + "validNozzleMaps": { + "maps": { + "SingleA1": ["A1"], + "SingleH1": ["H1"], + "H1toG1": ["G1", "H1"], + "H1toF1": ["F1", "G1", "H1"], + "H1toE1": ["E1", "F1", "G1", "H1"], + "H1toD1": ["D1", "E1", "F1", "G1", "H1"], + "H1toC1": ["C1", "D1", "E1", "F1", "G1", "H1"], + "H1toB1": ["B1", "C1", "D1", "E1", "F1", "G1", "H1"], + "Full": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + }, + "pickUpTipConfigurations": { + "pressFit": { + "presses": 1, + "increment": 0.0, + "configurationsByNozzleMap": { + "SingleA1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.15, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 10.08, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.08, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.26, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.08, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.26 + } + } + } + }, + "SingleH1": { + "default": { + "speed": 10.0, + "distance": 11.0, + "current": 0.15, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.52, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.71, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.52, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.2, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.71, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.52, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.2 + } + } + } + }, + "H1toG1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.24, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.52, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.24, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.73, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.52, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.24, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.73 + } + } + } + }, + "H1toF1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.2, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.2, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.8, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.8 + } + } + } + }, + "H1toE1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.35, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.2, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.8, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.8 + } + } + } + }, + "H1toD1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.4, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.2, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.8, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.8 + } + } + } + }, + "H1toC1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.4, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.2, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.8, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.3, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.2, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.8 + } + } + } + }, + "H1toB1": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.5, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 9.13, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.23, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.13, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.9, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.23, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.13, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.9 + } + } + } + }, + "Full": { + "default": { + "speed": 10.0, + "distance": 13.0, + "current": 0.55, + "tipOverlaps": { + "v0": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 10.17, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 10.1, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 10.05, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 10.17 + }, + "v1": { + "default": 10.5, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.42, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.27, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.67, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.42, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.27, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.67 + }, + "v3": { + "default": 9.28, + "opentrons/opentrons_flex_96_tiprack_200ul/1": 9.37, + "opentrons/opentrons_flex_96_tiprack_50ul/1": 9.28, + "opentrons/opentrons_flex_96_tiprack_1000ul/1": 9.67, + "opentrons/opentrons_flex_96_filtertiprack_200ul/1": 9.37, + "opentrons/opentrons_flex_96_filtertiprack_50ul/1": 9.28, + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1": 9.67 + } + } + } + } + } + } + }, + "dropTipConfigurations": { + "plungerEject": { + "current": 1.0, + "speed": 10 + } + }, + "plungerMotorConfigurations": { + "idle": 0.3, + "run": 1.0 + }, + "plungerPositionsConfigurations": { + "default": { + "top": 0.0, + "bottom": 71.5, + "blowout": 76.5, + "drop": 91.5 + } + }, + "availableSensors": { + "sensors": ["capacitive", "environment"], + "capacitive": { + "count": 2 + }, + "environment": { + "count": 1 + } + }, + "partialTipConfigurations": { + "partialTipSupported": true, + "availableConfigurations": [1, 2, 3, 4, 5, 6, 7, 8] + }, + "backCompatNames": [], + "channels": 8, + "shaftDiameter": 4.5, + "shaftULperMM": 15.904, + "backlashDistance": 0.1, + "quirks": [], + "plungerHomingConfigurations": { + "current": 1.0, + "speed": 30 + } +} diff --git a/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json b/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json new file mode 100644 index 00000000000..d464cd5b9fe --- /dev/null +++ b/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json @@ -0,0 +1,55 @@ +{ + "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", + "pathTo3D": "pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf", + "nozzleOffset": [-8.0, -16.0, -259.15], + "pipetteBoundingBoxOffsets": { + "backLeftCorner": [-38.5, 0.0, -259.15], + "frontRightCorner": [11.5, -95.0, -259.15] + }, + "orderedRows": [ + { + "key": "A", + "orderedNozzles": ["A1"] + }, + { + "key": "B", + "orderedNozzles": ["B1"] + }, + { "key": "C", "orderedNozzles": ["C1"] }, + { "key": "D", "orderedNozzles": ["D1"] }, + { "key": "E", "orderedNozzles": ["E1"] }, + { "key": "F", "orderedNozzles": ["F1"] }, + { "key": "G", "orderedNozzles": ["G1"] }, + { "key": "H", "orderedNozzles": ["H1"] } + ], + "orderedColumns": [ + { + "key": "1", + "orderedNozzles": ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"] + } + ], + "nozzleMap": { + "A1": [-8.0, -16.0, -259.15], + "B1": [-8.0, -25.0, -259.15], + "C1": [-8.0, -34.0, -259.15], + "D1": [-8.0, -43.0, -259.15], + "E1": [-8.0, -52.0, -259.15], + "F1": [-8.0, -61.0, -259.15], + "G1": [-8.0, -70.0, -259.15], + "H1": [-8.0, -79.0, -259.15] + }, + "lldSettings": { + "t50": { + "minHeight": 1.0, + "minVolume": 0 + }, + "t200": { + "minHeight": 1.0, + "minVolume": 0 + }, + "t1000": { + "minHeight": 1.5, + "minVolume": 0 + } + } +} diff --git a/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf b/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf new file mode 100644 index 00000000000..e69de29bb2d diff --git a/shared-data/pipette/definitions/2/liquid/eight_channel_emulsify/p1000/default/3_0.json b/shared-data/pipette/definitions/2/liquid/eight_channel_emulsify/p1000/default/3_0.json new file mode 100644 index 00000000000..95292a3f98b --- /dev/null +++ b/shared-data/pipette/definitions/2/liquid/eight_channel_emulsify/p1000/default/3_0.json @@ -0,0 +1,236 @@ +{ + "$otSharedSchema": "#/pipette/schemas/2/pipetteLiquidPropertiesSchema.json", + "supportedTips": { + "t50": { + "uiMaxFlowRate": 802.9, + "defaultAspirateFlowRate": { + "default": 478, + "valuesByApiLevel": { "2.14": 478 } + }, + "defaultDispenseFlowRate": { + "default": 478, + "valuesByApiLevel": { "2.14": 478 } + }, + "defaultBlowOutFlowRate": { + "default": 478, + "valuesByApiLevel": { "2.14": 478 } + }, + "defaultFlowAcceleration": 24000.0, + "defaultTipLength": 57.9, + "defaultReturnTipHeight": 0.71, + "aspirate": { + "default": { + "1": [ + [0.12, -57.973785, 8.495981], + [0.11, 40.31047, -3.298129], + [0.09, 19.330223, -0.990302], + [0.375, 6.200306, 0.19139], + [1.17, 4.795927, 0.718032], + [1.92, 2.746428, 3.115947], + [2.145, 1.592373, 5.331732], + [2.4, 1.336497, 5.880586], + [2.66, 1.043996, 6.582588], + [2.84, 0.280189, 8.614315], + [2.985, -0.698973, 11.395134], + [3.085, -5.627462, 26.106674], + [3.625, 1.899561, 2.885808], + [4.43, 1.977851, 2.602006], + [5.155, 0.596916, 8.71955], + [6.71, 0.366092, 9.909446], + [8.62, 0.233878, 10.796602], + [11.015, 0.158281, 11.448248], + [13.97, 0.101002, 12.079177], + [17.545, 0.047056, 12.832813], + [22.075, 0.043416, 12.896662], + [27.955, 0.049456, 12.763333], + [34.695, 0.00096, 14.119053], + [43.535, 0.018347, 13.515795], + [54.08, 0.001949, 14.229706] + ] + } + }, + "dispense": { + "default": { + "1": [ + [0.12, -57.973785, 8.495981], + [0.11, 40.31047, -3.298129], + [0.09, 19.330223, -0.990302], + [0.375, 6.200306, 0.19139], + [1.17, 4.795927, 0.718032], + [1.92, 2.746428, 3.115947], + [2.145, 1.592373, 5.331732], + [2.4, 1.336497, 5.880586], + [2.66, 1.043996, 6.582588], + [2.84, 0.280189, 8.614315], + [2.985, -0.698973, 11.395134], + [3.085, -5.627462, 26.106674], + [3.625, 1.899561, 2.885808], + [4.43, 1.977851, 2.602006], + [5.155, 0.596916, 8.71955], + [6.71, 0.366092, 9.909446], + [8.62, 0.233878, 10.796602], + [11.015, 0.158281, 11.448248], + [13.97, 0.101002, 12.079177], + [17.545, 0.047056, 12.832813], + [22.075, 0.043416, 12.896662], + [27.955, 0.049456, 12.763333], + [34.695, 0.00096, 14.119053], + [43.535, 0.018347, 13.515795], + [54.08, 0.001949, 14.229706] + ] + } + }, + "defaultPushOutVolume": 7 + }, + "t200": { + "uiMaxFlowRate": 847.9, + "defaultAspirateFlowRate": { + "default": 716, + "valuesByApiLevel": { "2.14": 716 } + }, + "defaultDispenseFlowRate": { + "default": 716, + "valuesByApiLevel": { "2.14": 716 } + }, + "defaultBlowOutFlowRate": { + "default": 716, + "valuesByApiLevel": { "2.14": 716 } + }, + "defaultFlowAcceleration": 24000.0, + "defaultTipLength": 58.35, + "defaultReturnTipHeight": 0.71, + "aspirate": { + "default": { + "1": [ + [0.28375, -141.180627, 42.499381], + [0.26125, 27.065799, -5.240543], + [0.715, 4.916546, 0.54595], + [1.685, 3.844391, 1.31254], + [2.6025, 2.148973, 4.169319], + [3.75875, 1.461751, 5.957816], + [4.9975, 0.733738, 8.694235], + [6.41375, 0.377599, 10.474036], + [8.1225, 0.214926, 11.517382], + [10.2425, 0.152451, 12.024835], + [12.80125, 0.081051, 12.75615], + [15.9875, 0.062849, 12.989161], + [19.9625, 0.051585, 13.169235], + [24.83625, 0.030593, 13.588301], + [30.89125, 0.024593, 13.737307], + [38.42625, 0.020128, 13.875257], + [47.71875, 0.014091, 14.107204], + [59.28375, 0.011625, 14.224918], + [73.41375, 0.00635, 14.537608], + [90.84375, 0.004458, 14.676515], + [112.32, 0.003084, 14.801312], + [138.7675, 0.002045, 14.917998], + [171.29875, 0.001319, 15.018758], + [211.27375, 0.000719, 15.121662] + ] + } + }, + "dispense": { + "default": { + "1": [ + [0.28375, -141.180627, 42.499381], + [0.26125, 27.065799, -5.240543], + [0.715, 4.916546, 0.54595], + [1.685, 3.844391, 1.31254], + [2.6025, 2.148973, 4.169319], + [3.75875, 1.461751, 5.957816], + [4.9975, 0.733738, 8.694235], + [6.41375, 0.377599, 10.474036], + [8.1225, 0.214926, 11.517382], + [10.2425, 0.152451, 12.024835], + [12.80125, 0.081051, 12.75615], + [15.9875, 0.062849, 12.989161], + [19.9625, 0.051585, 13.169235], + [24.83625, 0.030593, 13.588301], + [30.89125, 0.024593, 13.737307], + [38.42625, 0.020128, 13.875257], + [47.71875, 0.014091, 14.107204], + [59.28375, 0.011625, 14.224918], + [73.41375, 0.00635, 14.537608], + [90.84375, 0.004458, 14.676515], + [112.32, 0.003084, 14.801312], + [138.7675, 0.002045, 14.917998], + [171.29875, 0.001319, 15.018758], + [211.27375, 0.000719, 15.121662] + ] + } + }, + "defaultPushOutVolume": 5 + }, + "t1000": { + "uiMaxFlowRate": 744.6, + "defaultAspirateFlowRate": { + "default": 716, + "valuesByApiLevel": { "2.14": 716 } + }, + "defaultDispenseFlowRate": { + "default": 716, + "valuesByApiLevel": { "2.14": 716 } + }, + "defaultBlowOutFlowRate": { + "default": 716, + "valuesByApiLevel": { "2.14": 716 } + }, + "defaultFlowAcceleration": 24000.0, + "defaultTipLength": 95.6, + "defaultReturnTipHeight": 0.82, + "aspirate": { + "default": { + "1": [ + [2.1443, 1.9858, 4.2677], + [3.0286, 1.2526, 5.84], + [4.9557, 0.6268, 7.7351], + [9.7943, 0.2745, 9.4811], + [12.1514, 0.1715, 10.4901], + [14.9414, 0.0897, 11.4833], + [51.46, 0.0424, 12.1913], + [92.68, 0.0095, 13.881], + [112.4886, 0.0049, 14.3053], + [243.5986, 0.0028, 14.5507], + [356.5686, 0.0009, 15.0019], + [430.99, 0.0005, 15.1492], + [628.7886, 0.0003, 15.2496], + [1001.15, 0.0001, 15.3472], + [1106.0857, 0.0001, 15.3551] + ] + } + }, + "dispense": { + "default": { + "1": [ + [2.1443, 1.9858, 4.2677], + [3.0286, 1.2526, 5.84], + [4.9557, 0.6268, 7.7351], + [9.7943, 0.2745, 9.4811], + [12.1514, 0.1715, 10.4901], + [14.9414, 0.0897, 11.4833], + [51.46, 0.0424, 12.1913], + [92.68, 0.0095, 13.881], + [112.4886, 0.0049, 14.3053], + [243.5986, 0.0028, 14.5507], + [356.5686, 0.0009, 15.0019], + [430.99, 0.0005, 15.1492], + [628.7886, 0.0003, 15.2496], + [1001.15, 0.0001, 15.3472], + [1106.0857, 0.0001, 15.3551] + ] + } + }, + "defaultPushOutVolume": 20 + } + }, + "maxVolume": 1000, + "minVolume": 5, + "defaultTipracks": [ + "opentrons/opentrons_flex_96_tiprack_1000ul/1", + "opentrons/opentrons_flex_96_tiprack_200ul/1", + "opentrons/opentrons_flex_96_tiprack_50ul/1", + "opentrons/opentrons_flex_96_filtertiprack_1000ul/1", + "opentrons/opentrons_flex_96_filtertiprack_200ul/1", + "opentrons/opentrons_flex_96_filtertiprack_50ul/1" + ] +} diff --git a/shared-data/python/opentrons_shared_data/pipette/load_data.py b/shared-data/python/opentrons_shared_data/pipette/load_data.py index f8c361cca0c..fb121725c37 100644 --- a/shared-data/python/opentrons_shared_data/pipette/load_data.py +++ b/shared-data/python/opentrons_shared_data/pipette/load_data.py @@ -114,11 +114,13 @@ def load_serial_lookup_table() -> Dict[str, str]: "eight_channel": "M", "single_channel": "S", "ninety_six_channel": "H", + "eight_channel_emulsify": "P", } _channel_model_str = { "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", + "eight_channel_emulsify": "multi_emulsify", } _model_shorthand = {"p1000": "p1k", "p300": "p3h"} for channel_dir in _dirs_in(config_path): diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py b/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py index 244016d5943..f5113cff9e7 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py @@ -80,7 +80,7 @@ def channels_from_string(channels: str) -> PipetteChannelType: """ if channels == "96": return PipetteChannelType.NINETY_SIX_CHANNEL - elif channels == "multi": + elif "multi" in channels: return PipetteChannelType.EIGHT_CHANNEL elif channels == "single": return PipetteChannelType.SINGLE_CHANNEL @@ -287,8 +287,14 @@ def convert_pipette_model( # We need to figure out how to default the pipette model as well # rather than returning a p1000 if model and not provided_version: - pipette_type, parsed_channels, parsed_version = model.split("_") - channels = channels_from_string(parsed_channels) + # pipette_type, parsed_channels, parsed_version = model.split("_") + exploded = model.split("_") + if len(exploded) == 3: + (pipette_type, parsed_channels, parsed_version) = exploded + channels = channels_from_string(parsed_channels) + else: + pipette_type, parsed_channels, parsed_oem, parsed_version = exploded + channels = channels_from_string(f"{parsed_channels}_{parsed_oem}") version = version_from_string(parsed_version) elif model and provided_version: pipette_type, parsed_channels = model.split("_") diff --git a/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py b/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py index e787ac2a1cf..c1e03d5ab9d 100644 --- a/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py +++ b/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py @@ -355,6 +355,7 @@ def _update_all_models(configuration_to_update: List[str]) -> None: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", + "eight_channel_emulsify": "multi_emulsify", } for channel_dir in os.listdir(paths_to_validate): diff --git a/shared-data/python/opentrons_shared_data/pipette/types.py b/shared-data/python/opentrons_shared_data/pipette/types.py index 85ad1a81f01..33164904d97 100644 --- a/shared-data/python/opentrons_shared_data/pipette/types.py +++ b/shared-data/python/opentrons_shared_data/pipette/types.py @@ -216,6 +216,7 @@ def dict_for_encode(self) -> bool: "p1000_single_gen2", "p1000_single_flex", "p1000_multi_flex", + "p1000_multi_emulsify", "p1000_96", "p200_96", ] @@ -242,6 +243,7 @@ class PipetteNameType(str, enum.Enum): P1000_SINGLE_GEN2 = "p1000_single_gen2" P1000_SINGLE_FLEX = "p1000_single_flex" P1000_MULTI_FLEX = "p1000_multi_flex" + P1000_MULTI_EMULSIFY = "p1000_multi_emulsify" P1000_96 = "p1000_96" P200_96 = "p200_96" diff --git a/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py b/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py index b64f0a0b5c4..c5e9cc49604 100644 --- a/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py +++ b/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py @@ -49,6 +49,7 @@ def get_all_pipette_models() -> Iterator[PipetteModel]: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", + "eight_channel_emulsify": "multi_emulsify", } assert os.listdir(paths_to_validate), "You have a path wrong" for channel_dir in os.listdir(paths_to_validate): diff --git a/shared-data/python/tests/pipette/test_validate_schema.py b/shared-data/python/tests/pipette/test_validate_schema.py index 0b703504957..5d3080dbd7a 100644 --- a/shared-data/python/tests/pipette/test_validate_schema.py +++ b/shared-data/python/tests/pipette/test_validate_schema.py @@ -22,6 +22,7 @@ def iterate_models() -> Iterator[PipetteModel]: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", + "eight_channel_emulsify": "multi_emulsify", } defn_root = get_shared_data_root() / "pipette" / "definitions" / "2" / "liquid" assert os.listdir(defn_root), "A path is wrong" @@ -63,6 +64,7 @@ def test_pick_up_configs_configuration_by_nozzle_map_keys() -> None: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", + "eight_channel_emulsify": "multi_emulsify", } assert os.listdir(paths_to_validate), "You have a path wrong" for channel_dir in os.listdir(paths_to_validate): @@ -105,6 +107,7 @@ def test_pick_up_configs_configuration_ordered_from_smallest_to_largest() -> Non "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", + "eight_channel_emulsify": "multi_emulsify", } assert os.listdir(paths_to_validate), "You have a path wrong" for channel_dir in os.listdir(paths_to_validate): From 24dc790d6485cbf799abaacaa6ad96a709e0fa26 Mon Sep 17 00:00:00 2001 From: syao1226 <146495172+syao1226@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:35:39 -0500 Subject: [PATCH 041/220] fix(protocol-designer): switching pipettes when source and/or dest labware fields are unselected (#16894) fix RQA-3622 # Overview updating the `updatePatchOnPipetteChannelChange` in `dependentFieldsUpdateMoveLiquid` to allow switching from a multi-channel to a single channel pipette when source and destination labwares field are empty. ## Test Plan and Hands on Testing - add a transfer step with no labware on deck - switch pipettes correctly responds when labware fields are empty. ## Changelog ## Review requests ## Risk assessment --------- Co-authored-by: shiyaochen --- .../dependentFieldsUpdateMoveLiquid.ts | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts index c473af451ea..d7a35e4ec59 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts @@ -543,29 +543,30 @@ const updatePatchOnPipetteChannelChange = ( const sourceLabwareId: string = appliedPatch.aspirate_labware as string const destLabwareId: string = appliedPatch.dispense_labware as string const sourceLabware = labwareEntities[sourceLabwareId] - const sourceLabwareDef = sourceLabware.def const destLabware = labwareEntities[destLabwareId] - update = { - aspirate_wells: getAllWellsFromPrimaryWells( - appliedPatch.aspirate_wells as string[], - sourceLabwareDef, - channels as 8 | 96 - ), - dispense_wells: - destLabwareId.includes('trashBin') || - destLabwareId.includes('wasteChute') - ? getDefaultWells({ - labwareId: destLabwareId, - pipetteId, - labwareEntities, - pipetteEntities, - }) - : getAllWellsFromPrimaryWells( - appliedPatch.dispense_wells as string[], - destLabware.def, - channels as 8 | 96 - ), + if (sourceLabwareId != null && destLabwareId != null) { + update = { + aspirate_wells: getAllWellsFromPrimaryWells( + appliedPatch.aspirate_wells as string[], + sourceLabware.def, + channels as 8 | 96 + ), + dispense_wells: + destLabwareId.includes('trashBin') || + destLabwareId.includes('wasteChute') + ? getDefaultWells({ + labwareId: destLabwareId, + pipetteId, + labwareEntities, + pipetteEntities, + }) + : getAllWellsFromPrimaryWells( + appliedPatch.dispense_wells as string[], + destLabware.def, + channels as 8 | 96 + ), + } } } From b365e2742f2522191d7b48b820d501e9891e7478 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:53:53 -0500 Subject: [PATCH 042/220] fix(protocol-designer): add scroll to top functionality between parts (#16906) Scroll to top when continuing on a multi-part step form Closes RQA-3555 --- .../pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx index 5b58ac60c5a..2088409227e 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx @@ -254,8 +254,8 @@ export function StepFormToolbox(props: StepFormToolboxProps): JSX.Element { setShowFormErrors(false) } else { setShowFormErrors(true) - handleScrollToTop() } + handleScrollToTop() } else { handleSaveClick() } @@ -304,6 +304,7 @@ export function StepFormToolbox(props: StepFormToolboxProps): JSX.Element { onClick={() => { setToolboxStep(0) setShowFormErrors(false) + handleScrollToTop() }} > {i18n.format(t('shared:back'), 'capitalize')} From db8b1e5835abbaf97b41ba90404471fce34a2148 Mon Sep 17 00:00:00 2001 From: Laura Cox <31892318+Laura-Danielle@users.noreply.github.com> Date: Wed, 20 Nov 2024 19:10:43 +0200 Subject: [PATCH 043/220] feat(api): RobotContext: Add pipette helper functions to convert volume and position type (#16682) --- .../opentrons/hardware_control/dev_types.py | 2 + .../instruments/ot2/pipette.py | 20 +--- .../instruments/ot2/pipette_handler.py | 7 ++ .../instruments/ot3/pipette.py | 27 ++--- .../instruments/ot3/pipette_handler.py | 7 ++ api/src/opentrons/protocol_api/__init__.py | 21 +++- api/src/opentrons/protocol_api/_types.py | 24 ++++ .../protocol_api/core/engine/robot.py | 54 ++++++++- .../core/legacy/legacy_protocol_core.py | 1 - api/src/opentrons/protocol_api/core/robot.py | 20 +++- .../opentrons/protocol_api/robot_context.py | 42 ++++++- .../protocol_engine/execution/gantry_mover.py | 6 +- .../resources/pipette_data_provider.py | 12 ++ .../protocol_engine/state/pipettes.py | 36 ++++++ api/src/opentrons/types.py | 5 + .../protocol_api/test_robot_context.py | 80 ++++++++++++- .../commands/test_configure_for_volume.py | 7 ++ .../commands/test_load_pipette.py | 14 +++ .../execution/test_equipment_handler.py | 7 ++ .../resources/test_pipette_data_provider.py | 32 +++++ .../state/test_geometry_view.py | 7 ++ .../state/test_pipette_store.py | 21 ++++ .../state/test_pipette_view.py | 49 ++++++++ .../protocol_engine/state/test_tip_state.py | 112 ++++++++++++++++++ .../pipette/ul_per_mm.py | 39 +++++- 25 files changed, 601 insertions(+), 51 deletions(-) diff --git a/api/src/opentrons/hardware_control/dev_types.py b/api/src/opentrons/hardware_control/dev_types.py index a6773cb9184..575a5e612d9 100644 --- a/api/src/opentrons/hardware_control/dev_types.py +++ b/api/src/opentrons/hardware_control/dev_types.py @@ -100,6 +100,8 @@ class PipetteDict(InstrumentDict): pipette_bounding_box_offsets: PipetteBoundingBoxOffsetDefinition current_nozzle_map: NozzleMap lld_settings: Optional[Dict[str, Dict[str, float]]] + plunger_positions: Dict[str, float] + shaft_ul_per_mm: float class PipetteStateDict(TypedDict): diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py index 7fc15c4c2d3..2d63342cf19 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette.py @@ -28,7 +28,7 @@ CommandPreconditionViolated, ) from opentrons_shared_data.pipette.ul_per_mm import ( - piecewise_volume_conversion, + calculate_ul_per_mm, PIPETTING_FUNCTION_FALLBACK_VERSION, PIPETTING_FUNCTION_LATEST_VERSION, ) @@ -584,21 +584,9 @@ def get_nominal_tip_overlap_dictionary_by_configuration( # want this to unbounded. @functools.lru_cache(maxsize=100) def ul_per_mm(self, ul: float, action: UlPerMmAction) -> float: - if action == "aspirate": - fallback = self._active_tip_settings.aspirate.default[ - PIPETTING_FUNCTION_FALLBACK_VERSION - ] - sequence = self._active_tip_settings.aspirate.default.get( - self._pipetting_function_version, fallback - ) - else: - fallback = self._active_tip_settings.dispense.default[ - PIPETTING_FUNCTION_FALLBACK_VERSION - ] - sequence = self._active_tip_settings.dispense.default.get( - self._pipetting_function_version, fallback - ) - return piecewise_volume_conversion(ul, sequence) + return calculate_ul_per_mm( + ul, action, self._active_tip_settings, self._pipetting_function_version + ) def __str__(self) -> str: return "{} current volume {}ul critical point: {} at {}".format( diff --git a/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py b/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py index 931c99fd4c6..7bd41e02e74 100644 --- a/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py +++ b/api/src/opentrons/hardware_control/instruments/ot2/pipette_handler.py @@ -260,6 +260,13 @@ def get_attached_instrument(self, mount: MountType) -> PipetteDict: "pipette_bounding_box_offsets" ] = instr.config.pipette_bounding_box_offsets result["lld_settings"] = instr.config.lld_settings + result["plunger_positions"] = { + "top": instr.plunger_positions.top, + "bottom": instr.plunger_positions.bottom, + "blow_out": instr.plunger_positions.blow_out, + "drop_tip": instr.plunger_positions.drop_tip, + } + result["shaft_ul_per_mm"] = instr.config.shaft_ul_per_mm return cast(PipetteDict, result) @property diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 109747ea1b9..5a4d9261bfd 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -27,7 +27,7 @@ InvalidInstrumentData, ) from opentrons_shared_data.pipette.ul_per_mm import ( - piecewise_volume_conversion, + calculate_ul_per_mm, PIPETTING_FUNCTION_FALLBACK_VERSION, PIPETTING_FUNCTION_LATEST_VERSION, ) @@ -529,23 +529,13 @@ def tip_presence_responses(self) -> int: # want this to unbounded. @functools.lru_cache(maxsize=100) def ul_per_mm(self, ul: float, action: UlPerMmAction) -> float: - if action == "aspirate": - fallback = self._active_tip_settings.aspirate.default[ - PIPETTING_FUNCTION_FALLBACK_VERSION - ] - sequence = self._active_tip_settings.aspirate.default.get( - self._pipetting_function_version, fallback - ) - elif action == "blowout": - return self._config.shaft_ul_per_mm - else: - fallback = self._active_tip_settings.dispense.default[ - PIPETTING_FUNCTION_FALLBACK_VERSION - ] - sequence = self._active_tip_settings.dispense.default.get( - self._pipetting_function_version, fallback - ) - return piecewise_volume_conversion(ul, sequence) + return calculate_ul_per_mm( + ul, + action, + self._active_tip_settings, + self._pipetting_function_version, + self._config.shaft_ul_per_mm, + ) def __str__(self) -> str: return "{} current volume {}ul critical point: {} at {}".format( @@ -585,6 +575,7 @@ def as_dict(self) -> "Pipette.DictType": "versioned_tip_overlap": self.tip_overlap, "back_compat_names": self._config.pipette_backcompat_names, "supported_tips": self.liquid_class.supported_tips, + "shaft_ul_per_mm": self._config.shaft_ul_per_mm, } ) return self._config_as_dict diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py index f64078fcbff..dda5031a8a3 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette_handler.py @@ -282,6 +282,13 @@ def get_attached_instrument(self, mount: OT3Mount) -> PipetteDict: "pipette_bounding_box_offsets" ] = instr.config.pipette_bounding_box_offsets result["lld_settings"] = instr.config.lld_settings + result["plunger_positions"] = { + "top": instr.plunger_positions.top, + "bottom": instr.plunger_positions.bottom, + "blow_out": instr.plunger_positions.blow_out, + "drop_tip": instr.plunger_positions.drop_tip, + } + result["shaft_ul_per_mm"] = instr.config.shaft_ul_per_mm return cast(PipetteDict, result) @property diff --git a/api/src/opentrons/protocol_api/__init__.py b/api/src/opentrons/protocol_api/__init__.py index 2f35bb46764..41a061f5a94 100644 --- a/api/src/opentrons/protocol_api/__init__.py +++ b/api/src/opentrons/protocol_api/__init__.py @@ -30,7 +30,16 @@ ) from .disposal_locations import TrashBin, WasteChute from ._liquid import Liquid, LiquidClass -from ._types import OFF_DECK +from ._types import ( + OFF_DECK, + PLUNGER_BLOWOUT, + PLUNGER_TOP, + PLUNGER_BOTTOM, + PLUNGER_DROPTIP, + ASPIRATE_ACTION, + DISPENSE_ACTION, + BLOWOUT_ACTION, +) from ._nozzle_layout import ( COLUMN, PARTIAL_COLUMN, @@ -69,12 +78,22 @@ "Liquid", "LiquidClass", "Parameters", + # Partial Tip types "COLUMN", "PARTIAL_COLUMN", "SINGLE", "ROW", "ALL", + # Deck location types "OFF_DECK", + # Pipette plunger types + "PLUNGER_BLOWOUT", + "PLUNGER_TOP", + "PLUNGER_BOTTOM", + "PLUNGER_DROPTIP", + "ASPIRATE_ACTION", + "DISPENSE_ACTION", + "BLOWOUT_ACTION", "RuntimeParameterRequiredError", "CSVParameter", # For internal Opentrons use only: diff --git a/api/src/opentrons/protocol_api/_types.py b/api/src/opentrons/protocol_api/_types.py index 9890e29c2bc..0e73405b3b7 100644 --- a/api/src/opentrons/protocol_api/_types.py +++ b/api/src/opentrons/protocol_api/_types.py @@ -17,3 +17,27 @@ class OffDeckType(enum.Enum): See :ref:`off-deck-location` for details on using ``OFF_DECK`` with :py:obj:`ProtocolContext.move_labware()`. """ + + +class PlungerPositionTypes(enum.Enum): + PLUNGER_TOP = "top" + PLUNGER_BOTTOM = "bottom" + PLUNGER_BLOWOUT = "blow_out" + PLUNGER_DROPTIP = "drop_tip" + + +PLUNGER_TOP: Final = PlungerPositionTypes.PLUNGER_TOP +PLUNGER_BOTTOM: Final = PlungerPositionTypes.PLUNGER_BOTTOM +PLUNGER_BLOWOUT: Final = PlungerPositionTypes.PLUNGER_BLOWOUT +PLUNGER_DROPTIP: Final = PlungerPositionTypes.PLUNGER_DROPTIP + + +class PipetteActionTypes(enum.Enum): + ASPIRATE_ACTION = "aspirate" + DISPENSE_ACTION = "dispense" + BLOWOUT_ACTION = "blowout" + + +ASPIRATE_ACTION: Final = PipetteActionTypes.ASPIRATE_ACTION +DISPENSE_ACTION: Final = PipetteActionTypes.DISPENSE_ACTION +BLOWOUT_ACTION: Final = PipetteActionTypes.BLOWOUT_ACTION diff --git a/api/src/opentrons/protocol_api/core/engine/robot.py b/api/src/opentrons/protocol_api/core/engine/robot.py index 477f1968c5a..df80917e091 100644 --- a/api/src/opentrons/protocol_api/core/engine/robot.py +++ b/api/src/opentrons/protocol_api/core/engine/robot.py @@ -1,13 +1,16 @@ -from typing import Optional, Dict +from typing import Optional, Dict, Union from opentrons.hardware_control import SyncHardwareAPI from opentrons.types import Mount, MountType, Point, AxisType, AxisMapType +from opentrons_shared_data.pipette import types as pip_types +from opentrons.protocol_api._types import PipetteActionTypes, PlungerPositionTypes from opentrons.protocol_engine import commands as cmd from opentrons.protocol_engine.clients import SyncClient as EngineClient from opentrons.protocol_engine.types import DeckPoint, MotorAxis from opentrons.protocol_api.core.robot import AbstractRobot + _AXIS_TYPE_TO_MOTOR_AXIS = { AxisType.X: MotorAxis.X, AxisType.Y: MotorAxis.Y, @@ -39,12 +42,57 @@ def __init__( def _convert_to_engine_mount(self, axis_map: AxisMapType) -> Dict[MotorAxis, float]: return {_AXIS_TYPE_TO_MOTOR_AXIS[ax]: dist for ax, dist in axis_map.items()} - def get_pipette_type_from_engine(self, mount: Mount) -> Optional[str]: + def get_pipette_type_from_engine( + self, mount: Union[Mount, str] + ) -> Optional[pip_types.PipetteNameType]: """Get the pipette attached to the given mount.""" - engine_mount = MountType[mount.name] + if isinstance(mount, Mount): + engine_mount = MountType[mount.name] + else: + if mount.lower() == "right": + engine_mount = MountType.RIGHT + else: + engine_mount = MountType.LEFT maybe_pipette = self._engine_client.state.pipettes.get_by_mount(engine_mount) return maybe_pipette.pipetteName if maybe_pipette else None + def get_plunger_position_from_name( + self, mount: Mount, position_name: PlungerPositionTypes + ) -> float: + engine_mount = MountType[mount.name] + maybe_pipette = self._engine_client.state.pipettes.get_by_mount(engine_mount) + if not maybe_pipette: + return 0.0 + return self._engine_client.state.pipettes.lookup_plunger_position_name( + maybe_pipette.id, position_name.value + ) + + def get_plunger_position_from_volume( + self, mount: Mount, volume: float, action: PipetteActionTypes, robot_type: str + ) -> float: + engine_mount = MountType[mount.name] + maybe_pipette = self._engine_client.state.pipettes.get_by_mount(engine_mount) + if not maybe_pipette: + raise RuntimeError( + f"Cannot load plunger position as no pipette is attached to {mount}" + ) + convert_volume = ( + self._engine_client.state.pipettes.lookup_volume_to_mm_conversion( + maybe_pipette.id, volume, action.value + ) + ) + plunger_bottom = ( + self._engine_client.state.pipettes.lookup_plunger_position_name( + maybe_pipette.id, "bottom" + ) + ) + mm = volume / convert_volume + if robot_type == "OT-2 Standard": + position = plunger_bottom + mm + else: + position = plunger_bottom - mm + return round(position, 6) + def move_to(self, mount: Mount, destination: Point, speed: Optional[float]) -> None: engine_mount = MountType[mount.name] engine_destination = DeckPoint( diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py index e672a6fe839..d0b95ed82ca 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_protocol_core.py @@ -37,7 +37,6 @@ class LegacyProtocolCore( LegacyInstrumentCore, LegacyLabwareCore, legacy_module_core.LegacyModuleCore, - # None, ] ): def __init__( diff --git a/api/src/opentrons/protocol_api/core/robot.py b/api/src/opentrons/protocol_api/core/robot.py index 7eade528413..95def3e17f3 100644 --- a/api/src/opentrons/protocol_api/core/robot.py +++ b/api/src/opentrons/protocol_api/core/robot.py @@ -1,12 +1,28 @@ from abc import abstractmethod, ABC -from typing import Optional +from typing import Optional, Union from opentrons.types import AxisMapType, Mount, Point +from opentrons_shared_data.pipette.types import PipetteNameType +from opentrons.protocol_api._types import PlungerPositionTypes, PipetteActionTypes class AbstractRobot(ABC): @abstractmethod - def get_pipette_type_from_engine(self, mount: Mount) -> Optional[str]: + def get_pipette_type_from_engine( + self, mount: Union[Mount, str] + ) -> Optional[PipetteNameType]: + ... + + @abstractmethod + def get_plunger_position_from_volume( + self, mount: Mount, volume: float, action: PipetteActionTypes, robot_type: str + ) -> float: + ... + + @abstractmethod + def get_plunger_position_from_name( + self, mount: Mount, position_name: PlungerPositionTypes + ) -> float: ... @abstractmethod diff --git a/api/src/opentrons/protocol_api/robot_context.py b/api/src/opentrons/protocol_api/robot_context.py index 272330e1664..5b0e578f9bb 100644 --- a/api/src/opentrons/protocol_api/robot_context.py +++ b/api/src/opentrons/protocol_api/robot_context.py @@ -19,6 +19,7 @@ from .core.common import ProtocolCore, RobotCore from .module_contexts import ModuleContext from .labware import Labware +from ._types import PipetteActionTypes, PlungerPositionTypes class HardwareManager(NamedTuple): @@ -200,14 +201,43 @@ def axis_coordinates_for( raise TypeError("You must specify a location to move to.") def plunger_coordinates_for_volume( - self, mount: Union[Mount, str], volume: float - ) -> None: - raise NotImplementedError() + self, mount: Union[Mount, str], volume: float, action: PipetteActionTypes + ) -> AxisMapType: + """ + Build a :py:class:`.types.AxisMapType` for a pipette plunger motor from volume. + + """ + pipette_name = self._core.get_pipette_type_from_engine(mount) + if not pipette_name: + raise ValueError( + f"Expected a pipette to be attached to provided mount {mount}" + ) + mount = validation.ensure_mount_for_pipette(mount, pipette_name) + pipette_axis = AxisType.plunger_axis_for_mount(mount) + + pipette_position = self._core.get_plunger_position_from_volume( + mount, volume, action, self._protocol_core.robot_type + ) + return {pipette_axis: pipette_position} def plunger_coordinates_for_named_position( - self, mount: Union[Mount, str], position_name: str - ) -> None: - raise NotImplementedError() + self, mount: Union[Mount, str], position_name: PlungerPositionTypes + ) -> AxisMapType: + """ + Build a :py:class:`.types.AxisMapType` for a pipette plunger motor from position_name. + + """ + pipette_name = self._core.get_pipette_type_from_engine(mount) + if not pipette_name: + raise ValueError( + f"Expected a pipette to be attached to provided mount {mount}" + ) + mount = validation.ensure_mount_for_pipette(mount, pipette_name) + pipette_axis = AxisType.plunger_axis_for_mount(mount) + pipette_position = self._core.get_plunger_position_from_name( + mount, position_name + ) + return {pipette_axis: pipette_position} def build_axis_map(self, axis_map: StringAxisMap) -> AxisMapType: """Take in a :py:class:`.types.StringAxisMap` and output a :py:class:`.types.AxisMapType`. diff --git a/api/src/opentrons/protocol_engine/execution/gantry_mover.py b/api/src/opentrons/protocol_engine/execution/gantry_mover.py index 7306bc4e4d1..c77a9e1bad2 100644 --- a/api/src/opentrons/protocol_engine/execution/gantry_mover.py +++ b/api/src/opentrons/protocol_engine/execution/gantry_mover.py @@ -64,6 +64,7 @@ HardwareAxis.Q: MotorAxis.AXIS_96_CHANNEL_CAM, } + # The height of the bottom of the pipette nozzle at home position without any tips. # We rely on this being the same for every OT-3 pipette. # @@ -305,7 +306,6 @@ async def move_mount_to( ) -> Point: """Move the given hardware mount to a waypoint.""" assert len(waypoints) > 0, "Must have at least one waypoint" - log.info(f"Moving mount {mount}") for waypoint in waypoints: log.info(f"The current waypoint moving is {waypoint}") await self._hardware_api.move_to( @@ -340,6 +340,10 @@ async def move_axes( mount, refresh=True ) log.info(f"The current position of the robot is: {current_position}.") + converted_current_position_deck = ( + self._hardware_api.get_deck_from_machine(current_position) + ) + log.info(f"The current position of the robot is: {current_position}.") pos_hw = target_axis_map_from_relative(pos_hw, current_position) log.info( diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index d3998c69bd1..6387bf5dcf1 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -67,6 +67,8 @@ class LoadedStaticPipetteData: back_left_corner_offset: Point front_right_corner_offset: Point pipette_lld_settings: Optional[Dict[str, Dict[str, float]]] + plunger_positions: Dict[str, float] + shaft_ul_per_mm: float class VirtualPipetteDataProvider: @@ -252,6 +254,7 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 pip_back_left = config.pipette_bounding_box_offsets.back_left_corner pip_front_right = config.pipette_bounding_box_offsets.front_right_corner + plunger_positions = config.plunger_positions_configurations[liquid_class] return LoadedStaticPipetteData( model=str(pipette_model), display_name=config.display_name, @@ -280,6 +283,13 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 pip_front_right[0], pip_front_right[1], pip_front_right[2] ), pipette_lld_settings=config.lld_settings, + plunger_positions={ + "top": plunger_positions.top, + "bottom": plunger_positions.bottom, + "blow_out": plunger_positions.blow_out, + "drop_tip": plunger_positions.drop_tip, + }, + shaft_ul_per_mm=config.shaft_ul_per_mm, ) def get_virtual_pipette_static_config( @@ -327,6 +337,8 @@ def get_pipette_static_config( front_right_offset[0], front_right_offset[1], front_right_offset[2] ), pipette_lld_settings=pipette_dict["lld_settings"], + plunger_positions=pipette_dict["plunger_positions"], + shaft_ul_per_mm=pipette_dict["shaft_ul_per_mm"], ) diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index e0f2cef1155..d20b8665318 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -10,11 +10,15 @@ Mapping, Optional, Tuple, + cast, ) from typing_extensions import assert_never from opentrons_shared_data.pipette import pipette_definition +from opentrons_shared_data.pipette.ul_per_mm import calculate_ul_per_mm +from opentrons_shared_data.pipette.types import UlPerMmAction + from opentrons.config.defaults_ot2 import Z_RETRACT_DISTANCE from opentrons.hardware_control.dev_types import PipetteDict from opentrons.hardware_control import CriticalPoint @@ -99,6 +103,8 @@ class StaticPipetteConfig: bounding_nozzle_offsets: BoundingNozzlesOffsets default_nozzle_map: NozzleMap # todo(mm, 2024-10-14): unused, remove? lld_settings: Optional[Dict[str, Dict[str, float]]] + plunger_positions: Dict[str, float] + shaft_ul_per_mm: float @dataclasses.dataclass @@ -288,6 +294,8 @@ def _update_pipette_config(self, state_update: update_types.StateUpdate) -> None ), default_nozzle_map=config.nozzle_map, lld_settings=config.pipette_lld_settings, + plunger_positions=config.plunger_positions, + shaft_ul_per_mm=config.shaft_ul_per_mm, ) self._state.flow_rates_by_id[ state_update.pipette_config.pipette_id @@ -772,3 +780,31 @@ def get_nozzle_configuration_supports_lld(self, pipette_id: str) -> bool: ): return False return True + + def lookup_volume_to_mm_conversion( + self, pipette_id: str, volume: float, action: str + ) -> float: + """Get the volumn to mm conversion for a pipette.""" + try: + lookup_volume = self.get_working_volume(pipette_id) + except errors.TipNotAttachedError: + lookup_volume = self.get_maximum_volume(pipette_id) + + pipette_config = self.get_config(pipette_id) + lookup_table_from_config = pipette_config.tip_configuration_lookup_table + try: + tip_settings = lookup_table_from_config[lookup_volume] + except KeyError: + tip_settings = list(lookup_table_from_config.values())[0] + return calculate_ul_per_mm( + volume, + cast(UlPerMmAction, action), + tip_settings, + shaft_ul_per_mm=pipette_config.shaft_ul_per_mm, + ) + + def lookup_plunger_position_name( + self, pipette_id: str, position_name: str + ) -> float: + """Get the plunger position provided for the given pipette id.""" + return self.get_config(pipette_id).plunger_positions[position_name] diff --git a/api/src/opentrons/types.py b/api/src/opentrons/types.py index fa57ce0dcd5..1f73d63c8c6 100644 --- a/api/src/opentrons/types.py +++ b/api/src/opentrons/types.py @@ -292,6 +292,11 @@ def mount_for_axis(cls, axis: "AxisType") -> Mount: } return map_mount_to_axis[axis] + @classmethod + def plunger_axis_for_mount(cls, mount: Mount) -> "AxisType": + map_plunger_axis_mount = {Mount.LEFT: cls.P_L, Mount.RIGHT: cls.P_R} + return map_plunger_axis_mount[mount] + @classmethod def ot2_axes(cls) -> List["AxisType"]: return [ diff --git a/api/tests/opentrons/protocol_api/test_robot_context.py b/api/tests/opentrons/protocol_api/test_robot_context.py index c1bdfe48c3f..36b94c52b15 100644 --- a/api/tests/opentrons/protocol_api/test_robot_context.py +++ b/api/tests/opentrons/protocol_api/test_robot_context.py @@ -17,6 +17,9 @@ from opentrons.protocol_api.core.common import ProtocolCore, RobotCore from opentrons.protocol_api import RobotContext, ModuleContext from opentrons.protocol_api.deck import Deck +from opentrons_shared_data.pipette.types import PipetteNameType + +from opentrons.protocol_api._types import PipetteActionTypes, PlungerPositionTypes @pytest.fixture @@ -58,7 +61,12 @@ def subject( api_version: APIVersion, ) -> RobotContext: """Get a RobotContext test subject with its dependencies mocked out.""" - decoy.when(mock_core.get_pipette_type_from_engine(Mount.LEFT)).then_return(None) + decoy.when(mock_core.get_pipette_type_from_engine(Mount.LEFT)).then_return( + PipetteNameType.P1000_SINGLE_FLEX + ) + decoy.when(mock_core.get_pipette_type_from_engine(Mount.RIGHT)).then_return( + PipetteNameType.P1000_SINGLE_FLEX + ) return RobotContext( core=mock_core, api_version=api_version, protocol_core=mock_protocol ) @@ -176,3 +184,73 @@ def test_get_axes_coordinates_for( """Test `RobotContext.get_axis_coordinates_for`.""" res = subject.axis_coordinates_for(mount, location_to_move) assert res == expected_axis_map + + +@pytest.mark.parametrize( + argnames=["mount", "volume", "action", "expected_axis_map"], + argvalues=[ + (Mount.RIGHT, 200, PipetteActionTypes.ASPIRATE_ACTION, {AxisType.P_R: 100}), + (Mount.LEFT, 100, PipetteActionTypes.DISPENSE_ACTION, {AxisType.P_L: 100}), + ], +) +def test_plunger_coordinates_for_volume( + decoy: Decoy, + subject: RobotContext, + mount: Mount, + volume: float, + action: PipetteActionTypes, + expected_axis_map: AxisMapType, +) -> None: + """Test `RobotContext.plunger_coordinates_for_volume`.""" + decoy.when( + subject._core.get_plunger_position_from_volume( + mount, volume, action, "OT-3 Standard" + ) + ).then_return(100) + + result = subject.plunger_coordinates_for_volume(mount, volume, action) + assert result == expected_axis_map + + +@pytest.mark.parametrize( + argnames=["mount", "position_name", "expected_axis_map"], + argvalues=[ + (Mount.RIGHT, PlungerPositionTypes.PLUNGER_TOP, {AxisType.P_R: 3}), + ( + Mount.RIGHT, + PlungerPositionTypes.PLUNGER_BOTTOM, + {AxisType.P_R: 3}, + ), + ], +) +def test_plunger_coordinates_for_named_position( + decoy: Decoy, + subject: RobotContext, + mount: Mount, + position_name: PlungerPositionTypes, + expected_axis_map: AxisMapType, +) -> None: + """Test `RobotContext.plunger_coordinates_for_named_position`.""" + decoy.when( + subject._core.get_plunger_position_from_name(mount, position_name) + ).then_return(3) + result = subject.plunger_coordinates_for_named_position(mount, position_name) + assert result == expected_axis_map + + +def test_plunger_methods_raise_without_pipette( + mock_core: RobotCore, mock_protocol: ProtocolCore, api_version: APIVersion +) -> None: + """Test that `RobotContext` plunger functions raise without pipette attached.""" + subject = RobotContext( + core=mock_core, api_version=api_version, protocol_core=mock_protocol + ) + with pytest.raises(ValueError): + subject.plunger_coordinates_for_named_position( + Mount.LEFT, PlungerPositionTypes.PLUNGER_TOP + ) + + with pytest.raises(ValueError): + subject.plunger_coordinates_for_volume( + Mount.LEFT, 200, PipetteActionTypes.ASPIRATE_ACTION + ) diff --git a/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py b/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py index d237c9e6090..9be08a0a71b 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py +++ b/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py @@ -63,6 +63,13 @@ async def test_configure_for_volume_implementation( back_left_corner_offset=Point(10, 20, 30), front_right_corner_offset=Point(40, 50, 60), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) decoy.when( diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py b/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py index a42bbc4e4d9..570666e9c98 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py +++ b/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py @@ -69,6 +69,13 @@ async def test_load_pipette_implementation( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) decoy.when( @@ -137,6 +144,13 @@ async def test_load_pipette_implementation_96_channel( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) decoy.when( diff --git a/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py b/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py index b7a020c2d35..3ee027c24c1 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py +++ b/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py @@ -154,6 +154,13 @@ def loaded_static_pipette_data( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) diff --git a/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py b/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py index 086b3ec297b..cbf7fa6174e 100644 --- a/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py +++ b/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py @@ -65,6 +65,13 @@ def test_get_virtual_pipette_static_config( back_left_corner_offset=Point(0, 0, 10.45), front_right_corner_offset=Point(0, 0, 10.45), pipette_lld_settings={}, + plunger_positions={ + "top": 19.5, + "bottom": -8.5, + "blow_out": -13.0, + "drop_tip": -27.0, + }, + shaft_ul_per_mm=0.785, ) @@ -94,6 +101,13 @@ def test_configure_virtual_pipette_for_volume( back_left_corner_offset=Point(-8.0, -22.0, -259.15), front_right_corner_offset=Point(-8.0, -22.0, -259.15), pipette_lld_settings={"t50": {"minHeight": 1.0, "minVolume": 0.0}}, + plunger_positions={ + "top": 0.0, + "bottom": 71.5, + "blow_out": 76.5, + "drop_tip": 90.5, + }, + shaft_ul_per_mm=0.785, ) subject_instance.configure_virtual_pipette_for_volume( "my-pipette", 1, result1.model @@ -120,6 +134,13 @@ def test_configure_virtual_pipette_for_volume( back_left_corner_offset=Point(-8.0, -22.0, -259.15), front_right_corner_offset=Point(-8.0, -22.0, -259.15), pipette_lld_settings={"t50": {"minHeight": 1.0, "minVolume": 0.0}}, + plunger_positions={ + "top": 0.0, + "bottom": 61.5, + "blow_out": 76.5, + "drop_tip": 90.5, + }, + shaft_ul_per_mm=0.785, ) @@ -149,6 +170,13 @@ def test_load_virtual_pipette_by_model_string( back_left_corner_offset=Point(-16.0, 43.15, 35.52), front_right_corner_offset=Point(16.0, -43.15, 35.52), pipette_lld_settings={}, + plunger_positions={ + "top": 19.5, + "bottom": -14.5, + "blow_out": -19.0, + "drop_tip": -33.4, + }, + shaft_ul_per_mm=9.621, ) @@ -246,6 +274,8 @@ def pipette_dict( "t200": {"minHeight": 0.5, "minVolume": 0}, "t1000": {"minHeight": 0.5, "minVolume": 0}, }, + "plunger_positions": {"top": 100, "bottom": 20, "blow_out": 10, "drop_tip": 0}, + "shaft_ul_per_mm": 5.0, } @@ -292,6 +322,8 @@ def test_get_pipette_static_config( "t200": {"minHeight": 0.5, "minVolume": 0}, "t1000": {"minHeight": 0.5, "minVolume": 0}, }, + plunger_positions={"top": 100, "bottom": 20, "blow_out": 10, "drop_tip": 0}, + shaft_ul_per_mm=5.0, ) diff --git a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py index 42ee037c1ce..abfb31f5f2a 100644 --- a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py @@ -2611,6 +2611,13 @@ def test_get_next_drop_tip_location( back_right_corner=Point(x=40, y=20, z=60), ), lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) ) decoy.when(mock_pipette_view.get_mount("pip-123")).then_return(pipette_mount) diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_store.py b/api/tests/opentrons/protocol_engine/state/test_pipette_store.py index 31b1a7f3a2c..60c857e4911 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_store.py @@ -220,6 +220,13 @@ def test_handles_load_pipette( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) config_update = update_types.PipetteConfigUpdate( pipette_id="pipette-id", @@ -772,6 +779,13 @@ def test_add_pipette_config( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) subject.handle_action( @@ -810,6 +824,13 @@ def test_add_pipette_config( back_right_corner=Point(x=4, y=2, z=3), ), lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) assert subject.state.flow_rates_by_id["pipette-id"].default_aspirate == {"a": 1.0} assert subject.state.flow_rates_by_id["pipette-id"].default_dispense == {"b": 2.0} diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py b/api/tests/opentrons/protocol_engine/state/test_pipette_view.py index 64e663a24e5..14c43bf70f6 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_view.py @@ -291,6 +291,13 @@ def test_get_pipette_working_volume( default_nozzle_map=get_default_nozzle_map(PipetteNameType.P300_SINGLE), pipette_bounding_box_offsets=_SAMPLE_PIPETTE_BOUNDING_BOX_OFFSETS, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) }, ) @@ -322,6 +329,13 @@ def test_get_pipette_working_volume_raises_if_tip_volume_is_none( default_nozzle_map=get_default_nozzle_map(PipetteNameType.P300_SINGLE), pipette_bounding_box_offsets=_SAMPLE_PIPETTE_BOUNDING_BOX_OFFSETS, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) }, ) @@ -364,6 +378,13 @@ def test_get_pipette_available_volume( default_nozzle_map=get_default_nozzle_map(PipetteNameType.P300_SINGLE), pipette_bounding_box_offsets=_SAMPLE_PIPETTE_BOUNDING_BOX_OFFSETS, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), "pipette-id-none": StaticPipetteConfig( min_volume=1, @@ -380,6 +401,13 @@ def test_get_pipette_available_volume( default_nozzle_map=get_default_nozzle_map(PipetteNameType.P300_SINGLE), pipette_bounding_box_offsets=_SAMPLE_PIPETTE_BOUNDING_BOX_OFFSETS, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), }, ) @@ -492,6 +520,13 @@ def test_get_static_config( default_nozzle_map=get_default_nozzle_map(PipetteNameType.P300_SINGLE), pipette_bounding_box_offsets=_SAMPLE_PIPETTE_BOUNDING_BOX_OFFSETS, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) subject = get_pipette_view( @@ -543,6 +578,13 @@ def test_get_nominal_tip_overlap( default_nozzle_map=get_default_nozzle_map(PipetteNameType.P300_SINGLE), pipette_bounding_box_offsets=_SAMPLE_PIPETTE_BOUNDING_BOX_OFFSETS, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) subject = get_pipette_view(static_config_by_id={"pipette-id": config}) @@ -967,6 +1009,13 @@ def test_get_pipette_bounds_at_location( bounding_nozzle_offsets=_SAMPLE_NOZZLE_BOUNDS_OFFSETS, pipette_bounding_box_offsets=bounding_box_offsets, lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ) }, ) diff --git a/api/tests/opentrons/protocol_engine/state/test_tip_state.py b/api/tests/opentrons/protocol_engine/state/test_tip_state.py index abb408d7418..8abcc6a24e2 100644 --- a/api/tests/opentrons/protocol_engine/state/test_tip_state.py +++ b/api/tests/opentrons/protocol_engine/state/test_tip_state.py @@ -119,6 +119,13 @@ def test_get_next_tip_returns_none( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -177,6 +184,13 @@ def test_get_next_tip_returns_first_tip( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -229,6 +243,13 @@ def test_get_next_tip_used_starting_tip( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -314,6 +335,13 @@ def test_get_next_tip_skips_picked_up_tip( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -377,6 +405,13 @@ def test_get_next_tip_with_starting_tip( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -444,6 +479,13 @@ def test_get_next_tip_with_starting_tip_8_channel( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -514,6 +556,13 @@ def test_get_next_tip_with_1_channel_followed_by_8_channel( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -545,6 +594,13 @@ def test_get_next_tip_with_1_channel_followed_by_8_channel( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -615,6 +671,13 @@ def test_get_next_tip_with_starting_tip_out_of_tips( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -685,6 +748,13 @@ def test_get_next_tip_with_column_and_starting_tip( back_left_corner_offset=Point(0, 0, 0), front_right_corner_offset=Point(0, 0, 0), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -734,6 +804,13 @@ def test_reset_tips( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) @@ -796,6 +873,13 @@ def test_handle_pipette_config_action( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -929,6 +1013,13 @@ def test_active_channels( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -989,6 +1080,13 @@ def test_next_tip_uses_active_channels( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -1087,6 +1185,13 @@ def test_next_tip_automatic_tip_tracking_with_partial_configurations( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( @@ -1239,6 +1344,13 @@ def test_next_tip_automatic_tip_tracking_tiprack_limits( back_left_corner_offset=Point(x=1, y=2, z=3), front_right_corner_offset=Point(x=4, y=5, z=6), pipette_lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, ), ) subject.handle_action( diff --git a/shared-data/python/opentrons_shared_data/pipette/ul_per_mm.py b/shared-data/python/opentrons_shared_data/pipette/ul_per_mm.py index 3423f0f49e5..774231ac40d 100644 --- a/shared-data/python/opentrons_shared_data/pipette/ul_per_mm.py +++ b/shared-data/python/opentrons_shared_data/pipette/ul_per_mm.py @@ -1,11 +1,46 @@ -from typing import List, Tuple +from typing import List, Tuple, Optional -from opentrons_shared_data.pipette.pipette_definition import PipetteFunctionKeyType +from opentrons_shared_data.pipette.pipette_definition import ( + PipetteFunctionKeyType, + SupportedTipsDefinition, +) +from opentrons_shared_data.pipette.types import UlPerMmAction PIPETTING_FUNCTION_FALLBACK_VERSION: PipetteFunctionKeyType = "1" PIPETTING_FUNCTION_LATEST_VERSION: PipetteFunctionKeyType = "2" +def calculate_ul_per_mm( + ul: float, + action: UlPerMmAction, + active_tip_settings: SupportedTipsDefinition, + requested_pipetting_version: Optional[PipetteFunctionKeyType] = None, + shaft_ul_per_mm: Optional[float] = None, +) -> float: + assumed_requested_pipetting_version = ( + requested_pipetting_version + if requested_pipetting_version + else PIPETTING_FUNCTION_LATEST_VERSION + ) + if action == "aspirate": + fallback = active_tip_settings.aspirate.default[ + PIPETTING_FUNCTION_FALLBACK_VERSION + ] + sequence = active_tip_settings.aspirate.default.get( + assumed_requested_pipetting_version, fallback + ) + elif action == "blowout" and shaft_ul_per_mm: + return shaft_ul_per_mm + else: + fallback = active_tip_settings.dispense.default[ + PIPETTING_FUNCTION_FALLBACK_VERSION + ] + sequence = active_tip_settings.dispense.default.get( + assumed_requested_pipetting_version, fallback + ) + return piecewise_volume_conversion(ul, sequence) + + def piecewise_volume_conversion( ul: float, sequence: List[Tuple[float, float, float]] ) -> float: From df0f18cdffd5e3463918a9b3919f37bfda82ee44 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Wed, 20 Nov 2024 12:22:51 -0500 Subject: [PATCH 044/220] feat(hardware): add SN support for the P1KP pipette (#16907) # Overview This adds support on the python side for the new pipette so we can provision and load them ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- .../opentrons/hardware_control/backends/ot3controller.py | 1 + hardware/opentrons_hardware/firmware_bindings/constants.py | 1 + hardware/opentrons_hardware/instruments/pipettes/serials.py | 1 + .../tests/opentrons_hardware/instruments/test_serials.py | 6 ++++++ .../python/opentrons_shared_data/pipette/dev_types.py | 2 ++ 5 files changed, 11 insertions(+) diff --git a/api/src/opentrons/hardware_control/backends/ot3controller.py b/api/src/opentrons/hardware_control/backends/ot3controller.py index 66ffc1efab1..627d6f5c424 100644 --- a/api/src/opentrons/hardware_control/backends/ot3controller.py +++ b/api/src/opentrons/hardware_control/backends/ot3controller.py @@ -1008,6 +1008,7 @@ def _lookup_serial_key(pipette_name: FirmwarePipetteName) -> str: lookup_name = { FirmwarePipetteName.p1000_single: "P1KS", FirmwarePipetteName.p1000_multi: "P1KM", + FirmwarePipetteName.p1000_multi_emulsify: "P1KP", FirmwarePipetteName.p50_single: "P50S", FirmwarePipetteName.p50_multi: "P50M", FirmwarePipetteName.p1000_96: "P1KH", diff --git a/hardware/opentrons_hardware/firmware_bindings/constants.py b/hardware/opentrons_hardware/firmware_bindings/constants.py index d9dc98def39..435e13ab2a1 100644 --- a/hardware/opentrons_hardware/firmware_bindings/constants.py +++ b/hardware/opentrons_hardware/firmware_bindings/constants.py @@ -359,6 +359,7 @@ class PipetteName(int, Enum): p1000_96 = 0x04 p50_96 = 0x05 p200_96 = 0x06 + p1000_multi_emulsify = 0x07 unknown = 0xFFFF diff --git a/hardware/opentrons_hardware/instruments/pipettes/serials.py b/hardware/opentrons_hardware/instruments/pipettes/serials.py index c4a8fc441d0..a29366649cf 100644 --- a/hardware/opentrons_hardware/instruments/pipettes/serials.py +++ b/hardware/opentrons_hardware/instruments/pipettes/serials.py @@ -27,6 +27,7 @@ NAME_LOOKUP: Dict[str, PipetteName] = { "P1KS": PipetteName.p1000_single, "P1KM": PipetteName.p1000_multi, + "P1KP": PipetteName.p1000_multi_emulsify, "P50S": PipetteName.p50_single, "P50M": PipetteName.p50_multi, "P1KH": PipetteName.p1000_96, diff --git a/hardware/tests/opentrons_hardware/instruments/test_serials.py b/hardware/tests/opentrons_hardware/instruments/test_serials.py index 7b398eda286..4784ad9a08c 100644 --- a/hardware/tests/opentrons_hardware/instruments/test_serials.py +++ b/hardware/tests/opentrons_hardware/instruments/test_serials.py @@ -40,6 +40,12 @@ 1, b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", ), + ( + "P1KPV30", + PipetteName.p1000_multi_emulsify, + 30, + b"\x00"*16, + ), ], ) def test_scan_valid_pipette_serials( diff --git a/shared-data/python/opentrons_shared_data/pipette/dev_types.py b/shared-data/python/opentrons_shared_data/pipette/dev_types.py index 00676e9be08..0b5b5672ca4 100644 --- a/shared-data/python/opentrons_shared_data/pipette/dev_types.py +++ b/shared-data/python/opentrons_shared_data/pipette/dev_types.py @@ -31,6 +31,7 @@ "p1000_single_gen2", "p1000_single_flex", "p1000_multi_flex", + "p1000_multi_emulsify", "p1000_96", "p200_96", ] @@ -57,6 +58,7 @@ class PipetteNameType(str, Enum): P1000_SINGLE_GEN2 = "p1000_single_gen2" P1000_SINGLE_FLEX = "p1000_single_flex" P1000_MULTI_FLEX = "p1000_multi_flex" + P1000_MULTI_EMULSIFY = "p1000_multi_emulsify" P1000_96 = "p1000_96" P200_96 = "p200_96" From 383936698d9b90dab0b218cba72a04436e1939e0 Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Wed, 20 Nov 2024 13:36:20 -0500 Subject: [PATCH 045/220] chore(shared-data): rename emulsify to em (#16911) # Overview In order to simplify and make future planning for how to display this OEM rename emulsify to EM everywhere for the new 8 channel ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- .../opentrons/hardware_control/backends/ot3controller.py | 2 +- hardware/opentrons_hardware/firmware_bindings/constants.py | 2 +- hardware/opentrons_hardware/instruments/pipettes/serials.py | 2 +- .../tests/opentrons_hardware/instruments/test_serials.py | 4 ++-- shared-data/command/schemas/11.json | 2 +- shared-data/js/constants.ts | 1 + .../p1000/3_0.json | 2 +- .../p1000/3_0.json | 2 +- .../p1000/placeholder.gltf | 0 .../p1000/default/3_0.json | 0 .../python/opentrons_shared_data/pipette/dev_types.py | 4 ++-- .../python/opentrons_shared_data/pipette/load_data.py | 4 ++-- .../pipette/scripts/update_configuration_files.py | 2 +- shared-data/python/opentrons_shared_data/pipette/types.py | 4 ++-- .../python/tests/pipette/test_max_flow_rates_per_volume.py | 2 +- shared-data/python/tests/pipette/test_validate_schema.py | 6 +++--- 16 files changed, 20 insertions(+), 19 deletions(-) rename shared-data/pipette/definitions/2/general/{eight_channel_emulsify => eight_channel_em}/p1000/3_0.json (99%) rename shared-data/pipette/definitions/2/geometry/{eight_channel_emulsify => eight_channel_em}/p1000/3_0.json (93%) rename shared-data/pipette/definitions/2/geometry/{eight_channel_emulsify => eight_channel_em}/p1000/placeholder.gltf (100%) rename shared-data/pipette/definitions/2/liquid/{eight_channel_emulsify => eight_channel_em}/p1000/default/3_0.json (100%) diff --git a/api/src/opentrons/hardware_control/backends/ot3controller.py b/api/src/opentrons/hardware_control/backends/ot3controller.py index 627d6f5c424..1251fcc4adb 100644 --- a/api/src/opentrons/hardware_control/backends/ot3controller.py +++ b/api/src/opentrons/hardware_control/backends/ot3controller.py @@ -1008,7 +1008,7 @@ def _lookup_serial_key(pipette_name: FirmwarePipetteName) -> str: lookup_name = { FirmwarePipetteName.p1000_single: "P1KS", FirmwarePipetteName.p1000_multi: "P1KM", - FirmwarePipetteName.p1000_multi_emulsify: "P1KP", + FirmwarePipetteName.p1000_multi_em: "P1KP", FirmwarePipetteName.p50_single: "P50S", FirmwarePipetteName.p50_multi: "P50M", FirmwarePipetteName.p1000_96: "P1KH", diff --git a/hardware/opentrons_hardware/firmware_bindings/constants.py b/hardware/opentrons_hardware/firmware_bindings/constants.py index 435e13ab2a1..ecdc8ae8c64 100644 --- a/hardware/opentrons_hardware/firmware_bindings/constants.py +++ b/hardware/opentrons_hardware/firmware_bindings/constants.py @@ -359,7 +359,7 @@ class PipetteName(int, Enum): p1000_96 = 0x04 p50_96 = 0x05 p200_96 = 0x06 - p1000_multi_emulsify = 0x07 + p1000_multi_em = 0x07 unknown = 0xFFFF diff --git a/hardware/opentrons_hardware/instruments/pipettes/serials.py b/hardware/opentrons_hardware/instruments/pipettes/serials.py index a29366649cf..c18772fe656 100644 --- a/hardware/opentrons_hardware/instruments/pipettes/serials.py +++ b/hardware/opentrons_hardware/instruments/pipettes/serials.py @@ -27,7 +27,7 @@ NAME_LOOKUP: Dict[str, PipetteName] = { "P1KS": PipetteName.p1000_single, "P1KM": PipetteName.p1000_multi, - "P1KP": PipetteName.p1000_multi_emulsify, + "P1KP": PipetteName.p1000_multi_em, "P50S": PipetteName.p50_single, "P50M": PipetteName.p50_multi, "P1KH": PipetteName.p1000_96, diff --git a/hardware/tests/opentrons_hardware/instruments/test_serials.py b/hardware/tests/opentrons_hardware/instruments/test_serials.py index 4784ad9a08c..2820b5ffbe5 100644 --- a/hardware/tests/opentrons_hardware/instruments/test_serials.py +++ b/hardware/tests/opentrons_hardware/instruments/test_serials.py @@ -42,9 +42,9 @@ ), ( "P1KPV30", - PipetteName.p1000_multi_emulsify, + PipetteName.p1000_multi_em, 30, - b"\x00"*16, + b"\x00" * 16, ), ], ) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 37e59f9ef54..cc2202f850d 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -2690,7 +2690,7 @@ "p1000_single_gen2", "p1000_single_flex", "p1000_multi_flex", - "p1000_multi_emulsify", + "p1000_multi_em", "p1000_96", "p200_96" ], diff --git a/shared-data/js/constants.ts b/shared-data/js/constants.ts index 8772a5ab3b9..888d9f0c2f7 100644 --- a/shared-data/js/constants.ts +++ b/shared-data/js/constants.ts @@ -145,6 +145,7 @@ export const OT3_PIPETTES = [ 'p50_single_flex', 'p50_multi_flex', 'p1000_multi_flex', + 'p1000_multi_em_flex', 'p1000_96', 'p200_96', ] diff --git a/shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json similarity index 99% rename from shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json rename to shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json index 0d68704a00a..c49ae20d87a 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel_emulsify/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json @@ -1,6 +1,6 @@ { "$otSharedSchema": "#/pipette/schemas/2/pipettePropertiesSchema.json", - "displayName": "FLEX 8-Channel Emulsifying 1000 μL", + "displayName": "FLEX 8-Channel EM 1000 μL", "model": "p1000", "displayCategory": "FLEX", "validNozzleMaps": { diff --git a/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json b/shared-data/pipette/definitions/2/geometry/eight_channel_em/p1000/3_0.json similarity index 93% rename from shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json rename to shared-data/pipette/definitions/2/geometry/eight_channel_em/p1000/3_0.json index d464cd5b9fe..b92e7415fe3 100644 --- a/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/geometry/eight_channel_em/p1000/3_0.json @@ -1,6 +1,6 @@ { "$otSharedSchema": "#/pipette/schemas/2/pipetteGeometrySchema.json", - "pathTo3D": "pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf", + "pathTo3D": "pipette/definitions/2/geometry/eight_channel_em/p1000/placeholder.gltf", "nozzleOffset": [-8.0, -16.0, -259.15], "pipetteBoundingBoxOffsets": { "backLeftCorner": [-38.5, 0.0, -259.15], diff --git a/shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf b/shared-data/pipette/definitions/2/geometry/eight_channel_em/p1000/placeholder.gltf similarity index 100% rename from shared-data/pipette/definitions/2/geometry/eight_channel_emulsify/p1000/placeholder.gltf rename to shared-data/pipette/definitions/2/geometry/eight_channel_em/p1000/placeholder.gltf diff --git a/shared-data/pipette/definitions/2/liquid/eight_channel_emulsify/p1000/default/3_0.json b/shared-data/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json similarity index 100% rename from shared-data/pipette/definitions/2/liquid/eight_channel_emulsify/p1000/default/3_0.json rename to shared-data/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json diff --git a/shared-data/python/opentrons_shared_data/pipette/dev_types.py b/shared-data/python/opentrons_shared_data/pipette/dev_types.py index 0b5b5672ca4..8ae367378f2 100644 --- a/shared-data/python/opentrons_shared_data/pipette/dev_types.py +++ b/shared-data/python/opentrons_shared_data/pipette/dev_types.py @@ -31,7 +31,7 @@ "p1000_single_gen2", "p1000_single_flex", "p1000_multi_flex", - "p1000_multi_emulsify", + "p1000_multi_em", "p1000_96", "p200_96", ] @@ -58,7 +58,7 @@ class PipetteNameType(str, Enum): P1000_SINGLE_GEN2 = "p1000_single_gen2" P1000_SINGLE_FLEX = "p1000_single_flex" P1000_MULTI_FLEX = "p1000_multi_flex" - P1000_MULTI_EMULSIFY = "p1000_multi_emulsify" + P1000_MULTI_EM = "p1000_multi_em" P1000_96 = "p1000_96" P200_96 = "p200_96" diff --git a/shared-data/python/opentrons_shared_data/pipette/load_data.py b/shared-data/python/opentrons_shared_data/pipette/load_data.py index fb121725c37..40027d54394 100644 --- a/shared-data/python/opentrons_shared_data/pipette/load_data.py +++ b/shared-data/python/opentrons_shared_data/pipette/load_data.py @@ -114,13 +114,13 @@ def load_serial_lookup_table() -> Dict[str, str]: "eight_channel": "M", "single_channel": "S", "ninety_six_channel": "H", - "eight_channel_emulsify": "P", + "eight_channel_em": "P", } _channel_model_str = { "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", - "eight_channel_emulsify": "multi_emulsify", + "eight_channel_em": "multi_em", } _model_shorthand = {"p1000": "p1k", "p300": "p3h"} for channel_dir in _dirs_in(config_path): diff --git a/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py b/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py index c1e03d5ab9d..d72a09e666b 100644 --- a/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py +++ b/shared-data/python/opentrons_shared_data/pipette/scripts/update_configuration_files.py @@ -355,7 +355,7 @@ def _update_all_models(configuration_to_update: List[str]) -> None: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", - "eight_channel_emulsify": "multi_emulsify", + "eight_channel_em": "multi_em", } for channel_dir in os.listdir(paths_to_validate): diff --git a/shared-data/python/opentrons_shared_data/pipette/types.py b/shared-data/python/opentrons_shared_data/pipette/types.py index 33164904d97..d5315ec12d5 100644 --- a/shared-data/python/opentrons_shared_data/pipette/types.py +++ b/shared-data/python/opentrons_shared_data/pipette/types.py @@ -216,7 +216,7 @@ def dict_for_encode(self) -> bool: "p1000_single_gen2", "p1000_single_flex", "p1000_multi_flex", - "p1000_multi_emulsify", + "p1000_multi_em", "p1000_96", "p200_96", ] @@ -243,7 +243,7 @@ class PipetteNameType(str, enum.Enum): P1000_SINGLE_GEN2 = "p1000_single_gen2" P1000_SINGLE_FLEX = "p1000_single_flex" P1000_MULTI_FLEX = "p1000_multi_flex" - P1000_MULTI_EMULSIFY = "p1000_multi_emulsify" + P1000_MULTI_EM = "p1000_multi_em" P1000_96 = "p1000_96" P200_96 = "p200_96" diff --git a/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py b/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py index c5e9cc49604..aae0c1a4e1b 100644 --- a/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py +++ b/shared-data/python/tests/pipette/test_max_flow_rates_per_volume.py @@ -49,7 +49,7 @@ def get_all_pipette_models() -> Iterator[PipetteModel]: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", - "eight_channel_emulsify": "multi_emulsify", + "eight_channel_em": "multi_em", } assert os.listdir(paths_to_validate), "You have a path wrong" for channel_dir in os.listdir(paths_to_validate): diff --git a/shared-data/python/tests/pipette/test_validate_schema.py b/shared-data/python/tests/pipette/test_validate_schema.py index 5d3080dbd7a..57f19dfe3ad 100644 --- a/shared-data/python/tests/pipette/test_validate_schema.py +++ b/shared-data/python/tests/pipette/test_validate_schema.py @@ -22,7 +22,7 @@ def iterate_models() -> Iterator[PipetteModel]: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", - "eight_channel_emulsify": "multi_emulsify", + "eight_channel_em": "multi_em", } defn_root = get_shared_data_root() / "pipette" / "definitions" / "2" / "liquid" assert os.listdir(defn_root), "A path is wrong" @@ -64,7 +64,7 @@ def test_pick_up_configs_configuration_by_nozzle_map_keys() -> None: "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", - "eight_channel_emulsify": "multi_emulsify", + "eight_channel_em": "multi_em", } assert os.listdir(paths_to_validate), "You have a path wrong" for channel_dir in os.listdir(paths_to_validate): @@ -107,7 +107,7 @@ def test_pick_up_configs_configuration_ordered_from_smallest_to_largest() -> Non "single_channel": "single", "ninety_six_channel": "96", "eight_channel": "multi", - "eight_channel_emulsify": "multi_emulsify", + "eight_channel_em": "multi_em", } assert os.listdir(paths_to_validate), "You have a path wrong" for channel_dir in os.listdir(paths_to_validate): From 2db28056546ced70756553b259ba932edd7f3d02 Mon Sep 17 00:00:00 2001 From: syao1226 <146495172+syao1226@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:12:44 -0500 Subject: [PATCH 046/220] fix(protocol-designer): fix slotOverflowMenu for tipracks on adapters and update path selection for trash bin (#16908) fix RQA-3607 # Overview In this PR, I updated the `SlotOverflowMenu` to disallow adding liquid and renaming labware for tipracks on adapters. Additionally, I updated `updatePatchOnWellRatioChange` to check if the `dispense_labware` includes 'movableTrash' or 'fixedTrash'. This fixes the issue where the consolidate path could not be selected when dispensing liquid into the trash bin. ## Test Plan and Hands on Testing ## Changelog - Added const `isTiprackAdapter` in `SlotOverflowMenu` to check if the slot is a tiprack adapter. ## Review requests ## Risk assessment --------- Co-authored-by: shiyaochen --- .../src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx | 10 +++++++++- .../dependentFieldsUpdateMoveLiquid.ts | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx index b45f314f689..c949fc3ab90 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx @@ -113,9 +113,16 @@ export function SlotOverflowMenu( const isLabwareTiprack = labwareOnSlot?.def.parameters.isTiprack ?? false const isLabwareAnAdapter = labwareOnSlot?.def.allowedRoles?.includes('adapter') ?? false + + const isTiprackAdapter = + labwareOnSlot?.def.parameters.quirks?.includes( + 'tiprackAdapterFor96Channel' + ) ?? false + const nestedLabwareOnSlot = Object.values(deckSetupLabware).find( lw => lw.slot === labwareOnSlot?.id ) + const fixturesOnSlot = Object.values(additionalEquipmentOnDeck).filter( ae => ae.location?.split('cutout')[1] === location ) @@ -170,8 +177,9 @@ export function SlotOverflowMenu( (labwareOnSlot != null && !isLabwareAnAdapter && !isLabwareTiprack && + !isTiprackAdapter && nestedLabwareOnSlot == null) || - nestedLabwareOnSlot != null + (nestedLabwareOnSlot != null && !isTiprackAdapter) let position = ROBOT_BOTTOM_HALF_SLOTS.includes(location) ? BOTTOM_SLOT_Y_POSITION diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts index d7a35e4ec59..847d45ed4bc 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/dependentFieldsUpdateMoveLiquid.ts @@ -580,7 +580,9 @@ function updatePatchOnWellRatioChange( const appliedPatch = { ...rawForm, ...patch } const isDisposalLocation = rawForm.dispense_labware?.includes('wasteChute') || - rawForm.dispense_labware?.includes('trashBin') + rawForm.dispense_labware?.includes('trashBin') || + rawForm.dispense_labware?.includes('movableTrash') || + rawForm.dispense_labware?.includes('fixedTrash') const prevWellRatio = getWellRatio( rawForm.aspirate_wells as string[], From 4e1aecf84bdf5ad3005ddf05c25016742be544bf Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:26:04 -0500 Subject: [PATCH 047/220] fix(protocol-designer): move volume field above paths (#16905) closes RQA-3639 --- .../StepForm/StepTools/MoveLiquidTools/index.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx index 10dd04db7d5..813dc5ba022 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx @@ -186,6 +186,11 @@ export function MoveLiquidTools(props: StepFormProps): JSX.Element { )} + + - - {enableReturnTip ? ( <> From d430428be79b9b6be4890e74cf818c7410f4f8a9 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:26:55 -0500 Subject: [PATCH 048/220] fix(protocol-designer): fix OffDeck starting protocol deck component (#16912) Fixes positioning and hover behavior for OffDeck component, overflow menu positioning, and SlotInformation component when hovering an offdeck labware. Closes RQA-3592 --- .../src/organisms/SlotInformation/index.tsx | 6 +++- .../Designer/DeckSetup/SlotOverflowMenu.tsx | 4 ++- .../pages/Designer/Offdeck/OffDeckDetails.tsx | 33 ++++++++++++------- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/protocol-designer/src/organisms/SlotInformation/index.tsx b/protocol-designer/src/organisms/SlotInformation/index.tsx index 7c1a1841a22..37a080ac885 100644 --- a/protocol-designer/src/organisms/SlotInformation/index.tsx +++ b/protocol-designer/src/organisms/SlotInformation/index.tsx @@ -63,7 +63,11 @@ export const SlotInformation: FC = ({ diff --git a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx index c949fc3ab90..8cc15363ea6 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx @@ -66,6 +66,7 @@ interface SlotOverflowMenuProps { setShowMenuList: (value: SetStateAction) => void addEquipment: (slotId: string) => void menuListSlotPosition?: CoordinateTuple + invertY?: true } export function SlotOverflowMenu( props: SlotOverflowMenuProps @@ -75,6 +76,7 @@ export function SlotOverflowMenu( setShowMenuList, addEquipment, menuListSlotPosition, + invertY = false, } = props const { t } = useTranslation('starting_deck_state') const navigate = useNavigate() @@ -333,7 +335,7 @@ export function SlotOverflowMenu( innerDivProps={{ style: { position: POSITION_ABSOLUTE, - transform: 'rotate(180deg) scaleX(-1)', + transform: `rotate(180deg) scaleX(-1) ${invertY ? 'scaleY(-1)' : ''}`, }, }} > diff --git a/protocol-designer/src/pages/Designer/Offdeck/OffDeckDetails.tsx b/protocol-designer/src/pages/Designer/Offdeck/OffDeckDetails.tsx index 36fb6984a66..f631ee3391a 100644 --- a/protocol-designer/src/pages/Designer/Offdeck/OffDeckDetails.tsx +++ b/protocol-designer/src/pages/Designer/Offdeck/OffDeckDetails.tsx @@ -2,6 +2,7 @@ import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import { + ALIGN_CENTER, BORDERS, COLORS, DIRECTION_COLUMN, @@ -26,6 +27,8 @@ import { SlotOverflowMenu } from '../DeckSetup/SlotOverflowMenu' import type { DeckSlotId } from '@opentrons/shared-data' import type { DeckSetupTabType } from '../types' +const OFFDECK_MAP_WIDTH = '41.625rem' + interface OffDeckDetailsProps extends DeckSetupTabType { addLabware: () => void } @@ -43,19 +46,30 @@ export function OffDeckDetails(props: OffDeckDetailsProps): JSX.Element { const allWellContentsForActiveItem = useSelector( wellContentsSelectors.getAllWellContentsForActiveItem ) + const containerWidth = tab === 'startingDeck' ? '100vw' : '75vh' + const paddingLeftWithHover = + hoverSlot == null + ? `calc((${containerWidth} - (${SPACING.spacing24} * 2) - ${OFFDECK_MAP_WIDTH}) / 2)` + : SPACING.spacing24 + const paddingLeft = tab === 'startingDeck' ? paddingLeftWithHover : undefined + const padding = + tab === 'protocolSteps' + ? SPACING.spacing24 + : `${SPACING.spacing24} ${paddingLeft}` + const stepDetailsContainerWidth = `calc(((${containerWidth} - ${OFFDECK_MAP_WIDTH}) / 2) - (${SPACING.spacing24} * 3))` return ( {hoverSlot != null ? ( - + ) : null} { setShowMenuListForId(null) }} + menuListSlotPosition={[0, 0, 0]} + invertY /> ) : null} From ac051f72d547e9d62b40698654e6da06aab2b7be Mon Sep 17 00:00:00 2001 From: koji Date: Wed, 20 Nov 2024 16:29:03 -0500 Subject: [PATCH 049/220] fix(protocol-designer): fix navbar z-index issue (#16910) * fix(protocol-designer): fix navbar z-index issue --- components/src/organisms/Toolbox/index.tsx | 1 - protocol-designer/src/organisms/ProtocolNavBar/index.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/components/src/organisms/Toolbox/index.tsx b/components/src/organisms/Toolbox/index.tsx index de1748601c8..147b8b0eda2 100644 --- a/components/src/organisms/Toolbox/index.tsx +++ b/components/src/organisms/Toolbox/index.tsx @@ -140,7 +140,6 @@ export function Toolbox(props: ToolboxProps): JSX.Element { ` - z-index: 11; + z-index: ${props => (props.showShadow === true ? 11 : 0)}; padding: ${SPACING.spacing12}; width: 100%; justify-content: ${JUSTIFY_SPACE_BETWEEN}; From d1d9b877d194bc000c980d1d00a4fa2f73942889 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Wed, 20 Nov 2024 16:32:47 -0500 Subject: [PATCH 050/220] fix(api): truncate plate reader floating point results to third decimal place (#16919) Covers EXEC-1019 Ensure the plate reader values are truncated to the third decimal place after being read during a protocol. --- api/src/opentrons/protocol_engine/state/modules.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/api/src/opentrons/protocol_engine/state/modules.py b/api/src/opentrons/protocol_engine/state/modules.py index c61d4173ff1..f2f9dc5e8e4 100644 --- a/api/src/opentrons/protocol_engine/state/modules.py +++ b/api/src/opentrons/protocol_engine/state/modules.py @@ -1268,7 +1268,10 @@ def convert_absorbance_reader_data_points( row = chr(ord("A") + i // 12) # Convert index to row (A-H) col = (i % 12) + 1 # Convert index to column (1-12) well_key = f"{row}{col}" - well_map[well_key] = value + truncated_value = float( + "{:.5}".format(str(value)) + ) # Truncate the returned value to the third decimal place + well_map[well_key] = truncated_value return well_map else: raise ValueError( From 0dacfb327a529ce1a7a320a860b8baf66668f36a Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Wed, 20 Nov 2024 16:50:50 -0500 Subject: [PATCH 051/220] fix(api): update motor position before homing (#16887) --- api/src/opentrons/hardware_control/ot3api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index bd828cd525f..491b6168e58 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -776,7 +776,7 @@ async def _update_position_estimation( """ Function to update motor estimation for a set of axes """ - + await self._backend.update_motor_status() if axes: checked_axes = [ax for ax in axes if ax in Axis] else: From 6009a299825b281d731cf14b8bafb3780cd4e76a Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 20 Nov 2024 17:28:58 -0500 Subject: [PATCH 052/220] app(fix): Fix error recovery on desktop DQA (#16916) Closes RQA-3642, RQA-3632, RQA-3627, and RQA-3629 --- app/src/molecules/InterventionModal/index.tsx | 6 ++-- .../ErrorRecoveryWizard.tsx | 5 +-- .../ErrorRecoveryFlows/RecoveryTakeover.tsx | 10 +++++- .../__tests__/useRecoveryToasts.test.tsx | 14 ++++---- .../hooks/useRecoveryToasts.ts | 3 +- .../organisms/ErrorRecoveryFlows/index.tsx | 33 +++++++------------ .../PauseInterventionContent.tsx | 28 +++++----------- 7 files changed, 42 insertions(+), 57 deletions(-) diff --git a/app/src/molecules/InterventionModal/index.tsx b/app/src/molecules/InterventionModal/index.tsx index 625b478a8e9..bb684e288b5 100644 --- a/app/src/molecules/InterventionModal/index.tsx +++ b/app/src/molecules/InterventionModal/index.tsx @@ -179,14 +179,12 @@ export function InterventionModal({ } const ICON_STYLE = css` - width: ${SPACING.spacing16}; - height: ${SPACING.spacing16}; + width: ${SPACING.spacing32}; + height: ${SPACING.spacing32}; margin: ${SPACING.spacing4}; cursor: ${CURSOR_POINTER}; @media (${RESPONSIVENESS.touchscreenMediaQuerySpecs}) { - width: ${SPACING.spacing32}; - height: ${SPACING.spacing32}; margin: ${SPACING.spacing12}; } ` diff --git a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx index 1c62471380d..b28fbe0998e 100644 --- a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx @@ -119,10 +119,7 @@ export function ErrorRecoveryComponent( const buildTitleHeading = (): JSX.Element => { const titleText = hasLaunchedRecovery ? t('recovery_mode') : t('cancel_run') return ( - + {titleText} ) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryTakeover.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryTakeover.tsx index eccd4e972a7..4a28ac24b0c 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryTakeover.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryTakeover.tsx @@ -120,9 +120,17 @@ export function RecoveryTakeoverDesktop({ }: RecoveryTakeoverProps): JSX.Element { const { t } = useTranslation('error_recovery') + const buildTitleHeadingDesktop = (): JSX.Element => { + return ( + + {t('error_on_robot', { robot: robotName })} + + ) + } + return ( diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryToasts.test.tsx b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryToasts.test.tsx index c9874eb5532..085551f42e7 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryToasts.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryToasts.test.tsx @@ -94,13 +94,13 @@ describe('useRecoveryToasts', () => { result.current.makeSuccessToast() expect(mockMakeToast).toHaveBeenCalledWith( - 'Retrying step 1 succeeded.', + 'test command', 'success', expect.objectContaining({ closeButton: true, disableTimeout: true, displayType: 'desktop', - heading: expect.any(String), + heading: 'Retrying step 1 succeeded.', }) ) }) @@ -209,8 +209,8 @@ describe('useRecoveryFullCommandText', () => { const { result } = renderHook(() => useRecoveryFullCommandText({ robotType: FLEX_ROBOT_TYPE, - stepNumber: 0, - commandTextData: { commands: [TEST_COMMAND] } as any, + stepNumber: 1, + commandTextData: { commands: [TEST_COMMAND, {}] } as any, allRunDefs: [], }) ) @@ -259,7 +259,7 @@ describe('useRecoveryFullCommandText', () => { const { result } = renderHook(() => useRecoveryFullCommandText({ robotType: FLEX_ROBOT_TYPE, - stepNumber: 0, + stepNumber: 1, commandTextData: { commands: [TC_COMMAND], } as any, @@ -279,9 +279,9 @@ describe('useRecoveryFullCommandText', () => { const { result } = renderHook(() => useRecoveryFullCommandText({ robotType: FLEX_ROBOT_TYPE, - stepNumber: 0, + stepNumber: 1, commandTextData: { - commands: [TC_COMMAND], + commands: [TC_COMMAND, {}], } as any, allRunDefs: [], }) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts index 6daf6998ae5..9fef84caca9 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts @@ -110,8 +110,9 @@ export function useRecoveryFullCommandText( ): string | null { const { commandTextData, stepNumber } = props + // TODO TOME: I think you are looking one command to far, for some reason. const relevantCmdIdx = stepNumber ?? -1 - const relevantCmd = commandTextData?.commands[relevantCmdIdx] ?? null + const relevantCmd = commandTextData?.commands[relevantCmdIdx - 1] ?? null const { commandText, kind } = useCommandTextString({ ...props, diff --git a/app/src/organisms/ErrorRecoveryFlows/index.tsx b/app/src/organisms/ErrorRecoveryFlows/index.tsx index fff4acb5426..68184d71b46 100644 --- a/app/src/organisms/ErrorRecoveryFlows/index.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/index.tsx @@ -1,4 +1,4 @@ -import { useMemo, useEffect, useState } from 'react' +import { useMemo, useLayoutEffect, useState } from 'react' import { useSelector } from 'react-redux' import { @@ -65,13 +65,15 @@ export function useErrorRecoveryFlows( runStatus: RunStatus | null ): UseErrorRecoveryResult { const [isERActive, setIsERActive] = useState(false) - const [hasSeenAwaitingRecovery, setHasSeenAwaitingRecovery] = useState(false) const failedCommand = useCurrentlyRecoveringFrom(runId, runStatus) // The complexity of this logic exists to persist Error Recovery screens past the server's definition of Error Recovery. // Ex, show a "cancelling run" modal in Error Recovery flows despite the robot no longer being in a recoverable state. - const isValidERStatus = (status: RunStatus | null): boolean => { + const isValidERStatus = ( + status: RunStatus | null, + hasSeenAwaitingRecovery: boolean + ): boolean => { return ( status !== null && (status === RUN_STATUS_AWAITING_RECOVERY || @@ -81,31 +83,20 @@ export function useErrorRecoveryFlows( // If client accesses a valid ER runs status besides AWAITING_RECOVERY but accesses it outside of Error Recovery flows, // don't show ER. - useEffect(() => { + useLayoutEffect(() => { if (runStatus != null) { const isAwaitingRecovery = VALID_ER_RUN_STATUSES.includes(runStatus) && - runStatus !== RUN_STATUS_STOP_REQUESTED + runStatus !== RUN_STATUS_STOP_REQUESTED && + failedCommand != null // Prevents one render cycle of an unknown failed command. - if (isAwaitingRecovery && !hasSeenAwaitingRecovery) { - setHasSeenAwaitingRecovery(true) + if (isAwaitingRecovery) { + setIsERActive(isValidERStatus(runStatus, true)) } else if (INVALID_ER_RUN_STATUSES.includes(runStatus)) { - setHasSeenAwaitingRecovery(false) + setIsERActive(isValidERStatus(runStatus, false)) } } - }, [runStatus, hasSeenAwaitingRecovery]) - - // Manage isERActive state, the condition that actually renders Error Recovery. - useEffect(() => { - const shouldBeActive = - isValidERStatus(runStatus) && - // The failedCommand is null when a stop is requested, but we still want to persist Error Recovery in specific circumstances. - (failedCommand !== null || runStatus === RUN_STATUS_STOP_REQUESTED) - - if (shouldBeActive !== isERActive) { - setIsERActive(shouldBeActive) - } - }, [runStatus, failedCommand, hasSeenAwaitingRecovery, isERActive]) + }, [runStatus, failedCommand]) return { isERActive, diff --git a/app/src/organisms/InterventionModal/PauseInterventionContent.tsx b/app/src/organisms/InterventionModal/PauseInterventionContent.tsx index 72f09e522b6..bb39eadb698 100644 --- a/app/src/organisms/InterventionModal/PauseInterventionContent.tsx +++ b/app/src/organisms/InterventionModal/PauseInterventionContent.tsx @@ -10,9 +10,8 @@ import { Flex, RESPONSIVENESS, SPACING, - TYPOGRAPHY, useInterval, - LegacyStyledText, + StyledText, } from '@opentrons/components' import { EMPTY_TIMESTAMP } from '/app/resources/runs' @@ -61,20 +60,6 @@ const PAUSE_HEADER_STYLE = css` } ` -const PAUSE_TEXT_STYLE = css` - ${TYPOGRAPHY.h1Default} - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - ${TYPOGRAPHY.level4HeaderSemiBold} - } -` - -const PAUSE_TIME_STYLE = css` - ${TYPOGRAPHY.h1Default} - @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { - ${TYPOGRAPHY.level1Header} - } -` - interface PauseHeaderProps { startedAt: string | null } @@ -95,10 +80,15 @@ function PauseHeader({ startedAt }: PauseHeaderProps): JSX.Element { return ( - + {i18n.format(t('paused_for'), 'capitalize')} - - {runTime} + + + {runTime} + ) } From b980fd213afac3925b8d050a74f47e87e2871b9b Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Wed, 20 Nov 2024 18:15:45 -0500 Subject: [PATCH 053/220] fix(app): fix infinitely hanging return to dashboard (#16923) Closes RABR-672 --- app/src/pages/ODD/RunSummary/index.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/pages/ODD/RunSummary/index.tsx b/app/src/pages/ODD/RunSummary/index.tsx index dee57377d79..9f84523505d 100644 --- a/app/src/pages/ODD/RunSummary/index.tsx +++ b/app/src/pages/ODD/RunSummary/index.tsx @@ -149,15 +149,15 @@ export function RunSummary(): JSX.Element { const { closeCurrentRun } = useCloseCurrentRun() // Close the current run only if it's active and then execute the onSuccess callback. Prefer this wrapper over // closeCurrentRun directly, since the callback is swallowed if currentRun is null. - const closeCurrentRunIfValid = (onSuccess?: () => void): void => { + const closeCurrentRunIfValid = (onSettled?: () => void): void => { if (isRunCurrent) { closeCurrentRun({ - onSuccess: () => { - onSuccess?.() + onSettled: () => { + onSettled?.() }, }) } else { - onSuccess?.() + onSettled?.() } } const [showRunFailedModal, setShowRunFailedModal] = useState(false) From a34f2be23e394d23e40c62799573f71aae851614 Mon Sep 17 00:00:00 2001 From: Alise Au <20424172+ahiuchingau@users.noreply.github.com> Date: Wed, 20 Nov 2024 18:17:02 -0500 Subject: [PATCH 054/220] feat(hardware-testing): flex stacker diagnostic script for axes (#16898) --- .../modules/flex_stacker_evt_qc/config.py | 32 +++++- .../modules/flex_stacker_evt_qc/driver.py | 107 ++++++++++++++++++ .../flex_stacker_evt_qc/test_l_axis.py | 70 ++++++++++++ .../flex_stacker_evt_qc/test_x_axis.py | 81 +++++++++++++ .../flex_stacker_evt_qc/test_z_axis.py | 34 ++++++ .../modules/flex_stacker_evt_qc/utils.py | 38 +++++++ 6 files changed, 361 insertions(+), 1 deletion(-) create mode 100644 hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py create mode 100644 hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_x_axis.py create mode 100644 hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_z_axis.py create mode 100644 hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py index e8bc37da959..a8fc32ca142 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py @@ -7,6 +7,9 @@ from . import ( test_connectivity, + test_z_axis, + test_x_axis, + test_l_axis, ) @@ -14,6 +17,9 @@ class TestSection(enum.Enum): """Test Section.""" CONNECTIVITY = "CONNECTIVITY" + Z_AXIS = "Z_AXIS" + L_AXIS = "L_AXIS" + X_AXIS = "X_AXIS" @dataclass @@ -29,6 +35,18 @@ class TestConfig: TestSection.CONNECTIVITY, test_connectivity.run, ), + ( + TestSection.Z_AXIS, + test_z_axis.run, + ), + ( + TestSection.L_AXIS, + test_l_axis.run, + ), + ( + TestSection.X_AXIS, + test_x_axis.run, + ), ] @@ -40,6 +58,18 @@ def build_report(test_name: str) -> CSVReport: CSVSection( title=TestSection.CONNECTIVITY.value, lines=test_connectivity.build_csv_lines(), - ) + ), + CSVSection( + title=TestSection.Z_AXIS.value, + lines=test_z_axis.build_csv_lines(), + ), + CSVSection( + title=TestSection.L_AXIS.value, + lines=test_l_axis.build_csv_lines(), + ), + CSVSection( + title=TestSection.X_AXIS.value, + lines=test_x_axis.build_csv_lines(), + ), ], ) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py index 04d833fa8a5..3005405e61b 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py @@ -26,6 +26,53 @@ class StackerInfo: sn: str +class StackerAxis(Enum): + """Stacker Axis.""" + + X = "X" + Z = "Z" + L = "L" + + def __str__(self) -> str: + """Name.""" + return self.name + + +class Direction(Enum): + """Direction.""" + + RETRACT = 0 + EXTENT = 1 + + def __str__(self) -> str: + """Convert to tag for clear logging.""" + return "negative" if self == Direction.RETRACT else "positive" + + def opposite(self) -> "Direction": + """Get opposite direction.""" + return Direction.EXTENT if self == Direction.RETRACT else Direction.RETRACT + + def distance(self, distance: float) -> float: + """Get signed distance, where retract direction is negative.""" + return distance * -1 if self == Direction.RETRACT else distance + + +@dataclass +class MoveParams: + """Move Parameters.""" + + max_speed: float | None = None + acceleration: float | None = None + max_speed_discont: float | None = None + + def __str__(self) -> str: + """Convert to string.""" + v = "V:" + str(self.max_speed) if self.max_speed else "" + a = "A:" + str(self.acceleration) if self.acceleration else "" + d = "D:" + str(self.max_speed_discont) if self.max_speed_discont else "" + return f"{v} {a} {d}".strip() + + class FlexStacker: """FLEX Stacker Driver.""" @@ -87,6 +134,66 @@ def set_serial_number(self, sn: str) -> None: return self._send_and_recv(f"M996 {sn}\n", "M996 OK") + def get_limit_switch(self, axis: StackerAxis, direction: Direction) -> bool: + """Get limit switch status. + + :return: True if limit switch is triggered, False otherwise + """ + if self._simulating: + return True + + _LS_RE = re.compile(rf"^M119 .*{axis.name}{direction.name[0]}:(\d) .* OK\n") + res = self._send_and_recv("M119\n", "M119 XE:") + match = _LS_RE.match(res) + assert match, f"Incorrect Response for limit switch: {res}" + return bool(int(match.group(1))) + + def get_platform_sensor(self, direction: Direction) -> bool: + """Get platform sensor status. + + :return: True if platform is present, False otherwise + """ + if self._simulating: + return True + + _LS_RE = re.compile(rf"^M121 .*{direction.name[0]}:(\d) .* OK\n") + res = self._send_and_recv("M121\n", "M119 E:") + match = _LS_RE.match(res) + assert match, f"Incorrect Response for platform sensor: {res}" + return bool(int(match.group(1))) + + def get_hopper_door_closed(self) -> bool: + """Get whether or not door is closed. + + :return: True if door is closed, False otherwise + """ + if self._simulating: + return True + + _LS_RE = re.compile(r"^M122 (\d) OK\n") + res = self._send_and_recv("M122\n", "M122 ") + match = _LS_RE.match(res) + assert match, f"Incorrect Response for hopper door switch: {res}" + return bool(int(match.group(1))) + + def move_in_mm( + self, axis: StackerAxis, distance: float, params: MoveParams | None = None + ) -> None: + """Move axis.""" + if self._simulating: + return + self._send_and_recv(f"G0 {axis.name}{distance} {params or ''}\n", "G0 OK") + + def move_to_limit_switch( + self, axis: StackerAxis, direction: Direction, params: MoveParams | None = None + ) -> None: + """Move until limit switch is triggered.""" + if self._simulating: + return + self._send_and_recv( + f"G5 {axis.name}{direction.value} {params or ''}\n", "G0 OK" + ) + def __del__(self) -> None: """Close serial port.""" if not self._simulating: diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py new file mode 100644 index 00000000000..d892bdc1fd7 --- /dev/null +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py @@ -0,0 +1,70 @@ +"""Test L Axis.""" +from typing import List, Union +from hardware_testing.data import ui +from hardware_testing.data.csv_report import ( + CSVReport, + CSVLine, + CSVLineRepeating, + CSVResult, +) + +from .driver import FlexStacker, StackerAxis, Direction + + +class LimitSwitchError(Exception): + """Limit Switch Error.""" + + pass + + +def build_csv_lines() -> List[Union[CSVLine, CSVLineRepeating]]: + """Build CSV Lines.""" + return [ + CSVLine("trigger-latch-switch", [CSVResult]), + CSVLine("release/open-latch", [CSVResult]), + CSVLine("hold/close-latch", [CSVResult]), + ] + + +def get_latch_held_switch(driver: FlexStacker) -> bool: + """Get limit switch.""" + held_switch = driver.get_limit_switch(StackerAxis.L, Direction.RETRACT) + print("(Held Switch triggered) : ", held_switch) + return held_switch + + +def close_latch(driver: FlexStacker) -> None: + """Close latch.""" + driver.move_to_limit_switch(StackerAxis.L, Direction.EXTENT) + + +def open_latch(driver: FlexStacker) -> None: + """Open latch.""" + driver.move_in_mm(StackerAxis.L, -22) + + +def run(driver: FlexStacker, report: CSVReport, section: str) -> None: + """Run.""" + if not get_latch_held_switch(driver): + print("Switch is not triggered, try to trigger it by closing latch...") + close_latch(driver) + if not get_latch_held_switch(driver): + print("!!! Held switch is still not triggered !!!") + report(section, "trigger-latch-switch", [CSVResult.FAIL]) + return + + report(section, "trigger-latch-switch", [CSVResult.PASS]) + + ui.print_header("Latch Release/Open") + open_latch(driver) + success = not get_latch_held_switch(driver) + report(section, "release/open-latch", [CSVResult.from_bool(success)]) + + ui.print_header("Latch Hold/Close") + if not success: + print("Latch must be open to close it") + report(section, "hold/close-latch", [CSVResult.FAIL]) + else: + close_latch(driver) + success = get_latch_held_switch(driver) + report(section, "hold/close-latch", [CSVResult.from_bool(success)]) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_x_axis.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_x_axis.py new file mode 100644 index 00000000000..802c12bcae5 --- /dev/null +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_x_axis.py @@ -0,0 +1,81 @@ +"""Test X Axis.""" +from typing import List, Union +from hardware_testing.data import ui +from hardware_testing.data.csv_report import ( + CSVReport, + CSVLine, + CSVLineRepeating, + CSVResult, +) + +from .utils import test_limit_switches_per_direction +from .driver import FlexStacker, StackerAxis, Direction + + +def build_csv_lines() -> List[Union[CSVLine, CSVLineRepeating]]: + """Build CSV Lines.""" + return [ + CSVLine( + "limit-switch-trigger-positive-untrigger-negative", [bool, bool, CSVResult] + ), + CSVLine( + "limit-switch-trigger-negative-untrigger-positive", [bool, bool, CSVResult] + ), + CSVLine( + "platform-sensor-trigger-positive-untrigger-negative", + [bool, bool, CSVResult], + ), + CSVLine( + "platform-sensor-trigger-negative-untrigger-positive", + [bool, bool, CSVResult], + ), + ] + + +def test_platform_sensors_for_direction( + driver: FlexStacker, direction: Direction, report: CSVReport, section: str +) -> None: + """Test platform sensors for a given direction.""" + ui.print_header(f"Platform Sensor - {direction} direction") + sensor_result = driver.get_platform_sensor(direction) + opposite_result = not driver.get_platform_sensor(direction.opposite()) + print(f"{direction} sensor triggered: {sensor_result}") + print(f"{direction.opposite()} sensor untriggered: {opposite_result}") + report( + section, + f"platform-sensor-trigger-{direction}-untrigger-{direction.opposite()}", + [ + sensor_result, + opposite_result, + CSVResult.from_bool(sensor_result and opposite_result), + ], + ) + + +def platform_is_removed(driver: FlexStacker) -> bool: + """Check if the platform is removed from the carrier.""" + plus_side = driver.get_platform_sensor(Direction.EXTENT) + minus_side = driver.get_platform_sensor(Direction.RETRACT) + return not plus_side and not minus_side + + +def run(driver: FlexStacker, report: CSVReport, section: str) -> None: + """Run.""" + if not driver._simulating and not platform_is_removed(driver): + print("FAILURE - Cannot start tests with platform on the carrier") + return + + test_limit_switches_per_direction( + driver, StackerAxis.X, Direction.EXTENT, report, section + ) + + if not driver._simulating: + ui.get_user_ready("Place the platform on the X carrier") + + test_platform_sensors_for_direction(driver, Direction.EXTENT, report, section) + + test_limit_switches_per_direction( + driver, StackerAxis.X, Direction.RETRACT, report, section + ) + + test_platform_sensors_for_direction(driver, Direction.RETRACT, report, section) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_z_axis.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_z_axis.py new file mode 100644 index 00000000000..58fc733e0dc --- /dev/null +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_z_axis.py @@ -0,0 +1,34 @@ +"""Test Z Axis.""" +from typing import List, Union +from hardware_testing.data.csv_report import ( + CSVReport, + CSVLine, + CSVLineRepeating, + CSVResult, +) + +from .utils import test_limit_switches_per_direction +from .driver import FlexStacker, StackerAxis, Direction + + +def build_csv_lines() -> List[Union[CSVLine, CSVLineRepeating]]: + """Build CSV Lines.""" + return [ + CSVLine( + "limit-switch-trigger-positive-untrigger-negative", [bool, bool, CSVResult] + ), + CSVLine( + "limit-switch-trigger-negative-untrigger-positive", [bool, bool, CSVResult] + ), + ] + + +def run(driver: FlexStacker, report: CSVReport, section: str) -> None: + """Run.""" + test_limit_switches_per_direction( + driver, StackerAxis.Z, Direction.EXTENT, report, section + ) + + test_limit_switches_per_direction( + driver, StackerAxis.Z, Direction.RETRACT, report, section + ) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py new file mode 100644 index 00000000000..2aca90c8886 --- /dev/null +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py @@ -0,0 +1,38 @@ +"""Utility functions for the Flex Stacker EVT QC module.""" +from hardware_testing.data import ui +from hardware_testing.data.csv_report import ( + CSVReport, + CSVResult, +) + +from .driver import FlexStacker, StackerAxis, Direction, MoveParams + + +def test_limit_switches_per_direction( + driver: FlexStacker, + axis: StackerAxis, + direction: Direction, + report: CSVReport, + section: str, + speed: float = 50.0, +) -> None: + """Sequence to test the limit switch for one direction.""" + ui.print_header(f"{axis} Limit Switch - {direction} direction") + # first make sure switch is not already triggered by moving in the opposite direction + if driver.get_limit_switch(axis, direction): + print(f"{direction} switch already triggered, moving away...\n") + SAFE_DISTANCE_MM = 10 + driver.move_in_mm(axis, direction.opposite().distance(SAFE_DISTANCE_MM)) + + # move until the limit switch is reached + print(f"moving towards {direction} limit switch...\n") + driver.move_to_limit_switch(axis, direction, MoveParams(max_speed=speed)) + result = driver.get_limit_switch(axis, direction) + opposite_result = not driver.get_limit_switch(axis, direction.opposite()) + print(f"{direction} switch triggered: {result}") + print(f"{direction.opposite()} switch untriggered: {opposite_result}") + report( + section, + f"limit-switch-trigger-{direction}-untrigger-{direction.opposite()}", + [result, opposite_result, CSVResult.from_bool(result and opposite_result)], + ) From b6b4526a70bcdaf34660c1f02e39235bbfb8d2aa Mon Sep 17 00:00:00 2001 From: emilyburghardt Date: Thu, 21 Nov 2024 08:41:00 -0700 Subject: [PATCH 055/220] docs(api): updated versioning page and API reference for mix (#16833) # Overview Updating versioning page and API reference for changes to mix behavior ## Test Plan and Hands on Testing http://sandbox.docs.opentrons.com/docs-lld-mix/v2/ ## Changelog 4 lines in versioning.rst to provide description of changes to mix behavior in version 2.21 2 lines in instrument_context.py to provide description of changes to mix behavior in version 2.21 ## Review requests no special requests ## Risk assessment low --- api/docs/v2/versioning.rst | 4 ++++ api/src/opentrons/protocol_api/instrument_context.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/api/docs/v2/versioning.rst b/api/docs/v2/versioning.rst index 72430f9104f..b808893dd53 100644 --- a/api/docs/v2/versioning.rst +++ b/api/docs/v2/versioning.rst @@ -134,6 +134,10 @@ This table lists the correspondence between Protocol API versions and robot soft Changes in API Versions ======================= +Version 2.21 +------------ +- :ref:`Liquid presence detection ` now only checks on the first aspiration of the :py:meth:`.mix` cycle. + Version 2.20 ------------ diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 3aee270e9a7..a8d0a4b5765 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -512,6 +512,8 @@ def mix( ``pipette.mix(1, location=wellplate['A1'])`` is a valid call, but ``pipette.mix(1, wellplate['A1'])`` is not. + .. versionchanged:: 2.21 + Does not repeatedly check for liquid presence. """ _log.debug( "mixing {}uL with {} repetitions in {} at rate={}".format( From 84a57ce957b72026bd6d24ec06af109f93470b53 Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Thu, 21 Nov 2024 10:30:33 -0600 Subject: [PATCH 056/220] test(analyses-snapshots): update analyses snapshot local instructions (#16918) --- analyses-snapshot-testing/Makefile | 52 +++++++++++++++++++++-------- analyses-snapshot-testing/README.md | 17 +++++++--- 2 files changed, 50 insertions(+), 19 deletions(-) diff --git a/analyses-snapshot-testing/Makefile b/analyses-snapshot-testing/Makefile index de5e0381131..6918d17bf3e 100644 --- a/analyses-snapshot-testing/Makefile +++ b/analyses-snapshot-testing/Makefile @@ -3,12 +3,12 @@ CACHEBUST ?= $(shell date +%s) ANALYSIS_REF ?= edge PROTOCOL_NAMES ?= all OVERRIDE_PROTOCOL_NAMES ?= all -OPENTRONS_VERSION ?= edge +LOCAL_IMAGE_TAG ?= local +ANALYZER_IMAGE_NAME ?= opentrons-analysis -export OPENTRONS_VERSION # used for server -export ANALYSIS_REF # used for analysis and snapshot test -export PROTOCOL_NAMES # used for the snapshot test -export OVERRIDE_PROTOCOL_NAMES # used for the snapshot test +export ANALYSIS_REF # tag, branch or commit for the opentrons repository. Used as the image tag for the analyzer image +export PROTOCOL_NAMES # tell the test which protocols to run +export OVERRIDE_PROTOCOL_NAMES # tell the test which override protocols to run ifeq ($(CI), true) PYTHON=python @@ -93,23 +93,47 @@ build-base-image: .PHONY: build-opentrons-analysis build-opentrons-analysis: - @echo "Building docker image for $(ANALYSIS_REF)" - @echo "The image will be named opentrons-analysis:$(ANALYSIS_REF)" - @echo "If you want to build a different version, run 'make build-opentrons-analysis ANALYSIS_REF='" - docker build --build-arg BASE_IMAGE_NAME=$(BASE_IMAGE_NAME) --build-arg ANALYSIS_REF=$(ANALYSIS_REF) --build-arg CACHEBUST=$(CACHEBUST) -t opentrons-analysis:$(ANALYSIS_REF) -f citools/Dockerfile.analyze citools/. + @echo "Building docker image for opentrons repository reference$(ANALYSIS_REF)" + @echo "The image will be named $(ANALYZER_IMAGE_NAME):$(ANALYSIS_REF)" + @echo "If you want to build a different version, run 'make build-opentrons-analysis ANALYSIS_REF='" + docker build --build-arg BASE_IMAGE_NAME=$(BASE_IMAGE_NAME) --build-arg ANALYSIS_REF=$(ANALYSIS_REF) --build-arg CACHEBUST=$(CACHEBUST) -t $(ANALYZER_IMAGE_NAME):$(ANALYSIS_REF) -f citools/Dockerfile.analyze citools/. -.PHONY: local-build -local-build: +.PHONY: build-local +build-local: @echo "Building docker image for your local opentrons code" - @echo "The image will be named opentrons-analysis:local" - @echo "For a fresh build, run 'make local-build NO_CACHE=1'" - docker build --build-arg BASE_IMAGE_NAME=$(BASE_IMAGE_NAME) $(BUILD_FLAGS) -t opentrons-analysis:local -f citools/Dockerfile.local .. || true + @echo "This image will be named $(ANALYZER_IMAGE_NAME):$(LOCAL_IMAGE_TAG)" + docker build --build-arg BASE_IMAGE_NAME=$(BASE_IMAGE_NAME) -t $(ANALYZER_IMAGE_NAME):$(LOCAL_IMAGE_TAG) -f citools/Dockerfile.local .. @echo "Build complete" +.PHONY: snapshot-test-local +snapshot-test-local: ANALYSIS_REF=$(LOCAL_IMAGE_TAG) +snapshot-test-local: build-base-image build-local + @echo "This target is overriding the ANALYSIS_REF to the LOCAL_IMAGE_TAG: $(LOCAL_IMAGE_TAG)" + @echo "ANALYSIS_REF is $(ANALYSIS_REF). The the test maps this env variable to the image tag." + @echo "The image the test will use is $(ANALYZER_IMAGE_NAME):$(LOCAL_IMAGE_TAG)" + @echo "PROTOCOL_NAMES is $(PROTOCOL_NAMES)" + @echo "OVERRIDE_PROTOCOL_NAMES is $(OVERRIDE_PROTOCOL_NAMES)" + $(PYTHON) -m pipenv run pytest -k analyses_snapshot_test -vv + +.PHONY: snapshot-test-update-local +snapshot-test-update-local: ANALYSIS_REF=$(LOCAL_IMAGE_TAG) +snapshot-test-update-local: build-base-image build-local + @echo "This target is overriding the ANALYSIS_REF to the LOCAL_IMAGE_TAG: $(LOCAL_IMAGE_TAG)" + @echo "ANALYSIS_REF is $(ANALYSIS_REF). The the test maps this env variable to the image tag." + @echo "The image the test will use is $(ANALYZER_IMAGE_NAME):$(LOCAL_IMAGE_TAG)" + @echo "PROTOCOL_NAMES is $(PROTOCOL_NAMES)" + @echo "OVERRIDE_PROTOCOL_NAMES is $(OVERRIDE_PROTOCOL_NAMES)" + $(PYTHON) -m pipenv run pytest -k analyses_snapshot_test --snapshot-update + .PHONY: generate-protocols generate-protocols: $(PYTHON) -m pipenv run python -m automation.data.protocol_registry +# Tools for running the robot server in a container + +OPENTRONS_VERSION ?= edge +export OPENTRONS_VERSION # used for the robot server image as the tag, branch or commit for the opentrons repository + .PHONY: build-rs build-rs: @echo "Building docker image for opentrons-robot-server:$(OPENTRONS_VERSION)" diff --git a/analyses-snapshot-testing/README.md b/analyses-snapshot-testing/README.md index 78423b8447f..03ce1d87518 100644 --- a/analyses-snapshot-testing/README.md +++ b/analyses-snapshot-testing/README.md @@ -4,7 +4,7 @@ 1. Follow the instructions in [DEV_SETUP.md](../DEV_SETUP.md) 1. `cd analyses-snapshot-testing` -1. use pyenv to install python 3.12 and set it as the local python version for this directory +1. use pyenv to install python 3.13 and set it as the local python version for this directory 1. `make setup` 1. Have docker installed and ready @@ -72,10 +72,17 @@ cd analyses-snapshot-testing \ > This copies in your local code to the container and runs the analyses battery against it. -1. `make build-base-image` -1. `make build-local` -1. `make local-snapshot-test` +`cd PYENV_ROOT && git pull` - make sure pyenv is up to date so you may install python 3.13.0 +`pyenv install 3.13.0` - install python 3.13.0 +`cd /analyses-snapshot-testing` - navigate to the analyses-snapshot-testing directory +`pyenv local 3.13.0` - set the local python version to 3.13.0 +`make setup` - install the requirements +`make snapshot-test-local` - this target builds the base image, builds the local code into the base image, then runs the analyses battery against the image you just created You have the option to specify one or many protocols to run the analyses on. This is also described above [Running the tests against specific protocols](#running-the-tests-against-specific-protocols) -- `make local-snapshot-test PROTOCOL_NAMES=Flex_S_v2_19_Illumina_DNA_PCR_Free OVERRIDE_PROTOCOL_NAMES=none` +- `make snapshot-test-local PROTOCOL_NAMES=Flex_S_v2_19_Illumina_DNA_PCR_Free OVERRIDE_PROTOCOL_NAMES=none` + +### Updating the snapshots locally + +- `make snapshot-test-update-local` - this target builds the base image, builds the local code into the base image, then runs the analyses battery against the image you just created, updating the snapshots by passing the `--update-snapshots` flag to the test From d8ad367eccbf88dbb5ed9dc49e3336e30ee53cb0 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Thu, 21 Nov 2024 11:37:06 -0500 Subject: [PATCH 057/220] fix(app): home gripper G during recovery (#16928) Closes RQA-3645 Recent gripper firmware changes add new degrees of G axis "home" state, and this ultimately causes the unsafe/ungripLabware command to fail, since a successful completion of the ungrip does not set the HOME flag. Because we ultimately want to ungrip the labware AND home the gripper G axis, let's use a parameterized home command instead. --- .../ErrorRecoveryFlows/hooks/useRecoveryCommands.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts index 65bd77eed0b..76110c22dc9 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts @@ -105,6 +105,7 @@ export function useRecoveryCommands({ } = useUpdateErrorRecoveryPolicy(runId) const { makeSuccessToast } = recoveryToastUtils + // TODO(jh, 11-21-24): Some commands return a 200 with an error body. We should catch these and propagate the error. const chainRunRecoveryCommands = useCallback( ( commands: CreateCommand[], @@ -354,8 +355,8 @@ export const HOME_PIPETTE_Z_AXES: CreateCommand = { } export const RELEASE_GRIPPER_JAW: CreateCommand = { - commandType: 'unsafe/ungripLabware', - params: {}, + commandType: 'home', + params: { axes: ['extensionJaw'] }, intent: 'fixit', } From ead4491c7d8f4bcb528cfdca4552b52ad2fa6f68 Mon Sep 17 00:00:00 2001 From: Alise Au <20424172+ahiuchingau@users.noreply.github.com> Date: Thu, 21 Nov 2024 12:20:16 -0500 Subject: [PATCH 058/220] feat(hardware-testing): stacker estop and door switch qc scripts (#16924) --- .../modules/flex_stacker_evt_qc/config.py | 20 ++++ .../modules/flex_stacker_evt_qc/driver.py | 14 +++ .../flex_stacker_evt_qc/test_door_switch.py | 36 ++++++++ .../modules/flex_stacker_evt_qc/test_estop.py | 91 +++++++++++++++++++ 4 files changed, 161 insertions(+) create mode 100644 hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_door_switch.py create mode 100644 hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py index a8fc32ca142..5b94e014f0f 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py @@ -10,6 +10,8 @@ test_z_axis, test_x_axis, test_l_axis, + test_door_switch, + test_estop, ) @@ -20,6 +22,8 @@ class TestSection(enum.Enum): Z_AXIS = "Z_AXIS" L_AXIS = "L_AXIS" X_AXIS = "X_AXIS" + DOOR_SWITCH = "DOOR_SWITCH" + ESTOP = "ESTOP" @dataclass @@ -47,6 +51,14 @@ class TestConfig: TestSection.X_AXIS, test_x_axis.run, ), + ( + TestSection.DOOR_SWITCH, + test_door_switch.run, + ), + ( + TestSection.ESTOP, + test_estop.run, + ), ] @@ -71,5 +83,13 @@ def build_report(test_name: str) -> CSVReport: title=TestSection.X_AXIS.value, lines=test_x_axis.build_csv_lines(), ), + CSVSection( + title=TestSection.DOOR_SWITCH.value, + lines=test_door_switch.build_csv_lines(), + ), + CSVSection( + title=TestSection.ESTOP.value, + lines=test_estop.build_csv_lines(), + ), ], ) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py index 3005405e61b..e219b68dae3 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py @@ -176,6 +176,20 @@ def get_hopper_door_closed(self) -> bool: assert match, f"Incorrect Response for hopper door switch: {res}" return bool(int(match.group(1))) + def get_estop(self) -> bool: + """Get E-Stop status. + + :return: True if E-Stop is triggered, False otherwise + """ + if self._simulating: + return True + + _LS_RE = re.compile(r"^M112 (\d) OK\n") + res = self._send_and_recv("M112\n", "M112 ") + match = _LS_RE.match(res) + assert match, f"Incorrect Response for E-Stop switch: {res}" + return bool(int(match.group(1))) + def move_in_mm( self, axis: StackerAxis, distance: float, params: MoveParams | None = None ) -> None: diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_door_switch.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_door_switch.py new file mode 100644 index 00000000000..ab104a10d01 --- /dev/null +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_door_switch.py @@ -0,0 +1,36 @@ +"""Test Door Switch.""" + + +from typing import List, Union +from hardware_testing.data import ui +from hardware_testing.data.csv_report import ( + CSVReport, + CSVLine, + CSVLineRepeating, + CSVResult, +) + +from .driver import FlexStacker + + +def build_csv_lines() -> List[Union[CSVLine, CSVLineRepeating]]: + """Build CSV Lines.""" + return [ + CSVLine("close-door", [CSVResult]), + CSVLine("open-door", [CSVResult]), + ] + + +def run(driver: FlexStacker, report: CSVReport, section: str) -> None: + """Run.""" + ui.print_header("Close Door") + if not driver._simulating: + ui.get_user_ready("Close the hopper door") + closed = driver.get_hopper_door_closed() + report(section, "close-door", [CSVResult.from_bool(closed)]) + + ui.print_header("Open Door") + if not driver._simulating: + ui.get_user_ready("Open the hopper door") + closed = driver.get_hopper_door_closed() + report(section, "open-door", [CSVResult.from_bool(not closed)]) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py new file mode 100644 index 00000000000..c0ee8b4150b --- /dev/null +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py @@ -0,0 +1,91 @@ +"""Test E-Stop.""" + + +from typing import List, Union +from hardware_testing.data import ui +from hardware_testing.data.csv_report import ( + CSVReport, + CSVLine, + CSVLineRepeating, + CSVResult, +) + +from .driver import FlexStacker, Direction, StackerAxis + + +def build_csv_lines() -> List[Union[CSVLine, CSVLineRepeating]]: + """Build CSV Lines.""" + return [ + CSVLine("trigger-estop", [CSVResult]), + CSVLine("x-move-disabled", [CSVResult]), + CSVLine("z-move-disabled", [CSVResult]), + CSVLine("l-move-disabled", [CSVResult]), + CSVLine("untrigger-estop", [CSVResult]), + ] + + +def axis_at_limit(driver: FlexStacker, axis: StackerAxis) -> Direction: + """Check which direction an axis is at the limit switch.""" + if axis is StackerAxis.L: + # L axis only has one limit switch + if driver.get_limit_switch(axis, Direction.RETRACT): + print(axis, "is at ", Direction.RETRACT, "limit switch") + return Direction.RETRACT + else: + for dir in Direction: + if driver.get_limit_switch(axis, dir): + print(axis, "is at ", dir, "limit switch") + return dir + raise RuntimeError(f"{axis} is not at any limit switch") + + +def run(driver: FlexStacker, report: CSVReport, section: str) -> None: + """Run.""" + if not driver._simulating and driver.get_estop(): + raise RuntimeError("E-Stop is either triggered/not attached.") + + x_limit = axis_at_limit(driver, StackerAxis.X) + z_limit = axis_at_limit(driver, StackerAxis.Z) + l_limit = axis_at_limit(driver, StackerAxis.L) + + ui.print_header("Trigger E-Stop") + if not driver._simulating: + ui.get_user_ready("Trigger the E-Stop") + + if not driver.get_estop(): + print("E-Stop is not triggered") + report(section, "trigger-estop", [CSVResult.FAIL]) + return + + report(section, "trigger-estop", [CSVResult.PASS]) + + print("try to move X axis...") + driver.move_in_mm(StackerAxis.X, x_limit.opposite().distance(10)) + print("X should not move") + report( + section, + "x-move-disabled", + [CSVResult.from_bool(driver.get_limit_switch(StackerAxis.X, x_limit))], + ) + + print("try to move Z axis...") + driver.move_in_mm(StackerAxis.Z, z_limit.opposite().distance(10)) + print("Z should not move") + report( + section, + "z-move-disabled", + [CSVResult.from_bool(driver.get_limit_switch(StackerAxis.Z, z_limit))], + ) + + print("try to move L axis...") + driver.move_in_mm(StackerAxis.L, l_limit.opposite().distance(10)) + print("L should not move") + report( + section, + "l-move-disabled", + [CSVResult.from_bool(driver.get_limit_switch(StackerAxis.L, l_limit))], + ) + + if not driver._simulating: + ui.get_user_ready("Untrigger the E-Stop") + report(section, "untrigger-estop", [CSVResult.from_bool(not driver.get_estop())]) From da74897b48452a237387040b8d43ab1b8ab80224 Mon Sep 17 00:00:00 2001 From: Anthony Ngumah <68346382+AnthonyNASC20@users.noreply.github.com> Date: Thu, 21 Nov 2024 12:43:42 -0500 Subject: [PATCH 059/220] fix(abr-testing): unify all script compatibility with same ip file (#16922) # Overview Ensures data collection scripts can all use the same IPs.json file when connecting to robots --------- Co-authored-by: rclarke0 --- .../data_collection/abr_calibration_logs.py | 3 ++- .../abr_testing/data_collection/get_run_logs.py | 3 ++- .../hardware_testing/scripts/ABRAsairScript.py | 12 +++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/abr-testing/abr_testing/data_collection/abr_calibration_logs.py b/abr-testing/abr_testing/data_collection/abr_calibration_logs.py index 75b73b8f16b..46cc409e53d 100644 --- a/abr-testing/abr_testing/data_collection/abr_calibration_logs.py +++ b/abr-testing/abr_testing/data_collection/abr_calibration_logs.py @@ -286,6 +286,7 @@ def run( ip_json_file = os.path.join(storage_directory, "IPs.json") try: ip_file = json.load(open(ip_json_file)) + robot_dict = ip_file.get("ip_address_list") except FileNotFoundError: print(f"Add .json file with robot IPs to: {storage_directory}.") sys.exit() @@ -294,7 +295,7 @@ def run( ip_or_all = input("IP Address or ALL: ") calibration_data = [] if ip_or_all.upper() == "ALL": - ip_address_list = ip_file["ip_address_list"] + ip_address_list = list(robot_dict.keys()) for ip in ip_address_list: saved_file_path, calibration = read_robot_logs.get_calibration_offsets( ip, storage_directory diff --git a/abr-testing/abr_testing/data_collection/get_run_logs.py b/abr-testing/abr_testing/data_collection/get_run_logs.py index 964a8a06e18..fe89f9f1543 100644 --- a/abr-testing/abr_testing/data_collection/get_run_logs.py +++ b/abr-testing/abr_testing/data_collection/get_run_logs.py @@ -104,10 +104,11 @@ def get_all_run_logs( ip_json_file = os.path.join(storage_directory, "IPs.json") try: ip_file = json.load(open(ip_json_file)) + robot_dict = ip_file.get("ip_address_list") except FileNotFoundError: print(f"Add .json file with robot IPs to: {storage_directory}.") sys.exit() - ip_address_list = ip_file["ip_address_list"] + ip_address_list = list(robot_dict.keys()) runs_from_storage = read_robot_logs.get_run_ids_from_google_drive(google_drive) for ip in ip_address_list: runs = get_run_ids_from_robot(ip) diff --git a/hardware-testing/hardware_testing/scripts/ABRAsairScript.py b/hardware-testing/hardware_testing/scripts/ABRAsairScript.py index 41c70ed35a2..710d3c17578 100644 --- a/hardware-testing/hardware_testing/scripts/ABRAsairScript.py +++ b/hardware-testing/hardware_testing/scripts/ABRAsairScript.py @@ -2,6 +2,7 @@ import sys import paramiko as pmk import time +import json import multiprocessing from typing import Optional, List, Any @@ -69,11 +70,10 @@ def run(file_name: str) -> List[Any]: robot_ips = [] robot_names = [] with open(file_name) as file: - for line in file.readlines(): - info = line.split(",") - if "Y" in info[2]: - robot_ips.append(info[0]) - robot_names.append(info[1]) + file_dict = json.load(file) + robot_dict = file_dict.get("ip_address_list") + robot_ips = list(robot_dict.keys()) + robot_names = list(robot_dict.values()) print("Executing Script on All Robots:") # Launch the processes for each robot. processes = [] @@ -89,10 +89,8 @@ def run(file_name: str) -> List[Any]: # Wait for all processes to finish. file_name = sys.argv[1] processes = run(file_name) - for process in processes: process.start() time.sleep(20) - for process in processes: process.join() From 87c2ffd32fd81308beb51b793de903bfe8b3eb86 Mon Sep 17 00:00:00 2001 From: Anthony Ngumah <68346382+AnthonyNASC20@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:24:33 -0500 Subject: [PATCH 060/220] feat(abr-testing,opentrons): make file command to push desired folders to list of robot ips (#16909) # Overview Adds the ability to push one or more folders to one or more roots at once ## Test Plan and Hands on Testing Manually tested functionality of command ## Changelog Added push-folder definition to opentrons makefile --------- Co-authored-by: rclarke0 Co-authored-by: Rhyann Clarke <146747548+rclarke0@users.noreply.github.com> --- Makefile | 4 + abr-testing/abr_testing/tools/make_push.py | 95 ++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 abr-testing/abr_testing/tools/make_push.py diff --git a/Makefile b/Makefile index d3ddd15f359..7a5bfc7a7e9 100755 --- a/Makefile +++ b/Makefile @@ -152,6 +152,10 @@ push: sleep 1 $(MAKE) -C $(UPDATE_SERVER_DIR) push +.PHONY: push-folder +PUSH_HELPER := abr-testing/abr_testing/tools/make_push.py +push-folder: + $(OT_PYTHON) $(PUSH_HELPER) .PHONY: push-ot3 push-ot3: diff --git a/abr-testing/abr_testing/tools/make_push.py b/abr-testing/abr_testing/tools/make_push.py new file mode 100644 index 00000000000..28a69b11103 --- /dev/null +++ b/abr-testing/abr_testing/tools/make_push.py @@ -0,0 +1,95 @@ +"""Push one or more folders to one or more robots.""" +import subprocess +import multiprocessing +import json + +global folders +# Opentrons folders that can be pushed to robot +folders = [ + "abr-testing", + "hardware-testing", + "abr-testing + hardware-testing", + "other", +] + + +def push_subroutine(cmd: str) -> None: + """Pushes specified folder to specified robot.""" + try: + subprocess.run(cmd) + except Exception: + print("failed to push folder") + raise + + +def main(folder_to_push: str, robot_to_push: str) -> int: + """Main process!""" + cmd = "make -C {folder} push-ot3 host={ip}" + robot_ip_path = "" + push_cmd = "" + folder_int = int(folder_to_push) + if folders[folder_int].lower() == "abr-testing + hardware-testing": + if robot_to_push.lower() == "all": + robot_ip_path = input("Path to robot ips: ") + with open(robot_ip_path, "r") as ip_file: + robot_json = json.load(ip_file) + robot_ips_dict = robot_json.get("ip_address_list") + robot_ips = list(robot_ips_dict.keys()) + ip_file.close() + else: + robot_ips = [robot_to_push] + for folder_name in folders[:-2]: + # Push abr-testing and hardware-testing folders to all robots + for robot in robot_ips: + print_proc = multiprocessing.Process( + target=print, args=(f"Pushing {folder_name} to {robot}!\n\n",) + ) + print_proc.start() + print_proc.join() + push_cmd = cmd.format(folder=folder_name, ip=robot) + process = multiprocessing.Process( + target=push_subroutine, args=(push_cmd,) + ) + process.start() + process.join() + print_proc = multiprocessing.Process(target=print, args=("Done!\n\n",)) + print_proc.start() + print_proc.join() + else: + + if folder_int == (len(folders) - 1): + folder_name = input("Which folder? ") + else: + folder_name = folders[folder_int] + if robot_to_push.lower() == "all": + robot_ip_path = input("Path to robot ips: ") + with open(robot_ip_path, "r") as ip_file: + robot_json = json.load(ip_file) + robot_ips = robot_json.get("ip_address_list") + ip_file.close() + else: + robot_ips = [robot_to_push] + + # Push folder to robots + for robot in robot_ips: + print_proc = multiprocessing.Process( + target=print, args=(f"Pushing {folder_name} to {robot}!\n\n",) + ) + print_proc.start() + print_proc.join() + push_cmd = cmd.format(folder=folder_name, ip=robot) + process = multiprocessing.Process(target=push_subroutine, args=(push_cmd,)) + process.start() + process.join() + print_proc = multiprocessing.Process(target=print, args=("Done!\n\n",)) + print_proc.start() + print_proc.join() + return 0 + + +if __name__ == "__main__": + for i, folder in enumerate(folders): + print(f"{i}) {folder}") + folder_to_push = input("Please Select a Folder to Push: ") + robot_to_push = input("Type in robots ip (type all for all): ") + print(main(folder_to_push, robot_to_push)) From f37ef0ab64fed89484c19320c34b1b6ef2639fa3 Mon Sep 17 00:00:00 2001 From: Anthony Ngumah <68346382+AnthonyNASC20@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:40:13 -0500 Subject: [PATCH 061/220] fix(abr-testing): Update simulate (#16929) # Overview Fixes the issue of make-simulate not simulating liquid setups in protocols folder --------- Co-authored-by: rclarke0 --- abr-testing/abr_testing/protocol_simulation/abr_sim_check.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/abr-testing/abr_testing/protocol_simulation/abr_sim_check.py b/abr-testing/abr_testing/protocol_simulation/abr_sim_check.py index f55c9ebb51f..76852f70b9c 100644 --- a/abr-testing/abr_testing/protocol_simulation/abr_sim_check.py +++ b/abr-testing/abr_testing/protocol_simulation/abr_sim_check.py @@ -46,7 +46,7 @@ def get_files() -> Tuple[Dict[str, Dict[str, Union[str, Path]]], List[Path]]: labware_defs = [] for root, directories, _ in os.walk(root_dir): for directory in directories: - if directory == "active_protocols": + if directory not in exclude: active_dir = os.path.join(root, directory) for file in os.listdir( active_dir @@ -100,7 +100,6 @@ def get_files() -> Tuple[Dict[str, Dict[str, Union[str, Path]]], List[Path]]: exclude = [ "__init__.py", "helpers.py", - "shared_vars_and_funcs.py", ] print("Simulating Protocols") file_dict, labware_defs = get_files() From fe29ce4cae59b1bf301e77be13946a6429ecf68b Mon Sep 17 00:00:00 2001 From: Sanniti Pimpley Date: Thu, 21 Nov 2024 13:49:26 -0500 Subject: [PATCH 062/220] feat(shared-data, api): remove 'default' from all '..ByVolume' properties (#16878) Modifies the schema from ticket AUTH-832, removes `default` key and refactors `byVolume` property schema --------- Co-authored-by: jbleon95 --- .../protocol_api/_liquid_properties.py | 24 +- api/tests/opentrons/conftest.py | 14 +- .../protocol_api/test_liquid_class.py | 7 +- .../test_liquid_class_properties.py | 24 +- .../test_liquid_classes.py | 2 +- shared-data/command/schemas/11.json | 264 ++++-- .../js/__tests__/liquidClassSchema.test.ts | 66 ++ .../liquid-class/definitions/1/water.json | 859 ++++++++---------- .../fixtures/{ => 1}/fixture_glycerol50.json | 68 +- shared-data/liquid-class/schemas/1.json | 73 +- .../liquid_classes/liquid_class_definition.py | 6 +- shared-data/tsconfig-data.json | 1 + shared-data/tsconfig.json | 1 + 13 files changed, 733 insertions(+), 676 deletions(-) create mode 100644 shared-data/js/__tests__/liquidClassSchema.test.ts rename shared-data/liquid-class/fixtures/{ => 1}/fixture_glycerol50.json (82%) diff --git a/api/src/opentrons/protocol_api/_liquid_properties.py b/api/src/opentrons/protocol_api/_liquid_properties.py index 06a23a29eb8..5aaed51edbe 100644 --- a/api/src/opentrons/protocol_api/_liquid_properties.py +++ b/api/src/opentrons/protocol_api/_liquid_properties.py @@ -1,6 +1,6 @@ from dataclasses import dataclass from numpy import interp -from typing import Optional, Dict, Sequence, Union, Tuple +from typing import Optional, Dict, Sequence, Tuple from opentrons_shared_data.liquid_classes.liquid_class_definition import ( AspirateProperties as SharedDataAspirateProperties, @@ -23,12 +23,9 @@ class LiquidHandlingPropertyByVolume: - def __init__(self, properties_by_volume: Dict[str, float]) -> None: - self._default = properties_by_volume["default"] + def __init__(self, by_volume_property: Sequence[Tuple[float, float]]) -> None: self._properties_by_volume: Dict[float, float] = { - float(volume): value - for volume, value in properties_by_volume.items() - if volume != "default" + float(volume): value for volume, value in by_volume_property } # Volumes need to be sorted for proper interpolation of non-defined volumes, and the # corresponding values need to be in the same order for them to be interpolated correctly @@ -36,18 +33,17 @@ def __init__(self, properties_by_volume: Dict[str, float]) -> None: self._sorted_values: Tuple[float, ...] = () self._sort_volume_and_values() - @property - def default(self) -> float: - """Get the default value not associated with any volume for this property.""" - return self._default - - def as_dict(self) -> Dict[Union[float, str], float]: + def as_dict(self) -> Dict[float, float]: """Get a dictionary representation of all set volumes and values along with the default.""" - return self._properties_by_volume | {"default": self._default} + return self._properties_by_volume def get_for_volume(self, volume: float) -> float: """Get a value by volume for this property. Volumes not defined will be interpolated between set volumes.""" validated_volume = validation.ensure_positive_float(volume) + if len(self._properties_by_volume) == 0: + raise ValueError( + "No properties found for any volumes. Cannot interpolate for the given volume." + ) try: return self._properties_by_volume[validated_volume] except KeyError: @@ -66,9 +62,9 @@ def delete_for_volume(self, volume: float) -> None: """Remove an existing volume and value from the property.""" try: del self._properties_by_volume[volume] - self._sort_volume_and_values() except KeyError: raise KeyError(f"No value set for volume {volume} uL") + self._sort_volume_and_values() def _sort_volume_and_values(self) -> None: """Sort volume in increasing order along with corresponding values in matching order.""" diff --git a/api/tests/opentrons/conftest.py b/api/tests/opentrons/conftest.py index cf8fdd0e97c..e8ca2b059ff 100755 --- a/api/tests/opentrons/conftest.py +++ b/api/tests/opentrons/conftest.py @@ -804,10 +804,10 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: namespace="test-fixture-2", byPipette=[ ByPipetteSetting( - pipetteModel="p20_single_gen2", + pipetteModel="flex_1channel_50", byTipType=[ ByTipTypeSetting( - tiprack="opentrons_96_tiprack_20ul", + tiprack="opentrons_flex_96_tiprack_50ul", aspirate=AspirateProperties( submerge=Submerge( positionReference=PositionReference.LIQUID_MENISCUS, @@ -821,13 +821,13 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: positionReference=PositionReference.WELL_TOP, offset=Coordinate(x=0, y=0, z=5), speed=100, - airGapByVolume={"default": 2, "5": 3, "10": 4}, + airGapByVolume=[(5.0, 3.0), (10.0, 4.0)], touchTip=TouchTipProperties(enable=False), delay=DelayProperties(enable=False), ), positionReference=PositionReference.WELL_BOTTOM, offset=Coordinate(x=0, y=0, z=-5), - flowRateByVolume={"default": 50, "10": 40, "20": 30}, + flowRateByVolume=[(10.0, 40.0), (20.0, 30.0)], preWet=True, mix=MixProperties(enable=False), delay=DelayProperties( @@ -845,16 +845,16 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: positionReference=PositionReference.WELL_TOP, offset=Coordinate(x=0, y=0, z=5), speed=100, - airGapByVolume={"default": 2, "5": 3, "10": 4}, + airGapByVolume=[(5.0, 3.0), (10.0, 4.0)], blowout=BlowoutProperties(enable=False), touchTip=TouchTipProperties(enable=False), delay=DelayProperties(enable=False), ), positionReference=PositionReference.WELL_BOTTOM, offset=Coordinate(x=0, y=0, z=-5), - flowRateByVolume={"default": 50, "10": 40, "20": 30}, + flowRateByVolume=[(10.0, 40.0), (20.0, 30.0)], mix=MixProperties(enable=False), - pushOutByVolume={"default": 5, "10": 7, "20": 10}, + pushOutByVolume=[(10.0, 7.0), (20.0, 10.0)], delay=DelayProperties(enable=False), ), multiDispense=None, diff --git a/api/tests/opentrons/protocol_api/test_liquid_class.py b/api/tests/opentrons/protocol_api/test_liquid_class.py index 463889b3da6..7118080eda0 100644 --- a/api/tests/opentrons/protocol_api/test_liquid_class.py +++ b/api/tests/opentrons/protocol_api/test_liquid_class.py @@ -21,9 +21,8 @@ def test_get_for_pipette_and_tip( ) -> None: """It should get the properties for the specified pipette and tip.""" liq_class = LiquidClass.create(minimal_liquid_class_def2) - result = liq_class.get_for("p20_single_gen2", "opentrons_96_tiprack_20ul") + result = liq_class.get_for("flex_1channel_50", "opentrons_flex_96_tiprack_50ul") assert result.aspirate.flow_rate_by_volume.as_dict() == { - "default": 50.0, 10.0: 40.0, 20.0: 30.0, } @@ -36,7 +35,7 @@ def test_get_for_raises_for_incorrect_pipette_or_tip( liq_class = LiquidClass.create(minimal_liquid_class_def2) with pytest.raises(ValueError): - liq_class.get_for("p20_single_gen2", "no_such_tiprack") + liq_class.get_for("flex_1channel_50", "no_such_tiprack") with pytest.raises(ValueError): - liq_class.get_for("p300_single", "opentrons_96_tiprack_20ul") + liq_class.get_for("no_such_pipette", "opentrons_flex_96_tiprack_50ul") diff --git a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py index e1e9b540149..f7033afb5be 100644 --- a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py +++ b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py @@ -16,7 +16,7 @@ def test_build_aspirate_settings() -> None: """It should convert the shared data aspirate settings to the PAPI type.""" - fixture_data = load_shared_data("liquid-class/fixtures/fixture_glycerol50.json") + fixture_data = load_shared_data("liquid-class/fixtures/1/fixture_glycerol50.json") liquid_class_model = LiquidClassSchemaV1.parse_raw(fixture_data) aspirate_data = liquid_class_model.byPipette[0].byTipType[0].aspirate @@ -32,7 +32,6 @@ def test_build_aspirate_settings() -> None: assert aspirate_properties.retract.offset == Coordinate(x=0, y=0, z=5) assert aspirate_properties.retract.speed == 100 assert aspirate_properties.retract.air_gap_by_volume.as_dict() == { - "default": 2.0, 5.0: 3.0, 10.0: 4.0, } @@ -45,7 +44,7 @@ def test_build_aspirate_settings() -> None: assert aspirate_properties.position_reference.value == "well-bottom" assert aspirate_properties.offset == Coordinate(x=0, y=0, z=-5) - assert aspirate_properties.flow_rate_by_volume.as_dict() == {"default": 50.0} + assert aspirate_properties.flow_rate_by_volume.as_dict() == {10: 50.0} assert aspirate_properties.pre_wet is True assert aspirate_properties.mix.enabled is True assert aspirate_properties.mix.repetitions == 3 @@ -56,7 +55,7 @@ def test_build_aspirate_settings() -> None: def test_build_single_dispense_settings() -> None: """It should convert the shared data single dispense settings to the PAPI type.""" - fixture_data = load_shared_data("liquid-class/fixtures/fixture_glycerol50.json") + fixture_data = load_shared_data("liquid-class/fixtures/1/fixture_glycerol50.json") liquid_class_model = LiquidClassSchemaV1.parse_raw(fixture_data) single_dispense_data = liquid_class_model.byPipette[0].byTipType[0].singleDispense @@ -75,7 +74,6 @@ def test_build_single_dispense_settings() -> None: assert single_dispense_properties.retract.offset == Coordinate(x=0, y=0, z=5) assert single_dispense_properties.retract.speed == 100 assert single_dispense_properties.retract.air_gap_by_volume.as_dict() == { - "default": 2.0, 5.0: 3.0, 10.0: 4.0, } @@ -93,7 +91,6 @@ def test_build_single_dispense_settings() -> None: assert single_dispense_properties.position_reference.value == "well-bottom" assert single_dispense_properties.offset == Coordinate(x=0, y=0, z=-5) assert single_dispense_properties.flow_rate_by_volume.as_dict() == { - "default": 50.0, 10.0: 40.0, 20.0: 30.0, } @@ -101,7 +98,6 @@ def test_build_single_dispense_settings() -> None: assert single_dispense_properties.mix.repetitions == 3 assert single_dispense_properties.mix.volume == 15 assert single_dispense_properties.push_out_by_volume.as_dict() == { - "default": 5.0, 10.0: 7.0, 20.0: 10.0, } @@ -111,7 +107,7 @@ def test_build_single_dispense_settings() -> None: def test_build_multi_dispense_settings() -> None: """It should convert the shared data multi dispense settings to the PAPI type.""" - fixture_data = load_shared_data("liquid-class/fixtures/fixture_glycerol50.json") + fixture_data = load_shared_data("liquid-class/fixtures/1/fixture_glycerol50.json") liquid_class_model = LiquidClassSchemaV1.parse_raw(fixture_data) multi_dispense_data = liquid_class_model.byPipette[0].byTipType[0].multiDispense @@ -131,7 +127,6 @@ def test_build_multi_dispense_settings() -> None: assert multi_dispense_properties.retract.offset == Coordinate(x=0, y=0, z=5) assert multi_dispense_properties.retract.speed == 100 assert multi_dispense_properties.retract.air_gap_by_volume.as_dict() == { - "default": 2.0, 5.0: 3.0, 10.0: 4.0, } @@ -148,16 +143,13 @@ def test_build_multi_dispense_settings() -> None: assert multi_dispense_properties.position_reference.value == "well-bottom" assert multi_dispense_properties.offset == Coordinate(x=0, y=0, z=-5) assert multi_dispense_properties.flow_rate_by_volume.as_dict() == { - "default": 50.0, 10.0: 40.0, 20.0: 30.0, } assert multi_dispense_properties.conditioning_by_volume.as_dict() == { - "default": 10.0, 5.0: 5.0, } assert multi_dispense_properties.disposal_by_volume.as_dict() == { - "default": 2.0, 5.0: 3.0, } assert multi_dispense_properties.delay.enabled is True @@ -174,14 +166,12 @@ def test_build_multi_dispense_settings_none( def test_liquid_handling_property_by_volume() -> None: """It should create a class that can interpolate values and add and delete new points.""" - subject = LiquidHandlingPropertyByVolume({"default": 42, "5": 50, "10.0": 250}) - assert subject.as_dict() == {"default": 42, 5.0: 50, 10.0: 250} - assert subject.default == 42.0 + subject = LiquidHandlingPropertyByVolume([(5.0, 50.0), (10.0, 250.0)]) + assert subject.as_dict() == {5.0: 50, 10.0: 250} assert subject.get_for_volume(7) == 130.0 subject.set_for_volume(volume=7, value=175.5) assert subject.as_dict() == { - "default": 42, 5.0: 50, 10.0: 250, 7.0: 175.5, @@ -189,7 +179,7 @@ def test_liquid_handling_property_by_volume() -> None: assert subject.get_for_volume(7) == 175.5 subject.delete_for_volume(7) - assert subject.as_dict() == {"default": 42, 5.0: 50, 10.0: 250} + assert subject.as_dict() == {5.0: 50, 10.0: 250} assert subject.get_for_volume(7) == 130.0 with pytest.raises(KeyError, match="No value set for volume"): diff --git a/api/tests/opentrons/protocol_api_integration/test_liquid_classes.py b/api/tests/opentrons/protocol_api_integration/test_liquid_classes.py index 97de9fb0c48..20bbd2b646c 100644 --- a/api/tests/opentrons/protocol_api_integration/test_liquid_classes.py +++ b/api/tests/opentrons/protocol_api_integration/test_liquid_classes.py @@ -32,7 +32,7 @@ def test_liquid_class_creation_and_property_fetching( assert ( water.get_for( pipette_load_name, tiprack.load_name - ).dispense.flow_rate_by_volume.default + ).dispense.flow_rate_by_volume.get_for_volume(1) == 50 ) assert ( diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index cc2202f850d..1dbe7a1bca4 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -1940,16 +1940,35 @@ "airGapByVolume": { "title": "Airgapbyvolume", "description": "Settings for air gap keyed by target aspiration volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2073,16 +2092,35 @@ "flowRateByVolume": { "title": "Flowratebyvolume", "description": "Settings for flow rate keyed by target aspiration volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2218,16 +2256,35 @@ "airGapByVolume": { "title": "Airgapbyvolume", "description": "Settings for air gap keyed by target aspiration volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2313,16 +2370,35 @@ "flowRateByVolume": { "title": "Flowratebyvolume", "description": "Settings for flow rate keyed by target dispense volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2339,16 +2415,35 @@ "pushOutByVolume": { "title": "Pushoutbyvolume", "description": "Settings for pushout keyed by target dispense volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2417,16 +2512,35 @@ "flowRateByVolume": { "title": "Flowratebyvolume", "description": "Settings for flow rate keyed by target dispense volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2434,16 +2548,35 @@ "conditioningByVolume": { "title": "Conditioningbyvolume", "description": "Settings for conditioning volume keyed by target dispense volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } @@ -2451,16 +2584,35 @@ "disposalByVolume": { "title": "Disposalbyvolume", "description": "Settings for disposal volume keyed by target dispense volume.", - "type": "object", - "additionalProperties": { - "anyOf": [ + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ { - "type": "integer", - "minimum": 0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] }, { - "type": "number", - "minimum": 0.0 + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] } ] } diff --git a/shared-data/js/__tests__/liquidClassSchema.test.ts b/shared-data/js/__tests__/liquidClassSchema.test.ts new file mode 100644 index 00000000000..75e477637c9 --- /dev/null +++ b/shared-data/js/__tests__/liquidClassSchema.test.ts @@ -0,0 +1,66 @@ +/** Ensure that the liquid class schema itself functions as intended, + * and that all v1 liquid class fixtures will validate */ +import Ajv from 'ajv' +import path from 'path' +import glob from 'glob' +import { describe, expect, it } from 'vitest' +import liquidClassSchemaV1 from '../../liquid-class/schemas/1.json' + +const fixtureV1Glob = path.join( + __dirname, + '../../liquid-class/fixtures/1/*.json' +) +const defV1Glob = path.join( + __dirname, + '../../liquid-class/definitions/1/*.json' +) + +const ajv = new Ajv({ allErrors: true, jsonPointers: true }) + +const validateSchemaV1 = ajv.compile(liquidClassSchemaV1) + +describe('validate v1 liquid class definitions and fixtures', () => { + const fixtures = glob.sync(fixtureV1Glob) + + fixtures.forEach(fixturePath => { + const fixtureDef = require(fixturePath) + + it('fixture validates against schema', () => { + const valid = validateSchemaV1(fixtureDef) + const validationErrors = validateSchemaV1.errors + + if (validationErrors) { + console.log( + path.parse(fixturePath).base + + ' ' + + JSON.stringify(validationErrors, null, 4) + ) + } + + expect(validationErrors).toBe(null) + expect(valid).toBe(true) + }) + }) + + const defs = glob.sync(defV1Glob) + + defs.forEach(defPath => { + const liquidClassDef = require(defPath) + + it('liquid class definition validates against v1 schema', () => { + const valid = validateSchemaV1(liquidClassDef) + const validationErrors = validateSchemaV1.errors + + if (validationErrors) { + console.log( + path.parse(defPath).base + + ' ' + + JSON.stringify(validationErrors, null, 4) + ) + } + + expect(validationErrors).toBe(null) + expect(valid).toBe(true) + }) + }) +}) diff --git a/shared-data/liquid-class/definitions/1/water.json b/shared-data/liquid-class/definitions/1/water.json index b5fc2f75486..b84e1676d5b 100644 --- a/shared-data/liquid-class/definitions/1/water.json +++ b/shared-data/liquid-class/definitions/1/water.json @@ -33,12 +33,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 0.1, - "1": 0.1, - "49.9": 0.1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 0.1], + [49.9, 0.1], + [50.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -60,12 +59,11 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 50, - "1": 35, - "10": 24, - "50": 35 - }, + "flowRateByVolume": [ + [1.0, 35.0], + [10.0, 24.0], + [50.0, 35.0] + ], "preWet": false, "mix": { "enable": false, @@ -105,12 +103,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 0.1, - "1": 0.1, - "49.9": 0.1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 0.1], + [49.9, 0.1], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -135,9 +132,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 50 - }, + "flowRateByVolume": [[1.0, 50.0]], "mix": { "enable": false, "params": { @@ -145,14 +140,13 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 2, - "1": 7, - "4.999": 7, - "5": 2, - "10": 2, - "50": 2 - }, + "pushOutByVolume": [ + [1.0, 7.0], + [4.999, 7.0], + [5.0, 2.0], + [10.0, 2.0], + [50.0, 2.0] + ], "delay": { "enable": true, "params": { @@ -184,12 +178,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 0.1, - "1": 0.1, - "49.9": 0.1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 0.1], + [49.9, 0.1], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -214,21 +207,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 50 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, + "flowRateByVolume": [[50.0, 50.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], "delay": { "enable": true, "params": { @@ -268,12 +257,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 0.1, - "1": 0.1, - "49.9": 0.1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 0.1], + [49.9, 0.1], + [50.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -295,12 +283,11 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 50, - "1": 35, - "10": 24, - "50": 35 - }, + "flowRateByVolume": [ + [1.0, 35.0], + [10.0, 24.0], + [50.0, 35.0] + ], "preWet": false, "mix": { "enable": false, @@ -340,12 +327,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 0.1, - "1": 0.1, - "49.9": 0.1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 0.1], + [49.9, 0.1], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -370,9 +356,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 50 - }, + "flowRateByVolume": [[1.0, 50.0]], "mix": { "enable": false, "params": { @@ -380,14 +364,13 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 2, - "1": 7, - "4.999": 7, - "5": 2, - "10": 2, - "50": 2 - }, + "pushOutByVolume": [ + [1.0, 7.0], + [4.999, 7.0], + [5.0, 2.0], + [10.0, 2.0], + [50.0, 2.0] + ], "delay": { "enable": true, "params": { @@ -419,12 +402,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 0.1, - "1": 0.1, - "49.9": 0.1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 0.1], + [49.9, 0.1], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -449,21 +431,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 50 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, + "flowRateByVolume": [[1.0, 50.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], "delay": { "enable": true, "params": { @@ -503,12 +481,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -530,12 +507,11 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 478, - "5": 318, - "10": 478, - "50": 478 - }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] + ], "preWet": false, "mix": { "enable": false, @@ -575,12 +551,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -605,12 +580,11 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 478, - "5": 318, - "10": 478, - "50": 478 - }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] + ], "mix": { "enable": false, "params": { @@ -618,9 +592,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 20 - }, + "pushOutByVolume": [[1.0, 20.0]], "delay": { "enable": false, "params": { @@ -652,12 +624,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -682,24 +653,21 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 478, - "5": 318, - "10": 478, - "50": 478 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] + ], + "conditioningByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -734,12 +702,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -761,9 +728,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "preWet": false, "mix": { "enable": false, @@ -803,12 +768,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "blowout": { "enable": false }, @@ -833,9 +797,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "mix": { "enable": false, "params": { @@ -843,9 +805,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 15 - }, + "pushOutByVolume": [[1.0, 15.0]], "delay": { "enable": false, "params": { @@ -877,12 +837,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "blowout": { "enable": false }, @@ -907,21 +866,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "flowRateByVolume": [[1.0, 716.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -956,12 +911,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -983,9 +937,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "preWet": false, "mix": { "enable": false, @@ -1025,12 +977,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "blowout": { "enable": false }, @@ -1055,9 +1006,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "mix": { "enable": false, "params": { @@ -1065,9 +1014,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 20 - }, + "pushOutByVolume": [[1.0, 20.0]], "delay": { "enable": false, "params": { @@ -1099,12 +1046,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "blowout": { "enable": false }, @@ -1129,21 +1075,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "995": 5, - "1000": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "995": 5, - "1000": 0 - }, + "flowRateByVolume": [[1.0, 716.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [995.0, 5.0], + [1000.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [995.0, 5.0], + [1000.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -1183,12 +1125,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -1210,12 +1151,11 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 478, - "5": 318, - "10": 478, - "50": 478 - }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] + ], "preWet": false, "mix": { "enable": false, @@ -1255,12 +1195,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -1285,12 +1224,11 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 478, - "5": 318, - "10": 478, - "50": 478 - }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] + ], "mix": { "enable": false, "params": { @@ -1298,9 +1236,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 20 - }, + "pushOutByVolume": [[1.0, 20.0]], "delay": { "enable": false, "params": { @@ -1332,12 +1268,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -1362,24 +1297,21 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 478, - "5": 318, - "10": 478, - "50": 478 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, + "flowRateByVolume": [ + [5.0, 318.0], + [10.0, 478.0], + [50.0, 478.0] + ], + "conditioningByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -1414,12 +1346,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -1441,9 +1372,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "preWet": false, "mix": { "enable": false, @@ -1483,12 +1412,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "blowout": { "enable": false }, @@ -1513,9 +1441,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "mix": { "enable": false, "params": { @@ -1523,9 +1449,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 15 - }, + "pushOutByVolume": [[1.0, 15.0]], "delay": { "enable": false, "params": { @@ -1557,12 +1481,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "blowout": { "enable": false }, @@ -1587,21 +1510,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "flowRateByVolume": [[1.0, 716.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -1636,12 +1555,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -1663,9 +1581,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "preWet": false, "mix": { "enable": false, @@ -1705,12 +1621,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "blowout": { "enable": false }, @@ -1735,9 +1650,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, + "flowRateByVolume": [[1.0, 716.0]], "mix": { "enable": false, "params": { @@ -1745,9 +1658,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 20 - }, + "pushOutByVolume": [[1.0, 20.0]], "delay": { "enable": false, "params": { @@ -1779,12 +1690,11 @@ "z": 2 }, "speed": 50, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "blowout": { "enable": false }, @@ -1809,21 +1719,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 716 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "995": 5, - "1000": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "995": 5, - "1000": 0 - }, + "flowRateByVolume": [[1.0, 716.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [995.0, 5.0], + [1000.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [995.0, 5.0], + [1000.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -1863,12 +1769,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -1890,9 +1795,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, + "flowRateByVolume": [[1.0, 200.0]], "preWet": false, "mix": { "enable": false, @@ -1932,12 +1835,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -1962,9 +1864,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, + "flowRateByVolume": [[1.0, 200.0]], "mix": { "enable": false, "params": { @@ -1972,9 +1872,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 20 - }, + "pushOutByVolume": [[1.0, 20.0]], "delay": { "enable": false, "params": { @@ -2006,12 +1904,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 1, - "1": 1, - "49": 1, - "50": 0 - }, + "airGapByVolume": [ + [1.0, 1.0], + [49.0, 1.0], + [50.0, 0.0] + ], "blowout": { "enable": false }, @@ -2036,21 +1933,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "45": 5, - "50": 0 - }, + "flowRateByVolume": [[1.0, 200.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [45.0, 5.0], + [50.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -2085,12 +1978,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -2112,9 +2004,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, + "flowRateByVolume": [[1.0, 200.0]], "preWet": false, "mix": { "enable": false, @@ -2154,12 +2044,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "blowout": { "enable": false }, @@ -2184,9 +2073,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, + "flowRateByVolume": [[1.0, 200.0]], "mix": { "enable": false, "params": { @@ -2194,9 +2081,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 15 - }, + "pushOutByVolume": [[1.0, 15.0]], "delay": { "enable": false, "params": { @@ -2228,12 +2113,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "airGapByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "blowout": { "enable": false }, @@ -2258,21 +2142,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "195": 5, - "200": 0 - }, + "flowRateByVolume": [[1.0, 200.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [195.0, 5.0], + [200.0, 0.0] + ], "delay": { "enable": false, "params": { @@ -2307,12 +2187,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "touchTip": { "enable": false, "params": { @@ -2334,9 +2213,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, + "flowRateByVolume": [[1.0, 200.0]], "preWet": false, "mix": { "enable": false, @@ -2376,12 +2253,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "blowout": { "enable": false }, @@ -2406,9 +2282,7 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, + "flowRateByVolume": [[1.0, 200.0]], "mix": { "enable": false, "params": { @@ -2416,9 +2290,7 @@ "volume": 50 } }, - "pushOutByVolume": { - "default": 20 - }, + "pushOutByVolume": [[1.0, 20.0]], "delay": { "enable": false, "params": { @@ -2450,12 +2322,11 @@ "z": 2 }, "speed": 35, - "airGapByVolume": { - "default": 10, - "10": 10, - "990": 10, - "1000": 0 - }, + "airGapByVolume": [ + [10.0, 10.0], + [990.0, 10.0], + [1000.0, 0.0] + ], "blowout": { "enable": false }, @@ -2480,21 +2351,17 @@ "y": 0, "z": 2 }, - "flowRateByVolume": { - "default": 200 - }, - "conditioningByVolume": { - "default": 5, - "1": 5, - "995": 5, - "1000": 0 - }, - "disposalByVolume": { - "default": 5, - "1": 5, - "995": 5, - "1000": 0 - }, + "flowRateByVolume": [[1.0, 200.0]], + "conditioningByVolume": [ + [1.0, 5.0], + [995.0, 5.0], + [1000.0, 0.0] + ], + "disposalByVolume": [ + [1.0, 5.0], + [995.0, 5.0], + [1000.0, 0.0] + ], "delay": { "enable": false, "params": { diff --git a/shared-data/liquid-class/fixtures/fixture_glycerol50.json b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json similarity index 82% rename from shared-data/liquid-class/fixtures/fixture_glycerol50.json rename to shared-data/liquid-class/fixtures/1/fixture_glycerol50.json index 8befe1d6a5b..20fe7b44a3c 100644 --- a/shared-data/liquid-class/fixtures/fixture_glycerol50.json +++ b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json @@ -33,11 +33,10 @@ "z": 5 }, "speed": 100, - "airGapByVolume": { - "default": 2, - "5": 3, - "10": 4 - }, + "airGapByVolume": [ + [5.0, 3.0], + [10.0, 4.0] + ], "touchTip": { "enable": true, "params": { @@ -59,9 +58,7 @@ "y": 0, "z": -5 }, - "flowRateByVolume": { - "default": 50 - }, + "flowRateByVolume": [[10.0, 50.0]], "preWet": true, "mix": { "enable": true, @@ -101,11 +98,10 @@ "z": 5 }, "speed": 100, - "airGapByVolume": { - "default": 2, - "5": 3, - "10": 4 - }, + "airGapByVolume": [ + [5.0, 3.0], + [10.0, 4.0] + ], "blowout": { "enable": true, "params": { @@ -134,11 +130,10 @@ "y": 0, "z": -5 }, - "flowRateByVolume": { - "default": 50, - "10": 40, - "20": 30 - }, + "flowRateByVolume": [ + [10.0, 40.0], + [20.0, 30.0] + ], "mix": { "enable": true, "params": { @@ -146,11 +141,10 @@ "volume": 15 } }, - "pushOutByVolume": { - "default": 5, - "10": 7, - "20": 10 - }, + "pushOutByVolume": [ + [10.0, 7.0], + [20.0, 10.0] + ], "delay": { "enable": true, "params": { @@ -182,11 +176,10 @@ "z": 5 }, "speed": 100, - "airGapByVolume": { - "default": 2, - "5": 3, - "10": 4 - }, + "airGapByVolume": [ + [5.0, 3.0], + [10.0, 4.0] + ], "touchTip": { "enable": true, "params": { @@ -211,19 +204,12 @@ "y": 0, "z": -5 }, - "flowRateByVolume": { - "default": 50, - "10": 40, - "20": 30 - }, - "conditioningByVolume": { - "default": 10, - "5": 5 - }, - "disposalByVolume": { - "default": 2, - "5": 3 - }, + "flowRateByVolume": [ + [10.0, 40.0], + [20.0, 30.0] + ], + "conditioningByVolume": [[5.0, 5.0]], + "disposalByVolume": [[5.0, 3.0]], "delay": { "enable": true, "params": { diff --git a/shared-data/liquid-class/schemas/1.json b/shared-data/liquid-class/schemas/1.json index 1a5eb18d51a..f3aa85a6168 100644 --- a/shared-data/liquid-class/schemas/1.json +++ b/shared-data/liquid-class/schemas/1.json @@ -90,59 +90,59 @@ "additionalProperties": false }, "airGapByVolume": { - "type": "object", + "type": "array", "description": "Settings for air gap keyed by target aspiration volume.", - "properties": { - "default": { "$ref": "#/definitions/positiveNumber" } - }, - "patternProperties": { - "d+": { "$ref": "#/definitions/positiveNumber" } + "items": { + "type": "array", + "items": { "$ref": "#/definitions/positiveNumber" }, + "minItems": 2, + "maxItems": 2 }, - "required": ["default"] + "minItems": 1 }, "flowRateByVolume": { - "type": "object", + "type": "array", "description": "Settings for flow rate keyed by target aspiration/dispense volume.", - "properties": { - "default": { "$ref": "#/definitions/positiveNumber" } - }, - "patternProperties": { - "d+": { "$ref": "#/definitions/positiveNumber" } + "items": { + "type": "array", + "items": { "$ref": "#/definitions/positiveNumber" }, + "minItems": 2, + "maxItems": 2 }, - "required": ["default"] + "minItems": 1 }, "pushOutByVolume": { - "type": "object", + "type": "array", "description": "Settings for pushout keyed by target aspiration volume.", - "properties": { - "default": { "$ref": "#/definitions/positiveNumber" } - }, - "patternProperties": { - "d+": { "$ref": "#/definitions/positiveNumber" } + "items": { + "type": "array", + "items": { "$ref": "#/definitions/positiveNumber" }, + "minItems": 2, + "maxItems": 2 }, - "required": ["default"] + "minItems": 1 }, "disposalByVolume": { - "type": "object", - "description": "Settings for disposal volume keyed by target dispense volume.", - "properties": { - "default": { "$ref": "#/definitions/positiveNumber" } - }, - "patternProperties": { - "d+": { "$ref": "#/definitions/positiveNumber" } + "type": "array", + "description": "An array of two tuples containing positive numbers.", + "items": { + "type": "array", + "items": { "$ref": "#/definitions/positiveNumber" }, + "minItems": 2, + "maxItems": 2 }, - "required": ["default"] + "minItems": 1 }, "conditioningByVolume": { - "type": "object", + "type": "array", "description": "Settings for conditioning volume keyed by target dispense volume.", - "properties": { - "default": { "$ref": "#/definitions/positiveNumber" } - }, - "patternProperties": { - "d+": { "$ref": "#/definitions/positiveNumber" } + "items": { + "type": "array", + "items": { "$ref": "#/definitions/positiveNumber" }, + "minItems": 2, + "maxItems": 2 }, - "required": ["default"] + "minItems": 1 }, "mix": { "type": "object", @@ -409,7 +409,6 @@ "positionReference", "offset", "flowRateByVolume", - "mix", "conditioningByVolume", "disposalByVolume", "delay" diff --git a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py index 0462ac5c0e4..62add6a32b0 100644 --- a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py +++ b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py @@ -1,7 +1,7 @@ """Python shared data models for liquid class definitions.""" from enum import Enum -from typing import TYPE_CHECKING, Literal, Union, Optional, Dict, Any, Sequence +from typing import TYPE_CHECKING, Literal, Union, Optional, Dict, Any, Sequence, Tuple from pydantic import ( BaseModel, @@ -28,8 +28,8 @@ _NonNegativeNumber = Union[_StrictNonNegativeInt, _StrictNonNegativeFloat] """Non-negative JSON number type, written to preserve lack of decimal point.""" -LiquidHandlingPropertyByVolume = Dict[str, _NonNegativeNumber] -"""Settings for liquid class settings keyed by target aspiration/dispense volume.""" +LiquidHandlingPropertyByVolume = Sequence[Tuple[_NonNegativeNumber, _NonNegativeNumber]] +"""Settings for liquid class settings that are interpolated by volume.""" class PositionReference(Enum): diff --git a/shared-data/tsconfig-data.json b/shared-data/tsconfig-data.json index 4b9ff960c84..e79657a21f8 100644 --- a/shared-data/tsconfig-data.json +++ b/shared-data/tsconfig-data.json @@ -12,6 +12,7 @@ "deck/**/*.json", "labware/**/*.json", "liquid/**/*.json", + "liquid-class/**/*.json", "command/**/*.json", "commandAnnotation/**/*.json", "gripper/**/*.json", diff --git a/shared-data/tsconfig.json b/shared-data/tsconfig.json index a50e215ee95..57f8970d0c6 100644 --- a/shared-data/tsconfig.json +++ b/shared-data/tsconfig.json @@ -18,6 +18,7 @@ "command", "errors", "liquid/types", + "liquid-class", "commandAnnotation/types", "vite.config.mts" ] From ecd916ba89f78f7abdf11ac82d375d212e535399 Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Thu, 21 Nov 2024 13:54:21 -0500 Subject: [PATCH 063/220] docs(api): Opentrons Tough PCR Auto-sealing Lids in Python API (#16925) # Overview Documents how to use the Opentrons Tough PCR Auto-sealing Lids and Opentrons Flex Deck Riser in a Python protocol. ## Test Plan and Hands on Testing - [Sandbox](http://sandbox.docs.opentrons.com/docs-tc-lids/v2/modules/thermocycler.html#auto-sealing-lids) - all new code samples pass simulation ## Changelog - New section on auto-sealing lids - Change load statement at top of article to use Opentrons PCR plate instead of NEST ## Review requests - Completeness, clarity, etc. - Double-check code - There is some deliberate vagueness around lid loading that is meant to future-proof against labware schema and API changes ## Risk assessment none, docs. --- api/docs/v2/modules/thermocycler.rst | 66 +++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/api/docs/v2/modules/thermocycler.rst b/api/docs/v2/modules/thermocycler.rst index 9322e0a96f0..17d57e84292 100644 --- a/api/docs/v2/modules/thermocycler.rst +++ b/api/docs/v2/modules/thermocycler.rst @@ -15,7 +15,7 @@ The examples in this section will use a Thermocycler Module GEN2 loaded as follo .. code-block:: python tc_mod = protocol.load_module(module_name="thermocyclerModuleV2") - plate = tc_mod.load_labware(name="nest_96_wellplate_100ul_pcr_full_skirt") + plate = tc_mod.load_labware(name="opentrons_96_wellplate_200ul_pcr_full_skirt") .. versionadded:: 2.13 @@ -139,6 +139,70 @@ However, this code would generate 60 lines in the protocol's run log, while exec .. versionadded:: 2.0 +Auto-sealing Lids +================= + +Starting in robot software version 8.2.0, you can use the Opentrons Tough PCR Auto-sealing Lid to reduce evaporation on the Thermocycler. The auto-sealing lids are designed for automated use with the Flex Gripper, although you can move them manually if needed. They also work with the Opentrons Flex Deck Riser adapter, which keeps lids away from the unsterilized deck and provides better access for the gripper. + +Use the following API load names for the auto-sealing lid and deck riser: + +.. list-table:: + :header-rows: 1 + + * - Labware + - API load name + * - Opentrons Tough PCR Auto-sealing Lid + - ``opentrons_tough_pcr_auto_sealing_lid`` + * - Opentrons Flex Deck Riser + - ``opentrons_flex_deck_riser`` + +Load the riser directly onto the deck with :py:meth:`.ProtocolContext.load_adapter`. Load the auto-sealing lid onto a compatible location (the deck, the riser, or another lid) with the appropriate ``load_labware()`` method. You can create a stack of up to five auto-sealing lids. If you try to stack more than five lids, the API will raise an error. + +Setting up the riser and preparing a lid to use on the Thermocycler generally consists of the following steps: + + 1. Load the riser on the deck. + 2. Load the lids onto the adapter. + 3. Load or move a PCR plate onto the Thermocycler. + 4. Move a lid onto the PCR plate. + 5. Close the Thermocycler. + +The following code sample shows how to perform these steps, using the riser and three auto-sealing lids. In a full protocol, you would likely have additional steps, such as pipetting to or from the PCR plate. + +.. code-block:: python + + # load riser + riser = protocol.load_adapter( + load_name="opentrons_flex_deck_riser", location="A2" + ) + + # load three lids + lid_1 = riser.load_labware("opentrons_tough_pcr_auto_sealing_lid") + lid_2 = lid_1.load_labware("opentrons_tough_pcr_auto_sealing_lid") + lid_3 = lid_2.load_labware("opentrons_tough_pcr_auto_sealing_lid") + + # load plate on Thermocycler + plate = protocol.load_labware( + load_name="opentrons_96_wellplate_200ul_pcr_full_skirt", location=tc_mod + ) + + # move lid to PCR plate + protocol.move_labware(labware=lid_3, new_location=plate, use_gripper=True) + + # close Thermocycler + tc_mod.close_lid() + +.. warning:: + When using the auto-sealing lids, `do not` affix a rubber automation seal to the inside of the Thermocycler lid. The Thermocycler will not close properly. + +When you're finished with a lid, use the gripper to dispose of it in either the waste chute or a trash bin:: + + tc_mod.open_lid() + protocol.move_labware(labware=lid_3, new_location=trash, use_gripper=True) + +.. versionadded:: 2.16 + :py:class:`.TrashBin` and :py:class:`.WasteChute` objects can accept lids. + +You can then move the PCR plate off of the Thermocycler. The Flex Gripper can't move a plate that has a lid on top of it. Always move the lid first, then the plate. Changes with the GEN2 Thermocycler Module ========================================= From a910cf0a7d160685d590c0047bc56a936f1ef2c6 Mon Sep 17 00:00:00 2001 From: David Chau <46395074+ddcc4@users.noreply.github.com> Date: Thu, 21 Nov 2024 14:38:51 -0500 Subject: [PATCH 064/220] feat(api): add liquid classes to the StateSummary. (#16899) # Overview AUTH-851 Export the liquid classes we loaded into the Protocol Engine to the `StateSummary`, which will let clients see what liquid classes we loaded. The liquid classes are stored internally as a map of `{liquid_class_id -> LiquidClassRecords}`, but following the convention for the other fields in the `StateSummary`, we want to export the liquid classes as a list, so this PR defines a new `LiquidClassRecordWithId` class for the summary. The fields in the `StateSummary` in turn are propagated to the CLI `AnalyzeResults`, and are mirrored to the robot-server `CompletedAnalysis`, `Run`, and `MaintenanceRun` models. So every call-site that uses those classes had to be updated, as well as every test that checks those classes, as well as 200 snapshot tests -- which was kind of painful. ## Test Plan and Hands on Testing I'm relying on the CI tests to make sure I found all the call-sites that are affected. (We don't yet have any protocols that load liquid classes, but when we do, we can probably add integration tests to show that the liquid classes end up in the summaries.) ## Review requests I recommend collapsing the `analyses-snapshot-testing/` when looking at this PR in Github. There are so many snapshot changes that Github sometimes errors out when trying to render the diff. The primary files with code changes are: - `api/src/opentrons/protocol_engine/types.py` - `api/src/opentrons/protocol_engine/state/state.py` - `api/src/opentrons/protocol_engine/state/state_summary.py` - `api/src/opentrons/cli/analyze.py` - `robot-server/robot_server/runs/run_models.py` - `robot-server/robot_server/protocols/analysis_models.py` - `robot-server/robot_server/maintenance_runs/maintenance_run_models.py` The other files are pretty mechanical changes. ## Risk assessment Low risk, should affect dev only. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: y3rsh <502770+y3rsh@users.noreply.github.com> --- ...2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json | 1 + ...74c503f][pl_BacteriaInoculation_Flex_6plates].json | 1 + ...011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json | 1 + ...255c3f3b][pl_Flex_Protein_Digestion_Protocol].json | 1 + ...RIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json | 1 + ..._v2_16_P300M_P20S_aspirateDispenseMix0Volume].json | 1 + ...S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json | 1 + ...[OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...pshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json | 1 + ...Overrides_TooTallLabware_Override_south_west].json | 1 + ...NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json | 1 + ...9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json | 1 + ...BadTypesInRTP_Override_wrong_type_in_maximum].json | 1 + ..._Overrides_TooTallLabware_Override_north_row].json | 1 + ...[OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...[OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json | 1 + ...9b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json | 1 + ...pshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json | 1 + ...napshot[11020a4e17][pl_Bradford_proteinassay].json | 1 + ...2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json | 1 + ...hot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json | 1 + ..._v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json | 1 + ...hot[15a60fccf4][pl_microBioID_beads_touchtip].json | 1 + ...apshot[194e3c49bb][pl_Normalization_with_PCR].json | 1 + ..._None_Overrides_TooTallLabware_Override_west].json | 1 + ...00_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json | 1 + ...ne_None_HS_HeaterShakerConflictWithTrashBin2].json | 1 + ...8a126][pl_Dynabeads_IP_Flex_96well_RIT_final].json | 1 + ...1c19a2055c][OT2_S_v2_4_P300M_None_MM_TM_Zymo].json | 1 + ...t[1d37cbc080][pl_MagMax_RNA_Cells_Flex_multi].json | 1 + ...BadTypesInRTP_Override_wrong_type_in_minimum].json | 1 + ...[238912ff51][Flex_S_v2_18_KAPA_Library_Quant].json | 1 + ...3107][pl_Omega_HDQ_DNA_Cells_Flex_96_channel].json | 1 + ...7a7][OT2_X_v2_18_None_None_NoRTPdisplay_name].json | 1 + ...ysis_snapshot[250e9496be][pl_BCApeptideassay].json | 1 + ...rrides_TooTallLabware_Override_mix_collision].json | 1 + ...pshot[277961bc58][pl_NiNTA_Flex_96well_final].json | 1 + ...8fdeebdd9][pl_Omega_HDQ_DNA_Cells_Flex_multi].json | 1 + ...5df52d][pl_Omega_HDQ_DNA_Bacteria_Flex_multi].json | 1 + ...re_Override_distribute_destination_collision].json | 1 + ...llLabware_Override_transfer_source_collision].json | 1 + ...cb5b23][Flex_S_v2_18_P1000_96_TipTrackingBug].json | 1 + ...napshot[2bc6830494][pl_langone_ribo_pt1_ramp].json | 1 + ...verrides_TooTallLabware_Override_east_column].json | 1 + ...P_HS_MB_TC_TM_TriggerPrepareForMountMovement].json | 1 + ...e8][Flex_S_v2_20_96_None_SINGLE_4Corners50ul].json | 1 + ...ex_S_v2_20_96_None_SINGLE_HappyPathNorthSide].json | 1 + ...2_P300S_None_MM1_MM2_EngageMagHeightFromBase].json | 1 + ...134ee09][pl_Takara_InFusionSnapAssembly_Flex].json | 1 + ...ex_X_v2_18_NO_PIPETTES_DescriptionTooLongRTP].json | 1 + ...des_TooTallLabware_Override_bottom_left_edge].json | 1 + ...des_TooTallLabware_Override_bottom_left_edge].json | 1 + ...fRangeRTP_Override_default_less_than_minimum].json | 1 + ..._Overrides_TooTallLabware_Override_south_row].json | 1 + ...a039d726f][pl_Dynabeads_IP_Flex_96well_final].json | 1 + ...[3cec61dfd9][Flex_S_v2_19_KAPA_Library_Quant].json | 1 + ...Flex_S_v2_18_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 1 + ...sis_snapshot[4148613317][Flex_S_v2_19_ligseq].json | 1 + ...lysis_snapshot[42beea80be][pl_96_ch_demo_rtp].json | 1 + ...389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json | 1 + ...20422][OT2_S_v2_18_NO_PIPETTES_GoldenRTP_OT2].json | 1 + ...][pl_sample_dilution_with_96_channel_pipette].json | 1 + ...[OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json | 1 + ...8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json | 1 + ..._NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json | 1 + ...Configs_Override_eight_partial_column_no_end].json | 1 + ...pshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json | 1 + ...esInRTP_Override_wrong_type_in_variable_name].json | 1 + ...d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json | 1 + ...ngeRTP_Override_default_greater_than_maximum].json | 1 + ...][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json | 1 + ...gs_Override_eight_partial_column_bottom_left].json | 1 + ...rrides_TooTallLabware_Override_c3_right_edge].json | 1 + ...Configs_Override_eight_partial_column_no_end].json | 1 + ...S_None_verifyNoFloatingPointErrorInPipetting].json | 1 + ...5b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json | 1 + ..._v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json | 1 + ...sis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json | 1 + ...6][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json | 1 + ...2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json | 1 + ...Configs_Override_ninety_six_partial_column_2].json | 1 + ...2_X_v2_18_None_None_duplicateRTPVariableName].json | 1 + ...v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json | 1 + ...ice_Override_int_default_no_matching_choices].json | 1 + ...Configs_Override_ninety_six_partial_column_1].json | 1 + ...v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json | 1 + ...619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json | 1 + ...[pl_Flex_customizable_serial_dilution_upload].json | 1 + ...[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json | 1 + ...Overrides_TooTallLabware_Override_south_east].json | 1 + ..._None_Overrides_TooTallLabware_Override_east].json | 1 + ...es_BadTypesInRTP_Override_wrong_type_in_unit].json | 1 + ...6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json | 1 + ...PETTES_Python310SyntaxRobotAnalysisOnlyError].json | 1 + ...e_Override_consolidate_destination_collision].json | 1 + ...5_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json | 1 + ...ne_None_HS_HeaterShakerConflictWithTrashBin1].json | 1 + ...ice_Override_str_default_no_matching_choices].json | 1 + ...50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json | 1 + ...297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json | 1 + ...00M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json | 1 + ...873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json | 1 + ...Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json | 1 + ...des_InvalidConfigs_Override_return_tip_error].json | 1 + ...shot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json | 1 + ...pshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json | 1 + ...P_Override_wrong_type_in_choice_display_name].json | 1 + ...verrides_TooTallLabware_Override_west_column].json | 1 + ...4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json | 1 + ...e_Override_float_default_no_matching_choices].json | 1 + ...b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json | 1 + ...8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json | 1 + ...hot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json | 1 + ...[OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...bca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json | 1 + ...de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json | 1 + ...5db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json | 1 + ...6_TC_PartialTipPickupThermocyclerLidConflict].json | 1 + ...None_Overrides_TooTallLabware_Override_south].json | 1 + ...validConfigs_Override_drop_tip_with_location].json | 1 + ...35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json | 1 + ...x_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json | 1 + ...shot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json | 1 + ...s_Override_eight_partial_column_bottom_right].json | 1 + ...8][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json | 1 + ..._GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json | 1 + ..._X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json | 1 + ...NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json | 1 + ...apshot[9bcb0a3f13][pl_normalization_with_csv].json | 1 + ..._v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json | 1 + ..._v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json | 1 + ...ypesInRTP_Override_wrong_type_in_description].json | 1 + ...6_GRIP_DeckConfiguration1NoModulesNoFixtures].json | 1 + ...Overrides_TooTallLabware_Override_north_west].json | 1 + ...d2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json | 1 + ...dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json | 1 + ...pshot[a437534569][Flex_S_v2_19_kapahyperplus].json | 1 + ...8c103][pl_Nanopore_Genomic_Ligation_v5_Final].json | 1 + ...apshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json | 1 + ...[OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...ex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json | 1 + ...napshot[a8a5ad823d][pl_cherrypicking_flex_v3].json | 1 + ...pshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json | 1 + ...x_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json | 1 + ...analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json | 1 + ...sis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json | 1 + ..._P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json | 1 + ...gs_Override_eight_partial_column_bottom_left].json | 1 + ...cedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json | 1 + ...4067d][Flex_X_v2_18_NO_PIPETTES_ReservedWord].json | 1 + ...00_96_TC_pipetteCollisionWithThermocyclerLid].json | 1 + ...des_InvalidConfigs_Override_return_tip_error].json | 1 + ...6_P1000_96_TC_PartialTipPickupTryToReturnTip].json | 1 + ...shot[b48407ff98][pl_cherrypicking_csv_airgap].json | 1 + ..._v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json | 1 + ...validConfigs_Override_drop_tip_with_location].json | 1 + ...pesInRTP_Override_wrong_type_in_choice_value].json | 1 + ...d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json | 1 + ...S_v2_15_P1000S_None_SimpleNormalizeLongRight].json | 1 + ...ware_Override_transfer_destination_collision].json | 1 + ...None_Overrides_TooTallLabware_Override_north].json | 1 + ...4d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json | 1 + ...NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json | 1 + ...NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json | 1 + ...NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json | 1 + ...es_TooTallLabware_Override_bottom_right_edge].json | 1 + ...16_P1000_96_GRIP_DeckConfiguration1NoModules].json | 1 + ..._S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json | 1 + ...pshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json | 1 + ...d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json | 1 + ...OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json | 1 + ...c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json | 1 + ...snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json | 1 + ...s_Override_eight_partial_column_bottom_right].json | 1 + ...38bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json | 1 + ...sis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json | 1 + ...is_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json | 1 + ...QuickZymoMagbeadRNAExtractionCellsOrBacteria].json | 1 + ...7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json | 1 + ...[OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json | 1 + ...t[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json | 1 + ...hot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json | 1 + ...sis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json | 1 + ...][OT2_S_v2_18_None_None_duplicateChoiceValue].json | 1 + ...x_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json | 1 + ...9799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json | 1 + ...a326082e1][pl_Hyperplus_tiptracking_V4_final].json | 1 + ...Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 1 + ...Configs_Override_ninety_six_partial_column_3].json | 1 + ...NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json | 1 + ..._PIPETTES_TC_TrashBinAndThermocyclerConflict].json | 1 + ...lumina_Stranded_total_RNA_Ribo_Zero_protocol].json | 1 + ...M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json | 1 + ...3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json | 1 + ...a6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json | 1 + ...BadTypesInRTP_Override_wrong_type_in_default].json | 1 + ...b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json | 1 + ...napshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json | 1 + ...e_Overrides_TooTallLabware_Override_top_edge].json | 1 + ...51df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json | 1 + ...39][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json | 1 + ...abware_Override_consolidate_source_collision].json | 1 + ...P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json | 1 + ...d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json | 1 + ...0_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json | 1 + ...S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json | 1 + ...45e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json | 1 + ...T2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json | 1 + ...Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json | 1 + ...2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json | 1 + ...NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json | 1 + ...hot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json | 1 + ..._TC_pipetteCollisionWithThermocyclerLidClips].json | 1 + ...P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json | 1 + ...Labware_Override_distribute_source_collision].json | 1 + ...pesInRTP_Override_wrong_type_in_display_name].json | 1 + ...S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json | 1 + api/src/opentrons/cli/analyze.py | 4 ++++ api/src/opentrons/protocol_engine/__init__.py | 4 ++++ api/src/opentrons/protocol_engine/state/state.py | 9 +++++++-- .../opentrons/protocol_engine/state/state_summary.py | 2 ++ api/src/opentrons/protocol_engine/types.py | 9 +++++++++ .../maintenance_runs/maintenance_run_data_manager.py | 2 ++ .../maintenance_runs/maintenance_run_models.py | 5 +++++ .../robot_server/protocols/analysis_models.py | 5 +++++ robot-server/robot_server/protocols/analysis_store.py | 5 +++++ .../robot_server/protocols/protocol_analyzer.py | 2 ++ robot-server/robot_server/runs/run_data_manager.py | 3 +++ robot-server/robot_server/runs/run_models.py | 9 +++++++++ .../tests/data_files/test_data_files_store.py | 1 + .../protocols/test_v6_json_upload.tavern.yaml | 1 + .../protocols/test_v8_json_upload_flex.tavern.yaml | 1 + .../protocols/test_v8_json_upload_ot2.tavern.yaml | 1 + .../runs/test_json_v6_protocol_run.tavern.yaml | 1 + .../runs/test_json_v7_protocol_run.tavern.yaml | 1 + .../http_api/runs/test_protocol_run.tavern.yaml | 2 ++ .../test_run_queued_protocol_commands.tavern.yaml | 1 + .../test_run_with_run_time_parameters.tavern.yaml | 1 + .../tests/maintenance_runs/router/test_base_router.py | 4 ++++ .../maintenance_runs/router/test_labware_router.py | 1 + .../tests/maintenance_runs/test_run_data_manager.py | 4 ++++ robot-server/tests/protocols/test_analysis_store.py | 8 ++++++++ .../tests/protocols/test_completed_analysis_store.py | 1 + .../tests/protocols/test_protocol_analyzer.py | 3 +++ robot-server/tests/protocols/test_protocol_store.py | 3 +++ robot-server/tests/protocols/test_protocols_router.py | 1 + robot-server/tests/runs/router/test_base_router.py | 8 ++++++++ robot-server/tests/runs/router/test_labware_router.py | 1 + robot-server/tests/runs/test_run_data_manager.py | 11 +++++++++++ 251 files changed, 331 insertions(+), 2 deletions(-) diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json index 3d8b4b072eb..f59c9684e23 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json @@ -16668,6 +16668,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.11" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json index ddb334a58e0..05fa920a764 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[00574c503f][pl_BacteriaInoculation_Flex_6plates].json @@ -41584,6 +41584,7 @@ "location": "offDeck" } ], + "liquidClasses": [], "liquids": [ { "description": "Bacterial culture medium (e.g., LB broth)", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json index 38872b09ff8..c709366a42a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json @@ -4919,6 +4919,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.7", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json index aac975221e8..2da7a9c47bd 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01255c3f3b][pl_Flex_Protein_Digestion_Protocol].json @@ -11824,6 +11824,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json index ff626992e43..4f1452dcdfc 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json @@ -11452,6 +11452,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "High Quality H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json index 8cd99860d7e..39491fae6aa 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json @@ -2917,6 +2917,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json index c62ceb23edd..a561da0a387 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -3113,6 +3113,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json index a2aca7e252a..fe3d81be11b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[057de2035d][OT2_S_v2_19_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -9569,6 +9569,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json index bce38cbe476..f85b03c5703 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0903a95825][Flex_S_v2_19_QIASeq_FX_48x].json @@ -66156,6 +66156,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json index 2ca289680ef..0f7d7d308b5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09676b9f7e][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_west].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index 7a7269decb6..d9895fb2c9e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -154,6 +154,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json index 4891466d0b7..f892fc456ce 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a9ef592c8][Flex_S_v2_18_Illumina_DNA_Prep_48x].json @@ -49707,6 +49707,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "CleanupBead Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json index 64072eb8834..a877268d0bd 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json index dfef8b35364..3a0f63a8f99 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0b42cfc151][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_row].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 0096a483ffe..957e685c737 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -17072,6 +17072,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json index e4924262e1a..35dc7ecc804 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0cbde10c37][OT2_S_v2_18_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -9569,6 +9569,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json index 7bff37154bf..db42ce35fdc 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0dd21c0ee5][pl_EM_seq_48Samples_AllSteps_Edits_150].json @@ -49392,6 +49392,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json index d0b11f42740..cf56c96470e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[109b7ad1f0][Flex_S_v2_20_96_None_ROW_HappyPath].json @@ -6263,6 +6263,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "96 channel pipette and a ROW partial tip configuration.", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json index f7457a3c48d..e4de2f89a14 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10c2386b92][Flex_S_v2_20_96_AllCorners].json @@ -33697,6 +33697,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json index 6fb9e302070..7ce2978d56a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[11020a4e17][pl_Bradford_proteinassay].json @@ -19352,6 +19352,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Coomassie Brilliant Blue G-250 solution ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json index f2c63721b33..d33b6cf51cb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json @@ -7997,6 +7997,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json index c463feb0552..8fece97c06c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13e5a9c68b][Flex_S_v2_20_P8X1000_P50_LLD].json @@ -6203,6 +6203,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "water for ER testing", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json index 0b2e524dee6..c30b18aa93e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13ec753045][Flex_S_v2_18_Illumina_Stranded_total_RNA_Ribo_Zero].json @@ -4492,6 +4492,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Dandra Howell ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json index 6053323ac4b..3f500210e5a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[15a60fccf4][pl_microBioID_beads_touchtip].json @@ -34590,6 +34590,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json index ababd25acfa..059f375baec 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[194e3c49bb][pl_Normalization_with_PCR].json @@ -9297,6 +9297,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Rami Farawi ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json index 858286887b6..fd7b30ca845 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b9e0f93d9][OT2_S_v2_20_8_None_PARTIAL_COLUMN_HappyPathMixedTipRacks].json @@ -19714,6 +19714,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "OT-2 protocol with 1ch and 8ch pipette partial/single tip configurations. Mixing tipracks and using separate tipracks. ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json index d810bd75c88..b63443781ac 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json @@ -103,6 +103,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json index 90bfa119fb7..a126374479b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4ea9d66206][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json @@ -1241,6 +1241,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json index 3af042768f6..f102cab8bc5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4f50c02c81][Flex_S_v2_19_AMPure_XP_48x].json @@ -28213,6 +28213,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "AMPure Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json index 843078fa552..484c6600849 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json index dfc888c15b5..3a839b9cdbd 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[50d7be4518][pl_Zymo_Quick_RNA_Cells_Flex_multi].json @@ -23420,6 +23420,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Cells in DNA/ RNA Shield", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json index d2955132ff2..72f8481bc29 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Default not in range" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json index 2b447932025..4c45089bc7c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json @@ -6064,6 +6064,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json index 0aaa562c15c..58b6e3ffb42 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53db9bf516][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json @@ -1284,6 +1284,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json index 952985449d9..dde453f20ab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[549cc904ac][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_c3_right_edge].json @@ -1249,6 +1249,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json index d28023877a0..8cb5125c17c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54b0b509cd][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_no_end].json @@ -2395,6 +2395,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json index 9cad51f6d80..27656b80cca 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json @@ -1894,6 +1894,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json index c5c5f1a2e67..84bff8651d2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[555b2fff00][Flex_S_v2_19_Illumina_DNA_Prep_48x].json @@ -49707,6 +49707,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "CleanupBead Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json index 7c04e4274de..63ed50d9c04 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json @@ -55,6 +55,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json index 3646ae2d522..4744b1f1992 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[59b00713a7][Flex_S_v2_18_ligseq].json @@ -22844,6 +22844,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "AMPure Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json index e608af8c173..353a1b46f45 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5c57add326][pl_Omega_HDQ_DNA_Bacteria_Flex_96_channel].json @@ -46193,6 +46193,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Sample Resuspended in PBS", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json index c76b2aca7f9..059e7fc2b84 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json @@ -1258,6 +1258,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json index a107fa87e60..47c65a0dfc5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5edb9b4de3][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_2].json @@ -1241,6 +1241,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json index 86d3274f412..3c69dda38e7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Multiple RTP Variables with Same Name" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json index 0de0eff0022..fde783d94b8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json @@ -197,6 +197,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json index 726906c04d4..b8ef1cbc5f2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "default choice does not match a choice" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json index 1dcac6e453a..180178d1d44 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6122c72996][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_1].json @@ -1241,6 +1241,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json index d8409d8db46..8623a021746 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json @@ -55,6 +55,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json index afa5bb0b4d2..8b06eca9390 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json @@ -295,6 +295,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Golden RTP Examples" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json index 385da3c78a4..b1528f23cbf 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[618f29898f][pl_Flex_customizable_serial_dilution_upload].json @@ -10386,6 +10386,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Diluent liquid is filled in the reservoir", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json index 5681dc28194..1441d3d1cac 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[63ea171b47][pl_M_N_Nucleomag_DNA_Flex_multi].json @@ -16386,6 +16386,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Cell Pellet", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json index 1bf35620512..d27c90a866c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[675d2c2562][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south_east].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json index b2ec113fe4e..7209e028a2b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[68614da0b3][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_east].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json index e545da56bd4..e30b5bee0d8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json index 19ac0d4e0f7..3ac36a59ee5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6c20d6c570][Flex_S_v2_20_96_None_COLUMN_HappyPath].json @@ -6263,6 +6263,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "96 channel pipette and a COLUMN partial tip configuration.", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json index 8f88134625a..da1993d6e56 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json @@ -94,6 +94,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.12", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json index cf3e8bf4aa3..0e079e7daa2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e2f6f10c5][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_destination_collision].json @@ -3946,6 +3946,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json index 66877246558..eba57a84196 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json @@ -56935,6 +56935,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json index 63567ca7c96..f052823d867 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json @@ -512,6 +512,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Heater-shaker conflict OT-2" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json index cae3345ff13..2b5614762ba 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "default choice does not match a choice" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json index d67ff04865b..fd1c3550795 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f246e1cd8][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAEnrichmentV4].json @@ -45393,6 +45393,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json index 80a9f7d117a..0028c36df1b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json @@ -3435,6 +3435,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.3" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json index ad8638a9e6d..86023eb8c12 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json @@ -2849,6 +2849,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json index cbd7839e9ad..b79aec33a1b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[70b873c24b][pl_SamplePrep_MS_Digest_Flex_upto96].json @@ -65064,6 +65064,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "100 mM ABC in MS grade water, volume per well", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json index 1b70c59e4b6..a79c72e6781 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[733c9cdf62][Flex_S_v2_20_8_None_PARTIAL_COLUMN_HappyPath].json @@ -5042,6 +5042,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "Tip Rack South Clearance for the 8 Channel pipette and a SINGLE partial tip configuration.", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json index 30ddffb8e03..3a2911f043d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7583faec7c][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_return_tip_error].json @@ -4920,6 +4920,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json index bc24730fad8..c577f539508 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[770ebdcd29][pl_KAPA_Library_Quant_48_v8].json @@ -31929,6 +31929,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Dilution Buffer", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json index 19cf70d2edb..00efc4b9178 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[79e61426a2][Flex_S_v2_18_AMPure_XP_48x].json @@ -28213,6 +28213,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "AMPure Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json index bd4f009a701..ae9e8d99862 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json index df37cc2db4b..48077d59118 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7e7a90041b][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_west_column].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json index 47ce454e920..ac4311409dc 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ebefe4580][pl_QIAseq_FX_24x_Normalizer_Workflow_B].json @@ -75905,6 +75905,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "AMPure Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json index 0c559ae74b3..235d5eb9fe3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "default choice does not match a choice" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json index 44584111a12..e0fd663c213 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json @@ -55,6 +55,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json index 63aed19f5f3..d4cf07c0f99 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json @@ -2666,6 +2666,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.12", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json index 80ce54abbcb..2312c3a011e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[84f684cbc4][Flex_S_v2_18_IDT_xGen_EZ_48x].json @@ -59919,6 +59919,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 9f3a0d8a1fb..ac524674f7e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -14372,6 +14372,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json index 3cc6db1a5cd..7fb0dceab92 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88abcfdbca][pl_Zymo_Quick_RNA_Cells_Flex_96_Channel].json @@ -49169,6 +49169,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Sample Volume in Shield", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json index 5d219d91f72..7eedccb2cf8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88de2fb78f][OT2_X_v6_P20S_P300M_HS_HSCollision].json @@ -5373,6 +5373,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json index 2b9cd2584d3..70bb212b45b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Str RTP with unit" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json index 47511dff64f..ea3c1cc76b0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json @@ -4997,6 +4997,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json index e2fadc01642..cadf197c142 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8a663305c4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_south].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json index 919f1980537..e433acf53ff 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8b07e799f6][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json @@ -3766,6 +3766,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json index b8dd13f5f42..c21c19205cf 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e1f35ed6c][pl_NiNTA_Flex_96well_PlatePrep_final].json @@ -18477,6 +18477,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Equilibration Buffer", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json index 1d83bf0706f..933aa66cf7d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json @@ -3727,6 +3727,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json index 349fbd62034..794499f75ce 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[918747b2f9][pl_Illumina_DNA_Prep_48x_v8].json @@ -52167,6 +52167,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "CleanupBead Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json index 2c3d142321b..d9f59af3587 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[93b724671e][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json @@ -2468,6 +2468,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json index 8c086d8fdff..405df785df9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json @@ -6474,6 +6474,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json index 85ee931590d..004f5251126 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[95da6fbef2][Flex_S_2_15_P1000M_GRIP_HS_TM_MB_OmegaHDQDNAExtractionBacteria].json @@ -32273,6 +32273,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Zach Galluzzo ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json index cbad73a3a2d..8a871949e46 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json @@ -2775,6 +2775,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.11" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json index cbf301b89e7..5538166da59 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json @@ -171,6 +171,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json index b0f0b8ac0bd..23fd7f389a0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9bcb0a3f13][pl_normalization_with_csv].json @@ -6024,6 +6024,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Krishna Soma ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json index 8d4e3a960dd..aba00388845 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json @@ -1435,6 +1435,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json index 5a508d84d58..7cb88cd0308 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json @@ -153,6 +153,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json index 7808bbc2d03..e2a5dced311 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json index f951219fdff..5bc309d3cac 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json @@ -9575,6 +9575,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "High Quality H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json index eca34fc28c3..68185db5dbd 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0b755a1a1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north_west].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json index 965ca7d3ead..7aecea25f6a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a0dad2eb8e][pl_SamplePrep_MS_Cleanup_Flex_upto96].json @@ -50265,6 +50265,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Digested Protein samples, volume per well", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json index 1c3e57b481a..36400ae7de7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a3dfca7f0c][Flex_S_v2_19_Illumina_DNA_PCR_Free].json @@ -27030,6 +27030,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "DNA sample of known quantity", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json index 42781ff6ea1..fe8184c0608 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a437534569][Flex_S_v2_19_kapahyperplus].json @@ -29144,6 +29144,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "DNA sample of known quantity", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json index be8c1a00d13..e623aec42f7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a46928c103][pl_Nanopore_Genomic_Ligation_v5_Final].json @@ -22844,6 +22844,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "AMPure Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json index 8a0a8a6a2ee..0aacb0b3e73 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a4d3b3a2d3][pl_96_ch_demo_rtp_with_hs].json @@ -16593,6 +16593,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "generic", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 321a04e20ac..e6cb5eace9a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -14092,6 +14092,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json index f4e89bf46a3..b0eb2e93f00 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8528e52b4][Flex_S_v2_20_96_None_SINGLE_HappyPathSouthSide].json @@ -9431,6 +9431,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "Unsafe protocol ❗❗❗❗❗❗❗❗❗❗❗ will collide with tube.", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json index 6afef67d006..86a33113a16 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8a5ad823d][pl_cherrypicking_flex_v3].json @@ -10373,6 +10373,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Krishna Soma ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json index 01ce458ff53..52120bd6dc3 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a94f22054f][Flex_S_v2_18_kapahyperplus].json @@ -29144,6 +29144,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "DNA sample of known quantity", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json index 60a0f1c77a3..1d043a44952 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json @@ -55,6 +55,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json index 8e14d013357..93eff2447db 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aa61eee0bf][pl_sigdx_part2].json @@ -46385,6 +46385,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json index b4324589435..ec2e77260d2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac5a46e74b][pl_langone_pt2_ribo].json @@ -30083,6 +30083,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "ATL4", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json index ef9acd1b1a3..30f2c70b0ea 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json @@ -15276,6 +15276,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json index c8389b97d75..1f453e29cf8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[acefe91275][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_left].json @@ -2438,6 +2438,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json index 3a44acf987c..4af69fce36b 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json @@ -9492,6 +9492,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad9184067d][Flex_X_v2_18_NO_PIPETTES_ReservedWord].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad9184067d][Flex_X_v2_18_NO_PIPETTES_ReservedWord].json index d3338855040..ed08b660a33 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad9184067d][Flex_X_v2_18_NO_PIPETTES_ReservedWord].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad9184067d][Flex_X_v2_18_NO_PIPETTES_ReservedWord].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Default not in range" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json index f86080f047c..a18485392e9 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json @@ -6240,6 +6240,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json index a5b5bdb65cc..9f12179d1e2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afd5d372a9][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_return_tip_error].json @@ -3766,6 +3766,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json index 5b0df3b070c..b41b7117e24 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json @@ -3706,6 +3706,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json index 4433e026fd1..6dffb02e16c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b48407ff98][pl_cherrypicking_csv_airgap].json @@ -28815,6 +28815,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Samples", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json index 7005e6011ab..43f62a32282 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b777168ac1][Flex_S_v2_19_Illumina_Stranded_total_RNA_Ribo_Zero].json @@ -4492,6 +4492,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Dandra Howell ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json index b3637624ed4..7956e369c52 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b79134ab8a][OT2_X_v2_20_8_Overrides_InvalidConfigs_Override_drop_tip_with_location].json @@ -4920,6 +4920,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json index 6b2391f6118..cf8ec946db5 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json index 4bcec7cf7de..db24530e196 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b91d31eaa2][pl_MagMax_RNA_Cells_Flex_96_Channel].json @@ -41229,6 +41229,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Magnetic Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json index 5460d2d1fd7..851fd7e1fbb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json @@ -125769,6 +125769,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json index 290674f3bd6..8c741ed84ba 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[bc049301c1][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_transfer_destination_collision].json @@ -3912,6 +3912,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json index 67a07aa1297..8c38d6c5f57 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c0435f08da][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_north].json @@ -1481,6 +1481,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json index 14cc53aba17..4d2cd13d215 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json @@ -1977,6 +1977,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index d6eb8a28124..c2e5c309dcf 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -145,6 +145,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json index f59969368ab..7c817b2b869 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json @@ -171,6 +171,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index 4c6c38162b3..f69446ee9cb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -154,6 +154,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json index 4665f21b62e..fe3f96abc67 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c343dfb5a0][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_bottom_right_edge].json @@ -1249,6 +1249,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json index aadd38b4eaa..1a48b84ae0a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json @@ -12315,6 +12315,7 @@ "location": "offDeck" } ], + "liquidClasses": [], "liquids": [ { "description": "High Quality H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json index 27e9d4f2c51..253a2bcff9d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json @@ -10777,6 +10777,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.13", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json index 131c7514649..06153dd11b4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c8d2ca0089][Flex_S_v2_18_QIASeq_FX_48x].json @@ -66156,6 +66156,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json index 5efbff81ebc..cf748ae6fa0 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json @@ -7184,6 +7184,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "NN MM", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json index 1759b7b244f..ac74dbfc2a4 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json @@ -12796,6 +12796,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json index 4ad4434ab42..c9afc886f56 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cc26c104b4][Flex_S_v2_20_8_None_SINGLE_HappyPath].json @@ -7179,6 +7179,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "Tip Rack South Clearance for the 8 Channel pipette and a SINGLE partial tip configuration.", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json index 4e8f71a17c1..b591039cbbb 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cecd51c8ee][pl_ExpressPlex_96_final].json @@ -13346,6 +13346,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Index Plate color", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json index 1149640d8b1..f449eff0d94 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0154b1493][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_eight_partial_column_bottom_right].json @@ -1314,6 +1314,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json index 6e02fa8a3f3..a4d46be3d94 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d14738bdfe][pl_Zymo_Magbead_DNA_Cells_Flex_multi].json @@ -18032,6 +18032,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Samples", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json index 9d35aba10fc..2f0c52a853f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d29d74d7fb][pl_QIASeq_FX_48x_v8].json @@ -70949,6 +70949,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "CleanupBead Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json index 52e87c76f46..1b664b4e963 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d2c818bf00][Flex_S_v2_20_P50_LPD].json @@ -5113,6 +5113,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Test this wet!!!", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json index 6f5f1f09b83..7fd14d2f851 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d391213095][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtractionCellsOrBacteria].json @@ -25208,6 +25208,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Zach Galluzzo ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json index f0d2d744031..7916f424286 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d3b28ea1d7][pl_Zymo_Magbead_DNA_Cells_Flex_96_channel].json @@ -40886,6 +40886,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Lysis Buffer", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 3056b873a74..718e0a0df13 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -17430,6 +17430,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json index 026977dbcc6..5b6c3c3c690 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json @@ -2836,6 +2836,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.7", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json index 99ccd21cc19..170de395195 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d61739e6a3][Flex_S_v2_19_IDT_xGen_EZ_48x].json @@ -59919,6 +59919,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json index 6b342319f31..1ad848a9ef8 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6389183c0][pl_AMPure_XP_48x_v8].json @@ -28213,6 +28213,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "AMPure Beads", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json index 7ea850030fd..87b61a0454d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json @@ -43,6 +43,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Duplicate choice value" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json index 1e9b318abf5..aba7dd56957 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json @@ -3591,6 +3591,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json index 65c2da26059..bd408636813 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d979799443][OT2_S_v2_20_8_None_SINGLE_HappyPath].json @@ -8241,6 +8241,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "OT2 8 Channel pipette and a SINGLE partial tip configuration.", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json index 8b7cf7214ac..2651a003e75 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da326082e1][pl_Hyperplus_tiptracking_V4_final].json @@ -29144,6 +29144,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "DNA sample of known quantity", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index b262ea72c0f..c52ed516ba1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dabb7872d8][Flex_S_v2_19_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -13164,6 +13164,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "High Quality H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json index beb0aa09c29..62ea1e316b2 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[db1fae41ec][Flex_X_v2_20_96_and_8_Overrides_InvalidConfigs_Override_ninety_six_partial_column_3].json @@ -1241,6 +1241,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index 2288dccf926..9e3cf07280a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -145,6 +145,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json index 0353b26aed1..2eb5308529f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json @@ -171,6 +171,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Thermocycler conflict 1" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json index b22e56cb8ed..1bb680c2c4f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e0b0133ffb][pl_Illumina_Stranded_total_RNA_Ribo_Zero_protocol].json @@ -39234,6 +39234,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Dandra Howell ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json index 6a1c9e67b51..6c6c30ace61 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e18bdd6f5d][Flex_S_2_15_P1000M_P50M_GRIP_HS_TM_MB_TC_KAPALibraryQuantv4_8].json @@ -34667,6 +34667,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json index bd05f58334f..0dd0410636f 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json @@ -45,6 +45,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "apiLevel": "2.13", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json index 44fbc26f5b6..1e4573b1d8e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json @@ -2580,6 +2580,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "AA BB", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json index 013da0c0d7d..f6c1ad84067 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json index 7f0ba6fd654..aca7454ff36 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4b5b30b2e][Flex_S_v2_18_Illumina_DNA_PCR_Free].json @@ -27030,6 +27030,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "DNA sample of known quantity", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json index a0e23ed018b..803f4133451 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e71b031f47][pl_Illumina_DNA_PCR_Free].json @@ -27030,6 +27030,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "DNA sample of known quantity", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json index 3ab5889bbf7..ea9fbf3efb7 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e84e23a4ea][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_top_edge].json @@ -1249,6 +1249,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json index ca6f70d1692..81ebf160345 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e8f451df45][Flex_S_v2_20_96_None_Column3_SINGLE_].json @@ -26843,6 +26843,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json index 368bbe05d9b..709b448717c 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json @@ -103,6 +103,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json index 61a7e9595ff..ed5d5a67171 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed26635ff7][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_consolidate_source_collision].json @@ -3878,6 +3878,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json index 00f911388c0..d946aae6d9d 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed2f3800b6][Flex_S_2_18_P1000M_P50M_GRIP_HS_TM_MB_TC_IlluminaDNAPrep24xV4_7].json @@ -40778,6 +40778,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json index 4bcefec1199..d1a7a88d075 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json @@ -1448,6 +1448,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json index d1feceae4d0..d454695d871 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json @@ -18009,6 +18009,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json index 4e89581c149..3d7f6d10b51 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json @@ -7101,6 +7101,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json index ab9fd95e4c0..d86eae54045 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json @@ -10615,6 +10615,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "NN MM", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json index b12618b009e..e0c21a82e55 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json @@ -29,6 +29,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [], diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index f8f121ce092..50ab65351e1 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -15386,6 +15386,7 @@ "location": "offDeck" } ], + "liquidClasses": [], "liquids": [ { "description": "High Quality H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json index d452cf7ab52..950c5ee4395 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json @@ -1339,6 +1339,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Derek Maggio ", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json index 2c598934321..e4fed39c549 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json @@ -180,6 +180,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json index 8ca9a88cdbf..920a648041a 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f6c1ddbb32][pl_ExpressPlex_Pooling_Final].json @@ -36949,6 +36949,7 @@ } } ], + "liquidClasses": [], "liquids": [ { "description": "Amplified Libraries_1", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json index 04d54b06b4e..7ad30e9d04e 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json @@ -1385,6 +1385,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": {}, "modules": [ diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json index 3152a671909..acf7455e286 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json @@ -14192,6 +14192,7 @@ "location": "offDeck" } ], + "liquidClasses": [], "liquids": [ { "description": "High Quality H₂O", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json index 09e15f48097..1fdb58d69ab 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f86713b4d4][Flex_X_v2_20_96_None_Overrides_TooTallLabware_Override_distribute_source_collision].json @@ -3878,6 +3878,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "description": "oooo", diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json index 1652972327b..fe2e22fae05 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json @@ -42,6 +42,7 @@ } ], "labware": [], + "liquidClasses": [], "liquids": [], "metadata": { "protocolName": "Description Too Long 2.18" diff --git a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json index 13f15c638d0..cd25845d931 100644 --- a/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json +++ b/analyses-snapshot-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -3105,6 +3105,7 @@ } } ], + "liquidClasses": [], "liquids": [], "metadata": { "author": "Opentrons Engineering ", diff --git a/api/src/opentrons/cli/analyze.py b/api/src/opentrons/cli/analyze.py index 8489da83d68..4c994fcf630 100644 --- a/api/src/opentrons/cli/analyze.py +++ b/api/src/opentrons/cli/analyze.py @@ -53,6 +53,7 @@ LoadedPipette, LoadedModule, Liquid, + LiquidClassRecordWithId, StateSummary, ) from opentrons.protocol_engine.protocol_engine import code_in_error_tree @@ -333,6 +334,7 @@ async def _do_analyze( wells=[], hasEverEnteredErrorRecovery=False, files=[], + liquidClasses=[], ), parameters=[], ) @@ -399,6 +401,7 @@ async def _analyze( pipettes=analysis.state_summary.pipettes, modules=analysis.state_summary.modules, liquids=analysis.state_summary.liquids, + liquidClasses=analysis.state_summary.liquidClasses, ) _call_for_output_of_kind( @@ -486,4 +489,5 @@ class AnalyzeResults(BaseModel): pipettes: List[LoadedPipette] modules: List[LoadedModule] liquids: List[Liquid] + liquidClasses: List[LiquidClassRecordWithId] errors: List[ErrorOccurrence] diff --git a/api/src/opentrons/protocol_engine/__init__.py b/api/src/opentrons/protocol_engine/__init__.py index 25599189916..7efaef7199d 100644 --- a/api/src/opentrons/protocol_engine/__init__.py +++ b/api/src/opentrons/protocol_engine/__init__.py @@ -57,6 +57,8 @@ ModuleModel, ModuleDefinition, Liquid, + LiquidClassRecord, + LiquidClassRecordWithId, AllNozzleLayoutConfiguration, SingleNozzleLayoutConfiguration, RowNozzleLayoutConfiguration, @@ -122,6 +124,8 @@ "ModuleModel", "ModuleDefinition", "Liquid", + "LiquidClassRecord", + "LiquidClassRecordWithId", "AllNozzleLayoutConfiguration", "SingleNozzleLayoutConfiguration", "RowNozzleLayoutConfiguration", diff --git a/api/src/opentrons/protocol_engine/state/state.py b/api/src/opentrons/protocol_engine/state/state.py index 47b15e4eb3b..58e977cc2f4 100644 --- a/api/src/opentrons/protocol_engine/state/state.py +++ b/api/src/opentrons/protocol_engine/state/state.py @@ -9,7 +9,7 @@ from opentrons_shared_data.robot.types import RobotDefinition from opentrons.protocol_engine.error_recovery_policy import ErrorRecoveryPolicy -from opentrons.protocol_engine.types import ModuleOffsetData +from opentrons.protocol_engine.types import LiquidClassRecordWithId, ModuleOffsetData from opentrons.util.change_notifier import ChangeNotifier from ..resources import DeckFixedLabware @@ -156,7 +156,12 @@ def get_summary(self) -> StateSummary: wells=self._wells.get_all(), hasEverEnteredErrorRecovery=self._commands.get_has_entered_recovery_mode(), files=self._state.files.file_ids, - # TODO(dc): Do we want to just dump all the liquid classes into the summary? + liquidClasses=[ + LiquidClassRecordWithId( + liquidClassId=liquid_class_id, **dict(liquid_class_record) + ) + for liquid_class_id, liquid_class_record in self._liquid_classes.get_all().items() + ], ) diff --git a/api/src/opentrons/protocol_engine/state/state_summary.py b/api/src/opentrons/protocol_engine/state/state_summary.py index 7e47ccbbb37..d6b18613071 100644 --- a/api/src/opentrons/protocol_engine/state/state_summary.py +++ b/api/src/opentrons/protocol_engine/state/state_summary.py @@ -11,6 +11,7 @@ LoadedModule, LoadedPipette, Liquid, + LiquidClassRecordWithId, WellInfoSummary, ) @@ -32,3 +33,4 @@ class StateSummary(BaseModel): liquids: List[Liquid] = Field(default_factory=list) wells: List[WellInfoSummary] = Field(default_factory=list) files: List[str] = Field(default_factory=list) + liquidClasses: List[LiquidClassRecordWithId] = Field(default_factory=list) diff --git a/api/src/opentrons/protocol_engine/types.py b/api/src/opentrons/protocol_engine/types.py index 1a11a99df86..2a0bbf78c28 100644 --- a/api/src/opentrons/protocol_engine/types.py +++ b/api/src/opentrons/protocol_engine/types.py @@ -887,6 +887,15 @@ def dict_to_tuple(d: dict[str, Any]) -> tuple[tuple[str, Any], ...]: return hash(dict_to_tuple(self.dict())) +class LiquidClassRecordWithId(LiquidClassRecord, frozen=True): + """A LiquidClassRecord with its ID, for use in summary lists.""" + + liquidClassId: str = Field( + ..., + description="Unique identifier for this liquid class.", + ) + + class SpeedRange(NamedTuple): """Minimum and maximum allowed speeds for a shaking module.""" diff --git a/robot-server/robot_server/maintenance_runs/maintenance_run_data_manager.py b/robot-server/robot_server/maintenance_runs/maintenance_run_data_manager.py index 46b2c86bd40..c3346e33351 100644 --- a/robot-server/robot_server/maintenance_runs/maintenance_run_data_manager.py +++ b/robot-server/robot_server/maintenance_runs/maintenance_run_data_manager.py @@ -34,6 +34,7 @@ def _build_run( liquids=[], wells=[], files=[], + liquidClasses=[], hasEverEnteredErrorRecovery=False, ) return MaintenanceRun.construct( @@ -50,6 +51,7 @@ def _build_run( completedAt=state_summary.completedAt, startedAt=state_summary.startedAt, liquids=state_summary.liquids, + liquidClasses=state_summary.liquidClasses, hasEverEnteredErrorRecovery=state_summary.hasEverEnteredErrorRecovery, ) diff --git a/robot-server/robot_server/maintenance_runs/maintenance_run_models.py b/robot-server/robot_server/maintenance_runs/maintenance_run_models.py index e4c5971f5d1..8bde7ea7aff 100644 --- a/robot-server/robot_server/maintenance_runs/maintenance_run_models.py +++ b/robot-server/robot_server/maintenance_runs/maintenance_run_models.py @@ -12,6 +12,7 @@ LabwareOffset, LabwareOffsetCreate, Liquid, + LiquidClassRecordWithId, ) from robot_server.service.json_api import ResourceModel @@ -67,6 +68,10 @@ class MaintenanceRun(ResourceModel): ..., description="Liquids loaded to the run.", ) + liquidClasses: List[LiquidClassRecordWithId] = Field( + ..., + description="Liquid classes loaded to the run.", + ) labwareOffsets: List[LabwareOffset] = Field( ..., description="Labware offsets to apply as labware are loaded.", diff --git a/robot-server/robot_server/protocols/analysis_models.py b/robot-server/robot_server/protocols/analysis_models.py index 1e377aec3dd..61a66866bb0 100644 --- a/robot-server/robot_server/protocols/analysis_models.py +++ b/robot-server/robot_server/protocols/analysis_models.py @@ -19,6 +19,7 @@ LoadedModule, LoadedPipette, Liquid, + LiquidClassRecordWithId, ) @@ -185,6 +186,10 @@ class CompletedAnalysis(BaseModel): default_factory=list, description="Liquids used by the protocol", ) + liquidClasses: List[LiquidClassRecordWithId] = Field( + default_factory=list, + description="Liquid classes used by the protocol", + ) errors: List[ErrorOccurrence] = Field( ..., description=( diff --git a/robot-server/robot_server/protocols/analysis_store.py b/robot-server/robot_server/protocols/analysis_store.py index 71d170c6581..2f46f7857cb 100644 --- a/robot-server/robot_server/protocols/analysis_store.py +++ b/robot-server/robot_server/protocols/analysis_store.py @@ -19,6 +19,7 @@ LoadedLabware, LoadedModule, Liquid, + LiquidClassRecordWithId, ) from opentrons.protocol_engine.protocol_engine import code_in_error_tree @@ -152,6 +153,7 @@ async def update( pipettes: List[LoadedPipette], errors: List[ErrorOccurrence], liquids: List[Liquid], + liquidClasses: List[LiquidClassRecordWithId], ) -> None: """Promote a pending analysis to completed, adding details of its results. @@ -167,6 +169,7 @@ async def update( errors: See `CompletedAnalysis.errors`. Also used to infer whether the completed analysis result is `OK` or `NOT_OK`. liquids: See `CompletedAnalysis.liquids`. + liquidClasses: See `CompletedAnalysis.liquidClasses`. robot_type: See `CompletedAnalysis.robotType`. """ protocol_id = self._pending_store.get_protocol_id(analysis_id=analysis_id) @@ -201,6 +204,7 @@ async def update( pipettes=pipettes, errors=errors, liquids=liquids, + liquidClasses=liquidClasses, ) completed_analysis_resource = CompletedAnalysisResource( id=completed_analysis.id, @@ -241,6 +245,7 @@ async def save_initialization_failed_analysis( pipettes=[], errors=errors, liquids=[], + liquidClasses=[], ) completed_analysis_resource = CompletedAnalysisResource( id=completed_analysis.id, diff --git a/robot-server/robot_server/protocols/protocol_analyzer.py b/robot-server/robot_server/protocols/protocol_analyzer.py index 89387c5cefc..cf1d0687062 100644 --- a/robot-server/robot_server/protocols/protocol_analyzer.py +++ b/robot-server/robot_server/protocols/protocol_analyzer.py @@ -107,6 +107,7 @@ async def analyze( pipettes=result.state_summary.pipettes, errors=result.state_summary.errors, liquids=result.state_summary.liquids, + liquidClasses=result.state_summary.liquidClasses, ) async def update_to_failed_analysis( @@ -136,6 +137,7 @@ async def update_to_failed_analysis( ) ], liquids=[], + liquidClasses=[], ) def __del__(self) -> None: diff --git a/robot-server/robot_server/runs/run_data_manager.py b/robot-server/robot_server/runs/run_data_manager.py index 47fe28232d1..3724e96b486 100644 --- a/robot-server/robot_server/runs/run_data_manager.py +++ b/robot-server/robot_server/runs/run_data_manager.py @@ -66,6 +66,7 @@ def _build_run( completedAt=state_summary.completedAt, startedAt=state_summary.startedAt, liquids=state_summary.liquids, + liquidClasses=state_summary.liquidClasses, outputFileIds=state_summary.files, runTimeParameters=run_time_parameters, ) @@ -80,6 +81,7 @@ def _build_run( pipettes=[], modules=[], liquids=[], + liquidClasses=[], wells=[], files=[], hasEverEnteredErrorRecovery=False, @@ -124,6 +126,7 @@ def _build_run( completedAt=state.completedAt, startedAt=state.startedAt, liquids=state.liquids, + liquidClasses=state.liquidClasses, runTimeParameters=run_time_parameters, outputFileIds=state.files, hasEverEnteredErrorRecovery=state.hasEverEnteredErrorRecovery, diff --git a/robot-server/robot_server/runs/run_models.py b/robot-server/robot_server/runs/run_models.py index 2ed77b0d0bc..337366e1478 100644 --- a/robot-server/robot_server/runs/run_models.py +++ b/robot-server/robot_server/runs/run_models.py @@ -18,6 +18,7 @@ LabwareOffset, LabwareOffsetCreate, Liquid, + LiquidClassRecordWithId, CommandNote, ) from opentrons.protocol_engine.types import ( @@ -134,6 +135,10 @@ class Run(ResourceModel): ..., description="Liquids loaded to the run.", ) + liquidClasses: List[LiquidClassRecordWithId] = Field( + ..., + description="Liquid classes loaded to the run.", + ) labwareOffsets: List[LabwareOffset] = Field( ..., description="Labware offsets to apply as labware are loaded.", @@ -215,6 +220,10 @@ class BadRun(ResourceModel): ..., description="Liquids loaded to the run.", ) + liquidClasses: List[LiquidClassRecordWithId] = Field( + ..., + description="Liquid classes loaded to the run.", + ) labwareOffsets: List[LabwareOffset] = Field( ..., description="Labware offsets to apply as labware are loaded.", diff --git a/robot-server/tests/data_files/test_data_files_store.py b/robot-server/tests/data_files/test_data_files_store.py index 581577d0a16..9a9b722e6ec 100644 --- a/robot-server/tests/data_files/test_data_files_store.py +++ b/robot-server/tests/data_files/test_data_files_store.py @@ -99,6 +99,7 @@ def _get_sample_analysis_resource( commands=[], errors=[], liquids=[], + liquidClasses=[], ), ) diff --git a/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml b/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml index 717280a6703..516221c500c 100644 --- a/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml +++ b/robot-server/tests/integration/http_api/protocols/test_v6_json_upload.tavern.yaml @@ -590,6 +590,7 @@ stages: displayName: Water description: Liquid H2O displayColor: '#7332a8' + liquidClasses: [] --- test_name: Upload and analyze a JSONv6 protocol, with liquids diff --git a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml index 35801f8719a..022c86da35e 100644 --- a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml +++ b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_flex.tavern.yaml @@ -623,6 +623,7 @@ stages: displayName: Water description: Liquid H2O displayColor: '#7332a8' + liquidClasses: [] --- test_name: Upload and analyze a JSONv8 protocol, with liquids diff --git a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml index f85e307e961..961a9a26601 100644 --- a/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml +++ b/robot-server/tests/integration/http_api/protocols/test_v8_json_upload_ot2.tavern.yaml @@ -626,6 +626,7 @@ stages: displayName: Water description: Liquid H2O displayColor: '#7332a8' + liquidClasses: [] --- test_name: Upload and analyze a JSONv8 protocol, with liquids diff --git a/robot-server/tests/integration/http_api/runs/test_json_v6_protocol_run.tavern.yaml b/robot-server/tests/integration/http_api/runs/test_json_v6_protocol_run.tavern.yaml index fd98c29a2dc..580688e6e65 100644 --- a/robot-server/tests/integration/http_api/runs/test_json_v6_protocol_run.tavern.yaml +++ b/robot-server/tests/integration/http_api/runs/test_json_v6_protocol_run.tavern.yaml @@ -51,6 +51,7 @@ stages: displayName: Water description: Liquid H2O displayColor: '#7332a8' + liquidClasses: [] runTimeParameters: [] outputFileIds: [] protocolId: '{protocol_id}' diff --git a/robot-server/tests/integration/http_api/runs/test_json_v7_protocol_run.tavern.yaml b/robot-server/tests/integration/http_api/runs/test_json_v7_protocol_run.tavern.yaml index 3ab7386ba4f..1caf41fbfd1 100644 --- a/robot-server/tests/integration/http_api/runs/test_json_v7_protocol_run.tavern.yaml +++ b/robot-server/tests/integration/http_api/runs/test_json_v7_protocol_run.tavern.yaml @@ -53,6 +53,7 @@ stages: displayName: Water description: Liquid H2O displayColor: '#7332a8' + liquidClasses: [] protocolId: '{protocol_id}' - name: Execute a setup command diff --git a/robot-server/tests/integration/http_api/runs/test_protocol_run.tavern.yaml b/robot-server/tests/integration/http_api/runs/test_protocol_run.tavern.yaml index 2ad0a92eb8c..732726d39e9 100644 --- a/robot-server/tests/integration/http_api/runs/test_protocol_run.tavern.yaml +++ b/robot-server/tests/integration/http_api/runs/test_protocol_run.tavern.yaml @@ -47,6 +47,7 @@ stages: outputFileIds: [] protocolId: '{protocol_id}' liquids: [] + liquidClasses: [] save: json: original_run_data: data @@ -240,6 +241,7 @@ stages: createdAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" startedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" liquids: [] + liquidClasses: [] runTimeParameters: [] outputFileIds: [] completedAt: !re_fullmatch "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+(Z|([+-]\\d{2}:\\d{2}))" diff --git a/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml b/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml index 14ae502d800..95f5077c30e 100644 --- a/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml +++ b/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml @@ -95,6 +95,7 @@ stages: labware: [] labwareOffsets: [] liquids: [] + liquidClasses: [] runTimeParameters: [] outputFileIds: [] modules: [] diff --git a/robot-server/tests/integration/http_api/runs/test_run_with_run_time_parameters.tavern.yaml b/robot-server/tests/integration/http_api/runs/test_run_with_run_time_parameters.tavern.yaml index 1f44f7101c7..505ff2d8831 100644 --- a/robot-server/tests/integration/http_api/runs/test_run_with_run_time_parameters.tavern.yaml +++ b/robot-server/tests/integration/http_api/runs/test_run_with_run_time_parameters.tavern.yaml @@ -118,6 +118,7 @@ stages: name: sample_plates.csv outputFileIds: [] liquids: [] + liquidClasses: [] protocolId: '{protocol_id}' - name: Play the run diff --git a/robot-server/tests/maintenance_runs/router/test_base_router.py b/robot-server/tests/maintenance_runs/router/test_base_router.py index 35fb6da06c1..29a9c81a3b7 100644 --- a/robot-server/tests/maintenance_runs/router/test_base_router.py +++ b/robot-server/tests/maintenance_runs/router/test_base_router.py @@ -75,6 +75,7 @@ async def test_create_run( labwareOffsets=[], status=pe_types.EngineStatus.IDLE, liquids=[], + liquidClasses=[], hasEverEnteredErrorRecovery=False, ) @@ -150,6 +151,7 @@ async def test_get_run_data_from_url( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], hasEverEnteredErrorRecovery=False, ) @@ -200,6 +202,7 @@ async def test_get_run() -> None: labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], hasEverEnteredErrorRecovery=False, ) @@ -226,6 +229,7 @@ async def test_get_current_run( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], hasEverEnteredErrorRecovery=False, ) decoy.when(mock_maintenance_run_data_manager.current_run_id).then_return( diff --git a/robot-server/tests/maintenance_runs/router/test_labware_router.py b/robot-server/tests/maintenance_runs/router/test_labware_router.py index d8a8fdab603..4e5ae1152f2 100644 --- a/robot-server/tests/maintenance_runs/router/test_labware_router.py +++ b/robot-server/tests/maintenance_runs/router/test_labware_router.py @@ -38,6 +38,7 @@ def run() -> MaintenanceRun: modules=[], labwareOffsets=[], liquids=[], + liquidClasses=[], hasEverEnteredErrorRecovery=False, ) diff --git a/robot-server/tests/maintenance_runs/test_run_data_manager.py b/robot-server/tests/maintenance_runs/test_run_data_manager.py index a4431f7b463..07bc9c2e476 100644 --- a/robot-server/tests/maintenance_runs/test_run_data_manager.py +++ b/robot-server/tests/maintenance_runs/test_run_data_manager.py @@ -69,6 +69,7 @@ def engine_state_summary() -> StateSummary: pipettes=[LoadedPipette.construct(id="some-pipette-id")], # type: ignore[call-arg] modules=[LoadedModule.construct(id="some-module-id")], # type: ignore[call-arg] liquids=[Liquid(id="some-liquid-id", displayName="liquid", description="desc")], + liquidClasses=[], wells=[], ) @@ -140,6 +141,7 @@ async def test_create( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, ) @@ -193,6 +195,7 @@ async def test_create_with_options( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, ) @@ -262,6 +265,7 @@ async def test_get_current_run( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, ) assert subject.current_run_id == run_id diff --git a/robot-server/tests/protocols/test_analysis_store.py b/robot-server/tests/protocols/test_analysis_store.py index 1200f5aff43..d15e9925a18 100644 --- a/robot-server/tests/protocols/test_analysis_store.py +++ b/robot-server/tests/protocols/test_analysis_store.py @@ -203,6 +203,7 @@ async def test_returned_in_order_added( commands=[], errors=[], liquids=[], + liquidClasses=[], ) subject.add_pending( @@ -266,6 +267,7 @@ async def test_update_adds_details_and_completes_analysis( commands=[], errors=[], liquids=[], + liquidClasses=[], ) result = await subject.get("analysis-id") @@ -283,6 +285,7 @@ async def test_update_adds_details_and_completes_analysis( commands=[], errors=[], liquids=[], + liquidClasses=[], ) assert await subject.get_by_protocol("protocol-id") == [result] assert json.loads(result_as_document) == { @@ -315,6 +318,7 @@ async def test_update_adds_details_and_completes_analysis( "commands": [], "errors": [], "liquids": [], + "liquidClasses": [], "modules": [], } @@ -364,6 +368,7 @@ async def test_update_adds_rtp_values_to_completed_store( commands=[], errors=[], liquids=[], + liquidClasses=[], ), ) @@ -384,6 +389,7 @@ async def test_update_adds_rtp_values_to_completed_store( commands=[], errors=[], liquids=[], + liquidClasses=[], ) decoy.verify( await mock_completed_store.make_room_and_add( @@ -487,6 +493,7 @@ async def test_update_infers_status_from_errors( modules=[], pipettes=[], liquids=[], + liquidClasses=[], ) analysis = (await subject.get_by_protocol("protocol-id"))[0] assert isinstance(analysis, CompletedAnalysis) @@ -528,6 +535,7 @@ async def test_save_initialization_failed_analysis( commands=[], errors=[error_occurence], liquids=[], + liquidClasses=[], ), ) diff --git a/robot-server/tests/protocols/test_completed_analysis_store.py b/robot-server/tests/protocols/test_completed_analysis_store.py index 42c12565c14..a8112cdda16 100644 --- a/robot-server/tests/protocols/test_completed_analysis_store.py +++ b/robot-server/tests/protocols/test_completed_analysis_store.py @@ -209,6 +209,7 @@ async def test_get_by_analysis_id_as_document( "errors": [], "labware": [], "liquids": [], + "liquidClasses": [], "modules": [], "pipettes": [], } diff --git a/robot-server/tests/protocols/test_protocol_analyzer.py b/robot-server/tests/protocols/test_protocol_analyzer.py index 5d3d9da8a13..3fab95879fe 100644 --- a/robot-server/tests/protocols/test_protocol_analyzer.py +++ b/robot-server/tests/protocols/test_protocol_analyzer.py @@ -189,6 +189,7 @@ async def test_analyze( modules=[], labwareOffsets=[], liquids=[], + liquidClasses=[], wells=[], files=[], hasEverEnteredErrorRecovery=False, @@ -211,6 +212,7 @@ async def test_analyze( pipettes=[analysis_pipette], errors=[], liquids=[], + liquidClasses=[], ) ) @@ -294,5 +296,6 @@ async def test_analyze_updates_pending_on_error( pipettes=[], errors=[error_occurrence], liquids=[], + liquidClasses=[], ), ) diff --git a/robot-server/tests/protocols/test_protocol_store.py b/robot-server/tests/protocols/test_protocol_store.py index ca965d471a8..499bf480cf0 100644 --- a/robot-server/tests/protocols/test_protocol_store.py +++ b/robot-server/tests/protocols/test_protocol_store.py @@ -526,6 +526,7 @@ def get_completed_analysis_resource( commands=[], errors=[], liquids=[], + liquidClasses=[], ), ) @@ -566,6 +567,7 @@ async def test_get_referenced_data_files( commands=[], errors=[], liquids=[], + liquidClasses=[], ), ) analysis_resource2 = CompletedAnalysisResource( @@ -582,6 +584,7 @@ async def test_get_referenced_data_files( commands=[], errors=[], liquids=[], + liquidClasses=[], ), ) diff --git a/robot-server/tests/protocols/test_protocols_router.py b/robot-server/tests/protocols/test_protocols_router.py index 637a2ee082f..0ae2c591ebd 100644 --- a/robot-server/tests/protocols/test_protocols_router.py +++ b/robot-server/tests/protocols/test_protocols_router.py @@ -1495,6 +1495,7 @@ async def test_get_protocol_analyses( commands=[], errors=[], liquids=[], + liquidClasses=[], ) decoy.when(protocol_store.has("protocol-id")).then_return(True) diff --git a/robot-server/tests/runs/router/test_base_router.py b/robot-server/tests/runs/router/test_base_router.py index e43027b3bf1..fab2c0af888 100644 --- a/robot-server/tests/runs/router/test_base_router.py +++ b/robot-server/tests/runs/router/test_base_router.py @@ -157,6 +157,7 @@ async def test_create_run( labwareOffsets=[], status=pe_types.EngineStatus.IDLE, liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -245,6 +246,7 @@ async def test_create_protocol_run( labwareOffsets=[], status=pe_types.EngineStatus.IDLE, liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -413,6 +415,7 @@ async def test_get_run_data_from_url( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -461,6 +464,7 @@ async def test_get_run() -> None: labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -508,6 +512,7 @@ async def test_get_runs_not_empty( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -525,6 +530,7 @@ async def test_get_runs_not_empty( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -605,6 +611,7 @@ async def test_update_run_to_not_current( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) @@ -641,6 +648,7 @@ async def test_update_current_none_noop( labware=[], labwareOffsets=[], liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) diff --git a/robot-server/tests/runs/router/test_labware_router.py b/robot-server/tests/runs/router/test_labware_router.py index 900eac530f1..1252d983efb 100644 --- a/robot-server/tests/runs/router/test_labware_router.py +++ b/robot-server/tests/runs/router/test_labware_router.py @@ -40,6 +40,7 @@ def run() -> Run: labwareOffsets=[], protocolId=None, liquids=[], + liquidClasses=[], outputFileIds=[], hasEverEnteredErrorRecovery=False, ) diff --git a/robot-server/tests/runs/test_run_data_manager.py b/robot-server/tests/runs/test_run_data_manager.py index 5e4aed1f3e2..d27e1aebaff 100644 --- a/robot-server/tests/runs/test_run_data_manager.py +++ b/robot-server/tests/runs/test_run_data_manager.py @@ -105,6 +105,7 @@ def engine_state_summary() -> StateSummary: pipettes=[LoadedPipette.construct(id="some-pipette-id")], # type: ignore[call-arg] modules=[LoadedModule.construct(id="some-module-id")], # type: ignore[call-arg] liquids=[Liquid(id="some-liquid-id", displayName="liquid", description="desc")], + liquidClasses=[], wells=[], ) @@ -288,6 +289,7 @@ async def test_create( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, runTimeParameters=[bool_parameter, file_parameter], outputFileIds=engine_state_summary.files, ) @@ -395,6 +397,7 @@ async def test_get_current_run( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, runTimeParameters=run_time_parameters, outputFileIds=engine_state_summary.files, ) @@ -438,6 +441,7 @@ async def test_get_historical_run( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, runTimeParameters=run_time_parameters, outputFileIds=engine_state_summary.files, ) @@ -482,6 +486,7 @@ async def test_get_historical_run_no_data( pipettes=[], modules=[], liquids=[], + liquidClasses=[], runTimeParameters=run_time_parameters, outputFileIds=[], ) @@ -503,6 +508,7 @@ async def test_get_all_runs( pipettes=[LoadedPipette.construct(id="current-pipette-id")], # type: ignore[call-arg] modules=[LoadedModule.construct(id="current-module-id")], # type: ignore[call-arg] liquids=[Liquid(id="some-liquid-id", displayName="liquid", description="desc")], + liquidClasses=[], wells=[], ) current_run_time_parameters: List[pe_types.RunTimeParameter] = [ @@ -523,6 +529,7 @@ async def test_get_all_runs( pipettes=[LoadedPipette.construct(id="old-pipette-id")], # type: ignore[call-arg] modules=[LoadedModule.construct(id="old-module-id")], # type: ignore[call-arg] liquids=[], + liquidClasses=[], wells=[], ) historical_run_time_parameters: List[pe_types.RunTimeParameter] = [ @@ -584,6 +591,7 @@ async def test_get_all_runs( pipettes=historical_run_data.pipettes, modules=historical_run_data.modules, liquids=historical_run_data.liquids, + liquidClasses=historical_run_data.liquidClasses, runTimeParameters=historical_run_time_parameters, outputFileIds=historical_run_data.files, ), @@ -601,6 +609,7 @@ async def test_get_all_runs( pipettes=current_run_data.pipettes, modules=current_run_data.modules, liquids=current_run_data.liquids, + liquidClasses=current_run_data.liquidClasses, runTimeParameters=current_run_time_parameters, outputFileIds=current_run_data.files, ), @@ -700,6 +709,7 @@ async def test_update_current( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, runTimeParameters=run_time_parameters, outputFileIds=engine_state_summary.files, ) @@ -757,6 +767,7 @@ async def test_update_current_noop( pipettes=engine_state_summary.pipettes, modules=engine_state_summary.modules, liquids=engine_state_summary.liquids, + liquidClasses=engine_state_summary.liquidClasses, runTimeParameters=run_time_parameters, outputFileIds=engine_state_summary.files, ) From f7643196b455a38d0a1320117112871bfc592be0 Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Thu, 21 Nov 2024 14:55:28 -0500 Subject: [PATCH 065/220] fix(api): ungrip gripper should home g (#16933) --- .../protocol_engine/commands/unsafe/unsafe_ungrip_labware.py | 4 +++- .../protocol_engine/commands/unsafe/test_ungrip_labware.py | 3 ++- .../organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py index 9674513d749..6f8f5b71fce 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_ungrip_labware.py @@ -1,6 +1,8 @@ """Ungrip labware payload, result, and implementaiton.""" from __future__ import annotations + +from opentrons.hardware_control.types import Axis from opentrons.protocol_engine.errors.exceptions import GripperNotAttachedError from pydantic import BaseModel from typing import Optional, Type @@ -46,7 +48,7 @@ async def execute( ot3_hardware_api = ensure_ot3_hardware(self._hardware_api) if not ot3_hardware_api.has_gripper(): raise GripperNotAttachedError("No gripper found to perform ungrip.") - await ot3_hardware_api.ungrip() + await ot3_hardware_api.home([Axis.G]) return SuccessData( public=UnsafeUngripLabwareResult(), ) diff --git a/api/tests/opentrons/protocol_engine/commands/unsafe/test_ungrip_labware.py b/api/tests/opentrons/protocol_engine/commands/unsafe/test_ungrip_labware.py index a4eae34a08d..bcd77093abf 100644 --- a/api/tests/opentrons/protocol_engine/commands/unsafe/test_ungrip_labware.py +++ b/api/tests/opentrons/protocol_engine/commands/unsafe/test_ungrip_labware.py @@ -1,6 +1,7 @@ """Test update-position-estimator commands.""" from decoy import Decoy +from opentrons.hardware_control.types import Axis from opentrons.protocol_engine.commands.unsafe.unsafe_ungrip_labware import ( UnsafeUngripLabwareParams, UnsafeUngripLabwareResult, @@ -25,7 +26,7 @@ async def test_ungrip_labware_implementation( assert result == SuccessData(public=UnsafeUngripLabwareResult()) decoy.verify( - await ot3_hardware_api.ungrip(), + await ot3_hardware_api.home([Axis.G]), ) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts index 76110c22dc9..0775d4796a6 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts @@ -355,8 +355,8 @@ export const HOME_PIPETTE_Z_AXES: CreateCommand = { } export const RELEASE_GRIPPER_JAW: CreateCommand = { - commandType: 'home', - params: { axes: ['extensionJaw'] }, + commandType: 'unsafe/ungripLabware', + params: {}, intent: 'fixit', } From 54dda4098bf1edadb0d75b9920afa9305f1f525c Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Thu, 21 Nov 2024 15:34:45 -0500 Subject: [PATCH 066/220] fix(components): fix EmptySelectorButton style (#16932) Add hover state and fix border radius for EmptySelectorButton component Closes RQA-3659 --- .../src/atoms/buttons/EmptySelectorButton.tsx | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/components/src/atoms/buttons/EmptySelectorButton.tsx b/components/src/atoms/buttons/EmptySelectorButton.tsx index 42e8822fc35..da34a8ba710 100644 --- a/components/src/atoms/buttons/EmptySelectorButton.tsx +++ b/components/src/atoms/buttons/EmptySelectorButton.tsx @@ -1,27 +1,18 @@ import styled from 'styled-components' import { Flex } from '../../primitives' import { + ALIGN_CENTER, CURSOR_DEFAULT, CURSOR_POINTER, + FLEX_MAX_CONTENT, Icon, - SPACING, - StyledText, JUSTIFY_CENTER, JUSTIFY_START, - ALIGN_CENTER, - FLEX_MAX_CONTENT, + SPACING, + StyledText, } from '../../index' -import { - black90, - blue30, - blue50, - grey30, - grey40, - white, -} from '../../helix-design-system/colors' -import { borderRadius8 } from '../../helix-design-system/borders' +import { BORDERS, COLORS } from '../../helix-design-system' import type { IconName } from '../../index' - interface EmptySelectorButtonProps { onClick: () => void text: string @@ -41,10 +32,9 @@ export function EmptySelectorButton( ` border: none; width: ${FLEX_MAX_CONTENT}; height: ${FLEX_MAX_CONTENT}; - cursor: ${({ disabled }) => (disabled ? CURSOR_DEFAULT : CURSOR_POINTER)}; + cursor: ${CURSOR_POINTER}; + background-color: ${COLORS.blue30}; + border-radius: ${BORDERS.borderRadius8}; + &:focus-visible { - outline: 2px solid ${white}; - box-shadow: 0 0 0 4px ${blue50}; - border-radius: ${borderRadius8}; + outline: 2px solid ${COLORS.white}; + box-shadow: 0 0 0 4px ${COLORS.blue50}; + border-radius: ${BORDERS.borderRadius8}; + } + &:hover { + background-color: ${COLORS.blue35}; + } + &:disabled { + background-color: ${COLORS.grey20}; + cursor: ${CURSOR_DEFAULT}; } ` From 7411eaf27eb34acd3670d4aa1dd15388fca2217e Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Thu, 21 Nov 2024 15:35:01 -0500 Subject: [PATCH 067/220] fix(components, protocol-designer): hug hotkey shortcut tag width (#16936) Add optional shrinkToContent to Tag component Closes [RQA-3667](https://opentrons.atlassian.net/browse/RQA-3667) --- components/src/atoms/Tag/index.tsx | 6 ++-- .../localization/en/starting_deck_state.json | 4 +-- .../__tests__/ProtocolSteps.test.tsx | 4 +-- .../pages/Designer/ProtocolSteps/index.tsx | 31 ++++++++++++++----- 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/components/src/atoms/Tag/index.tsx b/components/src/atoms/Tag/index.tsx index c41025dd25b..74c72da486e 100644 --- a/components/src/atoms/Tag/index.tsx +++ b/components/src/atoms/Tag/index.tsx @@ -1,7 +1,7 @@ import { css } from 'styled-components' import { BORDERS, COLORS } from '../../helix-design-system' import { Flex } from '../../primitives' -import { ALIGN_CENTER, DIRECTION_ROW } from '../../styles' +import { ALIGN_CENTER, DIRECTION_ROW, FLEX_MAX_CONTENT } from '../../styles' import { RESPONSIVENESS, SPACING, TYPOGRAPHY } from '../../ui-style-constants' import { Icon } from '../../icons' import { LegacyStyledText } from '../StyledText' @@ -19,6 +19,7 @@ export interface TagProps { iconPosition?: 'left' | 'right' /** Tagicon */ iconName?: IconName + shrinkToContent?: boolean } const defaultColors = { @@ -42,11 +43,12 @@ const TAG_PROPS_BY_TYPE: Record< } export function Tag(props: TagProps): JSX.Element { - const { iconName, type, text, iconPosition } = props + const { iconName, type, text, iconPosition, shrinkToContent = false } = props const DEFAULT_CONTAINER_STYLE = css` padding: ${SPACING.spacing2} ${SPACING.spacing8}; border-radius: ${BORDERS.borderRadius4}; + width: ${shrinkToContent ? FLEX_MAX_CONTENT : 'none'}; @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { border-radius: ${BORDERS.borderRadius8}; padding: ${SPACING.spacing8} ${SPACING.spacing12}; diff --git a/protocol-designer/src/assets/localization/en/starting_deck_state.json b/protocol-designer/src/assets/localization/en/starting_deck_state.json index fcf88c2866e..080aa23199d 100644 --- a/protocol-designer/src/assets/localization/en/starting_deck_state.json +++ b/protocol-designer/src/assets/localization/en/starting_deck_state.json @@ -13,7 +13,7 @@ "clear_labware": "Clear labware", "clear_slot": "Clear slot", "clear": "Clear", - "command_click_to_multi_select": "Command + Click for multi-select", + "command_click_to_multi_select": "^/⌘ + click to select multiple", "convert_gen1_to_gen2": "To convert engage heights from GEN1 to GEN2, divide your engage height by 2.", "convert_gen2_to_gen1": "To convert engage heights from GEN2 to GEN1, multiply your engage height by 2.", "custom": "Custom labware definitions", @@ -48,7 +48,7 @@ "read_more_gen1_gen2": "Read more about the differences between GEN1 and GEN2 Magnetic Modules", "rename_lab": "Rename labware", "reservoir": "Reservoirs", - "shift_click_to_select_all": "Shift + Click to select all", + "shift_click_to_select_range": "⇧ + click to select range", "starting_deck_state": "Starting deck state", "tc_slots_occupied_flex": "The Thermocycler needs slots A1 and B1. Slot A1 is occupied", "tc_slots_occupied_ot2": "The Thermocycler needs slots 7, 8, 10, and 11. One or more of those slots is occupied", diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx index f68928c3488..2ce91e03263 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx @@ -95,8 +95,8 @@ describe('ProtocolSteps', () => { it('renders the hot keys display', () => { render() screen.getByText('Double-click to edit') - screen.getByText('Shift + Click to select all') - screen.getByText('Command + Click for multi-select') + screen.getByText('⇧ + click to select range') + screen.getByText('^/⌘ + click to select multiple') }) it('renders the current step name', () => { diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx index b5e5810c2da..687553f3dc6 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx @@ -3,7 +3,6 @@ import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { ALIGN_CENTER, - Box, COLORS, DIRECTION_COLUMN, Flex, @@ -126,13 +125,29 @@ export function ProtocolSteps(): JSX.Element { {enableHoyKeyDisplay ? ( - - - - - - - + + + + + ) : null} {formData == null && selectedSubstep ? ( From baa6ec61bfe8ffaf01d8e55562a9709e4072318f Mon Sep 17 00:00:00 2001 From: koji Date: Thu, 21 Nov 2024 15:44:50 -0500 Subject: [PATCH 068/220] fix(protocol-designer): fix Incorrect copy in IncompatibleTipsModal (#16939) * fix(protocol-designer): fix Incorrect copy in IncompatibleTipsModal --- .../src/assets/localization/en/create_new_protocol.json | 2 +- .../__tests__/IncompatibleTipsModal.test.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/create_new_protocol.json b/protocol-designer/src/assets/localization/en/create_new_protocol.json index 269c252dd39..f2e132728a5 100644 --- a/protocol-designer/src/assets/localization/en/create_new_protocol.json +++ b/protocol-designer/src/assets/localization/en/create_new_protocol.json @@ -11,7 +11,7 @@ "edit": "Edit", "fixtures_added": "Fixtures added", "fixtures_replace": "Fixtures replace standard deck slots and let you add functionality to your Flex.", - "incompatible_tip_body": "Protocol Designer only accepts custom JSON labware definitions made with our Labware Creator. Upload a valid file to continue.", + "incompatible_tip_body": "Using a pipette with an incompatible tip rack may result reduce pipette accuracy and collisions. We strongly recommend that you do not pair a pipette with an incompatible tip rack.", "incompatible_tips": "Incompatible tips", "labware_name": "Labware name", "left_right": "Left + Right", diff --git a/protocol-designer/src/organisms/IncompatibleTipsModal/__tests__/IncompatibleTipsModal.test.tsx b/protocol-designer/src/organisms/IncompatibleTipsModal/__tests__/IncompatibleTipsModal.test.tsx index 96732965dea..2a1a8cf7e4e 100644 --- a/protocol-designer/src/organisms/IncompatibleTipsModal/__tests__/IncompatibleTipsModal.test.tsx +++ b/protocol-designer/src/organisms/IncompatibleTipsModal/__tests__/IncompatibleTipsModal.test.tsx @@ -26,7 +26,7 @@ describe('IncompatibleTipsModal', () => { render(props) screen.getByText('Incompatible tips') screen.getByText( - 'Protocol Designer only accepts custom JSON labware definitions made with our Labware Creator. Upload a valid file to continue.' + 'Using a pipette with an incompatible tip rack may result reduce pipette accuracy and collisions. We strongly recommend that you do not pair a pipette with an incompatible tip rack.' ) fireEvent.click(screen.getByText('Show more tip types')) expect(vi.mocked(setFeatureFlags)).toHaveBeenCalled() From 060bde15a24c4f805c41ae28d14f0454e8c2b262 Mon Sep 17 00:00:00 2001 From: koji Date: Thu, 21 Nov 2024 15:48:59 -0500 Subject: [PATCH 069/220] fix(protocol-designer): switch back textarea from component to styled tag (#16938) * fix(protocol-designer): switch back textarea from component to styled tag --- protocol-designer/src/atoms/constants.ts | 42 +------------------ .../organisms/DefineLiquidsModal/index.tsx | 14 ++++++- .../CreateNewProtocolWizard/AddMetadata.tsx | 14 ++++++- 3 files changed, 27 insertions(+), 43 deletions(-) diff --git a/protocol-designer/src/atoms/constants.ts b/protocol-designer/src/atoms/constants.ts index e04701a7639..620a3d10dbc 100644 --- a/protocol-designer/src/atoms/constants.ts +++ b/protocol-designer/src/atoms/constants.ts @@ -1,11 +1,8 @@ -import styled, { css } from 'styled-components' +import { css } from 'styled-components' import { - BORDERS, COLORS, DIRECTION_COLUMN, OVERFLOW_HIDDEN, - SPACING, - TYPOGRAPHY, } from '@opentrons/components' import type { FlattenSimpleInterpolation } from 'styled-components' @@ -35,40 +32,3 @@ export const COLUMN_STYLE = css` min-width: calc((${MIN_OVERVIEW_WIDTH} - ${COLUMN_GRID_GAP}) * 0.5); flex: 1; ` - -export const DescriptionField = styled.textarea` - min-height: 5rem; - width: 100%; - border: 1px ${BORDERS.styleSolid} ${COLORS.grey50}; - border-radius: ${BORDERS.borderRadius4}; - padding: ${SPACING.spacing8}; - font-size: ${TYPOGRAPHY.fontSizeP}; - resize: none; - - &:active:enabled { - border: 1px ${BORDERS.styleSolid} ${COLORS.blue50}; - } - - &:hover { - border: 1px ${BORDERS.styleSolid} ${COLORS.grey60}; - } - - &:focus-visible { - border: 1px ${BORDERS.styleSolid} ${COLORS.grey55}; - outline: 2px ${BORDERS.styleSolid} ${COLORS.blue50}; - outline-offset: 2px; - } - - &:focus-within { - border: 1px ${BORDERS.styleSolid} ${COLORS.blue50}; - } - - &:disabled { - border: 1px ${BORDERS.styleSolid} ${COLORS.grey30}; - } - input[type='number']::-webkit-inner-spin-button, - input[type='number']::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; - } -` diff --git a/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx b/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx index fb1d775b702..35bf74003a8 100644 --- a/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx +++ b/protocol-designer/src/organisms/DefineLiquidsModal/index.tsx @@ -5,8 +5,10 @@ import { SketchPicker } from 'react-color' import { yupResolver } from '@hookform/resolvers/yup' import * as Yup from 'yup' import { Controller, useForm } from 'react-hook-form' +import styled from 'styled-components' import { DEFAULT_LIQUID_COLORS } from '@opentrons/shared-data' import { + BORDERS, Btn, COLORS, DIRECTION_COLUMN, @@ -28,7 +30,7 @@ import * as labwareIngredActions from '../../labware-ingred/actions' import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' import { swatchColors } from '../../components/swatchColors' import { HandleEnter } from '../../atoms/HandleEnter' -import { DescriptionField, LINE_CLAMP_TEXT_STYLE } from '../../atoms' +import { LINE_CLAMP_TEXT_STYLE } from '../../atoms' import type { ColorResult, RGBColor } from 'react-color' import type { ThunkDispatch } from 'redux-thunk' @@ -310,3 +312,13 @@ export function DefineLiquidsModal( ) } + +export const DescriptionField = styled.textarea` + min-height: 5rem; + width: 100%; + border: 1px ${BORDERS.styleSolid} ${COLORS.grey50}; + border-radius: ${BORDERS.borderRadius4}; + padding: ${SPACING.spacing8}; + font-size: ${TYPOGRAPHY.fontSizeP}; + resize: none; +` diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/AddMetadata.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/AddMetadata.tsx index afb8e83e9c7..fcc9956ad6b 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/AddMetadata.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/AddMetadata.tsx @@ -1,16 +1,18 @@ import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' +import styled from 'styled-components' import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' import { + BORDERS, COLORS, DIRECTION_COLUMN, Flex, InputField, SPACING, StyledText, + TYPOGRAPHY, } from '@opentrons/components' -import { DescriptionField } from '../../atoms' import { HandleEnter } from '../../atoms/HandleEnter' import { analyticsEvent } from '../../analytics/actions' import { ONBOARDING_FLOW_DURATION_EVENT } from '../../analytics/constants' @@ -92,3 +94,13 @@ export function AddMetadata(props: AddMetadataProps): JSX.Element | null { ) } + +export const DescriptionField = styled.textarea` + min-height: 5rem; + width: 100%; + border: 1px ${BORDERS.styleSolid} ${COLORS.grey50}; + border-radius: ${BORDERS.borderRadius4}; + padding: ${SPACING.spacing8}; + font-size: ${TYPOGRAPHY.fontSizeP}; + resize: none; +` From 7d50f2dbccfe07a3e446eb6d32acbde86e4178b8 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Thu, 21 Nov 2024 16:07:40 -0500 Subject: [PATCH 070/220] =?UTF-8?q?fix(protocol-designer):=20filter=20out?= =?UTF-8?q?=20module=20addressable=20area=20names=20from=E2=80=A6=20(#1693?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … avail slot closes RQA-3662 --- .../src/labware-ingred/actions/thunks.ts | 1 - protocol-designer/src/labware-ingred/utils.ts | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/protocol-designer/src/labware-ingred/actions/thunks.ts b/protocol-designer/src/labware-ingred/actions/thunks.ts index dedfae883d8..38cccb252fb 100644 --- a/protocol-designer/src/labware-ingred/actions/thunks.ts +++ b/protocol-designer/src/labware-ingred/actions/thunks.ts @@ -73,7 +73,6 @@ export const createContainer: ( args.slot || getNextAvailableDeckSlot(initialDeckSetup, robotType, labwareDef) const isTiprack = getIsTiprack(labwareDef) - if (slot) { const id = `${uuid()}:${args.labwareDefURI}` const adapterId = diff --git a/protocol-designer/src/labware-ingred/utils.ts b/protocol-designer/src/labware-ingred/utils.ts index d4c6dc5e1bf..377dff50eb5 100644 --- a/protocol-designer/src/labware-ingred/utils.ts +++ b/protocol-designer/src/labware-ingred/utils.ts @@ -1,5 +1,6 @@ import { FIXED_TRASH_ID, + FLEX_MODULE_ADDRESSABLE_AREAS, getAreSlotsAdjacent, getDeckDefFromRobotType, getIsLabwareAboveHeight, @@ -7,6 +8,7 @@ import { MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM, MOVABLE_TRASH_ADDRESSABLE_AREAS, OT2_ROBOT_TYPE, + THERMOCYCLER_MODULE_TYPE, WASTE_CHUTE_ADDRESSABLE_AREAS, } from '@opentrons/shared-data' import { COLUMN_4_SLOTS } from '@opentrons/step-generation' @@ -30,6 +32,16 @@ export function getNextAvailableDeckSlot( module => module.type === HEATERSHAKER_MODULE_TYPE )?.slot + const hasTC = Object.values(initialDeckSetup.modules).find( + module => module.type === THERMOCYCLER_MODULE_TYPE + ) + let moduleSlots = Object.values(initialDeckSetup.modules) + .filter(module => module.slot) + .map(mod => mod.slot) + if (hasTC) { + moduleSlots = [...moduleSlots, '8', '10', '11'] + } + return deckDef.locations.addressableAreas.find(slot => { const cutoutIds = Object.values(initialDeckSetup.additionalEquipmentOnDeck) .filter(ae => ae.name === 'stagingArea') @@ -47,12 +59,17 @@ export function getNextAvailableDeckSlot( MOVABLE_TRASH_ADDRESSABLE_AREAS.includes(slot.id) || WASTE_CHUTE_ADDRESSABLE_AREAS.includes(slot.id) || slot.id === FIXED_TRASH_ID + ) { + isSlotEmpty = false + } else if ( + moduleSlots.includes(slot.id) || + FLEX_MODULE_ADDRESSABLE_AREAS.includes(slot.id) ) { isSlotEmpty = false // return slot as full if slot is adjacent to heater-shaker for ot-2 and taller than 53mm } else if ( heaterShakerSlot != null && - deckDef.robot.model === OT2_ROBOT_TYPE && + robotType === OT2_ROBOT_TYPE && isSlotEmpty && labwareDefinition != null ) { From eff74bc9ca1bd75778caa91fdb84681ceb5e8142 Mon Sep 17 00:00:00 2001 From: koji Date: Thu, 21 Nov 2024 16:15:59 -0500 Subject: [PATCH 071/220] fix(components): fix unit text wrap-issue (#16943) * fix(components): fix unit text wrap-issue --- components/src/atoms/InputField/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/src/atoms/InputField/index.tsx b/components/src/atoms/InputField/index.tsx index 713930bb233..f5c126a15ec 100644 --- a/components/src/atoms/InputField/index.tsx +++ b/components/src/atoms/InputField/index.tsx @@ -232,13 +232,13 @@ export const InputField = React.forwardRef( color: ${props.disabled ? COLORS.grey40 : COLORS.grey50}; font: ${TYPOGRAPHY.bodyTextRegular}; text-align: ${TYPOGRAPHY.textAlignRight}; + white-space: ${NO_WRAP}; @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { color: ${props.disabled ? COLORS.grey40 : COLORS.grey50}; font-size: ${TYPOGRAPHY.fontSize22}; font-weight: ${TYPOGRAPHY.fontWeightRegular}; line-height: ${TYPOGRAPHY.lineHeight28}; justify-content: ${textAlign}; - white-space: ${NO_WRAP}; } ` From 4f061f7b30e4ddd9e21e03d96f022e7d9d832c68 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Thu, 21 Nov 2024 16:27:39 -0500 Subject: [PATCH 072/220] fix(app): fix intervention modal icon sizing (#16940) --- app/src/molecules/InterventionModal/index.tsx | 18 +++++++++++++----- app/src/organisms/InterventionModal/index.tsx | 6 +++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/src/molecules/InterventionModal/index.tsx b/app/src/molecules/InterventionModal/index.tsx index bb684e288b5..679d3b3d1f8 100644 --- a/app/src/molecules/InterventionModal/index.tsx +++ b/app/src/molecules/InterventionModal/index.tsx @@ -23,7 +23,6 @@ import { import { getIsOnDevice } from '/app/redux/config' -import type { IconName } from '@opentrons/components' import { ModalContentOneColSimpleButtons } from './ModalContentOneColSimpleButtons' import { TwoColumn } from './TwoColumn' import { OneColumn } from './OneColumn' @@ -32,6 +31,10 @@ import { ModalContentMixed } from './ModalContentMixed' import { DescriptionContent } from './DescriptionContent' import { DeckMapContent } from './DeckMapContent' import { CategorizedStepContent } from './CategorizedStepContent' + +import type { FlattenSimpleInterpolation } from 'styled-components' +import type { IconName } from '@opentrons/components' + export { ModalContentOneColSimpleButtons, TwoColumn, @@ -122,6 +125,8 @@ export interface InterventionModalProps { type?: ModalType /** optional icon name */ iconName?: IconName | null | undefined + /* Optional icon size override. */ + iconSize?: string /** modal contents */ children: React.ReactNode } @@ -133,6 +138,7 @@ export function InterventionModal({ iconName, iconHeading, children, + iconSize, }: InterventionModalProps): JSX.Element { const modalType = type ?? 'intervention-required' const headerColor = @@ -166,7 +172,7 @@ export function InterventionModal({ {titleHeading} {iconName != null ? ( - + ) : null} {iconHeading != null ? iconHeading : null} @@ -178,9 +184,11 @@ export function InterventionModal({ ) } -const ICON_STYLE = css` - width: ${SPACING.spacing32}; - height: ${SPACING.spacing32}; +const buildIconStyle = ( + iconSize: string | undefined +): FlattenSimpleInterpolation => css` + width: ${iconSize ?? SPACING.spacing16}; + height: ${iconSize ?? SPACING.spacing16}; margin: ${SPACING.spacing4}; cursor: ${CURSOR_POINTER}; diff --git a/app/src/organisms/InterventionModal/index.tsx b/app/src/organisms/InterventionModal/index.tsx index 4e837b9458a..864bc99a231 100644 --- a/app/src/organisms/InterventionModal/index.tsx +++ b/app/src/organisms/InterventionModal/index.tsx @@ -165,7 +165,7 @@ export function InterventionModal({ } })() - const { iconName, headerTitle, headerTitleOnDevice } = (() => { + const { iconName, headerTitle, headerTitleOnDevice, iconSize } = (() => { switch (command.commandType) { case 'waitForResume': case 'pause': @@ -173,12 +173,14 @@ export function InterventionModal({ iconName: 'pause-circle' as IconName, headerTitle: t('pause_on', { robot_name: robotName }), headerTitleOnDevice: t('pause'), + iconSize: SPACING.spacing32, } case 'moveLabware': return { iconName: 'move-xy-circle' as IconName, headerTitle: t('move_labware_on', { robot_name: robotName }), headerTitleOnDevice: t('move_labware'), + iconSize: SPACING.spacing32, } default: console.warn( @@ -189,6 +191,7 @@ export function InterventionModal({ iconName: null, headerTitle: '', headerTitleOnDevice: '', + iconSize: undefined, } } })() @@ -228,6 +231,7 @@ export function InterventionModal({ iconHeading={{headerTitle}} iconName={iconName} type="intervention-required" + iconSize={iconSize} > {childContent} From 8b2196a5deee7c2de532c7f9693129fb48477e60 Mon Sep 17 00:00:00 2001 From: CaseyBatten Date: Thu, 21 Nov 2024 16:28:59 -0500 Subject: [PATCH 073/220] fix(api): raise error during analysis plate reader read without lid closed (#16941) Covers RABR-674 Raises an error during analysis when the plate reader lid is not closed and a read is attempted. --- .../protocol_engine/commands/absorbance_reader/read.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py index 8743fd1383b..8e8926089f1 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py @@ -80,6 +80,10 @@ async def execute( # noqa: C901 raise CannotPerformModuleAction( "Cannot perform Read action on Absorbance Reader without calling `.initialize(...)` first." ) + if abs_reader_substate.is_lid_on is False: + raise CannotPerformModuleAction( + "Absorbance Plate Reader can't read a plate with the lid open. Call `close_lid()` first." + ) # TODO: we need to return a file ID and increase the file count even when a moduel is not attached if ( From cb182a0da3a356ce91cbb64bfcffc83709202b09 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Thu, 21 Nov 2024 16:45:04 -0500 Subject: [PATCH 074/220] fix(components, protocol-designer): add hover state for Checkbox component and StyledLabel (#16942) Fix enabled and hover state background color for both checked and unchecked states of Checkbox component, and add hover state for StyledLabel one-off in SelectPipettes component. Closes RQA-3655 --- components/src/atoms/Checkbox/index.tsx | 5 ++++- .../organisms/EditInstrumentsModal/index.tsx | 15 ++++++++----- .../SelectPipettes.tsx | 22 ++++++++++++------- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/components/src/atoms/Checkbox/index.tsx b/components/src/atoms/Checkbox/index.tsx index 8ace61cb0bf..44c2ba8ee04 100644 --- a/components/src/atoms/Checkbox/index.tsx +++ b/components/src/atoms/Checkbox/index.tsx @@ -48,7 +48,7 @@ export function Checkbox(props: CheckboxProps): JSX.Element { align-items: ${ALIGN_CENTER}; flex-direction: ${DIRECTION_ROW}; color: ${isChecked ? COLORS.white : COLORS.black90}; - background-color: ${isChecked ? COLORS.blue50 : COLORS.blue35}; + background-color: ${isChecked ? COLORS.blue50 : COLORS.blue30}; border-radius: ${type === 'round' ? BORDERS.borderRadiusFull : BORDERS.borderRadius8}; @@ -68,6 +68,9 @@ export function Checkbox(props: CheckboxProps): JSX.Element { background-color: ${COLORS.grey35}; color: ${COLORS.grey50}; } + &:hover { + background-color: ${isChecked ? COLORS.blue55 : COLORS.blue35}; + } @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { padding: ${SPACING.spacing20}; diff --git a/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx b/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx index c986c1ce9ba..eefcad8f4bd 100644 --- a/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx +++ b/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx @@ -565,11 +565,13 @@ export function EditInstrumentsModal( TYPOGRAPHY.textDecorationUnderline } > - - {allowAllTipracks - ? t('show_default_tips') - : t('show_all_tips')} - + + + {allowAllTipracks + ? t('show_default_tips') + : t('show_all_tips')} + + {' '} )} @@ -594,4 +596,7 @@ const StyledLabel = styled.label` input[type='file'] { display: none; } + &:hover { + color: ${COLORS.blue50}; + } ` diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx index 3f48e08e6bd..b3c4e691746 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx @@ -14,6 +14,7 @@ import { Box, Btn, Checkbox, + COLORS, CURSOR_POINTER, DIRECTION_COLUMN, DIRECTION_ROW, @@ -399,14 +400,16 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { TYPOGRAPHY.textDecorationUnderline } > - - {allowAllTipracks - ? t('show_default_tips') - : t('show_all_tips')} - + + + {allowAllTipracks + ? t('show_default_tips') + : t('show_all_tips')} + + )} @@ -557,4 +560,7 @@ const StyledLabel = styled.label` input[type='file'] { display: none; } + &:hover { + color: ${COLORS.blue50}; + } ` From 94bbb99370bb2629bd2647ff06978f49ee96b55a Mon Sep 17 00:00:00 2001 From: Ryan Howard Date: Thu, 21 Nov 2024 17:03:40 -0500 Subject: [PATCH 075/220] enable the pipette script to skip all pressure based things (#16934) # Overview Add an option for skipping pressure, we won't actually need this apparently since they changed their mind about skipping the step of drilling out the back vent of the diaphragm but if they change that in the future we can use this. ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --- .../pipette_assembly_qc_ot3/__main__.py | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py b/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py index 90637e81540..6be7cc92fab 100644 --- a/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py +++ b/hardware-testing/hardware_testing/production_qc/pipette_assembly_qc_ot3/__main__.py @@ -119,6 +119,7 @@ class TestConfig: num_trials: int droplet_wait_seconds: int simulate: bool + skip_all_pressure: bool @dataclass @@ -700,9 +701,12 @@ async def _test_for_leak( accumulate_raw_data_cb ), "pressure fixture requires recording data to disk" await _move_to_fixture(api, mount) - test_passed = await _fixture_check_pressure( - api, mount, test_config, fixture, write_cb, accumulate_raw_data_cb - ) + if not test_config.skip_all_pressure: + test_passed = await _fixture_check_pressure( + api, mount, test_config, fixture, write_cb, accumulate_raw_data_cb + ) + else: + test_passed = True else: await _pick_up_tip_for_tip_volume(api, mount, tip_volume=tip_volume) await _move_to_reservoir_liquid(api, mount) @@ -1129,7 +1133,9 @@ async def _read_pressure(_sensor_id: SensorId) -> float: return all(results) -async def _test_diagnostics(api: OT3API, mount: OT3Mount, write_cb: Callable) -> bool: +async def _test_diagnostics( + api: OT3API, mount: OT3Mount, write_cb: Callable, cfg: TestConfig +) -> bool: # ENVIRONMENT SENSOR environment_pass = await _test_diagnostics_environment(api, mount, write_cb) print(f"environment: {_bool_to_pass_fail(environment_pass)}") @@ -1146,9 +1152,14 @@ async def _test_diagnostics(api: OT3API, mount: OT3Mount, write_cb: Callable) -> print(f"capacitance: {_bool_to_pass_fail(capacitance_pass)}") write_cb(["diagnostics-capacitance", _bool_to_pass_fail(capacitance_pass)]) # PRESSURE - pressure_pass = await _test_diagnostics_pressure(api, mount, write_cb) - print(f"pressure: {_bool_to_pass_fail(pressure_pass)}") + if not cfg.skip_all_pressure: + pressure_pass = await _test_diagnostics_pressure(api, mount, write_cb) + print(f"pressure: {_bool_to_pass_fail(pressure_pass)}") + else: + print("Skipping pressure") + pressure_pass = True write_cb(["diagnostics-pressure", _bool_to_pass_fail(pressure_pass)]) + return environment_pass and pressure_pass and encoder_pass and capacitance_pass @@ -1674,7 +1685,9 @@ async def _main(test_config: TestConfig) -> None: # noqa: C901 if not test_config.skip_diagnostics: await api.move_to(mount, hover_over_slot_3) await api.move_rel(mount, Point(z=-20)) - test_passed = await _test_diagnostics(api, mount, csv_cb.write) + test_passed = await _test_diagnostics( + api, mount, csv_cb.write, test_config + ) await api.retract(mount) csv_cb.results("diagnostics", test_passed) if not test_config.skip_plunger: @@ -1806,6 +1819,7 @@ async def _main(test_config: TestConfig) -> None: # noqa: C901 arg_parser.add_argument("--skip-plunger", action="store_true") arg_parser.add_argument("--skip-tip-presence", action="store_true") arg_parser.add_argument("--skip-liquid-probe", action="store_true") + arg_parser.add_argument("--skip-all-pressure", action="store_true") arg_parser.add_argument("--fixture-side", choices=["left", "right"], default="left") arg_parser.add_argument("--port", type=str, default="") arg_parser.add_argument("--num-trials", type=int, default=2) @@ -1841,11 +1855,11 @@ async def _main(test_config: TestConfig) -> None: # noqa: C901 _cfg = TestConfig( operator_name=operator, skip_liquid=args.skip_liquid, - skip_fixture=args.skip_fixture, + skip_fixture=args.skip_fixture or args.skip_all_pressure, skip_diagnostics=args.skip_diagnostics, skip_plunger=args.skip_plunger, skip_tip_presence=args.skip_tip_presence, - skip_liquid_probe=args.skip_liquid_probe, + skip_liquid_probe=args.skip_liquid_probe or args.skip_all_pressure, fixture_port=args.port, fixture_side=args.fixture_side, fixture_aspirate_sample_count=args.aspirate_sample_count, @@ -1859,6 +1873,7 @@ async def _main(test_config: TestConfig) -> None: # noqa: C901 num_trials=args.num_trials, droplet_wait_seconds=args.wait, simulate=args.simulate, + skip_all_pressure=args.skip_all_pressure, ) # NOTE: overwrite default aspirate sample-count from user's input # FIXME: this value is being set in a few places, maybe there's a way to clean this up From a166bc3e363aef8d5091b10699f521e5f51d708e Mon Sep 17 00:00:00 2001 From: Caila Marashaj <98041399+caila-marashaj@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:05:28 -0500 Subject: [PATCH 076/220] feat(api): add new speed for emulsifying pipette plunger (#16917) --- api/src/opentrons/config/defaults_ot3.py | 1 + .../backends/flex_protocol.py | 5 ++ .../backends/ot3controller.py | 13 ++++ .../hardware_control/backends/ot3simulator.py | 5 ++ .../hardware_control/backends/ot3utils.py | 30 +++++++++- .../instruments/ot3/pipette.py | 4 ++ api/src/opentrons/hardware_control/ot3api.py | 11 ++++ .../backends/test_ot3_utils.py | 18 +++++- .../hardware_control/test_motion_plan.py | 59 ++++++++++++++++++- .../2/general/eight_channel_em/p1000/3_0.json | 2 +- .../eight_channel_em/p1000/default/3_0.json | 6 +- .../opentrons_shared_data/pipette/types.py | 1 + 12 files changed, 148 insertions(+), 7 deletions(-) diff --git a/api/src/opentrons/config/defaults_ot3.py b/api/src/opentrons/config/defaults_ot3.py index 55565745d3a..53fab18392c 100644 --- a/api/src/opentrons/config/defaults_ot3.py +++ b/api/src/opentrons/config/defaults_ot3.py @@ -75,6 +75,7 @@ DEFAULT_GRIPPER_MOUNT_OFFSET: Final[Offset] = (84.55, -12.75, 93.85) DEFAULT_SAFE_HOME_DISTANCE: Final = 5 DEFAULT_CALIBRATION_AXIS_MAX_SPEED: Final = 30 +DEFAULT_EMULSIFYING_PIPETTE_AXIS_MAX_SPEED: Final = 90 DEFAULT_MAX_SPEEDS: Final[ByGantryLoad[Dict[OT3AxisKind, float]]] = ByGantryLoad( high_throughput={ diff --git a/api/src/opentrons/hardware_control/backends/flex_protocol.py b/api/src/opentrons/hardware_control/backends/flex_protocol.py index c5294938fa0..8b81d2c66ef 100644 --- a/api/src/opentrons/hardware_control/backends/flex_protocol.py +++ b/api/src/opentrons/hardware_control/backends/flex_protocol.py @@ -69,6 +69,11 @@ def update_constraints_for_calibration_with_gantry_load( ) -> None: ... + def update_constraints_for_emulsifying_pipette( + self, mount: OT3Mount, gantry_load: GantryLoad + ) -> None: + ... + def update_constraints_for_plunger_acceleration( self, mount: OT3Mount, acceleration: float, gantry_load: GantryLoad ) -> None: diff --git a/api/src/opentrons/hardware_control/backends/ot3controller.py b/api/src/opentrons/hardware_control/backends/ot3controller.py index 1251fcc4adb..87f886f1c74 100644 --- a/api/src/opentrons/hardware_control/backends/ot3controller.py +++ b/api/src/opentrons/hardware_control/backends/ot3controller.py @@ -50,6 +50,7 @@ get_system_constraints, get_system_constraints_for_calibration, get_system_constraints_for_plunger_acceleration, + get_system_constraints_for_emulsifying_pipette, ) from .tip_presence_manager import TipPresenceManager @@ -393,6 +394,18 @@ def update_constraints_for_calibration_with_gantry_load( f"Set system constraints for calibration: {self._move_manager.get_constraints()}" ) + def update_constraints_for_emulsifying_pipette( + self, mount: OT3Mount, gantry_load: GantryLoad + ) -> None: + self._move_manager.update_constraints( + get_system_constraints_for_emulsifying_pipette( + self._configuration.motion_settings, gantry_load, mount + ) + ) + log.debug( + f"Set system constraints for emulsifying pipette: {self._move_manager.get_constraints()}" + ) + def update_constraints_for_gantry_load(self, gantry_load: GantryLoad) -> None: self._move_manager.update_constraints( get_system_constraints(self._configuration.motion_settings, gantry_load) diff --git a/api/src/opentrons/hardware_control/backends/ot3simulator.py b/api/src/opentrons/hardware_control/backends/ot3simulator.py index e487f963ece..533fffe5642 100644 --- a/api/src/opentrons/hardware_control/backends/ot3simulator.py +++ b/api/src/opentrons/hardware_control/backends/ot3simulator.py @@ -234,6 +234,11 @@ def update_constraints_for_calibration_with_gantry_load( ) -> None: self._sim_gantry_load = gantry_load + def update_constraints_for_emulsifying_pipette( + self, mount: OT3Mount, gantry_load: GantryLoad + ) -> None: + pass + def update_constraints_for_plunger_acceleration( self, mount: OT3Mount, acceleration: float, gantry_load: GantryLoad ) -> None: diff --git a/api/src/opentrons/hardware_control/backends/ot3utils.py b/api/src/opentrons/hardware_control/backends/ot3utils.py index e3952cbd907..3fe6bcdd520 100644 --- a/api/src/opentrons/hardware_control/backends/ot3utils.py +++ b/api/src/opentrons/hardware_control/backends/ot3utils.py @@ -2,7 +2,10 @@ from typing import Dict, Iterable, List, Set, Tuple, TypeVar, cast, Sequence, Optional from typing_extensions import Literal from logging import getLogger -from opentrons.config.defaults_ot3 import DEFAULT_CALIBRATION_AXIS_MAX_SPEED +from opentrons.config.defaults_ot3 import ( + DEFAULT_CALIBRATION_AXIS_MAX_SPEED, + DEFAULT_EMULSIFYING_PIPETTE_AXIS_MAX_SPEED, +) from opentrons.config.types import OT3MotionSettings, OT3CurrentSettings, GantryLoad from opentrons.hardware_control.types import ( Axis, @@ -300,6 +303,31 @@ def get_system_constraints_for_plunger_acceleration( return new_constraints +def get_system_constraints_for_emulsifying_pipette( + config: OT3MotionSettings, + gantry_load: GantryLoad, + mount: OT3Mount, +) -> "SystemConstraints[Axis]": + old_constraints = config.by_gantry_load(gantry_load) + new_constraints = {} + axis_kinds = set([k for _, v in old_constraints.items() for k in v.keys()]) + for axis_kind in axis_kinds: + for axis in Axis.of_kind(axis_kind): + if axis == Axis.of_main_tool_actuator(mount): + _max_speed = float(DEFAULT_EMULSIFYING_PIPETTE_AXIS_MAX_SPEED) + else: + _max_speed = old_constraints["default_max_speed"][axis_kind] + new_constraints[axis] = AxisConstraints.build( + max_acceleration=old_constraints["acceleration"][axis_kind], + max_speed_discont=old_constraints["max_speed_discontinuity"][axis_kind], + max_direction_change_speed_discont=old_constraints[ + "direction_change_speed_discontinuity" + ][axis_kind], + max_speed=_max_speed, + ) + return new_constraints + + def _convert_to_node_id_dict( axis_pos: Coordinates[Axis, CoordinateValue], ) -> NodeIdMotionValues: diff --git a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py index 5a4d9261bfd..b9355874906 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/pipette.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/pipette.py @@ -41,6 +41,7 @@ UlPerMmAction, PipetteName, PipetteModel, + Quirks, ) from opentrons_shared_data.pipette import ( load_data as load_pipette_data, @@ -225,6 +226,9 @@ def active_tip_settings(self) -> SupportedTipsDefinition: def push_out_volume(self) -> float: return self._active_tip_settings.default_push_out_volume + def is_high_speed_pipette(self) -> bool: + return Quirks.highSpeed in self._config.quirks + def act_as(self, name: PipetteName) -> None: """Reconfigure to act as ``name``. ``name`` must be either the actual name of the pipette, or a name in its back-compatibility diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index 491b6168e58..9de9f2f5448 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -634,10 +634,21 @@ async def cache_pipette( self._feature_flags.use_old_aspiration_functions, ) self._pipette_handler.hardware_instruments[mount] = p + if self._pipette_handler.has_pipette(mount): + self._confirm_pipette_motion_constraints(mount) # TODO (lc 12-5-2022) Properly support backwards compatibility # when applicable return skipped + def _confirm_pipette_motion_constraints( + self, + mount: OT3Mount, + ) -> None: + if self._pipette_handler.get_pipette(mount).is_high_speed_pipette(): + self._backend.update_constraints_for_emulsifying_pipette( + mount, self.gantry_load + ) + async def cache_gripper(self, instrument_data: AttachedGripper) -> bool: """Set up gripper based on scanned information.""" grip_cal = load_gripper_calibration_offset(instrument_data.get("id")) diff --git a/api/tests/opentrons/hardware_control/backends/test_ot3_utils.py b/api/tests/opentrons/hardware_control/backends/test_ot3_utils.py index 2e650a2c246..d7125cfb027 100644 --- a/api/tests/opentrons/hardware_control/backends/test_ot3_utils.py +++ b/api/tests/opentrons/hardware_control/backends/test_ot3_utils.py @@ -3,7 +3,7 @@ from opentrons_hardware.hardware_control.motion_planning import Move from opentrons.hardware_control.backends import ot3utils from opentrons_hardware.firmware_bindings.constants import NodeId -from opentrons.hardware_control.types import Axis, OT3Mount +from opentrons.hardware_control.types import Axis, OT3Mount, OT3AxisKind from numpy import float64 as f64 from opentrons.config import defaults_ot3, types as conf_types @@ -95,6 +95,22 @@ def test_get_system_contraints_for_plunger() -> None: assert updated_contraints[axis].max_acceleration == set_acceleration +@pytest.mark.parametrize(["mount"], [[OT3Mount.LEFT], [OT3Mount.RIGHT]]) +def test_get_system_constraints_for_emulsifying_pipette(mount: OT3Mount) -> None: + set_max_speed = 90 + config = defaults_ot3.build_with_defaults({}) + pipette_ax = Axis.of_main_tool_actuator(mount) + default_pip_max_speed = config.motion_settings.default_max_speed[ + conf_types.GantryLoad.LOW_THROUGHPUT + ][OT3AxisKind.P] + updated_constraints = ot3utils.get_system_constraints_for_emulsifying_pipette( + config.motion_settings, conf_types.GantryLoad.LOW_THROUGHPUT, mount + ) + other_pipette = list(set(Axis.pipette_axes()) - {pipette_ax})[0] + assert updated_constraints[pipette_ax].max_speed == set_max_speed + assert updated_constraints[other_pipette].max_speed == default_pip_max_speed + + @pytest.mark.parametrize( ["moving", "expected"], [ diff --git a/hardware/tests/opentrons_hardware/hardware_control/test_motion_plan.py b/hardware/tests/opentrons_hardware/hardware_control/test_motion_plan.py index 857c0d08f92..64ed76a6856 100644 --- a/hardware/tests/opentrons_hardware/hardware_control/test_motion_plan.py +++ b/hardware/tests/opentrons_hardware/hardware_control/test_motion_plan.py @@ -2,7 +2,7 @@ import numpy as np from hypothesis import given, assume, strategies as st from hypothesis.extra import numpy as hynp -from typing import Iterator, List, Tuple +from typing import Iterator, List, Tuple, Dict from opentrons_hardware.hardware_control.motion_planning import move_manager from opentrons_hardware.hardware_control.motion_planning.types import ( @@ -210,3 +210,60 @@ def test_close_move_plan( ) assert converged, f"Failed to converge: {blend_log}" + + +def test_pipette_high_speed_motion() -> None: + """Test that updated motion constraint doesn't get overridden by motion planning.""" + origin: Dict[str, int] = { + "X": 499, + "Y": 499, + "Z": 499, + "A": 499, + "B": 499, + "C": 499, + } + target_list = [] + axis_kinds = ["X", "Y", "Z", "A", "B", "C"] + constraints: SystemConstraints[str] = {} + for axis_kind in axis_kinds: + constraints[axis_kind] = AxisConstraints.build( + max_acceleration=500, + max_speed_discont=500, + max_direction_change_speed_discont=500, + max_speed=500, + ) + origin_mapping: Dict[str, float] = {axis_kind: float(origin[axis_kind])} + target_list.append(MoveTarget.build(origin_mapping, 500)) + + set_axis_kind = "A" + dummy_em_pipette_max_speed = 90.0 + manager = move_manager.MoveManager(constraints=constraints) + + new_axis_constraint = AxisConstraints.build( + max_acceleration=float(constraints[set_axis_kind].max_acceleration), + max_speed_discont=float(constraints[set_axis_kind].max_speed_discont), + max_direction_change_speed_discont=float( + constraints[set_axis_kind].max_direction_change_speed_discont + ), + max_speed=90.0, + ) + new_constraints = {} + + for axis_kind in constraints.keys(): + if axis_kind == set_axis_kind: + new_constraints[axis_kind] = new_axis_constraint + else: + new_constraints[axis_kind] = constraints[axis_kind] + + manager.update_constraints(constraints=new_constraints) + converged, blend_log = manager.plan_motion( + origin=origin, + target_list=target_list, + iteration_limit=20, + ) + for move in blend_log[0]: + unit_vector = move.unit_vector + for block in move.blocks: + top_set_axis_speed = unit_vector[set_axis_kind] * block.final_speed + if top_set_axis_speed != 0: + assert abs(top_set_axis_speed) == dummy_em_pipette_max_speed diff --git a/shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json b/shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json index c49ae20d87a..c267504b404 100644 --- a/shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json +++ b/shared-data/pipette/definitions/2/general/eight_channel_em/p1000/3_0.json @@ -312,7 +312,7 @@ "shaftDiameter": 4.5, "shaftULperMM": 15.904, "backlashDistance": 0.1, - "quirks": [], + "quirks": ["highSpeed"], "plungerHomingConfigurations": { "current": 1.0, "speed": 30 diff --git a/shared-data/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json b/shared-data/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json index 95292a3f98b..52c7b58171d 100644 --- a/shared-data/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json +++ b/shared-data/pipette/definitions/2/liquid/eight_channel_em/p1000/default/3_0.json @@ -2,7 +2,7 @@ "$otSharedSchema": "#/pipette/schemas/2/pipetteLiquidPropertiesSchema.json", "supportedTips": { "t50": { - "uiMaxFlowRate": 802.9, + "uiMaxFlowRate": 1431.0, "defaultAspirateFlowRate": { "default": 478, "valuesByApiLevel": { "2.14": 478 } @@ -83,7 +83,7 @@ "defaultPushOutVolume": 7 }, "t200": { - "uiMaxFlowRate": 847.9, + "uiMaxFlowRate": 1431.0, "defaultAspirateFlowRate": { "default": 716, "valuesByApiLevel": { "2.14": 716 } @@ -162,7 +162,7 @@ "defaultPushOutVolume": 5 }, "t1000": { - "uiMaxFlowRate": 744.6, + "uiMaxFlowRate": 1431.0, "defaultAspirateFlowRate": { "default": 716, "valuesByApiLevel": { "2.14": 716 } diff --git a/shared-data/python/opentrons_shared_data/pipette/types.py b/shared-data/python/opentrons_shared_data/pipette/types.py index d5315ec12d5..c52e57eb20e 100644 --- a/shared-data/python/opentrons_shared_data/pipette/types.py +++ b/shared-data/python/opentrons_shared_data/pipette/types.py @@ -109,6 +109,7 @@ class Quirks(enum.Enum): dropTipShake = "dropTipShake" doubleDropTip = "doubleDropTip" needsUnstick = "needsUnstick" + highSpeed = "highSpeed" class AvailableUnits(enum.Enum): From 49454f084d0679a78a971ae380ac20066428d256 Mon Sep 17 00:00:00 2001 From: Rhyann Clarke <146747548+rclarke0@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:57:28 -0500 Subject: [PATCH 077/220] feat(abr-testing): add plate reader + tartrazine protocol (#16920) # Overview Adds protocol that uses tartrazine and takes plate reader measurements ## Test Plan and Hands on Testing - passed simulate test and runs on robot ## Changelog - removed OT3 ABR Normalize with Tubes protocol - added plate reader + tartrazine protocol ## Review requests ## Risk assessment --------- Co-authored-by: CaseyBatten --- .../data_collection/abr_google_drive.py | 7 +- .../data_collection/read_robot_logs.py | 72 ++-- .../protocol_simulation/simulation_metrics.py | 14 +- .../3_OT3 ABR Normalize with Tubes.py | 343 ------------------ .../active_protocols/3_Tartrazine Protocol.py | 124 +++++++ .../8_Illumina and Plate Reader.py | 25 +- .../commands/absorbance_reader/read.py | 4 + 7 files changed, 195 insertions(+), 394 deletions(-) delete mode 100644 abr-testing/abr_testing/protocols/active_protocols/3_OT3 ABR Normalize with Tubes.py create mode 100644 abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py diff --git a/abr-testing/abr_testing/data_collection/abr_google_drive.py b/abr-testing/abr_testing/data_collection/abr_google_drive.py index 6552534c4ae..8f82567a7d1 100644 --- a/abr-testing/abr_testing/data_collection/abr_google_drive.py +++ b/abr-testing/abr_testing/data_collection/abr_google_drive.py @@ -44,6 +44,7 @@ def create_data_dictionary( headers: List[str] = [] headers_lpc: List[str] = [] list_of_heights: List[List[Any]] = [[], [], [], [], [], [], [], []] + hellma_plate_orientation = False # default hellma plate is not rotated. for filename in os.listdir(storage_directory): file_path = os.path.join(storage_directory, filename) if file_path.endswith(".json"): @@ -67,6 +68,10 @@ def create_data_dictionary( if run_id in runs_to_save: print(f"started reading run {run_id}.") robot = file_results.get("robot_name") + parameters = file_results.get("runTimeParameters", "") + for parameter in parameters: + if parameter["displayName"] == "Hellma Plate Orientation": + hellma_plate_orientation = bool(parameter["value"]) protocol_name = file_results["protocol"]["metadata"].get("protocolName", "") software_version = file_results.get("API_Version", "") left_pipette = file_results.get("left", "") @@ -123,7 +128,7 @@ def create_data_dictionary( file_results, labware_name="opentrons_tough_pcr_auto_sealing_lid" ) plate_reader_dict = read_robot_logs.plate_reader_commands( - file_results, hellma_plate_standards + file_results, hellma_plate_standards, hellma_plate_orientation ) list_of_heights = read_robot_logs.liquid_height_commands( file_results, list_of_heights diff --git a/abr-testing/abr_testing/data_collection/read_robot_logs.py b/abr-testing/abr_testing/data_collection/read_robot_logs.py index 40712118fe5..7bc83e0a54b 100644 --- a/abr-testing/abr_testing/data_collection/read_robot_logs.py +++ b/abr-testing/abr_testing/data_collection/read_robot_logs.py @@ -250,7 +250,9 @@ def liquid_height_commands( def plate_reader_commands( - file_results: Dict[str, Any], hellma_plate_standards: List[Dict[str, Any]] + file_results: Dict[str, Any], + hellma_plate_standards: List[Dict[str, Any]], + orientation: bool, ) -> Dict[str, object]: """Plate Reader Command Counts.""" commandData = file_results.get("commands", "") @@ -279,38 +281,46 @@ def plate_reader_commands( read = "yes" elif read == "yes" and commandType == "comment": result = command["params"].get("message", "") - formatted_result = result.split("result: ")[1] - result_dict = eval(formatted_result) - result_dict_keys = list(result_dict.keys()) - if len(result_dict_keys) > 1: - read_type = "multi" - else: - read_type = "single" - for wavelength in result_dict_keys: - one_wavelength_dict = result_dict.get(wavelength) - result_ndarray = plate_reader.convert_read_dictionary_to_array( - one_wavelength_dict - ) - for item in hellma_plate_standards: - wavelength_of_interest = item["wavelength"] - if str(wavelength) == str(wavelength_of_interest): - error_cells = plate_reader.check_byonoy_data_accuracy( - result_ndarray, item, False + if "result:" in result: + plate_name = result.split("result:")[0] + formatted_result = result.split("result: ")[1] + print(formatted_result) + result_dict = eval(formatted_result) + result_dict_keys = list(result_dict.keys()) + if len(result_dict_keys) > 1: + read_type = "multi" + else: + read_type = "single" + if "hellma_plate" in plate_name: + for wavelength in result_dict_keys: + one_wavelength_dict = result_dict.get(wavelength) + result_ndarray = plate_reader.convert_read_dictionary_to_array( + one_wavelength_dict ) - if len(error_cells[0]) > 0: - percent = (96 - len(error_cells)) / 96 * 100 - for cell in error_cells: - print( - "FAIL: Cell " + str(cell) + " out of accuracy spec." + for item in hellma_plate_standards: + wavelength_of_interest = item["wavelength"] + if str(wavelength) == str(wavelength_of_interest): + error_cells = plate_reader.check_byonoy_data_accuracy( + result_ndarray, item, orientation ) - else: - percent = 100 - print( - f"PASS: {wavelength_of_interest} meet accuracy specification" - ) - final_result[read_type, wavelength, read_num] = percent - read_num += 1 - read = "no" + if len(error_cells[0]) > 0: + percent = (96 - len(error_cells)) / 96 * 100 + for cell in error_cells: + print( + "FAIL: Cell " + + str(cell) + + " out of accuracy spec." + ) + else: + percent = 100 + print( + f"PASS: {wavelength_of_interest} meet accuracy spec." + ) + final_result[read_type, wavelength, read_num] = percent + read_num += 1 + else: + final_result = result_dict + read = "no" plate_dict = { "Plate Reader # of Reads": read_count, "Plate Reader Avg Read Time (sec)": avg_read_time, diff --git a/abr-testing/abr_testing/protocol_simulation/simulation_metrics.py b/abr-testing/abr_testing/protocol_simulation/simulation_metrics.py index 57695f03557..10c7ea12782 100644 --- a/abr-testing/abr_testing/protocol_simulation/simulation_metrics.py +++ b/abr-testing/abr_testing/protocol_simulation/simulation_metrics.py @@ -225,7 +225,11 @@ def parse_results_volume( else: print(f"Expected JSON object (dict) but got {type(json_data).__name__}.") commands = {} - + hellma_plate_orientation = False + parameters = json_data.get("runTimeParameters", "") + for parameter in parameters: + if parameter["displayName"] == "Hellma Plate Orientation": + hellma_plate_orientation = bool(parameter["value"]) start_time = datetime.fromisoformat(commands[0]["createdAt"]) end_time = datetime.fromisoformat(commands[len(commands) - 1]["completedAt"]) header = ["", "Protocol Name", "Date", "Time"] @@ -283,7 +287,7 @@ def parse_results_volume( temp_module_dict = read_robot_logs.temperature_module_commands(json_data) thermo_cycler_dict = read_robot_logs.thermocycler_commands(json_data) plate_reader_dict = read_robot_logs.plate_reader_commands( - json_data, hellma_plate_standards + json_data, hellma_plate_standards, hellma_plate_orientation ) instrument_dict = read_robot_logs.instrument_commands( json_data, labware_name=None @@ -499,12 +503,12 @@ def check_params(protocol_path: str) -> str: def get_extra_files(protocol_file_path: str) -> tuple[str, List[Path]]: """Get supporting files for protocol simulation if needed.""" params = check_params(protocol_file_path) - needs_files = input("Does your protocol utilize custom labware? (y/n): ") + needs_files = input("Does your protocol utilize custom labware? (Y/N): ") labware_files = [] - if needs_files == "y": + if needs_files == "Y": num_labware = input("How many custom labware?: ") for labware_num in range(int(num_labware)): - path = input("Enter custom labware definition: ") + path = input("Enter custom labware definition path: ") labware_files.append(Path(path)) return (params, labware_files) diff --git a/abr-testing/abr_testing/protocols/active_protocols/3_OT3 ABR Normalize with Tubes.py b/abr-testing/abr_testing/protocols/active_protocols/3_OT3 ABR Normalize with Tubes.py deleted file mode 100644 index 50fb82e94d5..00000000000 --- a/abr-testing/abr_testing/protocols/active_protocols/3_OT3 ABR Normalize with Tubes.py +++ /dev/null @@ -1,343 +0,0 @@ -"""FLEX Normalize with Tubes.""" -from opentrons.protocol_api import ProtocolContext, ParameterContext, Well -from abr_testing.protocols import helpers -from typing import List - -metadata = { - "protocolName": "Flex Normalize with Tubes", - "author": "Opentrons ", - "source": "Protocol Library", -} - -requirements = {"robotType": "Flex", "apiLevel": "2.21"} - -# SCRIPT SETTINGS -ABR_TEST = True -if ABR_TEST: - DRYRUN = True # True = skip incubation times, shorten mix, for testing purposes - TIP_TRASH = ( - False # True = Used tips go in Trash, False = Used tips go back into rack - ) -else: - DRYRUN = False # True = skip incubation times, shorten mix, for testing purposes - TIP_TRASH = True - - -def add_parameters(parameters: ParameterContext) -> None: - """Parameters.""" - helpers.create_csv_parameter(parameters) - helpers.create_dot_bottom_parameter(parameters) - helpers.create_two_pipette_mount_parameters(parameters) - - -def run(ctx: ProtocolContext) -> None: - """Protocol.""" - mount_pos_50ul = ctx.params.pipette_mount_1 # type: ignore[attr-defined] - mount_pos_1000ul = ctx.params.pipette_mount_2 # type: ignore[attr-defined] - dot_bottom = ctx.params.dot_bottom # type: ignore[attr-defined] - parsed_csv = ctx.params.parameters_csv.parse_as_csv() # type: ignore[attr-defined] - if DRYRUN: - ctx.comment("THIS IS A DRY RUN") - else: - ctx.comment("THIS IS A REACTION RUN") - - # labware - tiprack_50_1 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "1") - tiprack_200_1 = ctx.load_labware("opentrons_flex_96_tiprack_200ul", "4") - reagent_tube = ctx.load_labware( - "opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical", "5", "Reagent Tube" - ) - sample_plate = ctx.load_labware( - "armadillo_96_wellplate_200ul_pcr_full_skirt", "2", "Sample Plate" - ) - - # reagent - RSB = reagent_tube.wells()[0] - - # pipette - p1000 = ctx.load_instrument( - "flex_1channel_1000", mount_pos_1000ul, tip_racks=[tiprack_200_1] - ) - p50 = ctx.load_instrument( - "flex_1channel_50", mount_pos_50ul, tip_racks=[tiprack_50_1] - ) - - wells_with_liquids: List[Well] = [RSB] - helpers.load_wells_with_water(ctx, wells_with_liquids, [4000.0]) - helpers.find_liquid_height_of_all_wells(ctx, p50, wells_with_liquids) - MaxTubeVol = 200 - RSBVol = 0.0 - - data = parsed_csv - current = 1 - while current < len(data): - - CurrentWell = str(data[current][1]) - if float(data[current][2]) > 0: - InitialVol = float(data[current][2]) - else: - InitialVol = 0 - if float(data[current][3]) > 0: - InitialConc = float(data[current][3]) - else: - InitialConc = 0 - if float(data[current][4]) > 0: - TargetConc = float(data[current][4]) - else: - TargetConc = 0 - TotalDNA = float(InitialConc * InitialVol) - if TargetConc > 0: - TargetVol = float(TotalDNA / TargetConc) - else: - TargetVol = InitialVol - if TargetVol > InitialVol: - DilutionVol = float(TargetVol - InitialVol) - else: - DilutionVol = 0 - FinalVol = float(DilutionVol + InitialVol) - if TotalDNA > 0 and FinalVol > 0: - FinalConc = float(TotalDNA / FinalVol) - else: - FinalConc = 0 - - if DilutionVol <= 1: - ctx.comment("Sample " + CurrentWell + ": Conc. Too Low, Will Skip") - elif DilutionVol > MaxTubeVol - InitialVol: - DilutionVol = MaxTubeVol - InitialVol - ctx.comment( - "Sample " - + CurrentWell - + ": Conc. Too High, Will add, " - + str(DilutionVol) - + "ul, Max = " - + str(MaxTubeVol) - + "ul" - ) - RSBVol += MaxTubeVol - InitialVol - else: - if DilutionVol <= 20: - ctx.comment( - "Sample " - + CurrentWell - + ": Using p50, will add " - + str(round(DilutionVol, 1)) - ) - elif DilutionVol > 20: - ctx.comment( - "Sample " - + CurrentWell - + ": Using p1000, will add " - + str(round(DilutionVol, 1)) - ) - RSBVol += DilutionVol - current += 1 - - if RSBVol >= 14000: - ctx.pause("Caution, more than 15ml Required") - else: - ctx.comment("RSB Minimum: " + str(round(RSBVol / 1000, 1) + 1) + "ml") - - PiR2 = 176.71 - InitialRSBVol = RSBVol - RSBHeight = (InitialRSBVol / PiR2) + 17.5 - - ctx.pause("Proceed") - ctx.comment("==============================================") - ctx.comment("Normalizing Samples") - ctx.comment("==============================================") - - current = 1 - while current < len(data): - - CurrentWell = str(data[current][1]) - if float(data[current][2]) > 0: - InitialVol = float(data[current][2]) - else: - InitialVol = 0 - if float(data[current][3]) > 0: - InitialConc = float(data[current][3]) - else: - InitialConc = 0 - if float(data[current][4]) > 0: - TargetConc = float(data[current][4]) - else: - TargetConc = 0 - TotalDNA = float(InitialConc * InitialVol) - if TargetConc > 0: - TargetVol = float(TotalDNA / TargetConc) - else: - TargetVol = InitialVol - if TargetVol > InitialVol: - DilutionVol = float(TargetVol - InitialVol) - else: - DilutionVol = 0 - FinalVol = float(DilutionVol + InitialVol) - if TotalDNA > 0 and FinalVol > 0: - FinalConc = float(TotalDNA / FinalVol) - else: - FinalConc = 0 - - ctx.comment("Number " + str(data[current]) + ": Sample " + str(CurrentWell)) - # ctx.comment("Vol Height = "+str(round(RSBHeight,2))) - HeightDrop = DilutionVol / PiR2 - # ctx.comment("Vol Drop = "+str(round(HeightDrop,2))) - - if DilutionVol <= 0: - # If the No Volume - ctx.comment("Conc. Too Low, Skipping") - - elif DilutionVol >= MaxTubeVol - InitialVol: - # If the Required Dilution volume is >= Max Volume - DilutionVol = MaxTubeVol - InitialVol - ctx.comment( - "Conc. Too High, Will add, " - + str(DilutionVol) - + "ul, Max = " - + str(MaxTubeVol) - + "ul" - ) - p1000.pick_up_tip() - p1000.require_liquid_presence(RSB) - p1000.aspirate(DilutionVol, RSB.bottom(RSBHeight - (HeightDrop))) - RSBHeight -= HeightDrop - # ctx.comment("New Vol Height = "+str(round(RSBHeight,2))) - p1000.dispense(DilutionVol, sample_plate.wells_by_name()[CurrentWell]) - wells_with_liquids.append(sample_plate.wells_by_name()[CurrentWell]) - HighVolMix = 10 - for Mix in range(HighVolMix): - p1000.move_to(sample_plate.wells_by_name()[CurrentWell].center()) - p1000.aspirate(100) - p1000.move_to( - sample_plate.wells_by_name()[CurrentWell].bottom(0.5) - ) # original = () - p1000.aspirate(100) - p1000.dispense(100) - p1000.move_to(sample_plate.wells_by_name()[CurrentWell].center()) - p1000.dispense(100) - wells_with_liquids.append(sample_plate.wells_by_name()[CurrentWell]) - Mix += 1 - p1000.move_to(sample_plate.wells_by_name()[CurrentWell].top()) - ctx.delay(seconds=3) - p1000.blow_out() - p1000.drop_tip() if DRYRUN is False else p1000.return_tip() - - else: - if DilutionVol <= 20: - # If the Required Dilution volume is <= 20ul - ctx.comment("Using p50 to add " + str(round(DilutionVol, 1))) - p50.pick_up_tip() - if round(float(data[current][3]), 1) <= 20: - p50.require_liquid_presence(RSB) - p50.aspirate(DilutionVol, RSB.bottom(RSBHeight - (HeightDrop))) - RSBHeight -= HeightDrop - else: - p50.require_liquid_presence(RSB) - p50.aspirate(20, RSB.bottom(RSBHeight - (HeightDrop))) - RSBHeight -= HeightDrop - p50.dispense(DilutionVol, sample_plate.wells_by_name()[CurrentWell]) - wells_with_liquids.append(sample_plate.wells_by_name()[CurrentWell]) - p50.move_to( - sample_plate.wells_by_name()[CurrentWell].bottom(z=dot_bottom) - ) # original = () - # Mix volume <=20ul - if DilutionVol + InitialVol <= 20: - p50.mix(10, DilutionVol + InitialVol) - elif DilutionVol + InitialVol > 20: - p50.mix(10, 20) - p50.move_to(sample_plate.wells_by_name()[CurrentWell].top()) - ctx.delay(seconds=3) - p50.blow_out() - p50.drop_tip() if DRYRUN is False else p50.return_tip() - - elif DilutionVol > 20: - # If the required volume is >20 - ctx.comment("Using p1000 to add " + str(round(DilutionVol, 1))) - p1000.pick_up_tip() - p1000.require_liquid_presence(RSB) - p1000.aspirate(DilutionVol, RSB.bottom(RSBHeight - (HeightDrop))) - RSBHeight -= HeightDrop - if DilutionVol + InitialVol >= 120: - HighVolMix = 10 - for Mix in range(HighVolMix): - p1000.move_to( - sample_plate.wells_by_name()[CurrentWell].center() - ) - p1000.aspirate(100) - p1000.move_to( - sample_plate.wells_by_name()[CurrentWell].bottom( - z=dot_bottom - ) - ) # original = () - p1000.aspirate(DilutionVol + InitialVol - 100) - p1000.dispense(100) - p1000.move_to( - sample_plate.wells_by_name()[CurrentWell].center() - ) - p1000.dispense(DilutionVol + InitialVol - 100) - Mix += 1 - wells_with_liquids.append( - sample_plate.wells_by_name()[CurrentWell] - ) - else: - p1000.dispense( - DilutionVol, sample_plate.wells_by_name()[CurrentWell] - ) - p1000.move_to( - sample_plate.wells_by_name()[CurrentWell].bottom(z=dot_bottom) - ) # original = () - p1000.mix(10, DilutionVol + InitialVol) - p1000.move_to(sample_plate.wells_by_name()[CurrentWell].top()) - wells_with_liquids.append(sample_plate.wells_by_name()[CurrentWell]) - ctx.delay(seconds=3) - p1000.blow_out() - p1000.drop_tip() if DRYRUN is False else p1000.return_tip() - current += 1 - - ctx.comment("==============================================") - ctx.comment("Results") - ctx.comment("==============================================") - - current = 1 - while current < len(data): - - CurrentWell = str(data[current][1]) - if float(data[current][2]) > 0: - InitialVol = float(data[current][2]) - else: - InitialVol = 0 - if float(data[current][3]) > 0: - InitialConc = float(data[current][3]) - else: - InitialConc = 0 - if float(data[current][4]) > 0: - TargetConc = float(data[current][4]) - else: - TargetConc = 0 - TotalDNA = float(InitialConc * InitialVol) - if TargetConc > 0: - TargetVol = float(TotalDNA / TargetConc) - else: - TargetVol = InitialVol - if TargetVol > InitialVol: - DilutionVol = float(TargetVol - InitialVol) - else: - DilutionVol = 0 - if DilutionVol > MaxTubeVol - InitialVol: - DilutionVol = MaxTubeVol - InitialVol - FinalVol = float(DilutionVol + InitialVol) - if TotalDNA > 0 and FinalVol > 0: - FinalConc = float(TotalDNA / FinalVol) - else: - FinalConc = 0 - ctx.comment( - "Sample " - + CurrentWell - + ": " - + str(round(FinalVol, 1)) - + " at " - + str(round(FinalConc, 1)) - + "ng/ul" - ) - - current += 1 - helpers.find_liquid_height_of_all_wells(ctx, p50, wells_with_liquids) diff --git a/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py b/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py new file mode 100644 index 00000000000..05a6300e053 --- /dev/null +++ b/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py @@ -0,0 +1,124 @@ +"""Tartrazine Protocol.""" +from opentrons.protocol_api import ProtocolContext, ParameterContext, Well +from abr_testing.protocols import helpers +from opentrons.protocol_api.module_contexts import ( + AbsorbanceReaderContext, + HeaterShakerContext, +) +from datetime import datetime +from typing import Dict, List +import statistics + +metadata = { + "protocolName": "Tartrazine Protocol", + "author": "Opentrons ", + "source": "Protocol Library", +} + +requirements = {"robotType": "Flex", "apiLevel": "2.21"} + + +def add_parameters(parameters: ParameterContext) -> None: + """Parameters.""" + helpers.create_single_pipette_mount_parameter(parameters) + + +def run(ctx: ProtocolContext) -> None: + """Protocol.""" + mount_pos_50ul = ctx.params.pipette_mount # type: ignore[attr-defined] + # Plate Reader + plate_reader: AbsorbanceReaderContext = ctx.load_module( + helpers.abs_mod_str, "A3" + ) # type: ignore[assignment] + hs: HeaterShakerContext = ctx.load_module(helpers.hs_str, "A1") # type: ignore[assignment] + hs_adapter = hs.load_adapter("opentrons_96_pcr_adapter") + tube_rack = ctx.load_labware( + "opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", "C2", "Reagent Tube" + ) + tartrazine_tube = tube_rack["A3"] + + sample_plate_1 = ctx.load_labware( + "nest_96_wellplate_200ul_flat", "D1", "Sample Plate 1" + ) + sample_plate_2 = ctx.load_labware( + "nest_96_wellplate_200ul_flat", "C1", "Sample Plate 2" + ) + sample_plate_3 = ctx.load_labware( + "nest_96_wellplate_200ul_flat", "B1", "Sample Plate 3" + ) + sample_plate_list = [sample_plate_1, sample_plate_2, sample_plate_3] + tiprack_50_1 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "D3") + tiprack_50_2 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "C3") + tiprack_50_3 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "B3") + tip_racks = [tiprack_50_1, tiprack_50_2, tiprack_50_3] + + # Pipette + p50 = ctx.load_instrument("flex_1channel_50", mount_pos_50ul, tip_racks=tip_racks) + + # Probe wells + liquid_vols_and_wells: Dict[str, List[Dict[str, Well | List[Well] | float]]] = { + "Tartrazine": [{"well": tartrazine_tube, "volume": 45.0}] + } + helpers.find_liquid_height_of_loaded_liquids(ctx, liquid_vols_and_wells, p50) + + i = 0 + all_percent_error_dict = {} + cv_dict = {} + for sample_plate in sample_plate_list: + deck_locations = ["D1", "C1", "B1"] + for well in sample_plate.wells(): + p50.pick_up_tip() + height = helpers.find_liquid_height(p50, tartrazine_tube) + p50.aspirate(10, tartrazine_tube.bottom(z=height)) + p50.air_gap(5) + p50.dispense(5, well.top()) + p50.dispense(10, well.bottom(z=0.5)) + p50.blow_out() + p50.return_tip() + helpers.move_labware_to_hs(ctx, sample_plate, hs, hs_adapter) + helpers.set_hs_speed(ctx, hs, 1500, 2.0, True) + hs.open_labware_latch() + plate_reader.close_lid() + plate_reader.initialize("single", [450]) + plate_reader.open_lid() + ctx.move_labware(sample_plate, plate_reader, use_gripper=True) + sample_plate_name = "sample plate_" + str(i + 1) + csv_string = sample_plate_name + "_" + str(datetime.now()) + plate_reader.close_lid() + result = plate_reader.read(csv_string) + for wavelength in result: + dict_of_wells = result[wavelength] + readings_and_wells = dict_of_wells.items() + readings = dict_of_wells.values() + avg = statistics.mean(readings) + # Check if every average is within +/- 5% of 2.85 + percent_error_dict = {} + percent_error_sum = 0.0 + for reading in readings_and_wells: + well_name = str(reading[0]) + measurement = reading[1] + percent_error = (measurement - 2.85) / 2.85 * 100 + percent_error_dict[well_name] = percent_error + percent_error_sum += percent_error + avg_percent_error = percent_error_sum / 96.0 + standard_deviation = statistics.stdev(readings) + try: + cv = standard_deviation / avg + except ZeroDivisionError: + cv = 0.0 + cv_percent = cv * 100 + cv_dict[sample_plate_name] = { + "CV": cv_percent, + "Mean": avg, + "SD": standard_deviation, + "Avg Percent Error": avg_percent_error, + } + all_percent_error_dict[sample_plate_name] = percent_error_dict + plate_reader.open_lid() + ctx.move_labware(sample_plate, deck_locations[i], use_gripper=True) + i += 1 + + # Print percent error dictionary + ctx.comment("Percent Error: " + str(all_percent_error_dict)) + # Print cv dictionary + ctx.comment("Plate Reader result: " + str(cv_dict)) diff --git a/abr-testing/abr_testing/protocols/active_protocols/8_Illumina and Plate Reader.py b/abr-testing/abr_testing/protocols/active_protocols/8_Illumina and Plate Reader.py index 2e835ac04dd..4894cae41d4 100644 --- a/abr-testing/abr_testing/protocols/active_protocols/8_Illumina and Plate Reader.py +++ b/abr-testing/abr_testing/protocols/active_protocols/8_Illumina and Plate Reader.py @@ -19,10 +19,7 @@ } -requirements = { - "robotType": "Flex", - "apiLevel": "2.21", -} +requirements = {"robotType": "Flex", "apiLevel": "2.21"} HELLMA_PLATE_SLOT = "D4" PLATE_READER_SLOT = "C3" @@ -58,14 +55,11 @@ def add_parameters(parameters: ParameterContext) -> None: """Add Parameters.""" helpers.create_hs_speed_parameter(parameters) helpers.create_dot_bottom_parameter(parameters) - parameters.add_str( + parameters.add_bool( variable_name="plate_orientation", display_name="Hellma Plate Orientation", - default="0_deg", - choices=[ - {"display_name": "0 degree Rotation", "value": "0_deg"}, - {"display_name": "180 degree Rotation", "value": "180_deg"}, - ], + default=True, + description="If hellma plate is rotated, set to True.", ) @@ -73,6 +67,7 @@ def plate_reader_actions( protocol: ProtocolContext, plate_reader: AbsorbanceReaderContext, hellma_plate: Labware, + hellma_plate_name: str, ) -> None: """Plate reader single and multi wavelength readings.""" wavelengths = [450, 650] @@ -84,7 +79,7 @@ def plate_reader_actions( protocol.move_labware(hellma_plate, plate_reader, use_gripper=True) plate_reader.close_lid() result = plate_reader.read(str(datetime.now())) - msg = f"result: {result}" + msg = f"{hellma_plate_name} result: {result}" protocol.comment(msg=msg) plate_reader.open_lid() protocol.move_labware(hellma_plate, HELLMA_PLATE_SLOT, use_gripper=True) @@ -95,7 +90,7 @@ def plate_reader_actions( protocol.move_labware(hellma_plate, plate_reader, use_gripper=True) plate_reader.close_lid() result = plate_reader.read(str(datetime.now())) - msg = f"result: {result}" + msg = f"{hellma_plate_name} result: {result}" protocol.comment(msg=msg) plate_reader.open_lid() protocol.move_labware(hellma_plate, HELLMA_PLATE_SLOT, use_gripper=True) @@ -107,6 +102,8 @@ def run(protocol: ProtocolContext) -> None: # LOAD PARAMETERS heater_shaker_speed = protocol.params.heater_shaker_speed # type: ignore[attr-defined] dot_bottom = protocol.params.dot_bottom # type: ignore[attr-defined] + plate_orientation = protocol.params.plate_orientation # type: ignore[attr-defined] + plate_name_str = "hellma_plate_" + str(plate_orientation) global p200_tips global p50_tips # WASTE BIN @@ -182,7 +179,7 @@ def run(protocol: ProtocolContext) -> None: PPC = reagent_plate.wells_by_name()["A6"] EPM = reagent_plate.wells_by_name()["A7"] # Load Liquids - plate_reader_actions(protocol, plate_reader, hellma_plate) + plate_reader_actions(protocol, plate_reader, hellma_plate, plate_name_str) # tip and sample tracking if COLUMNS == 1: @@ -948,4 +945,4 @@ def tipcheck() -> None: p1000.return_tip() if TIP_TRASH is False else p1000.drop_tip() p200_tips += 1 tipcheck() - plate_reader_actions(protocol, plate_reader, hellma_plate) + plate_reader_actions(protocol, plate_reader, hellma_plate, plate_name_str) diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py index 8743fd1383b..1ca848858b6 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py @@ -80,6 +80,10 @@ async def execute( # noqa: C901 raise CannotPerformModuleAction( "Cannot perform Read action on Absorbance Reader without calling `.initialize(...)` first." ) + if abs_reader_substate.is_lid_on is False: + raise CannotPerformModuleAction( + "Cannot perform Read action on Absorbance Reader with the lid open. Try calling `.close_lid()` first." + ) # TODO: we need to return a file ID and increase the file count even when a moduel is not attached if ( From 7af746b800c3b7de888aaa6d03c190701c551ffe Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Fri, 22 Nov 2024 07:13:21 -0500 Subject: [PATCH 078/220] =?UTF-8?q?fix(protocol-designer):=20remove=20flic?= =?UTF-8?q?kering=20in=20timeline=20and=20fix=20distrib=E2=80=A6=20(#16901?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ute details closes RQA-3630 RQA-3624 --- .../localization/en/protocol_steps.json | 8 +- .../localization/en/starting_deck_state.json | 3 + .../Designer/ProtocolSteps/StepSummary.tsx | 31 +++-- .../Timeline/MultichannelSubstep.tsx | 4 - .../Timeline/PipettingSubsteps.tsx | 6 +- .../ProtocolSteps/Timeline/StepContainer.tsx | 4 +- .../Timeline/StepOverflowMenu.tsx | 4 +- .../ProtocolSteps/Timeline/Substep.tsx | 123 ++++++------------ .../Timeline/SubstepsToolbox.tsx | 3 - .../Timeline/TimelineToolbox.tsx | 7 +- .../Designer/ProtocolSteps/Timeline/utils.ts | 27 ---- .../__tests__/ProtocolSteps.test.tsx | 2 + .../pages/Designer/ProtocolSteps/index.tsx | 23 +++- 13 files changed, 89 insertions(+), 156 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/protocol_steps.json b/protocol-designer/src/assets/localization/en/protocol_steps.json index 6105b29b24d..50c6f7879f8 100644 --- a/protocol-designer/src/assets/localization/en/protocol_steps.json +++ b/protocol-designer/src/assets/localization/en/protocol_steps.json @@ -27,7 +27,7 @@ "duplicate": "Duplicate step", "edit_step": "Edit step", "engage_height": "Engage height", - "final_deck_state": "Final deck state", + "ending_deck": "Ending deck", "flow_type_title": "{{type}} flow rate", "from": "from", "heater_shaker": { @@ -104,7 +104,7 @@ "shake": "Shake", "single": "Single path", "speed": "Speed", - "starting_deck_state": "Starting deck state", + "starting_deck": "Starting deck", "step_substeps": "{{stepType}} details", "temperature": "Temperature", "temperature_module": { @@ -120,8 +120,8 @@ "substep_settings": "Set block temperature tofor", "thermocycler_profile": { "end_hold": { - "block": "End at thermocycler block", - "lid_position": "Thermocycler lid" + "block": "End with block at", + "lid_position": "and lid" }, "lid_temperature": "and lid temperature at", "volume": "Run thermocycler profile with" diff --git a/protocol-designer/src/assets/localization/en/starting_deck_state.json b/protocol-designer/src/assets/localization/en/starting_deck_state.json index 080aa23199d..0522cc1291a 100644 --- a/protocol-designer/src/assets/localization/en/starting_deck_state.json +++ b/protocol-designer/src/assets/localization/en/starting_deck_state.json @@ -1,4 +1,7 @@ { + "__end__": "Ending deck", + "__initial_setup__": "Starting deck", + "__presaved_step__": "Unsaved step", "adapter_compatible_lab": "Adapter compatible labware", "adapter": "Adapters", "add_fixture": "Add a fixture", diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepSummary.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepSummary.tsx index 36c82e86199..09135a62b49 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepSummary.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepSummary.tsx @@ -79,7 +79,6 @@ interface StepSummaryProps { export function StepSummary(props: StepSummaryProps): JSX.Element | null { const { currentStep, stepDetails } = props const { t } = useTranslation(['protocol_steps', 'application']) - const labwareNicknamesById = useSelector(getLabwareNicknamesById) const additionalEquipmentEntities = useSelector( getAdditionalEquipmentEntities @@ -91,7 +90,6 @@ export function StepSummary(props: StepSummaryProps): JSX.Element | null { return null } const { stepType } = currentStep - let stepSummaryContent: JSX.Element | null = null switch (stepType) { case 'mix': @@ -184,16 +182,20 @@ export function StepSummary(props: StepSummaryProps): JSX.Element | null { ) : ( - - + + + + {stepSummaryContent != null ? ( - {stepSummaryContent} + + {stepSummaryContent} + ) : null} {stepDetails != null && stepDetails !== '' ? ( diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/MultichannelSubstep.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/MultichannelSubstep.tsx index 920ee3c0938..afd08e74e21 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/MultichannelSubstep.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/MultichannelSubstep.tsx @@ -17,13 +17,11 @@ import type { AdditionalEquipmentName } from '@opentrons/step-generation' import type { StepItemSourceDestRow, SubstepIdentifier, - WellIngredientNames, } from '../../../../steplist' interface MultichannelSubstepProps { trashName: AdditionalEquipmentName | null rowGroup: StepItemSourceDestRow[] - ingredNames: WellIngredientNames stepId: string substepIndex: number selectSubstep: (substepIdentifier: SubstepIdentifier) => void @@ -39,7 +37,6 @@ export function MultichannelSubstep( stepId, selectSubstep, substepIndex, - ingredNames, trashName, isSameLabware, } = props @@ -107,7 +104,6 @@ export function MultichannelSubstep( trashName={trashName} key={rowKey} volume={row.volume} - ingredNames={ingredNames} source={row.source} dest={row.dest} stepId={stepId} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/PipettingSubsteps.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/PipettingSubsteps.tsx index 5c2be0bc9fa..82da4015e45 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/PipettingSubsteps.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/PipettingSubsteps.tsx @@ -4,7 +4,6 @@ import { MultichannelSubstep } from './MultichannelSubstep' import type { SourceDestSubstepItem, SubstepIdentifier, - WellIngredientNames, } from '../../../../steplist' import { useSelector } from 'react-redux' import { @@ -14,13 +13,12 @@ import { interface PipettingSubstepsProps { substeps: SourceDestSubstepItem - ingredNames: WellIngredientNames selectSubstep: (substepIdentifier: SubstepIdentifier) => void hoveredSubstep?: SubstepIdentifier | null } export function PipettingSubsteps(props: PipettingSubstepsProps): JSX.Element { - const { substeps, selectSubstep, hoveredSubstep, ingredNames } = props + const { substeps, selectSubstep, hoveredSubstep } = props const stepId = substeps.parentStepId const formData = useSelector(getSavedStepForms)[stepId] const additionalEquipment = useSelector(getAdditionalEquipment) @@ -52,7 +50,6 @@ export function PipettingSubsteps(props: PipettingSubstepsProps): JSX.Element { stepId={substeps.parentStepId} substepIndex={groupKey} selectSubstep={selectSubstep} - ingredNames={ingredNames} isSameLabware={isSameLabware} /> ) @@ -64,7 +61,6 @@ export function PipettingSubsteps(props: PipettingSubstepsProps): JSX.Element { selectSubstep={selectSubstep} stepId={substeps.parentStepId} substepIndex={substepIndex} - ingredNames={ingredNames} volume={row.volume} source={row.source} dest={row.dest} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepContainer.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepContainer.tsx index 4ed55987f08..9cde39888ce 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepContainer.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepContainer.tsx @@ -45,8 +45,8 @@ import type { IconName } from '@opentrons/components' import type { StepIdType } from '../../../../form-types' import type { BaseState } from '../../../../types' -const STARTING_DECK_STATE = 'Starting deck state' -const FINAL_DECK_STATE = 'Final deck state' +const STARTING_DECK_STATE = 'Starting deck' +const FINAL_DECK_STATE = 'Ending deck' const PX_HEIGHT_TO_TOP_OF_CONTAINER = 32 export interface StepContainerProps { title: string diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx index 5bb125b3269..3dd7f529743 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx @@ -64,7 +64,9 @@ export function StepOverflowMenu(props: StepOverflowMenuProps): JSX.Element { const isPipetteStep = savedStepFormData.stepType === 'moveLiquid' || savedStepFormData.stepType === 'mix' - const isThermocyclerProfile = savedStepFormData.stepType === 'thermocycler' + const isThermocyclerProfile = + savedStepFormData.stepType === 'thermocycler' && + savedStepFormData.thermocyclerFormType === 'thermocyclerProfile' const duplicateStep = ( stepId: StepIdType diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx index a34dc799337..7c62f23140d 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx @@ -1,38 +1,24 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' import noop from 'lodash/noop' -import { AIR } from '@opentrons/step-generation' import { ALIGN_CENTER, - COLORS, DIRECTION_COLUMN, DeckInfoLabel, Flex, JUSTIFY_SPACE_BETWEEN, - LiquidIcon, ListItem, SPACING, StyledText, Tag, } from '@opentrons/components' -import { selectors } from '../../../../labware-ingred/selectors' -import { - MIXED_WELL_COLOR, - swatchColors, -} from '../../../../components/swatchColors' -import { compactPreIngreds, formatVolume } from './utils' +import { formatVolume } from './utils' import type { AdditionalEquipmentName } from '@opentrons/step-generation' -import type { - SubstepIdentifier, - SubstepWellData, - WellIngredientNames, -} from '../../../../steplist' +import type { SubstepIdentifier, SubstepWellData } from '../../../../steplist' interface SubstepProps { trashName: AdditionalEquipmentName | null - ingredNames: WellIngredientNames stepId: string substepIndex: number volume?: number | string | null @@ -45,7 +31,6 @@ interface SubstepProps { function SubstepComponent(props: SubstepProps): JSX.Element { const { volume, - ingredNames, stepId, substepIndex, source, @@ -54,24 +39,14 @@ function SubstepComponent(props: SubstepProps): JSX.Element { selectSubstep: propSelectSubstep, isSameLabware, } = props - const { t } = useTranslation(['application', 'protocol_steps', 'shared']) - const compactedSourcePreIngreds = source - ? compactPreIngreds(source.preIngreds) - : {} + const { i18n, t } = useTranslation([ + 'application', + 'protocol_steps', + 'shared', + ]) const selectSubstep = propSelectSubstep ?? noop - const ingredIds: string[] = Object.keys(compactedSourcePreIngreds) - const liquidDisplayColors = useSelector(selectors.getLiquidDisplayColors) - const noColor = ingredIds.filter(id => id !== AIR).length === 0 - let color = MIXED_WELL_COLOR - if (ingredIds.length === 1) { - color = - liquidDisplayColors[Number(ingredIds[0])] ?? swatchColors(ingredIds[0]) - } else if (noColor) { - color = COLORS.transparent - } - const volumeTag = ( - {ingredIds.length > 0 ? ( - - - - - {ingredIds.map(groupId => ingredNames[groupId]).join(',')} - - - ) : null} - {t('protocol_steps:mix')} @@ -123,33 +88,27 @@ function SubstepComponent(props: SubstepProps): JSX.Element { {t('protocol_steps:in')} ) : ( <> - - - {ingredIds.length > 0 ? ( - - - - - {ingredIds.map(groupId => ingredNames[groupId]).join(',')} - - - ) : null} - {source != null ? ( + {source != null ? ( + + {t('protocol_steps:aspirated')} @@ -159,16 +118,19 @@ function SubstepComponent(props: SubstepProps): JSX.Element { {t('protocol_steps:from')} - ) : null} - - - - {dest !== undefined ? ( + + + ) : null} + {dest != null ? ( + - {ingredIds.length > 0 ? ( - - - - {ingredIds.map(groupId => ingredNames[groupId]).join(',')} - - - ) : null} {dest != null || trashName != null ? ( @@ -195,19 +149,20 @@ function SubstepComponent(props: SubstepProps): JSX.Element { ) : null} - ) : null} - + + ) : null} )} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx index 3a1ddff44f0..e2460741ebf 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx @@ -8,7 +8,6 @@ import { StyledText, Toolbox, } from '@opentrons/components' -import { selectors as labwareIngredSelectors } from '../../../../labware-ingred/selectors' import { getSubsteps } from '../../../../file-data/selectors' import { getHoveredSubstep } from '../../../../ui/steps' import { @@ -40,7 +39,6 @@ export function SubstepsToolbox( const substeps = useSelector(getSubsteps)[stepId] const formData = useSelector(getSavedStepForms)[stepId] const hoveredSubstep = useSelector(getHoveredSubstep) - const ingredNames = useSelector(labwareIngredSelectors.getLiquidNamesById) const highlightSubstep = (payload: SubstepIdentifier): HoverOnSubstepAction => dispatch(hoverOnSubstep(payload)) @@ -85,7 +83,6 @@ export function SubstepsToolbox( ) : ( { > { }} /> - + ) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts index c7f6f812dc2..56b78507a12 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts @@ -1,8 +1,6 @@ import round from 'lodash/round' -import omitBy from 'lodash/omitBy' import uniq from 'lodash/uniq' import { UAParser } from 'ua-parser-js' -import type { WellIngredientVolumeData } from '../../../../steplist' import type { StepIdType } from '../../../../form-types' export const capitalizeFirstLetterAfterNumber = (title: string): string => @@ -29,31 +27,6 @@ export const formatPercentage = (part: number, total: number): string => { return `${round((part / total) * 100, PERCENTAGE_DECIMALS_ALLOWED)}%` } -export const compactPreIngreds = ( - preIngreds: WellIngredientVolumeData -): Partial< - | { - [ingredId: string]: - | { - volume: number - } - | undefined - } - | { - [well: string]: - | { - [ingredId: string]: { - volume: number - } - } - | undefined - } -> => { - return omitBy(preIngreds, ingred => { - return typeof ingred?.volume === 'number' && ingred.volume <= 0 - }) -} - export const getMetaSelectedSteps = ( multiSelectItemIds: StepIdType[] | null, stepId: StepIdType, diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx index 2ce91e03263..dcfb3dfd58b 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx @@ -10,6 +10,7 @@ import { import { getSelectedStepId, getSelectedSubstep, + getSelectedTerminalItemId, } from '../../../../ui/steps/selectors' import { getDesignerTab } from '../../../../file-data/selectors' import { getEnableHotKeysDisplay } from '../../../../feature-flags/selectors' @@ -60,6 +61,7 @@ describe('ProtocolSteps', () => { vi.mocked(DeckSetupContainer).mockReturnValue(

mock DeckSetupContainer
) + vi.mocked(getSelectedTerminalItemId).mockReturnValue(null) vi.mocked(OffDeck).mockReturnValue(
mock OffDeck
) vi.mocked(getUnsavedForm).mockReturnValue(null) vi.mocked(getSelectedSubstep).mockReturnValue(null) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx index 687553f3dc6..8cb7d8fbfe2 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx @@ -7,7 +7,6 @@ import { DIRECTION_COLUMN, Flex, JUSTIFY_CENTER, - JUSTIFY_FLEX_END, JUSTIFY_FLEX_START, JUSTIFY_SPACE_BETWEEN, POSITION_FIXED, @@ -26,6 +25,8 @@ import { getSelectedSubstep, getSelectedStepId, getHoveredStepId, + getSelectedTerminalItemId, + getHoveredTerminalItemId, } from '../../../ui/steps/selectors' import { DeckSetupContainer } from '../DeckSetup' import { OffDeck } from '../Offdeck' @@ -41,6 +42,8 @@ const CONTENT_MAX_WIDTH = '46.9375rem' export function ProtocolSteps(): JSX.Element { const { i18n, t } = useTranslation('starting_deck_state') const formData = useSelector(getUnsavedForm) + const selectedTerminalItem = useSelector(getSelectedTerminalItemId) + const hoveredTerminalItem = useSelector(getHoveredTerminalItemId) const isMultiSelectMode = useSelector(getIsMultiSelectMode) const selectedSubstep = useSelector(getSelectedSubstep) const enableHoyKeyDisplay = useSelector(getEnableHotKeysDisplay) @@ -88,16 +91,19 @@ export function ProtocolSteps(): JSX.Element { {tab === 'protocolSteps' ? ( ) : null} - - {currentStep != null ? ( + + {currentStep != null && hoveredTerminalItem == null ? ( {i18n.format(currentStep.stepName, 'capitalize')} ) : null} + {(hoveredTerminalItem != null || selectedTerminalItem != null) && + currentHoveredStepId == null ? ( + + {t(hoveredTerminalItem ?? selectedTerminalItem)} + + ) : null} + ) : null} + {selectedTerminalItem != null && currentHoveredStepId == null ? ( + + ) : null} {enableHoyKeyDisplay ? ( From fa28e4799e5a87a875f4f1e863fa3ac5d960cc52 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:02:21 -0500 Subject: [PATCH 079/220] feat(protocol-designer): onboarding animations (#16927) closes AUTH-974 --- .../assets/images/onboarding_animation_1.webm | Bin 0 -> 17563 bytes .../assets/images/onboarding_animation_2.webm | Bin 0 -> 25474 bytes .../assets/images/onboarding_animation_3.webm | Bin 0 -> 58220 bytes .../assets/images/onboarding_animation_4.webm | Bin 0 -> 91617 bytes .../assets/images/onboarding_animation_5.webm | Bin 0 -> 94602 bytes .../assets/images/onboarding_animation_6.webm | Bin 0 -> 67989 bytes .../images/placeholder_image_delete.png | Bin 199922 -> 0 bytes .../CreateNewProtocolWizard/WizardBody.tsx | 71 +++++++++++++----- .../__tests__/WizardBody.test.tsx | 2 +- 9 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 protocol-designer/src/assets/images/onboarding_animation_1.webm create mode 100644 protocol-designer/src/assets/images/onboarding_animation_2.webm create mode 100644 protocol-designer/src/assets/images/onboarding_animation_3.webm create mode 100644 protocol-designer/src/assets/images/onboarding_animation_4.webm create mode 100644 protocol-designer/src/assets/images/onboarding_animation_5.webm create mode 100644 protocol-designer/src/assets/images/onboarding_animation_6.webm delete mode 100644 protocol-designer/src/assets/images/placeholder_image_delete.png diff --git a/protocol-designer/src/assets/images/onboarding_animation_1.webm b/protocol-designer/src/assets/images/onboarding_animation_1.webm new file mode 100644 index 0000000000000000000000000000000000000000..6eed789cb611aa6bb76320c69bff6507a80dfa35 GIT binary patch literal 17563 zcmcJ%byS>PvOV05yCk@~y9Nls-Q8US1Pv0rafd)~cXxMpC%6T73lbbY$eZ`h%$@no z{p;%mz1E@Ysk3WW)p-uxXE%<>kL+~801!~{`sMc=1R;0FWpPHej)qQQ-rI)Z_y$odg0?>Hq;2&fE*l7j57xF>?lP-tXLz8@{r zZgx7)=ZB&uVtjW7x_NBVtJiL)U(&m8L+yWx2~-++N9C2mi`g-U=m%lhJBgE06RClA-%AWF};(-`U( z!XxEfvSWIAJIp-o%ZBeTqUj^f(-q!2sUoP=*WEP}L@Y7|?aelri?&$0Jt2KO##hR& zsNq9qB9RvmsiHBFkGEzjrdbiB{g`}Vwep@b#|*DxllqxD1v}hqDUvp5u(9w1A-g;q z(Z^CBgw{v1A-qCQwIj2zM(=YXmkq>0vewAq?Of*4_@-aP-IXns9}j;Z6Da1LSa(7i z6$|@0XoLlH>DO%4xiI;T)YQawB|PQac@XZ25C;?$B*(57kG!3ftykrmVMg{VXUL~W zZf|nY@<0~d@`RLkH=~ae@uH?fM=zzZ;jYHS<1zjaB7BM2IiHNo)EoH|yMez!P!PtV zP2+aoJq&X=J8k2X%gT}RbnxtA#Ifz{r_45V`UfuHVNT0+hIYD|-;+iGtsB}@gJ?WG z>NliV_D2X!;fd$@qE%$WSpPL)$vZ@&ZcjI%_iOKi5P4&iwQ<$$lkla1MM!UmOhTQn zdO1mk@;YMa@u?}m3W<@3p&|z}KKJzA6xQzUm55D3DzEp`_^{si-A*Rod{F>o`oOWCUgrVNjb<6MJRWO>0ruMLo)O+ z=T*Sw?z?@^ie6PK)^Op-X)bXzarVG+=cO$H<#$s*?59Fnp7e)Q~xRK zSx+mN$76;WH3zqqq1>Ej!(F_A?Y-L;eSpwRaO3Lc_&kng00DZfjY{zDy^)zdFARle zGyz0pzDmAU_BG}^dWKN!AbJQc!|$?#90>3owj=Ow#<+%*N@`m!hl^hi=Yu zLRbQGg(k{=hWl!xiN<;l8}RogH#d6G$v%yHMlO)|Q<~5P70O*&7kj4?U(1g**empc z-d`=S;0;;tMd5@@Pv0E$4FOwzIy4bFJZ}Ya>#U%`0gJ8dC=}nrm!LKxgO%TDQLRLx z;|H(8Rh+)hQ?VoGeJuNs`nV~zwMu!~@AMpP(b8nCH!ukTYuE7|u30=f)yv(x^ilz0 zNsLBuY@!{9A2Z}w>ArE*BT?Z0>4pyfGx-O=y7~Ee0OI?p!>%UWrd=JM7LmA$f+VF` zMcgW3Hdo}2gN|GFo{sK}6>1wd`-1)V1@aMP1dN6~pRHFE4%igWjKBrzgyxSp?;1Cv z{A)8DYTRlp^oz3K!J*f{a1M$n~x_ZNDMQ% zjvqemM?<8O5EL0eDysQ*-{Zz9Q73;|-?y^@+@2k9r=2O9D(Drt(S>J1KDwKI4`%_x z_@Z))00m{5SfJN?(-dN4Yc~kTJ-~3yY>Qqcyk|2GLAB7!iZl3Q`lhMyldE3XzERU4 z22}xs@Er9ML=%|P>8D-WPT9FGwFoxWc-xWNfJT|FXyC`LStvY+0XF>=XdXhJUe)tu z*e2{OcpVClCzcrQBYtubV> z)plETab93ei98|zJs(~^3}3(lg0Ao*EO%(aKBQ16_w@I}QM|35^$Kc%)|(8-lg&bb zm2BfjOkTpBu9h{WBUywM&aPN)u(QwdZ4VeJ)Fca0E}eWjHy#3uVFmDJ4TKC`z`a{` zUu8#Ez}vL$DUJ?ImHyOd3NB)!vjJEcVb2&J zum>2uZnSIUcUrN6eMMUL6xy-@8`O^aMrN{Y<3h2I=7)3=OCLI9;Hh9-22B9%`0ubz z;GXWWbB%C(L`5Vz>9)5}s5(8EeZ5Qr%)Brl+pX62i6d^_WSeTIwa(EK_O-Wu3F{?x z12a{(ObNsjyKDX>vULU@;-A$@W!15P^Jd>M0gqcpIkMH?2Y>NfM}p&4gMmNBh#y`k z=3B*5T!#}el~^l}E#Y>wk5|4w_j^4Xt96h4Ei+b}SM)~uK*4;CHJe7F*x9Oj z)VWu|vQ9XbLOLC@ILj-~ZJWHUf$l8`S01qeJPBY5nN;}%dO{xn8Nb+KR_8+tu;IEX z?h-7RB2PwbznjN$#TnVg+@9);z*mOsQa21RvTij7j9J8h9VPqI*WwuCNY#@fBsq6O z6+@+!zoqd_``E}LB7c53Y zMv3uZ#v)Mn4qAzlv|pg-fml`MKTWkrU!E+w5`>fCdl%;EzrL$O8e8 z-jtJ`5!k|(-1j-J`y@!SR7(ZpkDs(O$i(%(){N`EepT?YWYiC*pg7@EPD zNY}|{=Ys$qzfDSBeg1EgFLs1{F0J}^mfo+v^8fgf5%@R5-@fudfQf(L``^AyYA$qw zqb&r&vR~}({tK)Xd10;Qv>L$6lt8lo;_nrH6$mKv$3&7C00tmBS$ho;)@)=GQ4pSA zJi`n!xW(lpbuWuk<9#k99cL&YI|~GK{(riKv|+sr*3T{g0W)80I$o%L@%z6*fpnF= z%rwxQ!T6T2mYoX%4*eHzY;Ve=il4o+3qiokKW6_p1zfhGU3`A@;>H;-fYZOL9Xw*JP} z^MAR^1A(3Vwn+i}Cv3d|>j`1eJ+HpNvHsZod+Gg89>4`&Z2sSQFtMC+&m$#Yd-Z1d ze|gIXfye%~3Hy)8*m6$1Skyg(yt4&hLEvrw@CNDa{-Fbc(L;eIeCoBlwj>RuHwytl z#W9Z5z)lKE#%bW%EP@F&}H%VrW|zm!KQ>#?c zn{*M3PN0kQ!hSl}M3}_^(GqGC8Gbp0Z@F9dc6j2~rnv)#4`N*a>l^Fb3f z-okyU&!M)tWOg9e!LOCm;K1ZbguS(#$Ro$9a~0d0ch3x*hd?m_f;_WyDyF8D(e#v~ zHzP%QvVtx0ck&z^0I_zW6Jo|+*+QNm@V!4=yp#u=w|m9inO%93s#Waf*&PvBokjwn zV8zI7*hdNsaC0kAs#oyjRo{e&K=hzrLn|r06 z4^4>R*UhU+M$&TCBd^J|l6}~s9I&I;r_}t|+AFqT!htU?+=k`yoPjXfb@6Ef*VqFx zImNCXrF@I^c7A22=t5i5#5DH%qTIT69oP-lFYZgUhzIhw_=@T8@vAziTGbF@gy1&n zbrf77Yt0dDW_k~9O`!%V{ip`sz+^g(v$0`HxsF|}Gjqhpi?HoLaw=16U8G8DxE`yB z#nBKZ!wt_c-h`v6uNKybS>Gy)_zecK+{EaVR*DOZqE%|=!m^~Vne=6p* z4B_t(HEE;NT~C6QK^8H3SSa+X2e%StU|DT!?Q10}wsQi1GF1v~QWr4Y9R_v^Jzl$? z{t^Zox#Qy^t{g^s$6)J!$GsJn1P7A4e&Itc6&zfg(sY?%*^zM6UR}=Dkynd_$Wx)|sSG883zO zSV`cb3Warg^LgBl*gukz9IdY5>e+~k-%5_V2Uzb2 zjiGvYpyR(*;w6aH+>jMh zyGnQizc~LZyYT^LMSHh5Fv?3tdx4Jy({8+nicoZ1~r&`!JTbd7&)_}aZ`AUyFp%9+#CKe ze&CwLjTgC7)JyvT45KL-!IfG;Xx@$;th0np`|TsJCv3=xnXL&)$&rnJ_E3JBhx zg$LI9V4rz5s;&u~KNjFR_oC(>)9=dm;Tyr157 zPc#!NFIPN*VRn*d`_@ia88h(BLPdum1Qv-O>s=l6xN*zGZvP6V-2qu*ifI1!_dY{* zt)oj7qe8Q_$L};fANhUWoN)mrKX2j?$#Vp|74Vd?-K;kp-1*mEdHNG-;F7E*v^bJi z)w(XeHLzCbhNGjPJ-gbuQVg77c@NP)8RN*2^yV?uAcrHtke~Q5&q{j;_jqt9L%$io zfw9)68$AsvS|_9rS3?EFL%=;km^&aERpumwia3#;JcEYf?O;RpvTpCdQ~%k+o1*d9Zk8 zqtE0~accA#!^d_Y&dMqVV+7?y20?g;!w(K19;B>0Q3spg^*tkZnd7Uq>i6cVeK_M& zEl+5*qbn@HjveAkugv)c)HPApciX0*6AYZX+6Hc*2^Yv_r7zBK)`Aez>2ow%Db1@V@d`T9|?Cb`)0 za(>rg$DU;#Zw+PPz&7&S{D*@UVpIqY?xg|3*(6Mu=8ZTUca@pdX-oUQPvxZ zdj_CGJDnp0mR%ihQobr9?6C?|ZA)>;ub4NeK`zZ!{A%j`oZD9v?nIy)9nkxyv~B}( zQ`v}ObE<&g8pPlzjXOOh2I?Giq?BF%=VWu1L89ZSadD`3WV=@2%HJI7pRr|2cklQ+l38| z!by*12K6_x$*$KzsoHn_H_H3si)2IBhH>ItFuJ+MU(Z-s(i1CP??jGZ=oqoP@(C*a zqS-NS82i+p{e{yT#^j9LobFveiqoy4nO|UbtctM``_bAqqpH2R)fGZ;&&P!qI=ahk zr%SPk{SYeVIO1fBuD67A!E9T^>%~l(_T1kY z$`0j9?NBviKsW9|fk#|4Sr~yN`DJqqZkKuOk;fi%mwK`~7Bs+3-(&(~p&4UYwXw0w zkeYbL5B=(X*wVi1hLiViuf`6q?G6!&5=yecCRFI{fY^&It69b^Ay2){=$0r>h)65u z#UbxMk7jmScyzSQ+MBOEe0NVQ-z~A5L zNs#1H$L8L5qmjbxqQT5J=Ehq3R*a9MdwR)nm8LEsw93&EQ^%+HW=yH~+`(&K=ikIt zk|{A9zm3skeavQ5_7%*@BA37UlvLQrCp#xbdNr(JK2~E;l=^uG_|FNk*JRDfH*0<%tQhR=JfDwj!RimbjP5_B6#@2DMEAO1D zO~Q_K@?z+H)-8omW5s>bW_EaBe_n4sZ41_PAqBDBy3Y;?%j3B zC;fgR$3PDf-J_nN9=~4FEO+bD3rNUlr1~*COU@Q@M1^>4NR+O~1H?kB zq@1(8hIp`2<7*l4y9N%Iz50mYNKOqx2Wo_aYa;Kl31k3N;L@2X=?SUBlgU_+vF z!Scc;O)43V#t7tY9aNc(!D>i~mM{;UwMbevJ&wf5tX!4SdAp-KPJz7L50Mp3TP)-* zpClV0w6>h>I^k;b;_=&w*ZoG_%ifLoJdmd4XTgNFM}Mf#3V$E+E{}4Uokz4wF*)eH z{)COqnmrqX#|rsJxo8J|vaz?Z-{nfUAVT{tWxOmCTbP3L)z^o<gO{++$|RG+cWdI{*819?$%JQA2@4f- zhzp4)Ve=42hD}n(pQ<>3AKadd?;y@F#pKllzNgw7XBUZ4FSjdVlEK`Y z<30IwY|edp5i6*Q3&<|D+FNKcQJK*IsoKU_4Rat%yWZv{NA0|*F}ZVRlcZLe!$^Ac+Yqtv z&lxUoN2!y=q4ok@ht=3^-Tg6kOUp4{u?$mw(`bkJKIc8HmqimN!GQl`S_wzbP88xam;1Q``n z44giXkacSM(y=6q`qi_|7RnOxS386@AyDPrWAi>5!Q~JrzK_xFl5YP=Kjf|IEEhN+ z5qf=1n(1i%9%{;$`ddN5#L3UNufNKaLqj#blG2o%3|_awg8B%blNf76QL0qho927M zkxPH%EpDy$w0Sa_q;_`X?#0Me6uv1!24u+ler!qDw(!)&O3gIKMziBnIM?U795YG? zweqp0eLigjLuJKc=~9Kk9%CQe)?SmRzI9!swiM%nVtw#zs}1`4vs>7k#|mA>$-Vn# zhXO4sTh}C+i6(t{iZF>5V*<2GtUFo;_Te;L!lM}uMsHO~9CNUV1S2q<9Leg}T=WLL zk3=+hI4yFG1wo~I94C2kzSZcA_+4VwzBy+V$v2v7W@w5DO|sfdqJAoAvc>eC!mV^I zJ`^St*bLL1nkzyl1((iGny3QaM1;I1ijv2pZ)cW?SJJv5Adb1*9^T$i?`Y^1SNA^L0U*Q!;tgSJW*V?%@Uo%S5!nppOA9b)=cOT zaLp}QIN9io53qDTiJ4?8%*S<}`oY_@se}1E8$@oY)|54T>`fOYOj~t_mv1?KEYpmY z+n(?pBTVwOJ5@hxPB4+7%r3x_`@Y;+LwDzmeJJ)0F4=zVv+z8xF!INnH6l2wlHP@o z_*+O6T39kkt(pKZz!KH{;}RN?dtg>z-PijtH18a_9*?!4+@C1?bv$hm?hC!6cau&3 z{gANOnJISCZyZKlfPILfq?aNZUGm4OyIh(O+=KBH`aYDqe!wzUaqNh{p>=z2qXSKJ z;dI-RshSKO-DfOG{jxb6U@b($xckuP?k4C)Skn z!)Nr&y=WEP{Wy4=%!d9#74v&MwkTi5XdZlvuX>AU)kufl(xU^~h#O#LsXVgG{3@+h z1k#!1{e|z(Zmx3j1COIf-4UHkqLLrKkc*>VBGEKm?SI-Z>^*eWR__KoO={4PG!*}a z2)4=wnF16{XW8y3NJ9Od`aq-+(Lm2In|j;rNNaSk`E_NC$(IiUb9^vOBPKk-#d94y z(};LN8>P2o#uwj>-Y}$smsKDW?!q zipP?*JUz5I+&nF;^{CO?bk{`(H^7C^rN1Gc7~t1@hUjV(&4`0)mpA+9Qsvlhp;i4r zC81JWBezXgbOu{hi)$~Sg)+j45~VFzON(i?C=1zXa>)hv&RYpS7yeT=ej>#?=Wq#! z)KdwPiW8m#4Wo5^$)a`5U=X&5u zOY6c{#&vdoTthl?XT{gxKWv^Jhpw~_LKx)%Cb$N8?)wcL^9g%x%E-%fwH$_D6OXZ#?*-4kY`y_6dnD*}Uj^tf?(uR|)eP3KCOqdE=nl zVX)M-2D_hew)LJlr-5-Dk4F}vd;TdI_Pan3gfz1hs{+NING9xtuQaGaLqhPe$V4UR z-klZijUMoB^xhg~#1$fa^DAW{uG=j&fDwFo9lfz50lKv5x{90|KGk;PuJyPQsGP>szodgoLfSvZJeOOB-8xa0Om0yb|ExpZWEQ{Fp3@kw)zkSv!Yy3W>AWc07J$JGs6?oZX?u{-=36;w&Rs}sV=6W)KR0%%} z*LdOjnn6f1&7zvDh3%2tIa+5@0%5W3;v(I}lUYOW0td7s*GX|NfuRUUw&g2BOlv3` zf7rvbR@O7cns?!6PtSOY%8H?$Q0hzFX}a9G7;820X5{iH{t(5+K|BE`Bk9U2NoJqX zGckz2PinmJ zAsqg$UoeTDC2_8Kg8!@X86)Uf=!q09k{ek;T`jKr)0p{ioT~qPYJx%=ajVAa84`ot+tE7k4hmYcTBNSS>dc))MM*Q8nK4a15%p{ym+rEyd{LXx5B0%d2k=X1Q z4Ji8?bf2*!LC4rG$m6LnnSM0`jk}JrDJAA4rQ>14!HsF5OA?8~+_5#|2>A5cPjm@6 z-OmsJ`~r*=J6*>qx|%NnZHLY7R`>$na1j*AA*e8^Q^!Q!E><4YnT#r=q2TbyDJ64b zhIt=azWplo4S}5DqHEYtIq9O76iPa76O@3#?f@~RnbJ3%jSGhmt1Q@)RFn|3-G$a= zD?g| zHC)0_r%VCnEM}w$)b}xPnDfNo$!m$~HB6Y@E!nHA(BYcH>puZI58m9L2bN-8`~mR> z4dxY(hI2kwv0@4$V=L7J;{seLKQfX%E8&f!H}I?^eR>WouPwmuD;mAHs=+;$G_s!e z=eG;F$%zQl(k=TiDi}gK7Z7~sng{3@`#K{iH8qIBG~cU`>&ZC#;|0C9-gmp!I$$BZ zNu#I)z3b(-lI6tB^fjaN^8TdI*tN@#xCT{;d3*2E2L^=02Upldax_KM32YNyAI8B6 zPTLXEgjF=UYSDhHelN?LeXd#~jB|sjEs1Sh#&6!TyiJ-&6)>L>k}VB4ym_N%@N?=) zjDnBK0BWPUN8dmXBplX5T)jeauhyX3T?K+rywF;Ofk&c}?TvFBr=a-3gP(g-D$9?W z{B;%UloK&N8F{l#jC@+Rw^i~c=UKj(T+bo%c5 zrB5I8?n;sPn*c7U=^y&^pP59;B)uFnnDNCg7B^oU?|7VG)W3 z7J?}83<#u#xe5znMXG~Mg`bEha9++4=4v(p3V4^Jz*(+Vq4ruVS^#&`6M0^0bqsWYxe>Z)tqTbD>y`auhK-? zf1N;~IUZj?Q0%fu)Q=Oo_;`)H@)2X(W)E_@epC+M#>djp2if_dKHtnh_KUGo7R7eb zVIXKGi>6VR+i0&#hYui(q_-9!td{;G?JCrt@0*Nh?vJSgn1wzfjA+g` z(xnEN3`SDFGmejcYwbkfbO}2_EXHNgUwu!W6nh{o4i(lnfuqc^i--hP1XUV_0(%mG zp1|XOVwKVE4ngQB5T18d>Y9r(%QV=IATt~l9Y#59l0SXxQWdt3Ct%U*|F8j3#9Yl8 zEZniH`vKljoLCz!2QkOO!~aY-q+L$KS{th&V4*`&y`sC$D6 zZ&jklLmv{bo)!G%!L&-Ja>EPnLDD zxOwAUvPCN%O40;yFC$xk7zBy%d;50=eA)gXd9LDS7U;k3941tZ&5Kt0*W<{Q7x(!9 zGUrF&`Q)3C2vTw&W@Qkm6igTVnkz5YJnq{C;5utH(ld5H9Rs za15>k+mWjPhLQe;5Fv@k=1&{ByDWTk{>#Ag9rMP zz~6uyqbJrnI|jSgeF>NMn^HY8T6>EsWPWLAfOo?rXJx&r`av0>ye1wL6dY1Kus7!K zgWX?=FZAur_1ZX>Dn2%Aji(3qX7gwV@1me-=5mP&bdnp)4uEQx7H)z+TSy87$^M5U zDn9_6?SS_yL1151V;JG46GQZo(5DVp>YWy$n^Ux{nOIOtO^^;AYH|B6-5c$IwH%FF z4-%|iViDAazLln)vZu&aTJk;-Up6be6%pSZ%mCCx{KFJQs^F(rC7S!Z1;lvlOL9YK zuZG=%bLmZxskD0_^NDDbt(tUj<85rj9g8LyR+AKRpOU3hS_No-?YRdkr=mPr@MCV% zyj}anSm{|g;2AI_C4^NFMxOq0x0Z~jTHcqvH8Hc#_SW@%d82Qn2Ab;og(wyi0?A6w zVXT0vFY99Z3>KlqvW8vPdR4^AhzXRrBV)R&uDZ7mqwb=zB6T3K?D0^__``%DJd}wwV-?dm3Ekg zGD2YM#-+rKPH)9xMX$0wftvRPMfR@QB}{OA+z$s`b^|TNjN#kew(4EpuIZ6UcJ2YP+7<2Qk^F+a6j`u;=Ui*7xtexzb% zl-YH0dkCwK`KKnBvhp)VcMZzL?aC}6=#Ez1Mx}1FAY$6t;#7)k)UKFM!W*OWNKc=q z7}pw;ER1m&HvsAEyW&WC?>7UIi;K*T{7b0G*0v>l=dtJlpmkS$a{NUgZUS$qxCMD+ zpcBb5WW_3>1HnxJc&xaS*7HN@s~#-p(s%Aw6*W_gET#um?8|V}O-R=RHbj`i&|qBb zS1yYI+}t(Ims5{DSDns~GVmy9RCoJqBhB5(nuu2ZkXEdcyD4FlqhUVzdmR8vLY2eW zC)^w&J|T(ok>_KW;6xkpkXg(4`#lV`MQ<(&4F{dk<4;o)$qNn2TJ87z#*I+yl*&}i zu0y&QI)s;XW-iQf)q7^lg#Na6cdB;R?C};Fa zVrDIy{|W@D_m33^&bHv}wVMF3s-Xwb8o4wDK24SHClAzhgbVgUyEZL4c3@Dt1_4Ux z&XPr56D${;2%X<+QI7C%;!iHCh7%sXNnQsKucCf%xi(fp$psQ?Zkra+UadKDTc`=C z7?Z%Z@m%sgP4dcXo04FUu9jX#q~AVd5}$sNoap=EH_K-6OCIn6O_Kc=f^SJ)ds`X= z_xx%owYrqo&btalDu5~#%wWrkN(M~NMj=c&sqeL_PacSX{U_E~)FiSAff*eL;X|I* zW9_YBkS4l%yv2_5)OtNpuNIuTR}#3Mt=_ax^a5Od@pnMBfE5Tb_)pwCegFhpoV(SG z*T7eP2OeAug``Zi-9kSqBvFdww{X2WVBHtEbuW;Sp01YT`MC%c3C_lRd_&xT0`~ik z48kYI!4m!B#?3&4P`?Y&#Sl(@0AkK1*pgr+wxKQA+td`k>A6`dr;eWs063Wz(9DTO zbX-eQJk?DFFK>jf3e)cBjjYJ`O0U$zV87)_smYJ#KkY&q5LK4a`%<_#ah*Qr7?}`N zv}fb|(lPnexNd|2-*@+Q>NFz0|1L;n0V)#C!&7n4VW?GIh_M}uc{OdBx5c~uQCTTV zWZ%9myd(}xsGSK4&d&Umz*bHMIh`u{=sD`L07mb%YOz(exf!Qhi19^f9bCj^${2El zjSPlfG$$8O8!&Co$6%4N=*TSZ-FyE@F9ck&Yr$U48CkLbTk8X2bz5^1IF6hZ1|lbGBv+dn?1U8yP2F?I5$z6*hld{Rgjzm7`RTxdl-H z>7cB)B_lT{iRv-!pB2zh{hqlsWoc@vI!KUCu1ypL73owo5{CGT?KZ?Dzu+HwZi-I^ zuQ3z^@qN)?q-y-;Zg<*8#!{q@+|B<=Ww)H>_j}ts*;twyk*BpF)R?!8!x{Iqrgm_K zMHx4W69n)nfmX7|4dQb=^4SX>ms@wMWab`>3(zq!Lc19IceI4L!%O1Ox2~X-Yb>Cu z>|ycVX?>aj{XMiYX=f$L*B9dYL6FOTh2peL4A2|Fv_FFkf|swtAHpUx0-#a8&&bzX8?F8*it)az)F{;)6)jxL$0>02!aq zL;$8pFA7-D%}GZPPkSzb>O+AL=WN!4IR;+p=2Axj>6s8r&HXTQ8gy&IqT5}5ewis% zcpfYU7^eB|Ol%h8WJ^td6^#ZGWGMSr5)(_eak#?^l`R#yC}!!>q2*xj;w<3XPPu4_ zs9HT=hhHvwOjEdLPooF3t3Kpyf%WB=ESu z#MTf)N+tJ9p(r~sM|qAqxGBo(s4{T66?mYepsPFl&e>Fn%sN=nI<uI*8s~m_bPaq;k%n&EX?ajU$;8C$G99NfU9>3-lmcY) zXM&)h{?P((wu7&U1ON<`ZTj;h40Qa*CA7;2A?&FJJbGhi#YTYoonr%!?Z19(dziA6 zJ2uI>M|(_uCXL4In25CBhoXNZWTqanW-k)Md|w7CRlq@9ZK*u}hM`z|N9CXTLDSPV zFhrkqQyhV|1E924s)e9Hcd6=Sq83#JW&jRdl9YwRF6}8#IOcH`(K}gx2#Iz^^Rg<^ zfuI=wu`0got@M9m>{BJo8~J!EqujAz)X`p-vJ2cx`N1y0h6IfE(7f=h*eoXj;xx{%RmfM>5G!#t*}7HX}=Cb5bqU1 z%hQ(UwkP$s>vygVse&qrbigUq#XhS35-%_21ij}j%LBy~HEAp1)O%H1)* zw-UvF+HhPn+o=KgsDBzc>*b1~;r$vffUQr|aWl&MZf1u`A|KuY9X;_ODa}qqU%Cj# z+}VAOiAaPVU6Zw>Q(vEc^5+uElNm40ZCRdow$LF6%J(I>j_5Ps%RU>+Hmg+r10C+X zh-KJIO@I}?M(M}QKE6n?dD4cG)cX^7@4uun2~zA@Aoc#tI|9STtkLs{^1z%2ZQ(~k zz(kA3^B(%1@~1baffZAVkz&g1dOe^h3ZQg|*VgKEf!=oR+qdaolfsb7ZYMkIrc_dm zW6oLYjfYyK3~z(-jlujCcfmiG+xCf5?*(cFJcY4)2cr%*@bO(yW(b(CM6p;Dj9LeW zz!J$@WK0%-dr>z{<9c)Na4x(`Mi+Y8M1k_$|h@4nK z99(_#z*3X;7*=>kr)W&Buc|4EnSy&s`>c8`C34w66@dRP@2oI;&ZMl7j2BtQ`L4@R zH2Ekx?i`a$GFi&GZd<lE)W_E z)my?Q=A|l9VwRZY@y+0Ub3X{*A(MSUiZ;-ru3~q15s4D!G%yfSnniIDN3lT&anaJr zJ5jLamh=1=XWQthPoL!s8KdVFN>m1q^MI7Gr(YM#Q(5Tg9?IrRSqjKESN=L=6qRLgxX6%`=pR z^^+~>+FW^mznXWl^|pi<&eST_jK?FMsn>>|ypKcRPLe%M|2e5I>Q*lU4qaov3logu zUq!q4X2A!mFn?kZlaGjU;RxfQ%UUqTQ}(cYx&sYjt>r?cI&60%lXJOFf=_)w$AiQr zL?z!%&3}n>2J_?o5nn#d40HY6;1`~ zAo=ZsZJ&hrHffvg;4e4KEqo)KOy7W@b$!vmal63^2KnWMf|$IINBc|;oO-lYm{GQP zWGATA73%WpG*)Yl+1{3)Jwa6mU%Q^Ys3E?b;ADb@GJ^WzWQ(w_ygGsv`U%=m!jJl?FKKEY zzhS>8qgTmTefcLO8w54`kJ}Cu(eJs{RFPR-?sN|{UDkeSq98t6S1IE%K_nqK-Djs% zx_q{Tk57Wz4N=*jO}|8Wumt#gby3FOv7J9Q5A=Ij9j3`V_fJ`t^52m%&A<-MfX)j> zk>k~DE>8lelx`yfk6Y5x#ULooW|sF?9Y6Wy@}mwi(oFdM%C!?XWvk+tWfS%#7+`rw z&)?%t=D@<2*nhc!dxM|>|F+t{e?>Wu+8M)zfT+PF{xNPKUiD!(&`f}Kh*`ZNgN$9W z*pl~9NqP*JJ{vM(IvU40S8M;>@`h)xX3qN+ia4Cr`OOAp7d7;tU;I#XbJ*|@F3eVu zlZzxkWLi|>lb*3$n??PVAhw+MD^bwYf70|@O7hn}THrNHWI~dCWl^x6I>D@?bgBym zPRLG3sdPc;s!!Uu+^{R2o!*YZ%M4u_-us(b~_Qk`PEkG@sx%> zOb_y+*z*)f*U>FtWo_kPhTLH{j1`X_M*@+(LP)ECGLQgqYcZ8P(cW-E_9l5Cw9}(ViUl_7v66Yh(-)UCNvzil!Dyz;I^6S*WVZpVNSC)nW9yzS zcqP7{`?h^w&Mg{{jB)w!AlSkJUV={yYtp}d4nxTCq}$T>v<*(spJp_Vx$a|m`eqdZ zKdWT*<;Xz#)Gz9OBR}h?#{vQ@XR0L*;hmSm#3dl;zm-}4lr{L@bh6WETC)62W-rB& zboM+5hV+H}KbwO;9ZU1t3x#%h#5t|xl8G|KC2BJqVz!t+MOwu`2?mVC$X+tcTM{A` z*|`8qi1L8~^Lxv9g3OH@;Q zr~X^d^-t=hf7rFc|GYpT$^yJP{9DoWPh9=Oux0-*hs_{Z{67=_le!A=1){Ux6U@3k zy23|qt4`Iv%v>8yLq4+r1Q$G!JUzCoolfeF^^ZLCc|6SkzKFN#SUox+M>7IYL z%Lln!bxBI3seT_U@su)ASNSfc$ph9@wkTYWgxjJnL z%weGA74zTvum4I+9taNe50?MP^xp*LgWz5@V1Hzf|IWexV6Fne{Vf4|ZEgTDulQ?o z|E5|2yu{AC9T&bintD7qD>O{+siE0`a#X>_3A29}q7N|5i)=*XRpD z@Th+#{-?@?)r%PVSn?y+-}_%m7yi!)|9{qK{(EwZLGZ6fp#O;FUgA&levSXt&{>=D xwa5mm;Sk?Z|3W6pcnKUn;{Oa>)cf`8LB2LeR)YZbAunG;^3w-6eg*>n{{W-)wSfQt literal 0 HcmV?d00001 diff --git a/protocol-designer/src/assets/images/onboarding_animation_2.webm b/protocol-designer/src/assets/images/onboarding_animation_2.webm new file mode 100644 index 0000000000000000000000000000000000000000..7dbc51c26ad68669acfa391b98f85a540a14d2cb GIT binary patch literal 25474 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�qrk24{Zyl0OUr^z|$R}$BAblTB6!3 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 CONO5S literal 0 HcmV?d00001 diff --git a/protocol-designer/src/assets/images/onboarding_animation_3.webm b/protocol-designer/src/assets/images/onboarding_animation_3.webm new file mode 100644 index 0000000000000000000000000000000000000000..19d29e2b9396e5f2375a08f2aba90abf5876dd6a GIT binary patch literal 58220 zcmcG#bC4%NyCwW<+nly-+qP}nwrx(^wr#tor)^H#_RfpDd++zf#{1W1R8_=Nb?W4K zPF7@PR90e%?iA$-g#`i$J^$VB0zrlD10jWiLflP_Y=y%AhM|GLn92d>K!AUg10E#V zESFB%u4v_|5H!gOGv(^Qf`3KmDz(;sqgC0in7`MMRff!!tAl`8{}tjWcm2H>bU=3T zFCKvAKk5Eo9R8uIk!qzO7(qxtHXv5U(9MjEfsT=lj*)>uUGRU#B9RdS)k^>393lS%ZY?1Gca)dV`HXcV`63aX93^~x4IJSDI5m^ zihNfC0f2xY$zUM>!8}VVfP(}FQwkAe)qm!dFZ_@Ds`sOQ{59?u`b+1|OE1FyGjW3t z{m35Q)JGn~M=abmb)+A{KHl8n7k_dCKY8eZ_kn@Hp?-4M^=N+{GR_osfY{R|4}TaJ zaK8yZeRKyDCI624Ie+}&H^Sr>-P${!A0PRH&(2z|`{8%&>rTG^O{T%$hQWKb$ou|= zP6!ETKz;Ded3!$tMhmj1{1LxoyE;L8$)&6VR`iWY-v!&tq5?b{tV=ymz0RV`^;tYz z_npm!_|ilT+wGE(i=<3AKKVhKw^^Hp7y%2<_ckdf9>jzs{|1h|4aX9S3~_2ptlo-D z`vegU!{c*GFCidoB0DIvt?Bd2kyY0Gq9ed*GbUaxIK0~v^M>x;d;P|BJ^8MQXna;Eh5%c!FMJO4r#a-zn&|Q>)%?#xm*@H4DJa@YXZ;%4v54D58`V%28 z%2#n#0YHztThLZQ&gR>=>ouBnnErtmz8&%l%A<`cLB#=Dh^y{Y)T$UCZW{}KXTm}A z;utJ&Q>zN5F1U32H8{Z-`}^y+l`D-foB!90T`;}3Ttp4M@Ir7<||3tIng;ll;+voO%c#NK4}r-*};!Ms31 zlJvTpIe~Bql7S>9 zWlz?=AOMNn72@Q1patN`3`?5tvFWgrhCV-2|Nh1;2W~-EZCLhq-2A5?02RvA$wPy< z&jWaB2pu^2Flf;{ERf$RsHJj7D$dZ?BW5q2YR;F}c5QdByt_GeV+s#?w&mM&G3|c4 z*z+))i8qL4RGweyP?ZuV-NQt!EdzXibgmasDn#OiS1^S~l!oxa&P@`runv{3;ZSrm zsG{0h=X*at=%&NqbT*Ken5v zDf9WsI~Ruo>`U*50edX9$ns6b1R4&GhS6tDu)8vGG5mDvBT9)G7#I%UQxgv{xtB7T zmq}|syvaAzO`Mrej?LNO?M*Yup>ls;)tmF?*H^0-Y}WejYE~ zw_$x|Wa60V<<0%x@p|%0FPRm<(R}6xG&Fy5eODk=zU)~nr4ZCa5D$`E6;d4DOfw_G zs#JHi;nNA)>B^T;8P2R^{h_1m=Mk& z>XCr&W}b&?JTiHw{Vfax4A|<*Jq0R=mNrY4|8n)WQ5+dp>P+^)3^D-zEg@|n9DS-( zQ*`FnIm1E4a3_B3TB*5F+`#_o^a-|5dn)|-xYC)3%#gwJLA{(K*|0G1!YHdIF z?Pf~-(cyS&cHGb2u>hg40J?>^r?NH`T3E&DV~euSRuI52=OqlOV?KimN1^~&6 zLL&!LKYYQE!9VbGQt5V*CF^fYpWBYxu@37Ep-5zvDCB4;??z8%2bXuc;OQ<8;*C&1 zp?}@gz2S34Ha74NdXY;2Zo3)l}^q8V-q9r9yC=pBT5B+eNP z$biwV2DU93F^~z9igefp)=~UTUUeG4c&yJJ34V*nE1zwjOg1kGG$z_61D|K<8S zBZ=Vl30>V~7Gc2hZ1X$yl>C)Q!~q}8n&BkK1ER)lDNfZs?-@Sy(j_+9!tbiIv(M5K4>&|2fJItdk}t$@9~jtvW8-4 z4eOpY+FtO{yCcv0H88=3U-Aur9jv}bo@LLYxIBZ_^iV)JQ0tW~lwU_R9vR+x#=VHF z9SRsztDBu!mP0RU+VeR~66#ekLGyi5{TGiyWPiiJ3I4|XOSu~J-E_r4PobId)%eGs zk-pT|`zUA*Lv~QpR(;$sU2g&s?6*+#T-n{!Cj^z#$6AbxsT+SlTAXT{1Dul_Y?4mh zm`$XzQY>EXFfl^mYu!iR*orbi(kyn_vS%!EU%kOgthD@#G9|{Yh*5tm@}i6S}9nWXJaW zJO_4H@qt%YNj}XF)}LQ}zZqr2vU~Wmu}x{W`uPUuyk};D_njf|Cd(CD+;X zz%({UA%9ixGiY$+y5745H>20#C`a6lZ9v~};#f-mZWmHwZfA<2fhUA~@5&8_MF8i( z;Ta3up=2C6$4m2R_6HIwh7^wETuVoVZ4kh5XPhMm_5GEtm`g8BwI^p|g%7ZvefK0=jqj5B(y)62l*Q@W)MH_j zb0!5`_SPoq^X_lKaSx1U7s(Jg;ZH*p2%tydiD*l;{Cr2{I(uOvn5)$*tTBQTw=`R| zTuau_nQ;lFytFa13O=UQBW380U0fST+Xj#tY7M8 z{g8oVuNP!!{R#OBxYYb5GYBax;ELqys-*q)-?dvc62w84y`?AFq;~PJ$!1#lO#ZYr z!SC;isuPmZAl?FP-A^JYddtUfbh|2B4Fhw2{?tPF8+lim&~}2|KXI5~LSkOmW2VJ<<10Ul`ieG-`Kb>M5#sAI-9`92>jjb%Av>j}Y!$7+X zG?UZ1V$d(luzY)K(tdeyW2Lwi6kGwNtmI{7G}Aj3f}t!}^x{ zDep6-qLxq>)OC9&m#x7FP49YaGdf(_y_O%;Z77H2;WM58NL+^lf38=O%_LH%^Ikb` zETW^**0XRV7#e#Qv5X;mMR7J5>alA<$8CH`6-fFfmWcz)I z#^R`Ch4S5=y{g%LK+`So4wuN#Cy+VjPgI}*my)EuRgwIPMiET{Iv72`vPY+E>eqz( z(P9|4SjJv>p9c!1cbtgV*|)@w74 z@Vb@W@>!^U0XiFf0hpDWh@E(Z(N@=H)A03++egFUd({9T%L@dj^Mc&>LS)|RmKgeS zXF`$G_W_$}?YW74pa*OM3fTAbAJrsK3IclZ6sDzIDLk>m>@}u_YOp3rT2f~7d(7l! zS_RbKZ_+^R(5MF0qOT{3(p>^ik!4|Z+p0I+B>LS;P*Y^>#|h<0ch?4(n;>$D#pvP% zuaYOvXOZAln?kJ+Lcp;(*qHh!8GIuSG}J%^&-t1YfvIfaOxWR%drf>CYD=oT5RoV3 zKxLiWSh=9{5}oWzBrEM;T2UJ0d&aUpLm!%89WO!_{aP%r{^_!uK{&Xn&AoJyRC)qn zp=xQGZ)q#I4CgjVt{$(8FG6{%$Xd&htfT5TJ=i}$x9TfLQ9PbMo~-l@UPD~(ObcYfI|8WT+)TjC=bwpZPk`i37>4|}fJ zLO}pKH*YQedEK$b{siI-ViocIw-0ALodotY&ga9+r}Oy(1+yI_n8QlGAL(#=)Z05OfNSs3yPf2HU5e zJo$diQrMpVYAk1x{D<1zbXmgwph6}kZu5T4#4e8CX=vsu@~U^RFy<-%cPfD@E_XT0 zAuZYLG}yA!cR(IKJ8C(c{m*M*x|y@l*%QQNK?c9Cv#m56U?)(hnVfq9*h@-7)J+yj&Go!s)hJ?C0Dh63p?N%15DpN^g8i60fM=kyHXzUZ ztDqp=dd5Pb%3H82wE6a6(PMQxNa519gt%K;C_{Ekw%(bV-I;Y4D;{YcQE(u|?-!S3 zkI<~A`KzL!EFv}di|gz!0_M@)&`!VQG;9vMz1rf%*BMRGg>z*sWb@-pByz0HWt<$T ze$FH?7d0~V57PG1?mD!tj9YmC%?>%=ac=znDC`&N6cg5(jFrU?sqjE)aZoYbU^W7y zZIe=H%Ccl9h_Oiry~Rj9(cWsOm`n&u^a8Fkf^GT`q@VldvslzS>S!F;J@#&(< z=?q{4gqN86(PtCp6@!o@Ww{e5z z!Nf{mgtOB&dXN8z)4387$hM1qny_^ifZj(jOGR-3h)W3%NaL^Sq}koM_%>^8C% z!;=~QNcv<;xgQu&y!f?&U$R5h-&QG!;3j7Mx-`)}slyX#@n`Q*+Bh8O^&Upm;zIK_ zr2UXW`0a6HOdOAD$J&+mEM{gvdkjFPtFWB;g4ZDSL9w%5HAj%T5+K^>#nl3dXxJbH z|MI+$FVo)E5N1lj=DVr;n@)jTNTs2xz^HO*9c8EjUtaIzRuFPu4Fpy#hYnS*b__H6 zxB?_^@*3)r>fTJEzic zVD1Q8n$U=w9pVN)bbB?oL~P00;kqq&aH!PlQ9%|s`&T+qSi?Eui5?pviCjppV0@@E zXRk;LF6u)zw$XC| zP(*{VxzZY_AEl}M2q^6Cn$SS)dc>27Ha+d*g5`c;K-X(}M`a(&89Dum%eXU593Q@M z4%5VKftwOJ?LQ%wH<~3UA5OLdKTdy>A$eJi=n;hCH0S#~>8)rt|kjy;b&d&KAooaAvH2JvUL{k2clamuf zcbOiGQJ6KwVEzSXb`jDKA_Cwh;Hc>oy!$3keNlv6y4?*$vBi&ZK&RAH`ugoL4OEEC ze?ywoc0OnP@qOJ^)U5MX6OKlPlTRf%Nl5RZ@Cr0&tg39S2T=~;l>s~2QYmu3a@9e5 zrwH#Hw_tC8(&v1E#z|gLwTjYU*SuRmV{*jnm{l!A!I&!$R?DpHqIUqnk6}VTExKM= zuT5`f^rm+t7me*rQQ`ZGLN}*>=GD{?X-E9Le?C~-1UInmv&@Ag>BzzC!SLd9oObkh zS$+$z4RY(%Y5BAV9fy|w1@3z=`7|h;YYE-J+ENF_+E;xe4N1LBPY4J4Il~wz!8Z+wQbslNVYNbqRg_#kz*Fx*!Nx@001Y4<2z^3754h4kLd_~{6`k%r0MUa z)?>YM3SiZCKo-&WMDhL2ORO6+75H-Xv-gj_e2FZwiuMYg7mKEHG~bZyOuhnvFDP|N z1XWZfY$aDO2EsipxI4dUaQq&W0N{7%)TqWp!mrPnp#k1~_S04(%$Z)&rR-2hlpOwZ z6lz&4gFNLQse^+EqRkF5NvQ*z;_N}tN9k&;ibhT9Y{T+?-}2@@d_B>+71RlG?)qA+ zaA21#e0k_@Au^tZHCdz@X}y@b!4af@J;;yBBbN|ZoQopW>vZ#H#6R-&YYid++Z)b4AF(@fe>llB^F)lVsvO1W@ zdz*F^&IYznt*O6TG6^#mH_G0m*#`0_yF$zykttwrtWrN$xdz%lM#=)neL|OcObn&1 z>3)Ng=unB=Zfoj)CH2@}mP*`WJp!klt3`U?5p$NK4KIQWo(HsT3Au8P>)C}Skl7?0 zRNd)$Nq83K4fI!^}CpgW9`d+LHtlh`>=p4QXq1{=TXEf!-E+ z1-~L_VODQpQj8-P!(V?<;S3v0?+DSBtMEhmsdy^|M;e=~Yu_r$#E4Buw4#Pu( z{%FW4_XCLI;xY!(^Up)>*U1O(UbzxVHfhZb8eAm;$0;*tA+yy3uA#^BVH-yThQg)c z8U|~SxnbB=Dra?u^t0eF8GF2v?+? zfl87Qb3pTt)*mo|NFISBDE>xqUrR(cD<#sWro68Vh#dnAT@R9bl@;eK@5FnT>qK>^ zB?8$Ah&BN~aF533!u6@k?OUosKy8EC4mD5ZF-Q~}exDP0fQC&wx%L2bzz9$-G zdN-1#SZs`yTO~&x9~^mC%v#Fvh5P@aPX?ZWf7N#3W~jZ+BSWM-<|;uDx=%J`JxCh$ zw1mL*b2SOjS13%hJPBI`x9Fm!yahG^aydPZNsk>BGX(IH552M z8YSkQ&xL>?)(giF9n$kO)K;2Lsrl7%DKN;C#Z8PpR756DnCrSq#st)6dbUM1HOELm zGw!s81PSjjRVk5RV|*SiMiHdVhN4{lj&IhX-1FI0cM;d8W@2q&8JGx29(OjQtD^tB z_UEc$*5odWyTFdrbD<{LPi4J#*;q!x%6jD%UFIk!F=50{6%W}jwugtK!TKcWJ%>z~ zxV$9mDalqB#qKu{`Sj>bgU3TChC8{yo=@gulcI7&O@JL+T>i7KHQt2~yA|Fc8G3R!4 zi0w>@^8MqG#|r}}6?PVe?fkp3tm4?a?K3a2mJTcfn8Sy1}`rJLiL<#03Foz_0 zV)#F-4MgLRT@bKZBpT#7_vvqHz>BSCdxI$8N6JUsPV-N9**vZ?oO*hb3T{}ds;iue zhb86R`{I5E(x5js55|2nFy2Bh=^vh^RcSlBo$A^=g}dUtM$n1m$MUT4Tl~=@RG-$P zDASnBKbk$0X-oQ(K=ziurUJ@?xr%LzlZ-L%}r z;xVC&5!8a6n(%FXn3X*Nr6s%Y^C56!3I<<3^GX8vRylhycLJhFY<2YyOaS_fz%~@0 zxUN>N)D$aMNh4>lLph4VgBCFVaQSmz)9Rf_e!pzYSgIF_`doF_xj>qVbTK#Tre?oZ~bqO*KWlNf$ z3_8ozJYFHb(@7Hi-K_G&X^jHw6xg=+_#<2sy4&(cKA`p31tzaUVTXgdjjj2f$;oizO z5U7wZ*5U*?H(i{KMTwN`*=VR~lp|iWrq7#az!r#RUK=moedpW@)9y zY)6do>yO9Kin!vB2xMFjO-=4#8vmkY2#Drb&~;s<{7y1l{3Iy*uuIO zXf{T!qIVETynlW7V2?80;C1vs;6~%elK8U%Q>r&H_6z4ezR0K-0$)?EOKM~)Rfp{1 zmu+gPe>Em2Ft1s_AeO_PLxtpP%J?Q9VU$JO;gC+$pP%Pglot+S0h`TZ1vF0KWG`^g zIW7SYy8s}fG#_7x+#48ao}gaBKPw4>=F{^|TK!-W_+5h%FJE~2-aFqq-D(P$x;$SQ z4@h}${)3BqYFe7|u7Paw^D^}DLPFfBbESZugH(;T7c=PPeT@DV+g@+_kP*2nG!2QqnfK;}y`lQ4f zUJRAGno6suuHXNX8%K#>7a80n5;2&K=k8(15pSoP@zMxc`H4{XlHcnp>e)^phfH|x zgO+-<;Y}J|G`2DvzG~{_dE(!7;l}DL%5M=ArhRwGRJb7tQj?i zM8p*Orv(&~rUv5jgjDZ5?qxG6)2DyDm>|>#wjRG$8(U88%O}JBq~KV zb(oA*^pKaZB`#~i!8}b9`;_Uxc#I5S;;gEfb88IPyD_7!N+ta=M?6Nw}{h&%QHj!m=&h zx1$Ml5Ai|BdnZsKwBboC4%76Wv>Wsnxg~5&rujR&)%fxT{7VO^?3u*u*D0Y!h5!VU z8D~2+blx>blBk|ln?51^@SmSJtTgW3l#p7O9syiEqRjea$jl%SqMrhN3#&&yQ0@!y z?(uXw&qfW4jxduQ`A#k69BTplnY zv5rG$u61oCd}kEEm$G_Ll$9S=ubLonsR-<4n1Fw5#0_IMj6gw)!x;LfCa@)lpVQ64 zDCaDOYqDS6KfK?oUzg%N(~nKbPYH7*W@mzgLuPu7b_82uaj?vIcjjs&pOtrO-|*(dQJAWEcVx zo*MKXQH3LV-aiLrh9E#HS3_kXTAzxbK!(s=i)r#YN|Q-IEbGhkcZtbMGvO>Ng?Fj$ z?q8DOe+6$LCzms$GAfa=iD&t=yW%p>icDZCKqm9Kq!e+cJ{9}(*NmZR(M%}BimOK5 zpjhF3oc2dSc+>FE!Pa&qY$H7Yz+6ciij}a30W3U)L@FggsX9kW5d)+QSW|eQi#cc8Xp)`Zz`%?c)nga*Kf{M`R+v%McU7#quAA&BS2y-{w1dCTVtx{^?~ss8BOep zU0WPE9=J`&u2Ou6O60M!(M$A@0SI8&*d9YV#ZQ(wrc?dpQz}WfWUY^O#7+?+-?O4b z*02U(5-m3iHWco93x`QdTIy`|1@#Kii*FM13HB?V-L`m)KfkDkDf7(d3nVW`dpWM> z4r9mRFZ(ImOfbyx^DSi1R7$IzbXn3UxRN>{XpqzRP*7yk9|rd&$?5flDyej%<74=j zjlZBK@{<4|Kx4ax)t=b+VmT#VOv9rVaOma2x(=#sPbAIeA$>h z8_^pp{X@SY`Wz-4p+(zOfxh;{h2*_k8Me zex_6p@|?PT1IZ5PTA#1f<|fn}m1d^a4j_y=#Xon9(w0b@ma`%L7bMZ7fI^o^b}R~mw<;ff+~z1`*dG2G-_=tTyF`W zpziTW>!rjI;pHSzhVTAhMOs5wB(}b@PFxPe3Ym2DN5q#RsqbeY3rY~r_3e3U7>I*J z`TmkNPfF~?-K3T1ngL_FcKdL5Al#H73Ji%1TMu=w3Gj!JE(~f`v>J%RFyg}>4*PQd zP@L@#?4+f->OEk*B(T0q0?`{0g)&_q70Yc|6XBjaN?R|Cbg*-c&kz`6A(7K;ao*F_ z;+ys8^X=A5dRR=T0DKGY&yNbO*ena_MeiMEk>E*&T3EFNdG9_U+UGl@rOBHXf&f!# zgU4nvr93-Xky~>~jgfTFP$qLp7>KxEWn;~X7s=b{O8^~<=W<+r8UOiW+C-lsGlK2r z;*n?L@`=~1i7X9GIQ2Z#l&PQwWqc;`O5@x{PRTDW%?ZmXqLX?CsqZhcxyz>SmaeITPN1HRI!pZu23>JK zJL$^K-)O)vl@?FV=~~#wdmyE}eHgZSTcz6Q@=VX0%e^ciH$9yGNu9L3Yq zu_S|>UO_DcU^st7G}4?Xw0IeR62e)s>I9nENVR$~c?&PrM8S$H{LT?cX)8$FI2@Vr z2+2X-kef?P;~Rw;-glwj;PhPdo2Iq3OOZ0rdkxFO#*vjSZt{)wwfz8+!|oFAUN8?6 zw*o&pMBQHQ8s$7NI%=(EQCG4cPne5Ui%H=5X==}1-js0%tI)~IBsOGk zXkxTE(ZLg1Y+THyQX?%A>ptCr2}^u)@Cf0v{SnbqX+Gr%uSI&FRSf~AV^?mcF#*$K zqT;Gz6!cyF@#xf^dKa0JJxUFPkh{m-*2CPu$w9kmT9v#`N5d5QoN9)*M`h93Swszk zY()29t2hBRF(B2QczM!tCFz6oKqjA8AC*wM0=VTlDQX?rcX`*t;fZnuHq|H%`XE{7 z0xoB*Pm5G0KX%uMviCu(CTDvlH-5e5P_@(uEjOdK0UEBf>C8yYhXD*QI$&B^D z?=t~*r8SXaRA&-|&8>cbX=}WeQC_kc;G9j1;6yOIR+kQ4B>8lmmEZm{5Y3h5momEd z6$VT*YmVUmh*G*ItX{>Bqr-M?F?tBb<=NG^mxT@m9vD1=z+zt@e5^~(eB(nro6CRO z^WAr|9jdexdygLtk+!yQAb(I@8>i(k8hJ*y;hTST^CnhehAq{t!kduk(`S(xVOUzx zSml~9b1vx*OjAhZ#dDw%B0(mYFsh;;V^OAs0#n*bX2=I*&%Qf!3C7MTamY@2$n8)m zb^E7xt;lL_QPBWqxra9?sbN_lhX)9<%qOM5-d*HQ1|VOutQ3TB5e; z-&bZFq_`)AuO^}5q#{ygnF|lb-NcSK89$+*Rmrc8*qiY6;t#1^=q?_XUAlA-E<+e` z#WrnIX3qi*RSwR93!?COU(JYx?U9GpRICk&~vlSwLCJ`##70K@9!i=ZJk`7J{%=O@_+Ce@9 zwcgOPcMwAcBXXpa_r!w>b3=Os-3TzLTs*C!of|ZTjujP^cVf0#MQtaCovI6C0jnWr zxJZlNw!yGZJ`)g&s-MFjXpAXMAQKc2Bod<)6CpZByEf-eEN4iiXc{9zGQWE559$qa ziR-whkLMhThenq!_;=EVN@e*QNLgGzpIB=)13!e0GTes6!;i*st`u3Gx8i8N8d-KY zQ1^Tu`cG)J+DH*2BWEQnlt*F{aM3zVYDS2!Vyt2)dXw%$AXHtW#!_GPHM;%)^}bHC z)(w5%D3tTS*Ied}EEz>pk-taVs%`f^3??^X(C7Uq^D?u+ThSdS#C)Q;E zQLKGM2bxs%5Bu&LMo}SdzFMm_*xjuo0BmD)l@J9;To3G1!jOM>J4ir9YMiKl81vJA z|8dCpLxkX%Ot@e4!7y&U3T4P5X~4)?8qrk~?#s$70Gs{&Q$yV*nf0e(kkx!Nw#md- zJ1Zxn31Ex9AY1aaoyJ!KkuUjbUt8UYIL(?-Q+2WV1_1CE3YP?JcMQ z8X5HCmT3|*U3hf0J{zv*{&6i{DFDJ~^0`gC-^-O(hLfl4Gx&^kKuEeNkuM@gpqA@Q zgeiDAB%cY0V@1MI-rb8z>%UQ^Iaw;9rq{8z+rK^2(>athurH6Jk;xXlF*OcL=h)~p z&nm61I8(9T-xO@<&H8iCwa){=oZaw_!MSJ~fKvT6eo;4RY8R)+`Act9Y3zyY#PL34 z^tK3~4Sl5YIE}$G7puGt6l&G9sYGWYw&buH1xXhhl{n2Gr{b@4vkuoSa zpiKOocAW3E1cV`hOIf|AM9yi}IZyM#E+@KEoo`RJSI8b@?)3`7%ERYhG2x_lmXiZZ zM^>MMY@e1LPhi;RKfy_13Z^B+i?TeSw@XQPhc4drn@f974r#i&nIDg4yz7z>hu;?e z8@TMv?+H`ddl@!UpH^tZd!9Fi-qYw7Xv#ChpG?r8qp=pW<1_AKlXT-6KjDcefS#9{ zZ`>dPzwKBZZppPvsz*Dt3lk0axOn<)4PhM}lBa^NGwki6a(pV~#45l6H0oL}=SEi} z8x%Y26`QbJApihCEPhQ+a)w{JXbn1|$f z9JICrS=aqhtJ_mu8$X?~U;(HtzAJx)Pgln7 z4(}fxEc>GL41;A~Z)sCq*!m*HZ^vM|w96PMy8@vYn)mH)X#^0goN~6mP%*}j6Nz&k zkWx4tcInl1c)8BpW$^o1tiaXGBZ6;p)FeJ!Mc0hN8iXZvOjw|LBC@U-?SxXB)Za@nJpQ7XaIVyE z(Jn-`gr_V$MLp{qqNTg=fnJ<8h4`7?)~K^t8qxeS&1mSi4jH1OFBjeAmpnp-%%5?1x10DBb>^n*t5|?aKg99*k#uSs^g8OHRIsdJM z*P&c1`^T$aY8Qx`pk>w^$k%*}LFv|+Te+2tv0Gtu9Cc_J+k-GxAO>Kw(^ov4a|LG-b~QPJ63AVkyud zrS(13NMjsNW^inDaWHyVU;rDPl4&t}NAblA*l~A;7w(rGmKXD@m3XRtvju!aUqN_g zI-Z9NJw<_>k~<_ForVF`!GA}D@Gm!aN|Yh|;n*PI?B=sZqh^Xqh-3r->u)A=&l%{i z^1{~^Fx1rMMgB`_A6r=Ak4U4+$@(j&$CIOl#+bF30&;`zC6gUI8my+{% zU5<`L$Mg+nfG9kdZgCwx?#2xu$gB05Z%uz}O0Bh9JS*s+moe70(!MW-+#+rj!Mu?W zj_XgiW=qII-%sr}W>~|uS2JgHJdM9;%_OkuJn**Fc4Ghr znDd;)&wyO%oX}{ZT4+8Xa_ktERmzOrP30wrdyqI= zYqwXLwpqht)Kc8SN3a|@Hm|5RR76QZ2IWyz3S4Z zC%zu65L?Y^$1j8tGfs3vpDvyg&di1F{qTE*(WOu=Y0D%;WMR$UN@2gyhH?(i?Hant z#hG7VNI28%Rbuzb{f++*`X!>bnx;~yF=@>urMh|KWs(xWvGVY=?a*V=i-tNktmHYz z{#yEKFr1(HKtaWCE%|LSSaag%>D=3JCh4_v|4u-Fl9a`L^Q*y-BvXl}QKykjhV`wA zU)Sm}!q&6UjRqz|KjucG`Piu7Y+&Ty8PX$cnd)nd2#+Us=d%c2X{Y2-u<|Xjg(dqC z1C7clsCQ*12&KBX+7jUDnzLzKMd_Ih1Ye+=4(y#EliMopQ-}P)t8VZRa&>6rtM!^& zVP9REX0f?957E%8c=$V`2sXp_cB*^|c~;FomNS$-EdG0=NPg#=$u=AK$%!6TTpEKz z5_dIX?K3^rgkK6O5Td;uZGc98pJ!(?ztY=Wu^ZFYx+gl!KglfAG114%3#TBP?j98r z60OZUWXd-o7aXlnVgkN@-ft~SG-jw$T;cg-!nMzggOA#Nyd3y7!AcPou7LwtHG84YyZs< zW1HyWhlG%0wvpx5av_lmap?bNdTrjx(m?e3B0hwS@&N*?5t|o=(6Pu#dlyZ>T z61#?M-0zb6l^>Oi|8=;Y?$pV{mNp&NXnWu&kV!7bKU<$)XYB;{Xgc!y5Mr{AHJXT{ z-W#pN`5c&5^|84Nik8!nS&zp1&CY-ePthyAYA7FJ-xMdHqRjG*0(ebt);*;iHopEI! zz?Jfm*8-6OZyXCpJHN|^mo`zI`F(jRbuE=GN(w%AHCpBhcs#_Y9rP=SaUP_c8+%_$ zkfyvvL{%jn`z)0FlT$XhoigH^h}Ws~2l3R#pX$AHLVhz~(ESTxSaR4@Dgx5ufx&5? zQfe%I+8RO@f==*P@OVvnWdei9$r~HypJT9sE?d(g{|^t6;>XqCKIL`u`iH!uJLK}4 zchoqIn%Dd*EDgS#fayb1e36pv&6ObS*Rc{;7rmAruX#Ww{O%qRsSM$+{vQX&aOE#A z?4oRK$LR|Denf(q{b?W?$mZk=6qtDkWL-$48q?dwRD;f|RX^jyKDJ5iw#MNIQo1No zjNO0Nu&1tGefQCU_o+K!Dkwu3v5*(9k4?U!?Au7|#pPBFTb|Mc`IzIYAiZt}rP^MF zR?5tVt?WhcDP>si!%clqsu?1HXYszZ)(JHNfW@~%MkeU>me_uPHSI=Kx0mo!=+l-k zt%H|)@ZyWyu@(kv8uIDp1}3WYUertH4=CiAwZKa9gyu4&0i|<0CEA*{K>bP{es2lN zh>Tc8($-yorN8Y;guu>#l-PwUkhTTWM_LXXb?waw@bMF$ z+Pe!VMbKQHvYgEnHE!6hu0$mj^S!9;_mM^eo3Q27^{>i;KL#!}k~Z{OqZz8$rqf=5 z9XN`odKP-4p**cZAa{0#mMA`_N$ zB7_p$&#L~eCg6QobTgqgjx5>X2$u#Qi7d2{Y$)xbM&6@W8J0hOqfGc1BztwD`tkU4 z#1s#I1O{H75B027W*%ree+f4gPP8-Vkqwk|cOC$qTOWWjXO(;_ycy#FnU7{|-sglB z)NsKJ@Cnx4dn#n7DqojyLj;0ox1JPua$9M!UNZo~>;FD)1wcKlT9)%oo3O>JApXf} zaK-;-KXs0c$&x)34wOS&hNIt~6rR@*pwGaTDm}fo|R; z(Cn7%*+sbdW`6r=7gMy}HF=BY#c$oCd8{KExoPDI9Z}gRzS;Ywz^hsa!d)9O$Q_!N z6+;oIu*ksL>+`EWoH;Qxd#`GuC?~%jB8OM&EwfH^YqYHv86%81led)Pf|mH}X1RPI zR?FTsYFz?~Tj{LY!M7;T4gp=K$8@yK-?r^Xbq=dzmU;9uyAe>^p@G*gf@~ zCVSU-Tj^DG0oH;@jn&A--u!x;hqvl>SVf=*0Q%125dxy#n+`*BQrm;8b{-af6h~!V zyns`q00D(uFi2VefIJMVav)r!@ynsoo8<$L9|sU%2we>}v9tb^`1^x>GDAIDi9*Q| zaFC_Uw*0+FuU1nf)|s({Ymx?V!N*hsaDdCBl_p$u*&-tq3oP_X*nCwU5h6q)09up) zl7BteTRj(SG=aPs0DyhhlHU@*7xe>x|Z}|Nn_LG z?aYC_XQ7eBvpe(X!xeEw26@qEn?ZQC|>Y)w3|ZDS_3ZBLwutv7RD&vAU;AK1Ol>Q$?%tGa9R zw?qdr#5t)a2UCAkZa*$KCPee@82<-YumA{#_5WYP@qfP%W}?2S5BQ#C&U*i#ks{>! z>H>_U>s57iR2ZJ zMaC8dw>LZ#s|3TN#ZSEd11XFJ1QYrK*^?CWj}BiCD>uMk-V(l$g8Vg6-|61Q8!Foz z9!%s<1h@T^x|tV|IcVxJH!=A0t;1=tP%k$C6R0#2s28Lq%hK3eZ;owl7^dRb_;T)n z5>6TV{4`73Xi6y>?ReIUbz!|IzA{nU`O6I^hq-6zo1}lndMu0qfgQx0g}jM?UzguQ;q|K5{uIYv1)*3DP-jcL`1=#ol%)=(3SK1kfSK*D9Hr@<7`3L zN+c9%vKwXGDV_@HdiYiBeRhj=u)P6?D(P$^0%k&zECdOcE@?nrDLCwoTO!BTa2$E& z?drfEkwP|jdhD69X!chOMK@h!wZ)*1b`6iv@QJ;T`uh&EyWIJLoeP06CG{F?Nm{Dp zO6Lv16{yrbmWN7bh%6Qa7sN6uq#*E4)~3j&r!(bO6>tEVz7Bi2we z9OccqG6Sj4h!B*DXTIZ_3IxLnFy>qg6w06E7CTb|CPzugVKl|)@E`hWGDsVgV0sLN zW=&{4JKN1=S;%6&sZ?>(-W)KBYw1r$FZjECo@T1-c^5muExGHk)!x%>Ya^FRCkam?H@Iu#es9DK*@Xx2Cs=*i6kahnrM>692s2tiXU zqDqzlMi?!wXC!c83Q(WL`SCPhWu40$m6ZTCh;^RU9%4c0lHY}@hkBebr!16ml{ki= zEcD<)r**lQ&Z!Gg!bYLNmxJkJV^-QV*B_v~CLstpkTcu`RuvJ~@)%c8t>>h_XLW-buV$Ra!SJhAx zEl1Fcn&583S@P$xj3qo34P7|-i|OUven<$c2vb=!3md)qXX5<4uH6q1S|W0Hxe5(7 zh~jl^Gx!EfWW9ovpRc`WR8jk@Bg`yMhONJFYl-ULu<^bfz(3Oc{k#4+o1wYKq(=GE zQLyS|jM#&>@hSO6elPO2hmgT&XvP*_nkJTJL2FFzl9e=jn!<3+tLzkE_j$D1eJT(- z(4V_w1)w_%`4~X2H=c`4?dr^-64}(iN!zxpXLnQO%4O{f&9Iiw6*(ec(NVTRA?;=K zXTbruN|yS&O+4Bb2gWeb@8xf5Uc~Qk$6IQH2#P#G78g|(Cc?iPIo7^M@k*!spT-70 zc$=zRZ1JWheVYU$p+h%ogrV{~fn_c;yt#$9M1Q5-2OQLgo;N;uz&bZ91^)6vqtQK} z&km+42|<5t4LuO-*Z;QW%196#0Qo=h1_2mvWyBy_2aDmb82E)(C!WZOzgCXPQU(~R#ukHSJ>`h{pQ4iIR)bd5dOoW zg)C&GWr2UA%-56JceVO`T88ZAF+|t{oUovCQKV*~HBy#Az6bQTi;afv)nbEEVGSY^ zA90?r!=9%R@oW2~vQeB?8pGd0m!_JV1f~_nXIZLwU8S8V1Es!o1rE zyPV=RR*QSw6ZOkKdP6JOV#+j4ja3Ei!PWqh^JF$6a6#CNe*f(a!RiS7)-`eO9b}(VC|(K# zJO0mLLX;r@BKI(j`|ks@mAv4QP;)M_U#y0hHbES7lce#s>_n1&#h^Zod1Uqcy>bTn zZgdG)3aTQkK5X+^uuI8PsR3;YSPyJaLY% zWRc*Vmg^g^6J6^z&*DYcbq(mIM>9g(bd}r~GpE$nG&;ArEhYLLMM?2i_}emLW0Eip zIN;ENzXKW#;kuIW{dVoJHyp0x5q44v(=H;@n9aJT2b&?uj$XX4jW{Tp2*-2q+9(S3 zS0$cNPK=`ZJ4ix=i2R#j1`>&2L1m_-z(DMcAhF==tboF|`d3ziK4TCO5t^BnuJg~1 zn?gI2tz8h}wiPzvGF&Z;-9M(!rsaUfTECo0Tr1vyvR>_K=++E5$1K@91}a!VpvU^~ zl=&16YOEf4P-<=@rL##{Ti#Egyiscxv{nK@HfHK6K_*ro73B~BFhwIVNRDvO6U^C9 zWsBFX9`vK4AfluY-`?^mGH4yq%SP0q7fByF*5R)2BlR?~Lx2xnAvUBWHLCBqAbO>6 z?f(evX~&qaek5z;g>p|k-sCRoWb7ZT;ajFocq7(u#2x3`snK!&ep0<}?Lu91 z6Zx>klt529it`7#1NZL{oADQpcEqj((YBcr0vWd1k7<;SnvEo}=)q@!Q3H5eda{z61 znU>V>$CObX;ixmXx%gh+u|)2`j$)$o?+g88H4$?Y0k(3Q&)=06l|2VN7jcro0Z-UD z;Z^9fX(2Xl&XOzF-RF)Z!<@KllHzoKBz5g&Hap+D3;X-{$5s41^0^f?@Rs+Fv zpsu61P6_a-d6;ey4lM0xSQK9}%}mm?yO=W|-{3A7G-S(dp`4xFhlS3M_1A3yZvKNw zN;26w5u|>yw*^GVVp$Xu2Tbne?_>T9->eptU){YFR5k$z?)Oen=JApTnEtvtn7!1v zuX^QFk66VAadG^L{y{6Wy>z@+Qk+t2=d~8sA~*#t5y1KzY-n<0SlRQ*y^cH$Wl?XA z?!C{D!?m*{pY03~4Bup4T*2VO&=WwmYM|F$g^kgmFz)B>0@pol%c|+`6y)G`Ch9CL z7<-Vi*dwb?qih0k*28K7GmDNTYjX%X$)ESP@;yXv)& z_h%o#?Qip0w4ZjY{cJrgY`t>{5m_4p$5B>04(+PwUIVji|EU?=)qFm_d%DkBZJkXp zeU=ovP?J72cTslubbP9&Lq83=wqS2MjSihAG?^+nQuzb4MhixQk~2i<9pl4^_rY4~W$j#cJerhnKTmeb`camalizV}l*9JiHqN z&j}XD5xMJC`u_J@>q9W^NJ(39AdsLkM7+RLTdtluiPuaqJe#HhPq4*<3K51x&gcUj z!Z!NUc47x_S)68JMp1}NR?mq*btv<5tl|e*GXGqXN~}XD4eO=KUqnDJ7c3pWYAcoD zD7D>Rdt1PM9(~R7RZKnsWctyxsK@n&Cw?FO)j%9InHe(V?JwX98YKR@JP}hjVm1ab zZKIU=N@@0@A%Ve+#`iFUG#ala3}QFGvl}kQCU5-*b`L1bA^>n!(R#CXZ#CTUBM|l0 z-sub{?q-hA0jHp5Y@O#{zxgQq5tU+DWy?`vL`=tTcmpd0CQIiQ*2&}7;2!Oge62qu z``p;GtGC3_S1=g$H)|c2K>H9M;CtceeE4|6Ug>Sa+0zt_3had@SSs+07t{Y!AHMxg zPNk5-2~MD%kndY>k~C&(rGA=#rDGJZ>tK@ICN==TqvyX;D~i$t2>8i3peNTCn;?FA zR;AV`KZ2EDOFKeNhg<%IN^7|X2OocWCx_6}@5E2Z9O}_$H>F+ndSg#>zi`%mZ;ha! zpjLmEQU)N0y1=G5xlNO@)yPN!nS3YXu?<6H8nsok7Xu50A%Nhh|3xaNuh0(bh^)}_ zFX_rRKJqNw=c7+r*dws~Bq-m^`{b@)8#|;GH^U)y=4<>rbg&xgCOiVB_5;s;UVxmv zZ9DP1nvuj);xF(%$kOUrPz=G^yhPQYm4gGJ4K=}aY*2(v_MyFYlM{BSaXBaf!=H$X zpWvB&GSHFpicyDaUVk~Bsg6`YO9h0^71Spn<-h%i0s;hf+Di(o*9eJ8ttx)Fd66ik z8amz4+2o|UAqE?*Xs_Iigr>$$NG3iNVSJmOk*0I6X7N z9+V)^igN=z+Gq)kO%{EQSh<%kFmA65i*`{<-zs8CR`W@b0tIc;kS(YLII53H`I@93 z*o(O?8-JDLO(p<8?&`?}fE0EP2Ny18VSf2n#x1lz$3o z%_3i=63W8aR}?lBFcZ*RUW)uIbq1}6zh{iGbq)*srIPqTHx$!qllG$kgwqcDuc49% z4z+0ECqiWOq%~HTi${SvnKMtb2{DgEwAb%`Tj+n@?>GOh#TBodB*Z*O>Oftcf+kF%II`{z5L-?zmt*39Yp?d9q7tHMWYiF2&)yn| zm1~4i-3f1^VOFmy8Z>`1SAut9qC2YI6a=gwJFE2OZU3QP!w(UG?QGUPdTo_KEx#!_^*W7U zG@*k0@z7!E7uU~DT9F#0Ne7!x{C$iZu@+m*wHy+ex8yvHD<{Q`!VH9tU4*@bV}_XL=fzipw~8h5FG22sI#c zbt-tcV?lMcr1>!^%3s%CSUlS=KNK8;8>r8yp;U;4(Du6MWNkgj)XXER@;=bxhp8nb z2LlWDh@!r)Kn3ekzA4X@1dmd&j+;^c)+dE#NXc$rn*-3CnyZ#)XvFd-fy8LCJ%pL% zi8xtx(Jc|+9Xp~dn6Dh3?-q+RRtpZ^S{M16IfeCyQMr-AVQ$JGc;#l;>RSqm_vyu* zdglbUT!A?OY)Mn5);C*SfjS8YgQ`!7f^8izC|A|ev_^F`K}TuDd3N=E}$?wEXdML}`ywsH`V z9cj7AU2FlUKcwbB{izYJK-K4rl%m3`qcRK|?>$=piyViBs1J;KwbWHdN@i|+w4YeqLh+t`nltkD&MdL%wLm`*Ms(En;4Rev! zo#$E~Naq{}1C0a9&JH9~2c0HTXbC`eya%-6K=8dUIA29W z@UNmFG9X|z!}LNv7#bRcTBX8=>>ayqV*(1X)?zR(pmXFE>kBCunyIL!$cBKKD!m}K z)iBHtY@dtw**@lI#>PtlpmXq@1uqG>M&lN|8EQm7Iz#T>QGcsSBMR0?iBJOEHCh4x;Z!X`T>> zJdh~r5-f8%gm?sgZPIsb$&P3J`cSQ_&Hg)|~=+ z-j+)^-_R-*7*YZ;OJ}41X!|S;vY=pYgugpuwS)#9n@eP8-#pJC99)QYFBGf>tgH1S zYjk1dsycS?$sRI)BP_~c-#KwUXR4y;isCHz?HVqi^42O@%CE`f)1@L)KjDtEsqv@t zYdRv+%(-|u=D=wtbkf#k;t2}*vJ>*ON1tYL`zsG6anehX9tubg1KGq=M@S?oD8k3a zNSkookbJW&1JCN8-xv6p1%+)_)SSLOGM~jo`h>4O>cTwEzg}QFH{iJ|KTz$NG9k4^!9mu$FbB>W#XG8*ayvs+ zRb)ZR{j~01jlb(L0aBYez+LPG*GWlIdm9Ny$q-dUMLqdECSm|ZoFuK|6=rSsU~NU-!A#-u`aC+qu|L>bNLseq2^_Vjo?NMXK-(S5T`pN817 zdYqb|R^-FsJ~vL@NoL07`0OxGXXU^PusDdASU1#PkGR793 zj;f?Ky?lx;vl`c9gA8%TWo68FY@Ry$=SdPp`|$dV#42x+dtGc##R*oREY#12)+*eL zQjb3Me)<}k$YEQG@jUJT5~I|+PXOHg%#Z3@r39FWHvP5sBkxp`_$16{h}rg&ZZJ^P z(tckNUFzKJo;5MzaW@m(U+GlO^+@@ZF<_l3f1jhw=6+eK3u$f za6KGdlx)|P5?Q_YSkMgtc%2S-YUbB|D}lq{5b-=T9UXS|6)_`9iSX@!e=_yQtiy)B zL&d@2xv!@p!17H2oZk~X3KOWm5~SfYdzJ5d|HqeTT&|a@4UDe}s>QH#(*{m%+;f9E z@>AjXZ)ci1CvAI~j%nZ)k&8u)Xm zPb|lISLk#Z3lsU;`}!n=gD8(r@x{a}aC{#=JvNnPiTS$rPLK$V3W4}PB$!dZj&do@ z5XGN4midu;1+Adh4ZaNwh2`pn=)Q;Kohxf z-w^gx)|2iYo@Ygos1K6Vnzb|aV_@$|& zdd=I%&XkH#yL(#gx4u@ZcD3*vkh}U+KE(NxPkR=3z=1`l6FDfVbEfcUS#%<`< ziGrMp66wpLNAli|xI#*I9sByI9a_UO*q~lcJ6z1!@pt-lqTEINg?fV6!=NunL-YQ* zReto0+uc1i3+TN96ATOnCnOoB2k&UmfAIhbQu105Uh5xL-h*Pv!_^&nzD1fA{=O1~XOv(Jge!T^nG=ZW@4?$|9SULT~!`P|6 z%p7w^6idr&yFrV}4gq#;=yrT;#IN?*hycSL&bnbe%@p9%%|3k0=<+-9Jjzi!D=8x!+$G)eB~5~E}ftH|8RdH|5~Mkg7M1O zLz)+`!iU?>FUahJfAl+qk*V^%~=NH7`FA@%iCwtPtn5u)=vh6y?kVFGYSB zQ4=}k<(;Mz;?BZnK&_~ehw^(KpaeO_nwB7k;V;5xhN};t2RB}w0#OR#HCnlI#^zMs}uR+hqyLT}!Oteg7g|Fbi7*r8VwZwr1>dW-}bsup8ESx0~rmn_*@{8A;H7)S6 z`8+NAM%`^j;L24Z7yv~~9u?(>G-})9=rc54yph~E>-iPZrJLl{vlA~gK!;Kb^iA}Q&AsA_) zH+#@0dOjzJQSI=-Hj1h#5m5GjAuIfp?-e(JjOrz}F*t`dR zj5}2y(#8^I2e1$L3Wm5qNXY+O>|f6d)$tw5We3OipJxFKzg%nZ4y$2(z{gcilZbbX zsdNK}7{i4hZ~J(u+BBg8%r$7f%Tw{l+z_hcm7;P=-~j`u{!tC(Y4w3ul~ljtkR$H^ zew{0OdbTxJl@8qLQ_HC>A+EoNR@wpV+&w3Jsg3Z!)D&o|R(R)ZZ(l1cEl{6G39S*k zjiiVQ)0ir`$Ts4-cR#ifr*?pEeGP_{V=}Uo92{8OqWLAID92~l>%vXu&0(?t$9LP6kseT3Lz)P>7q$tW$0zw9C zOz+-VKJ?A&&#CvI#L40bO8`Kh!w1vdJ6JlxjFN*BB|c@_v)?DWq*3uTjKW}|$L?Nt zp{sSY<(5XDPK~%Mh|~~01XDgb4<;~~r^dcS(omwGBb*&{9|8nDAYNDK-+isrk*>xhs*OO%HXNJUCywzGWIlem z&icj5GefY9PH}$6X1SIy(#Edrsz*H@-zUkAX66ZAV^AIrwx)9YXHr{NjX9KI;@;Dp z?*!>kuba~ljkK21Jo8i3j)7lUG}VI~^I)T{2FUHEA0v6ccz%0Y)vSsNQM}OJ`9TmSCH>LtXJDoN8z%W^k~cq%G7h6_h0RAUu(U_K%<|hpPh|RlnettP7ai zp`kjU?spB7ziAoE-zk(#Co)1bgLCISrHX>dpu}_&=?(eR7^Qv=QoBMw{`R z@zH}T;SKJhvLW!6n0H^#h^G;pJKXzAtHd&E1(X5+>AD3-58YO?g-PrbtDPTbSB#WM zkukn_R7{y!3r{egPZE9)JT#_FkYgu%Hdah(4H~r{C-tae#x-gwv~+Jju;SO-DyRxX z+(IPJ3|?9p2%;EQi62K~MRwmKg;L8#=2nM#1Ujx1ey<)9Pp(`rG6Q*0^r0{k&Zb4^ z+$cYHIg4qaYVv*eG@%@$&OlC%a?0B{qfg0pYJRiJ3?|uLh~f^~N$2!e+*F%5hat(4 zlI7|O{k#ZL;DowYezMI+rvYhlT;!q<>YV@+*OlrrkjzA*h-LP~=VlG=6YAa)R?nB~ z0;_1mYB1;WQ>tItld48913$fDjzd{M58T?V<6m3`{UbX(R-6&FA73{Z%ra1$6@}oo zkme8+d0D1XG%Uh+j`Ax<(f(EviIcE_dQ&0!G>Q^HPA(#xNTldYI;f)f307>n$JJfs zv*sAW;2e5RN*ETSSNkI!gw$s_E?InYmT&_pxv&`*v3v+_Tc@A@FZ(ZX(!wNhM*cP} z2CY6(5!8!J+LMla*lcU|Df>4gA20kRV+XS=!z-$U-%KLn%jN0ag6R?ESa9*jIu^^_ zd!e*Y(JBV!P3OnyjQr@g(uLSbScx&od=dyok!q?w#{R-xFiqqd+*01pTrcP;8MWx~GRwceu{tE37fB%emZQvjkh3 z1%EUXjlys5>9(n>9`CX&wny~kVpL{e;Y^Gc5$4izXdsU3nje6LE;~KIG0hEebw0Pa zu0E~JfJRymQ*e` z_s}XL??ghn1~B&6Fm=bsBT>3XhQKqWb_E0<79`mHOk8liENsZ_dfqDw7yk)##))^i z?ia)Wjdm@}R+2gHPF+xO)K}!2;$c{&-r=M<ZIhn2NW-ch7sQ0yf-Iqh^Dlqhy1MXBD1Z!0iyA)a+NzdbxkF&M>sX3gp3o7CimE zAOo8}oO8JWr=q8XLjnA(Rvgz&vukFULvNVNp5`7Bx<z!Urw9|Cjru@^5IS*Xum|CV%=2Jz^5xeVa0Wu2p>&k z5E&9n`m88Ly9W;H1)YC>z#)Nkj1K7HyKRv6jMk$W^`?C&v((fXwF#QVo%-Zvf-al6 zReha0{ruG%uX=6iPTvNzkxwIou6m5xd~IVn4o?OGl0}^` zBUu@=Tgf$}Wg1bLrWjT-4N2P9pY4~aC#H%Pt{m69kiBemgl;5il9MYhZ}xO|^-sdZ@O ze#e5w4GXvZs*SjMdAOnwE4Aq35byjzh!KBIA50--3XPm#ooIvyS~3X~Ksh=d9IpJh0pvJiJ7l7UQBmSv!u(I|6jwP~^gw zqP4`q&darT2WvwR@fpS5*!Ue2vhFX=QCNQ?XHJP#f;CilV*V;4#X2A~69?F4^{UEv z_CvDeU^^cY;6Z&$LGGvK9P!OPW-LvxfC-L+e%4uH-AW&qSNJZ0^KsvNPYU*2U z3Ap08_h^#2#t%;%7DCe+Z*`2%f#?DqY;Q^$FV`CsWX}xvVpK?(pf=x2F&`vuM{SrA z8-)u#R*8m1e3=jpVO3 zAIk&k!2yLDs6fczFJ1e(hK>AHLT3#On0|UxaPv19?zI`#<5)_2lxl|ymepJEa~`?h zlvty^RGNEto;u|pUZz9SJWG~G=TPG_xX2L(+i-#Pw;g@@+Tn_;I(n=72iyn5c34;dJ(%`%@@Eq8}>H-qy4zeXI>#;)2NUlmN-t*ff#?im
8(o^c?NQ0Z+HBRfdu2pVsz|8!|(KF@-A-lsJFK5)qIEq2 z6&^Z1x!mZ7b`|c|e8m)G2Lxw#SjAyFPBr4d8GRw75&I9?Du)4Exr=RRHF#z!sUtSE zZ3|Jn1l{4>^zrXph_b49hmrci~!*TXzjANLo-gMkttmm8(&4!t4V%0@Es+ zq?_eEys;;otOehioZa_-U)jCJerr|$4)NI*N!A^B)M;VuGWk2T;Z*zX3XxT=Li5!k zQdX6Hy#u|-r&u@ZM%|ZUn8}Te9aN^j1L;G%kN*K?!@g=rJ9MJV@QjPW_KQd+TA*C)E?>JSJtSU}lgxt- zh?k(8>nfGGM{Nl^3&xcIey&|tWlyCU+){*Hu708yLAf!Vor69~b^2aaMt5xb+_3?{ zOCb^%0&lpi{6)%NPPHO@Q*tl3UmN3&?nOQo?0q-1GaUuF8|(G_>9) z3%7SEHs4a0rn(;oYw}885mQ)${b}YN4!qB2CPhIrW*1bS%ypDOyi2*S!0k~vo~CB= zPl;y&R|sT=izHn)h$5e=a8Q(SP@{<1`W8c^7O2FrZkwD0_}6ZVs&FCsdlh~*C?N5@AfCC?9J zn**6cV^N~!1}t*>_~Ml55O8g+9~6HVJu)WZqHr@GSl{+};>tP^Rm(sFplooCvdQHf z1-d*=fYPDM3Ow2^opN0Bzd>ne7)X-S+O|p-<4U}IukZ1=ewDDvQ$Xg1;W5~8-<86Z z?V|5|D(^gSn}I}is+HEkO6}vLp-zgF<=Rdl*%v3bj0NSV*x^ynF>6nLV?O3+rWE3* zcEb7TbNT{?BN`Ox(RP+Gzmy1ZSP6fqjTnbX;UlJWd2N z5~*bCXzJNxoAZ|uBYkO{p2zm6ZI&7Lt8`HU_tRP4ygCLxu#p98(+A?@sGCK!aLRJI z#6+x@8`N_qF!Mtom>FIGneSKAY&!sdW7Psjva*H?fiI!QUC*?!v7ok27gfVx*0{FW zRHuM`SXf9QaEvPa@KE4Tp7)YXIQRQ122N4TDl#XmkQq?2)LHC|zdjBvWeX-_9rJ28 z%kleH_aE&~@_YyrO^ur-fZCN0k9gGq@r=;*S<@5okaO%8 zHM?O6!-^O7i3^FEH9+=SVI7RvP4B%2vBM``i{Bn3F?+a;kDb5cYyKFc4tDo_QPm16k+*KA23jbELODfRuv@$_6V4os)q^24d;OxfolisypB4~uz}Z4F zPaTS%n;iY_#Ol{gyO8jyo}dgc0kh=-A+|AhIC>;^d?M^&UtNuDgueI&2WMLJQ?f|;U zP{71`J3G6!QHA_IotVkAx1ks$SQ^hv{OCgE?k_y?M=gix{birZ`}Hq*P}U?Za$0BQ z=)tOE(}!`nKFi)nyq!y3Uc+egjgEJsl(1Fxj4BG-H5gH{wxjP-CtOpk{$zHyBY09S zW*!T@wh$iq;f(IN^Z9!MOx#ILe{4h<#Dc?qOO8S1;i=>e`J9#Gy)P)3YP3;~^BDv> z-lG3)hJ`Ds`<#t)cwOe-*lp3vXdN#|ZIbkiBCV1$tm@++R$Xv*5U3UVQ$e|(#Zo?~ zA$A{l8u~M0gkidSoNROcd7EA6Hizk7rc%rZGf-ko2H$Uaa2kMi=+6z-2D*uMW6u{dGOq9-j? zR0#<|?NVy*KBQR0%U;~$=7MW%eE99f=$(Zf5;lB|I}?yQ+y;~zQW%u4g@tHYsW+(? zR|>D=_y;heP?eK4QkXIcr}?MPj|iTcHPq5Q|M(T}X~V{DEarZ<2G-( zJi9E-GmIYKCV{r}lf8`OAausm-i)9hFbU@?@0=giT|%wSc$4;einb0QR|_6=DV+5H zWhr-42X-P2Lz=%3oo?)er($XFeFl@S)OS0tu{0JHArmwGW|mkLY^-j83`br)|Ld9| z5@jAdY|~O6uyxlLCnLUpW}F7akGtrmbP6ni(?5l>nTHu8yj+JP#F$R_9+4Zo^m5(Mnrh^CP`M zn~^@hYTkY*ux(pU(oPk?5wD+UYh+2h=-@IyJw)&M;A1I=hcZ%*>g|Z4>A+q9FoAB2!+)G1DeHr5@uxFK70}~Xx>hJzPzh%6QN;hRk^4Mc47m$Tl8uaWx^$tUg>2*v4?C{ z9h}lOzrm`>jo4qV?5%Fz8E|+UlvdMA+}3{vMYeJ#IBck^F6nQZR|g zO_GiK0~d>NB{!~xU8G6|fF+_C-O=C3=#(tXNUlE`#qN1s^CJkO(L|3e$YxS8YS_b$ z5)QXqf07+nPE<(ID_@_hldM`uxM&(AFyc^_WWaWu0)<=F3{B{k1CKuP?<``kP^6Op zq4KOIC5~lgFQS2nP`Ikg6V>g6f=49)7oB{3ANCM_+pg7M@vpuauzt*x#Eol}fqVOpid?FhyfnYPfikiB+O14TA_MQ{aG!TcTRsI9P8cZFrSeL?{Wpn3o zGe8r-5#zAesdxv86=70GX{t~`s~LT5g+2y~E>xRmekEHh?q^8y-kk6T?al=&pZPjE z?j%HK2O7sQdN49L!$B%p>_xWw z{p?uJPpx^-Av`{VGdrE z((xr^%NS_-S~kU_fzVXVR0r%JlM9QrJ8T3w-h^{;jv%SdWMo}hUzt{(orW=xvbk8? z?SiBeV*O=q5rFnv#X=)vv}-=fU~L?5`u%Vbt{CUiPY{R)v|39vf93fIgh6|KttLKo zISl0fV3`4qjUgQn=y&chIic?rUM+_}^GzIrJqH14pImHRP8wgb)CD3CkSS0HKux@J zuyMw3cB%LXuRGs+)~(!-BhFna!0UvV@^1F9Q)pz%YLN}O+-ggkg+U?8Ch?$(2WWPw zy6Uu6Gh{tQQb=xMDl=Z;1d&W}^HhpxD|ZOyyPD==_0`$7NpUpvs}SVgzL!c{JJ}3KL8gb%0iv&~ zT^F_jNxl7O|45rp*lD7Z3D8zlu~-!M)1iC4`(hV^^H?Aqrt|?TP-tcpVg#&2Dc$-A z@%KEFO4N@ANjuu(hF2TC%YLMLywuVL4*cAJszx3RNFh7y!>Y#?{T5qnC;NQbFlKJe zxWwokqCH|erH0{$`@^i#*iO^BhQyKO2TRbli@Q6mJ#}RXI9CwwL)J*v)i)gIPk1BA z{^KpXB)j{8F0~9|iE(g623``M-z|nNhr_G(iNZ}vFXJlMr|u!*8bfLpG~daw?2D|Y zirw6@*v0lzE%J9mn9btLA8Di0Js<@Ir->&OiE4!PA`*E~@`+&3TUx;{6!_}SbWL?Y z^UU=IwZRK}(m&SNP*UbE8lAq*!gJxprIa|k4i*i${uprw(cfQ{1OY=#Am2Sv)-d)^ z(MPA`XpxW55=7t?3WReYS{|88A{Vvob`Kc+6Jsf>4ThNBvlhF)uI<#9c`<;zeKCxH9VWyGkq-DJ)dA zaeaYbxMvkN`{?o1C#f03Vi?m4z_jE-;JlcV<;&enmHC_pK{7^K(polKOpR(u2!zj#7v zhxFv>Mgh7}InxbEr$GFp!Oz0^ z(KK^^ZD5T_cM1no_rCQXUBs%FXR986(|%@0_mAC~6&#-zd;IK4}kZvq6Lt=-75nlBqVT>JS{ zC5fhUh@ipj}Wf4Y?gb_LiNimI&em$aKh3FJmQ>x;Za3W~+Cf==%gW z8rhqAy|HsTSD#tyAEerr*4wUR+H9?u-d`z)IrFa|niK{fuwv{Cbt0vqUq&Bz$0J7;`p?eq8d@mL&aHWJJ_g8}Zw{ z8Lvz-^}+z*pfyny?%G5i+EJC}S4APFHi`JL>drg7;gt=%o+DrKUq3b~bC%Gzci74d ztqtlwW#cJion3{nEpMmss^d`G^v2CH4HhXV_8-Z;v$$zBk1Cx{JlK5T6yo=4($=6> zk&}6~I$Z)_ArzM?@A`g5T(YWnjnv;w`XoZDU`~ugNW(cf=7%HTbVkN#%IqY-!wO_u zc(D1=am-`54GVrkWI2=xdKPb<3Z~C4qtB{MXpi~$4Q`#vN10DgELvePrirxd=+0nD zbZ=AIFW6WQIdhXNi;}E0h?gFgRA?*_uAjty*Z%E_Ecsp` z#J`@ClyfLiD7%~lQ8V*7a<=I{ViSVrpOP(#CnAQI9I)i&O!2+AFP1ed!1bPlmRUa3 zv{P-|HVQG85^Hw{A^9yn7aDBJ630A3yEOu;vQ(@6Zf)d%V*cwD z{G&-@JTp`Yi=9_F^vF3kSW=n`c)(vxvK09}ZJh|k1p6*|x|-VvPOVl$F01G#Pshir zma);#$Rp9v?dt=j;~fIlM2Ss)-sofq4l6>qQ%KyOfdn;MxlfYY`oDzxL!}^!az51; zq26v)WJjHz(?>3k9(_VWRR$v>)K81=>&WX<;EkWLBE}N!aL8NZNwnIWmoKSmYKbp) z>SlOJ9>Bd-co4-H6{U}2%DJm^b>uFC@OHYK?_9-UXs+`jo_%mZ!eaz4JEQV*7Iym5 z*?U+WQXXs^NfJuOnmg?>6w9yHJq7Dk?I}#o=Dz8~x8t8(Dibw}7LMoSx7;$hI+gTrmAnF5qtxsmFJ~9VQC}qzxV0wKSDb&x-Jc`jnEO6N^_Ue z_U-l{I1qSugheW7!j)^ed1C;h!s|sgtY5!GiOK?N3+gt%0c7!`w?^qA_RqWd2dLqG zhV~-SZk_Tfd1G#{F43Y3Ag-8h{sou*ixgaf!bY{Z$`^y?{q?tV#x4X+Aq~bCiv9e_$-M1K2ajJ4qilk0`X@gEsa~L@*|W z-SfqJ;s;t5xG3NgVaCf%9#v2^4ODas5mb!7YeW5}AWjLU0$=*`_|cB7R3ldsbBj8j z>F*7W`$XzfHCY9r%9Wp3Ywr&&`v0gp2kyY4ZA-_tZQHhO+qP|+72CFL+fFLBok}{l zZ;$a_pWkrS+DmhO>nSCDcTsCMlwzeO-_R6z4C=QrP~?&r-mfs_{X^}aS%Y&-`KUXJ z>@iId@4fB1k2RsyQZ5xC7D7Mo2~9`dr-^_x zL89(nGtn^r)^1S{)Wrq!|9bLXgW`*#T%22CsO-w)7k<(DLV+LoV)~VKA>pqmSsufO zWdT>k|7*jOOv&j%w=8j_|C+fMVkP|L*9})dB)?Tl>cX9cr9=F@D2aF{b?2+ylj4i= z9vgt77l)tE%iUinS(men6)96XR>1tj1W-m#QjE(D+|Q?&+-7`}_gtE4g-7Wm$A(26 zM-1@u)1Ye;+!sW`#pAt?} ztuD&k@FEW)x3gkLRkpjguz$}oKJQw=KC_Ud?8Z<2Zpk<*s%tlq>~5^IKk`q{Pb3%A zXo|1a-6NsTA1}B@y7dT|>CeOgn~#RQqgK{Or%!Uc%n!}M;@HjO?3}a<7D{FV-ZU;? zTb}$=y0c&qv&N-LYBibAz!$a1fM5k)P}?V;{VFnFUkTBPuLU}1)ZH8obLtV}pf-L_ z%MJj58VZ1;bR9q#O*r~GZJzOh^0cHTiC@{16&p_JLS8xG8KweIB+?iNR{h^)-+zQz za1PE_x8?@_+3pdV%#lZ0H)FCPrOsfl&fNczJ|?mMg&Ifx`#fF)9a|0yFv%15cSa+C zdHHhWs0wIGo#pSD4$Bvxs_{!2M-P~%nq!n3S2a(Ra)|$XQf>3ezyiu{PtULCtbEp* z+bDRCoMFXGj!qkah%JQ5A=Clk3lUh4EdwyxyOJht-2&|VH0Po0M5{o1Km*YN>EInZ z(~zEt7bIkJU%3b9)_}&ab;nL6`4i z;i=XsP$Q#&`dwK+*(tWFGZX$VAB)CdA4`U8j6o;3^qOXzY~lPznWBTNopK zP;op9O)I7PW!k&?bA3DcN;}&>Oa;TK!vaEbxLQ*k#qPU)7j!Z{xQDMBt&r^k{?n{) zK!9jkO#DdjyN@b2V>Q_un3TjgcvDSDWdGPwI~v~p?va9WzE~Xzc~K`4{h^-c94~PU z5l?JR)zkY9F^ARpthjWKxb>HKtvrllTU7X18 z`;rM)-SKGchfR{gw{o|G*mKr4W!~?Ir=fDov0xh;DJYS2cAc$nU`1traFKFq(O77!$+hq)uE4i82#!*a@}C^rb)b>6)I`RM@6y`OvMPLPoH-@bZJbF zucITB4|$l-IJ=xHo^KPKPw7&{mUjVCpb6=;8-9NZ_1C3|U@-Fz^s8&iuz0;U<_yAP zkT_*P$)u~xV%Y`&PQ+tE;vHiwCDCNC0(k?ZR{QYr%C{%KrZH(zErj} zmfbVzO+6Z+KI;Ag8r&D|l43+HiqIY1zB{`Y=G+wezqCQjoaxnk-%?tL6rJ((TA`NTdh zWjyX+MEu^3*A_vKE4G~nW_Yo+@7{unUH{TfAx@&$se z{x@j_{$A=LIp(WRTtS-uCu;$4nsf?A|Fx{v8{cjokvX*10Pq(WtKJ9H=aRidkH#nW zs$u)$0WtD0fhbDcxir#P?>1O9BG%ve5HN{%V>%oos>AeX8Ub(s&m=2IsQPN$rzheg z!fcLbJq3vW+ro^yN@C{@I*6e6On$u4!9ZCfX1=ZyVXsAGaNQIc=F*;sp&ZBjF|S1Ur0L2aCZbUT+_tBH{FE%3A-;XQx%iUZ7f$(GPJ za``XnYJK-x1UI*xh0gw`H^f|Tv+o&)^?4sL@a~RZ_Yi2CVaETlYS}5z2Qq$j!WN4X zcT&5b&6E@bE& zsGH>t%C9LY^OI#xY{Zc9{rF6Bb(IF?;Y`k=pY>iv>!48KhsDSTf1b4^;E3a?Fnxml;q}NV7qk2lE0F=@x1B4pkEZt|7T3 zWoR&rsd=~VJ;Se*mAo_`RL1-%tPf1?TM>h^R7AW|z*&`S#ILtGH* zRI;cygR=1PddesneW};_n~)5xLM}laX4H+dwa=g zXxN#V&YOEx14+Vix7Eg3c$fpRRCWH%?d@w8H6$=N*@10PTd~tmuvkzaQoHLh)Z>lv zVf#MGQpXhd(fB;MvVd}@NH`qc1#ZPkWP=H~HRAg40nznl-FqTgTp<~h?#bMVB@sd# z(95z-T)h25y2+tl__mJ^3p?&vh>|_yMG+Xxf>WjT z69}`Seg~(ii9AF@xZa2Z`!q=ex^Ek#SH!9mB6gxKF4W)lZUPxEWIJdC%P~@8ih)Y3 z6#LL6ikXK%kHDNu*;~Oy8OH>ap4;**%^DeU1iji`^FTPSZdR z`csylJ#;BhbGXGZcZ6kvg(o;uo;EA-zF!PGPnGUX!AFj~iUR-GR`dgVD4K}D?A1+Q2-@Wa6bYjTf&=_d)d%G;-v57- zC%p-zLi52yWcBMqH#ubuX;aw>#zIQ~IWnK$HsQ*MS3NU^L})pYu6`&xgkOFDf^m<| z&Yj@y6*jKWa2ye7YH;v;GyIxCQ5{gNUy5+;$}7rjcn4@5>NicmvvQcmr>2UPw=Jdg{#dzaY!Hsh z%u-@DUSGq@=fGI_%2Dt*WgR)%pr6sXo<9`e9gy_2FK5T0%R^%_dF1opXxhoc{7Y~FdW@28MT%qcNN9S^$F zoC$3n-EXUcOdszaRsU?V4IC-k^pN& z=u!JNz|_^;e77-yc+n^cwexCVf&*7fso*E-=jT*KO_cc*q7S?+xAyNwogEj=vE*&<$oi? z@K^Ez<5+X_e995T5x*+0#hYQscI~eGZ&6b@UYv;ESj?*o>OHzM_E_Sr`Ods z6Z>w-g~`(mBUs=j2ph8J-iQpqkpLL?7>1@Anrr_FCudwxu4h%2rN)G}Uh4;d7(iIJ z^2`Rxe9~ic0aRdp$ofog6<=vJW0Fo50EENTvxkj)V*F=Mg{qH9GA&m4dk!5cmI}*Z zu(#o4pu%Dz9u0&wkz&yYKA)HOMLj8(!>|wtgmnX&6>7nE&g*}@7pfN`QA?hcXxJWo zW2{%8LaWpYclLL0Gd}0KL4Gld*>@p-^3+iN8~4GdWOcUFAhsNcZ0L$)uge8%>7mE2 zsS^A8oh#@*1_3SJJ`qDzWpu#jYPVs+E9Mx(N2FunpQ6IxU8ZQ`#ze|mTY|lCGe5+9 z7&U#;-Y^(~G`4X221|W&9XwTN%ONzVe5BdP|O%SqW) zMeNywzRzE-VRcoW5}87ZcW9=)ygs{>9UVaIfUd9p8@Tf)h@fgg8e=bb`5?Yce0%uG zCbdC3CJ4;~d9rl3DCds`hSipYZc?Pz$i!FW@jmo?s4u~w1?t_fnV&$WE}`17Ts_=v zV1h0tpAitm16fEn1|Az*>aL^-^BsbdV{ z$BW61ii-fAIp>eM3W;Q-sq7xAc%Jq3#&_I0bys6Dq%i<=rQt}4rW#Tn>5HAFMeMZ+ zNzC{gu?Qpt#6_SsMWZGj20yE(?|b*SV|VKMoy%cnXDMX%s6GS?9T-XD+ssFxetu_hSE z-x8Gycj-uT5%b1knFkrCqMV~`U_G+4Fb+zSL{xQ5A!>xu^>H zMn+*Y?U5lY=XeB=0w+0nf++H}y`b4KxyRJ1pN9oZAV*&FT99^02sI4Z#^W)e{YzVV zPSM9YiSHk7W7UX8TYuyJvf`h8pkv#N_=2TWLW~lUL+rgjH4)L7}|Ig-cHTy|c5S(T9-W@Q^W)dStDOnDUMs1y$ehL0 zAx=!BeXU@lcB+P@JBSurCyyqrcX5ZW%>`H0BQ;pK1x z;cm5prXyKIlME?(?(Z67uO{|jJ|g!mRpkEw34!)8W%9hYQ=v___!BYcbY!MFxz(}m ziT(Ut;El`~#S>Phf&sym`!!vn24S9On8LBfa0%2aIv?;13`xS?Xs~X zWu@r^;B!BrT9z)$g;mhY1XPiU*=bQ(SJK-V*{Ewh#I|iuW4d-(6(_v@U7Pz#J0N}@ zY)Yug%Znqh^@AAZim*^Ytoe(YwMlDG}TP$bk72>xFisZ=Ll159*mPWc^sNSeKYt^lUH*x8*+2ZB;%&(rg=lZAAx?6v{l3dPf2VFF}^0 zb|YRJE&lyw5k&dkO{{_-+Cg!Gpb;!JTcFahvuPXww4D+#MD|GgN}VP?T{(yXM4rR3 zO}YYbwfX^h4>Mlido-sP!s*-C?S-tX!}m!6Wk)b@Z*}K^PWPzflJ1neVB9A-l=tkT+LLT(F^C!zj} z*rvqktIa#@Je|mnzP$pO)!y_9(!6BQ*h&9P=ZB6a|Fpz<9*3rhncKSleFF^ErV6f{ zmNiKePavBjP-uh;gXh(_Zx@!x^TpUEBoqhW;lBs~5oPwvkIkhL&^Z9+<;*`YWkMin zyhL!T^mmdI@5rpMYyg#WKlPE>C*e-oa(~VksBKSxrT=uW4=0$BcXc!GYaJMSwFkqt zP`Dc5JfB61GOOOXV<4GK!}%x=eIzzvNq?3f;)dRPlS)Pv4)G+`H8IKCPYG!ki?S{ObV;Ny))wSK<^IT9?20BHhL zOMkIJOriC`S>+VC!W8tgWQxmKlCkFylJb9Y@d7LZEt8EghSnx^11(;gBn$c$rOQ)A z>Z#?CX4A^A30lMX__+G0px%;dHbWjqE&lkqKA1Q6rcjZHy>Ty?bYyO`#%p5|pR#Ui z@zcjS@lCcl(KxhnEP{P%9z!X>e<1=SJVwHIK<0N*PR^6?b6~$&d2q#FG+qjdk+=ja zGH?G1a@7OD|7)&&=lDMoWtRW^xzc*fw6(U&dYs8GWk*eSD7YEHPM*D>R*~S%+U<9h zjqvo9S50FGv`VoG(5V3c0mePLy%@}wpJmSJ)sSDWrTL-(e+#~_f*EeBF zNh@p8``P*txP^bRfue&tP6bT)rArQJ3n~_Nr?G^xctV`FxnY!#Qht{L=Yr~*s#uE% zQ)va7`}v4`1FpEDn3jk;6VgnXU8Zi}LOOmmZ35wdv`W~l^6ix{?)$IJR3%$#?c2YK+sPv`iWmXxjacPn;2#1576aPBMGn6;T6sr&P6AY zE}vaHi}Y%i6lT*&BAIOdIspvjj)^2akqOMSlWXe~9$1pbqg}zTI6;dRu-{UF(ml2N z_$hWBBgq{C>yHIyf1!x^G*;C;|WfRmHoY4K({uC`9jmNs12C2}X91_`%w(W`nu zHFrmMW;E+LFKrH|venA?9X#7cG3c9x)f%gByf20#p6%ST%cZ})HN(8IYvJOqd~ikp zV0_ibS+K%KhL(qbf}FxJzu9p<-U>E0H^>dZmXtGEQ8&5E)BTzxwOpuzfPW2+Hfc(< zGJjIas^TpbZwx*cHgu+AS-XA(vN(tdq8pZ|GcnA5n?$|uLX<@c1TLv{}BUv%X<7xT2o^_eE2NCr(d z?lJ@%Qe`X6rIKvfCLTeoR?xT_t!h(UFD9ApkpT&iMECrrZ(k#jtF(}+EdtGD)NwSm z(95;@JwkHxkK-^yQqmn}D^gp{s^93+&^ zD9~8 zf!Z7DRY^|V>+&DL0bBpX*?160OK6U>FX%|k|0`Fsy^JaX66i#*FRUmh4FU?KX01lu z2hU3g&Ioyo=KRM7h*Jd+=h~WUGqA}SLpTICrxBk^TIBh?=9#v=U+C9Bbf}j`%Thl zGeMH!BHy#ccJ4_!fU(#Y;B_(qdx6b5VxJ*DclN`Hn7Cvs`p>?@r3qLVKT78*zUraL zcYT?9`pTS$pc@iIpBmtd>2cKx^fEk0cbmG&e-1;X$Ssf50}{+AX%J*^}LYnWUK{L=M2`^${Ozv9Qfo3HG^8uc)MGoFAi5jJZyUSr2efAhrKS@oEOM~bi)lBH) z8f|u1=UFbP`jUFLBP=wcvpardVsYJEN^GS3UEuFPB}~(57OzDyUKgybYyPjT!Ys5Jh2Tb6}J8Zn4mi59@;1uPN$#$4!K9|lMwd==ixwk z0H+JKf*A~GRwizBRg_yxtrJbfz40>8D8PXtNb?Ex2nI~#{l>|#z8(9Y@Eak7r1xY- zS@?AaDXM>Ex4l!|&nSDr`1V@}xW$2X&rZE{f#p^nu_xzpu|{O0oB)p&0e?VoG41%M zR!9s_7{v;EjjW&V=g#gJuX=N_8NTj@qJD9e-4n592g@k)R$`jx=XYQ|<9*w_G>VmW zvR;8^=}L=n1KwIqB9_tfo&8z%nqfk-=wNChW|=yaA1Xx{s^I8%qH)sc+kE+E<&Lzu zehE-ags3)(yK!~I_?%Q-gPpGjBy@0_0bBnZXC%jEP z4FP#ZV*;3em5zo79j+LV!?NGio|)C)M=Xa}2)Rc&*Ypi34f=a0wSnBv;e3LI@U+wC z#fjSl$EH@{#Cl706^mV|e%5+=vck=yn()37T_5+h_UIyaP=V4B4}9WSLBl*#0Sjb% zf#HVoOsIWqQV#Klsf~+|-1?sJQ>j@|)Jps^SEiQR>f9^FsjoAe!V6AA0TL+RHrElt zG@Uj%mWsyQhFi-P0TYH1?oeIP&ZmkI;bq%XjRv6)I+|=8%u+)Ry$=EE%USU0Vi(~> zL6VJ@!|*{Tglj`HbmM8cfdt#~Hp}Yk02m2$SP363AT?n$5l@YqbEl)V_LPcjq~+Jj z-6j=mH63+H6ywF3usvlJ4AJGo;I1YJ?1hW#mgJ@zm1u>ljZPNie!?V7->N&gu@w-) z;J4W8BCa~HzpZ#csFhV_3C|~F+1>c030w_~KjafGjNK0@eHGraUB&j#AGhh%s^6le z9el?XJ08lh?US307>77nn}!}xY1jI*9+OU2;Dc}E!RsVZY7N9yk7Q?}RFGqKR$Mek zO8%}sl0(3nBO&$UC`DgjfBe;h=oQ6)E5{=m!c1E5lM^)^@t~115f~z?p~0-*ln4U+ zxcK-!h2n%rUzR}B4EYfDe#^OMd0f;ND9*GK9LM6ZLi|8&%#a9t;+>YoH{odrvk=25 z+0v*U5swD7cGn9kp_`t@bFky zcx(j6a)dmcNvDjXpa8y0y}ZQtZk0N^{fQ1b*1*DH(L`%iY%>0JIy(XV67e};M>UQc zr(j1|`*38oKsIwK-LDP1?^WphAPK(eObt%wtkHZZ=qgY%rL z&jWYMWL7^MO7sKXtYG2;$zL;NEny)RBpE0v9C!MW=S+Sr3U=%IW=|=dCq2Y8E{Op! zl5HUTQ%&I;8`r;DQz)!G)IM{C>SZbY#gYc;-gV)JydTzq&yC;1e*E)jrwX7FN3G&y zqZlP=$~l5B<+$lJJw|1a@4pVmJuaK8x3esl+>R?#LRR!>iCM&p)g);E9JUoshZyh? z3V+3%Jn{hQxPKR9hqTq}91hkf#-K2K)icjnVsh!eZZ~ICB|$wN*TSBK0(hj3r-g%B zAnhacp4>pwR6|$4{#$c#BCKX8iPoRC$0gh-sFhDb(K1_*|ET#6GUV(Sw))Cy*0_J% zp5#hFKg8wj;<3S~^P)(n{oE`Wt?;`q*k81`opB_S7NloZHoLd*jD>je3&|~tFA+)CbVuYdN+eNL zO1u()I%3ajMSb5b%UEm0+7+u?A>6NJYFoj()2V-I9ZWy`6K$(!q^+K|k4{d}&Ow)I z?Szxar<-yy3bbB?Ax4FAlR&fm&m*CoeUZ_T%A%AhSf`n7mZ;gXB)fZTw(+V8#s{hO zD$oH>-503=Y?CvWq2D9LuwrSF)tmY8E#FjMj4qf951`c#CpS0*%Y^PVK+IAs(-8migm8ohV(e0w69D%v3I*8ZRQ?5cCCl8l&HkUPQgEV% zw!@K5Fin$ZKzcALB8YJN92R}sQv$l$J~U4q7T0k^+BD$+V6KWxP4TG>F0t#$RhaE; zsci4=V~yH|ecg0%Nn{IF$fuC=OBy{NPFmpt85Q#E<@UVsT@RLOT9&D}anz_XFDKzL z*z&P^uqR?+fHhaScbAzyd%Jc5q!BL*fh~XEDmDsg)0&1=6A?BvQlx@b*S- zy-Ma6rREC7kU{1z_G-OGN2gMTjCj3>IIcT$rceVYRE%8x4Z8uk3bU^%c+$hAF;pB7 zU=h;-K@<5SqvV-x(s^kJL=m>~(^Rs|NjqRda2j_ibwsC;+!fL~7daMFEd**@K2Ok; z@8%RXB-B_m1iutn(>v*o&-{p@F+7x;KDoXGOcU$vQ%WkH!FTc+YHOgo_KJZp`||W= zoaf6efFrWG9kUZi^}ryJcdIXY8Q&ueeE0%xTVX(NKcrZCKBMQyw_R`gNv$ z(4971RNV`vVP7~DS|x`REU}b{SAh+Uu)a^IoSujtFa??hrLcT z`hB#lD&J@o5g7adon?od)@G26hJ1!&iKD-0*ZCp=9j(7iV!Y?@>)R*IZ8DwT;U$OJ z7fUeL(K3d6dDd$HMR`9;S^9+4Afsn7m7=^y&QG`xR-7Y4C5jt-FMR-I@sd=a_ZaKEUrd4hr&b1RBSec<<6Xa&gb(NbWrreoo5gs_ydb;w>qpKJ2>xGe*q!44 zw0orgY4^~ivHZbk9{KeN7}fi(xmx+2MiORQg0Hcok(|xD*sKYRdkn^<@(VcHPFeM6 z#yQ3*G{BQh@*>{|F7yi3;rTTArDT@0QmH<1hYHfCYCNeLRkIkomy8t?LJ=d2tqu2w zJ`Y{?l9ih|!)LUM(gHj}ETD*$3*4e=$9zsU=ezrjdZ*T@>>_PmrOwk1G!^YQF$^?S zrMD`>z-1wedd@koDyzE0K`3UAs1uU-C$yuNN-~YSaTnLlt>jO3bfsLSSYhy3iZ-#2U|70G2?{I{0=r|3C_}@iP&~sv zl>-$6veTxacYHJSpN3Nk5(EcM7*2e-Hh-E7Vr}Y3xJYHAY73V`{y7!O63xjzG)C@w zBsflxf@h(pVVpb3Fszn7MEZABLkNuubdSVkt&Ft4eo%qeL*$sIFUTqogVmgKt6X|| zl0W-yr1n=p7(%)@i@Jw-Kc$W+k&dJ)auJaX;C!&qtyZfC zgfi}(a-%&reUNS<_rR2Sg3N1EfPV5PX(=h-*>PRym9lQEtFNN8E4I!;G;Ib*mtXbf z;lH&!a+PN?E;5Y2SGAxe!@T0qv0NaZfCehpz63>LC4msczmtOgq&vgk4(|U=3MhVm zomM9`z16B@ByRdidsQ{rsrrd>2bQ!gyA#Q7a_O&JH9M|0d<*6lcoAbuZuBw&!4fnZWLx@ zteJo(3~d|t1OkwIqt1SaKs|4>9J;FQH|kV#AHT;jVhDNO=kzhZ&J!uabx?z*Nl&pL z3XM*Shlifoyaq=f%~cfbL@??q$VtnVpEGJ=kIZccE0de#u7`mSl&U%V5dD)lc0qjt zwN2{Jw+O@(0G&6E`N$&D-1`MA*kZK9jLn$t&E4L4P>%r&DR@TRD+@rxk>k5@+ytIf zD6&i5f!J!toZ#dWD_S8q?2pjhX9Gw3Z8-+y;?=x%AVIC5h}%67)6N>f`*TXu5BY2I z@L*DLb@y9VydB#6)F(?b?QbLT%au&+Ffz5$@>`Xg$D?iY&Y?1`7_J&M!l>C0$l z>9`LCf511DGgn=ybJfOFA}!i`Jgt#OBwIPUE&ha2b2@T`V2{HuCL97+RnVt-<{ehd zU&ncU7SJe`mY;SLrR0=4bPZ1nfAjEKOippu3$id5VWif9!LfxqYI*gEuFnwW)*j1T ze7d{sPZ?eYlCLWzJ2towZ!z=XX{Ik9f2Nf?N$4hNG zHv#PWkr)>MJhKlg{{lUwDBcCNeLvqZ5&GbK>MHB`=yIkQxA$<7434+8#Vl4yq)Lo9 zZ@1yT(>3uYA!e3vQ@N_*0yF}#jiF?lhfs{C-&u;J5Q7>nS#PZ}y2|Z9QyMf@Co@Z` zsM+;==gE2+UwW|<^SBu{>B$8FDmPJglBb-`pkYxOtXoaLA<&khi77k&Ik|3u@&O?P__FT?ooWRYpCps7TOOpLWF5*_8!^>QOxU&n6qlAkr6`gdN= z7zGXN!J*$>NlAx9#M<`h@-5bZLgDC9^xfm%G5O#TlZgi;EYtIqB08SpR9@y=aBs#00xdC}O9I7%wiwmUuer4>lz6M97mVLn=D&*e%H=HH< zsXTyzxa>%;0T@XBOZ0~282MJyfUKblx?Mw1@Mfq0?tm8;Wzsk(Y_kjWNT7#^c$ zfIok<;9I&=?(~Byhre^q%7C~4=Fvtu2pS3`Vu7IyN!zCZFN1`<&ye=sQZk^SLQwze zdj2v>66^=J+FKRvWDoV&2z{%noNS(O(A9^_uZafTemcnVbvQ)GN) zldanJp&v1uZbMifXu{PEJk|;%Uwv=%el9Q-I+?+Knwm_|k=^%tKSYL-)>m5vB&XjS zTCsL)fvw+qJ}oJ_Q1U2m=G_;DtI!FuA9qEbh~K0F_;6}~Cj@$_JY%AU7t=Iosh@dC zrRzzTsKrEv;kHzq@p7|lwjJ{hN?A7KT(i?9n*rgJ!ock2b#vZ4#iH#9ro<${kZx!j zZUqvTkZrS!KN2K-k!Ahuj%#hl(>RJSokw;TB_Db^q_>`fg1D<%2HYVEYrhTB)B1;; z@^Z$t1@M)$D&5vue;j2w>HOy(*_u{M{R0Zc z5_a=(~6DC;WmB)g+dJW%J9p%+UX zeeqW&V}K8pSnoAR-G0aWb)j(a=mOG^bOF6n>n5Yk7LVQ%e*s1>6F}rJYJN_ax+abs zRGZQuZ7PkD=`*B3kq}rQ#DAHl|GUJ2_;iG=cvdMCOzD5-{9i z=tv)ZBmFfI#O=M>wyoLilVp10aef-JH}N%ElpC56$J@0cQJ+?16;dmrb;&ue@6NsX zS7_;-Npc+tokU@5PMMoe)%x95Jsn20B&X1lvLbGQ%jJ99HU)X6Yy_y*6zPmWAQ|Cb zWEcd5&gSa=SJZ(O1W7XcG`U=|)X0pCi=Nt=+h8Bk#XfWmAmPX#a{_BFYx9hM{GvG$)BFZ zD1O`hFP$2~(Yt%dK=wA|&$f7OWc}~gWmydG& zzPWB~QK>k%iu@%nIqrUt`gsqe%mbB+xxJ^emReP_+pLsO4Wz4qZkn?0K#YsgDctnZ zw&n#Hp~t@H!>5f!u1g$9$ug;ItU_p?ry(yC!+>0PJV2XjN{9;Q)jOmfA8BAO>2dTc z;NPWTT_D7N3AK0sIcb7&fR^q5oh$?V?_Yuc6baBR>kf4VH898ca6enO{rz0Gr!mu( z$T z2k+lM3R3P4%z9Rg_H$rJ_r$~^r)0Otz;uy|%$$e~CFT}2;BbVmlinyME7_XY2r$lg z?2auK`(jJ%MQ0HrMX+C7SBF(QzQc}-awcV(BraKtfh-It z_uVrFe5Zo|@CLRh&%q(2B=%S~V!Nc$<(MlaZgD&-mBSr^{H@s9?97;3qYKm~;$tt+ zM2CZciNZ<@L}pTl2&FD*Bn^+No;XgjUqS@4RhH7NOW-JY{5<+;q5SBJ6LbA0Xa!qM zBO>MiHmfE<`>Ha4rzM+UJk5(sZO!~V1|xhe5ufsD+XIVcukh;;N*}_pR8i`-R?Gb*-%!;gsWJuN9px^m=S-dCGp)fmRhlF)*S?07_x5(C5tC#trJK;~=y zxzUS#hylQgz7l?3Y!N8sVyDCK!sOu;N9-S^x&pCy$3FVN{Qn?>q#9V$PvHTvwLz8Z z`eD~csjMOL=hw`h^JrdReJm?&JQi86W6G@aT4urUp%P6zE$QY=_ZOd5a_l z)by5WLtJg)oVgmp9niYjGD~l0q&MsvRS7xcgK^&f?%qg@BZ+c2#rEaZsmSeFRgot} z>tQ<1+9=1G#*3ez;PAN7%Z}yKm}k(b&Vs-c@F9efq)bP$M;T8j)6tluhaI(IztVL& zHu8`OG^mNKMHRCuQ801QiM7;7Jxp{Y>j2~X46I z$e9olFiLhgCvG*VLBzGJxwZuXl;^$L7&b;r68zywt8z20viE?4XW+VDxzr0UoZpul zfM#OKvB5FQcR#)XYF%~!CIHwaMBS(thE;P10r$u@w`%Zpu?$Sbs6%E4S@GL16ov&9 z+W7qjNiT2wM&Uc;Kbz;!->xlgO}(4)ZFo=hl{UQXmU!v#wWuzz{_3!)M4~t2e~~=T zpEfegpori52}23cy$+$q-K^qU?V?O7;|{2utmviRi`#H>qddjf*hAL{ z$3v%<4$~2pV(^dd-UOMZNxQRTO-a$1HC_1KT`de=*DM(~AVf#gs?KjZ31Vl>Z};V= zFQV&Z>1zj$6prcgnD*?KumcME!nVSY{Co*(kZL>`DIhHf@XK<4x!Evk<4-*r5n!Wrhh3Cdc10=9!SpH285hrwc~;O?g?(B z8jZxTBlKbx-GT7C7atoXjzDakIUMsMfR?fCB5zstj6T>CVGicw`MHPFY(daOBii#u zRD$`#Rn^(anap)XoVaHNmNM=m6^*FyVY+1kZKNlPDCTuq6R}P8S*arIlVyxk&;%ol zDqQaDS%Z>=gHW>nY{kV*!kyMcMS+c$kdaP|ybI6sVuaz2lp&{HzH~lM%?4vX7w{nUrNugE;L@=dBd^1E1hQp-S^jvdL)a5hi1I&SPLB*;Mr{wB7LAN-Pf%kIw&) z(;9&rUUB#nB1Et{*iKHvq|nBp#Dr!op~%I`-8xPgfXwT1EO+eB==hhJ9Zq-%$&EcE z(e+CmLZq>x9$SYBWaZ+Yu7qq{M#B}~ zj6B*-+&Ni;$=^R;Fxn*|9a-J&-jpC&VT~KfbrzrHi8qzkiHmPv0h+; z^}}4fn|WWlKE{mJ!~7Wv&XPPBKWhv(A9LczI9)jJ2KMF-GERr+2Gf%DMf@I6B={T% z@n2H?{{s5{e|5)i9@8l&L(!XF2wt>~op|cN2P)HfN36y-Iok5Gw8r)OzWawMMq2DQ znu`qjhfy~1vO`w4ez{T>3^7;M4E#$tm9B?L75L85A$cR(ke1DL96}~MG1=BA%Hx2k zfztuP(>LyrbP>HP|EQ#=6)emQ+O~H*!3c2%-e!Ft4vUaKGwlgN+o(gRi(~aI;)D~~ zb`L$#J-MAh6(3L$fg{EQ9Y{NVf@M;j*fB4JcXQGGbv>;c}Y=eet7YhIw4&?{0<0d{p&o1*hH$t;nm|pWQFx@?_II- zDu^dFmr5@SmM0ghl3X0XZBq%r0YiB7wbwtNausad55Nf1_gGvG2f?D^7H3a}b_|_+ z#CjqH5>WbVH}Z9};SKs`UMw-x4DD>EIL3?}@zc;&50a${T~}p3gOX-+6L5s-(8C9E z8in&-mAI<{&LvSc-vfsO(cL)e7SGpBz3ZyngNl!W3U>B_A*n5BG)P14)@H88EXO3H zHxf)@CipQs;{zX1vuT&UB&>j17z^STbEL5-1_24&raDHsq2U+&BD!E?CXO17MQce9 z5hca3bQK#xzYYdaBvu>6bEA|4^#>k z`iLraZA`}3qxmO{4@(-Zu52H99Wc$3Oib8-q7M2>{&jHPK;3(pyb0B`0K+@Jnm;eS zN13*fA1=g2AS_&UWE3_#J^@`8_b1VMsHErG6urY=*kS^ii-wTyBUrvsi6krpoEjPsk*KqPaWXFy z0yr-Hdi7?ukHgNV6zOs>xh@+MickD7+1DRy9U^obXk{MlC{Enm<56i{`*f3 zlh5m03>m;+9v6U1O)#G4H)W6O2lCMg5MRYUlWC9g$0y0oKdL$s`MD;!UVw*n#kNHN zPB^h;hyesbHK{VJTiUL-=)&e|&hyRoRI;4x_9xJ8GF`G$P@;cnUC%qlmy1QMz91UxOMO%AT7;czI%0=s5Sn$o&A6AgG*13}g|4(CI9TjJ? z^gV;SOMu`OAP|CvAi+Jj1b24}E`tYm4>q{FL-62(y9U=lAjlwjXE%G#-uvzS&bj~B zQ>UJ;>XPp2`n3t~_XFym3~tEU5{ckJHg5io1`;zv(l~Z6h_-& zJ_yy=0bb6Eb0^{%HJ^a<Aof!O@zfTRb_Ef~v#3Jq=Z1Hy=H=-^ zkkpYy)-I#gIF;<79A%60RccX`EO^)@85G2oQB<4%gx3H3`kAVmya6JZ{Tb^UFjl#E z-YK%59q|)-l_M)zgEdV67yjFJu{)0X*kOTbL;6>}t_M#=GZ%RcL5 z&&rftmunNZ&ucFtq0cjh#2JlBtyVxqGvpOk**>}yn3lt4Pu zI-h3_uA0^!Rk?cpe4m3ca0N@4tKZdI>5!oNsGdUS#*>Vo9~`7#`;f9&UL3Q<&y-_V zP&;5yEEZVOKkbJQ*GR#|dVTi{!Vv|@QC}Lkg4P=ojC3*j#1Mr$|JZXc-zGg*hZr0m zlaUZ!F%E6gYefbLTs%6*;mp@|`E=!}q%|T+lseN;zPDWUCmB#EaQ*B@iPFbrHiRSo zm}dNHV9k!N_coYSRdcnnBMz?vagqY5MoRxuSv_pvkP2L~UGa*8CDe((uvCizvD%s* zj+)VOAnTR)^H+iIiMFCrm+4^KZgDQ*XUVD7!tYgI?ahvM#gjeLloILYx6IBo(T=fLp zisIG2#rA^d;+cTu;kY1FslUP$tjvPt;TpeV)PGi5kY{-KVZ8&`1#xt3mxI-ei>XVZ z56hmNcEy<-2Yt=;JpxART17j@>YgG$Z}VF7lZezX>Xxp)+%fp5(gECop&`S*V;)G$ zhP#*CIQL%Ur5(Ct5F^(~A@nU-Q~Tc0XOn5WYy7o4}mNqo?emzVoy2t`tI-5rqN zZz@q*f5}o6VlHInGkj!0Ps4FXLVP=bi17}a`-|ib5N@LdxA0s1Xh*{$TZ=B$;Zm(UDFnT)~LEJp?`{XhS(ay%>z7bCfs? zVfs1W=Jn-^o3%{2$eE1~oX>efb#3W9-jvJ~p{*LVu-=s!cE^SBNBr*^)KvBDW>T4? zI8bqA)dKMIF;oO+M|&G`4(h1^rZ%g*`qk}LEnLI(GJRE{Us<`0xHJO?$jK=ToLQ-N z*sqKjCSgE(UqGl%f7t}AHbZk9{%sP-#+mJQ2BW#g%&r6ykBOawxY_fG=fE>$P}>@- zRBZOcl-+WNb)1{SxdlHt@4k!M#X;J@ZVq?WjL}9tvW+J(#!t)w;;a^7hckVfAtF*F zQg$Kp(CmhWL(t+w=pFD&^mqU;wS<&l*K4p6@%|ozMYk;0THc?}gl)%)7@8{b*|l{O*v!EmI5(qxJ-Zn(?<)|8+n4@A3vT8LGo6t)sJ&95^*2^9kef*kyu%WR^AmR=C2(i>e-os=D0G%evG_2{^_xu`=44j#1uLggx5gA|pH|$iz&W z0$nQ!S29>DxF2QEtZg-98`QM9d9`Gq(!47X48)z!crBBke^Daua++lz@GLyC!y#n& zbsk(R_Ct~7-Ao;Ep97e2d?X-|z?LV-i#Is7?WJ#Jm{A8B;#VZxmA}Yo)2BFW4b5gN`H&}Sr=Ap?yRyobvp^#iT zs2;4m!1@gncb4`A&`(O#Jh$xrM;OAb=bP1H0w-rOw`F;rq#zeQ4KmltS<|Jb^)#lD zj1r(i2#{teYN3k*%@-W8MJ@Tby~u;Q`(E-;4yWK_7SSypfiUSlKi}EjlNMZaGHg7B zlU`4@U`C#y?^u6lTcQ{W2i5NAZeX0U@F+YxlE7D-Kn+|91;aG6E;K3!i3rol#6q$? zdDPCN%HaIS)N*Un^)*}K^!m_8Vd}{YMO8ua(J^fX`xv{STL+oFNFqxQ-%*^SQT%ZV zu6qSrln$U+1fA-l`{(=KHRGsYmT@LtPP6&C`ddfe*)`$lajb?S_rCit`162dcQb}pR`_! zK30H+K+@?_n9S7JY5!7t`EDjt`GK4~%0VJb5Bt7Jm@U#2=;#qWjz~#7zlTU?(n&g= zX&;=b1lJDQ0H?dC@_tI?0oc~AKrDj4LPaU@mtK+kSOqft08*9+xkL=NZhxoB=-2zG zy-lkMu!Q`2c>)PzOZjxfe$rn1?one&hu$+k6uGU-_ zK)JxVbi|XV8>eYBy-7VVX9pdMYG?Yn-L};b7MMtpWnzPd`{_D6px+-duJHQx_?PGF z{MgbIDyOXK+H&v9F39`*p{4gTFG|FPf>1k+UF4qbT3e>$J{vr}@Gi`7#x`pVv=puU z!aE*Mo8>Qx0Bf0k8DKDnfUNg}T2Q37)3HiRu}_=1HE(;odz%C8xiQFHU!4qW1_OSTqllMY>*iBw3@?0DE!ASY&OOo&v(oU380!0mEI zG#SEE}Dmx zKdx(YRW}%BFi_ugeE5mVman6BIg#GpeU*S*ycPk#%NT50E^OnTdjuw*=hF2nn80O7 zk%a+GJ8aBFdo6_%sg0rK_INCutBvI-k+=>{!74{z2WvCwSI+Is%uECGg?fG8kOJ3W z16HwuKabH5xDDY=+y#5N7Pf1X4+W zRqgsa-bFT4-B>@(PAgO=phvl8%?<=o?dF#65DFN}ccxoUePiEp5OV$m@Ll>wK97>M z?^!(6r~k86SX5Um=|MUn>8A8Va`Ygmr~&IS_<=cn7PDmSWx7`=QV9dm8~U>yIlP`I zh$0Rtf^WF4Oy8ReF#Ph~{Sgf#sccndUm zv%_zoL7WE=cs(vd-wq!>f`;br86jsE`m*n4nfDGCexB|^u(usTl;1&>? z$luls2VltmZO-P-GrX`Q*vx)$H9zB9;fL?>w3st^n1k8=2o;8eEm?+OF%A%#&0i)B z%Qny)%l|-{huvKKY19{Aa7_3~$@pl;;Ljc-SvuTtCHyz|}cp+TJu- z?VCL9<3S-T&C%~`)4<*Hs~^)du7Lv>kwo9>!uf4akmSNJ3R8CI8=_k-&QaR$Qf#B{ zl2ceNLOI2gRVO<9XnoRSQvtL2pKFjlKT~-ODMlAm30cTS3Ulvr8vSNd`(f0Skjw*T z&yktl|M;ULZ*$!!d`OQo~X@wic2_o&ak zN^!ryQfYp=+j%kd^10p=A6{Mz&gZSRlE)K@K>Srh5djj_q z(dBHE-b>z)cWei<(ST!sYWWJjX0H z5!WB-5jo%B*dKeH@2Xywp3)eV}rCnpg2D~SYizz`B zqjmo9!G=-#*CWNjjedfIsCyr=M<1;k$!8%UZR^6O2cuJl-eFOXg1sz2o!|kI=L-V3 zR=4Z`CL7#=bG4akOht#OfJe?~>=W)XL;Wp*jP}>&r98vEsi_NZ6ly8CY}d3Ps~Rol zn&G5jgXEv-aw(D3DeXcCKXCWwfcOi@xJG{4j0e(WnUq&x*b$^%qW_VgGJ_eNW@?XAK9`z`nHF)z zD2Vx>krS~1=Yk<6R8zjVqMZ6cP_O`X?CxnIjbKxyMW2Q$b%gvouA8L~b}~+3yf8bz zsa+LhU?l$h2fFvCdkvHx8n2pKQnNJLA1eKN+7d&2}sr`YI*vAAt)5SBau|K)fTxL5? z4}Mx9K1tdKlGtHZzf!JOmsUoc2>^VsHp=afhQ9SL0qfLI)7x%`-90ERw^~1ATHPDE zkMsnX8kx=KRC2!(uX*V-t8BPcALiF>)VTHYr7Z{UAhTTfcWZrB5&YoF8CSVbVW=Uv z?t25!rji_9YR4c%QSMh0hS};#)q76zQ($|?3mlu{l_=vaXsf(qRkaS*f;jKkz5q+Dx5&_Osp3bG|px6*i1eJTvTSPY(oxNel%DCu9NMi~N^g__#`3)>FoJP8-=zQyejf zevmDei~M3PYV2jd&!^fz-qk7hAo`xM>JsB^TkNpo@cXx{TrMQ%t zUKJIu%G_7y7Td!)^c#W1;^cQ~3NSWEmQd=COvI?L9*tPWpmgyXS|Q_zGF+!auvU!c56*NU^JQYc?(5m zT5`SO?IRcUYBc9fk5^4fHe0=(GWJazct@HEl2|)vosF?qZ3PT^y%dDb|F=H= zKOtIFImJf_ELsafH-pjsbpr6O10Pe=T-wuby0&upZZ=bpoD6QrT%AvVvW$GYNNfvI;F-3>mOGOslccdYr>dTioXil!WaBm#7xdF{oH+!ljm6uquKnYs~zXKv|f- zCOx0S#({1aH7#OeN-9E83lBl{vk1;4r+yFw4`P00k{=J?;H$QbUtQ3W)@3wr^7@D2ap_*Q{1>i#J#hS~XO@wvwm zcg(g7)&DE;>i@>M4upvaqlCd|0$^JBSExWWC&x3EJ1z_bSiR5qVNn$M4X3B7No;#V z|5xrG>w)s M;6)%1at?z3KZ%biF8}}l literal 0 HcmV?d00001 diff --git a/protocol-designer/src/assets/images/onboarding_animation_4.webm b/protocol-designer/src/assets/images/onboarding_animation_4.webm new file mode 100644 index 0000000000000000000000000000000000000000..d59f86faf450dd0f39c6e81ed881ff40a54b36a0 GIT binary patch literal 91617 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

-tvYs@3HlR4A#*k^>Viw8<&J`jZ*0&) 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

% zWk;=5`td|dT&?-VfeOoWW&uQwFkgy& zKa$HHlQi`YYgiYo0b!H=HX@hNSFGHMlq)&7c7bpL`WAne~Q)4z@Z#D9rG`Xxy&l#5j;ml1zC93Hq;9OWdUd^vr-K+DA~Ug7@&BkAb^D!k1LGrI6j|Sa14Y) z`Gd?qT5i8|_l%JBvwZ4aAQQ10{8&l-Ck|x$f=xqlqpnkoiaMPeX8|O63UI9kU8J-z z9__VH61g0<@8K+X!A)a4t7Za62S-DR+^dle997$Z(ghVjxW9X}|Ii-hO_s%H5dsI{ zUwRYPb(Ur4!U`7%zfu2c)xMpG!T)h0run5=xSL72Sc?LqMK};jK>!ogD+GJc&>N+U zJDNIps4A@?dL$?IPvAleGfrfIF~;g^*6bpcML6kOCoD6>RtVrw4j!sZwOcVqmeJJ! zpxS{q#U@YLqehm5-t(`wW($WZai^Tl8lxRQtpH{EDHF*g*pnzOHZG+2EzZ{ zGyX?(K>f1nVa@+9RnLcB{^Az)pS3Fj!vEbC{)cw|vVkn@=hv2Bms;Tebb?hrLW!@|{w}^fwjKy* Qj<^GYTn2zlUI4-V4@%@{PXGV_ literal 0 HcmV?d00001 diff --git a/protocol-designer/src/assets/images/placeholder_image_delete.png b/protocol-designer/src/assets/images/placeholder_image_delete.png deleted file mode 100644 index f429a3862dc0c9dd01b5013c30689735e9f20e94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199922 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 Nu;>*Eega_qu;B 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 tp;vlbPWv% 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 diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx index bfac8f51a19..442f6d0e4ed 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx @@ -1,6 +1,6 @@ -import type * as React from 'react' import { useTranslation } from 'react-i18next' -import styled from 'styled-components' +import { css } from 'styled-components' +import { useState, useLayoutEffect } from 'react' import { ALIGN_CENTER, ALIGN_END, @@ -18,7 +18,12 @@ import { TYPOGRAPHY, useHoverTooltip, } from '@opentrons/components' -import temporaryImg from '../../assets/images/placeholder_image_delete.png' +import one from '../../assets/images/onboarding_animation_1.webm' +import two from '../../assets/images/onboarding_animation_2.webm' +import three from '../../assets/images/onboarding_animation_3.webm' +import four from '../../assets/images/onboarding_animation_4.webm' +import five from '../../assets/images/onboarding_animation_5.webm' +import six from '../../assets/images/onboarding_animation_6.webm' import { BUTTON_LINK_STYLE } from '../../atoms' interface WizardBodyProps { @@ -29,9 +34,18 @@ interface WizardBodyProps { disabled?: boolean goBack?: () => void subHeader?: string - imgSrc?: string tooltipOnDisabled?: string } + +const ONBOARDING_ANIMATIONS: Record = { + 1: one, + 2: two, + 3: three, + 4: four, + 5: five, + 6: six, +} + export function WizardBody(props: WizardBodyProps): JSX.Element { const { stepNumber, @@ -41,13 +55,26 @@ export function WizardBody(props: WizardBodyProps): JSX.Element { subHeader, proceed, disabled = false, - imgSrc, tooltipOnDisabled, } = props const { t } = useTranslation('shared') const [targetProps, tooltipProps] = useHoverTooltip({ placement: 'top', }) + const [asset, setAsset] = useState(null) + const [loaded, setLoaded] = useState(false) + + useLayoutEffect(() => { + const videoAsset = ONBOARDING_ANIMATIONS[stepNumber] + setLoaded(false) + setAsset(videoAsset) + const timeout = setTimeout(() => { + setLoaded(true) + }, 100) + return () => { + clearTimeout(timeout) + } + }, [stepNumber]) return ( - - + + ) } - -const StyledImg = styled.img` - border-radius: ${BORDERS.borderRadius16}; - max-height: 844px; -` diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx index 085e2e76efc..f0493707774 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx @@ -37,6 +37,6 @@ describe('WizardBody', () => { expect(props.proceed).toHaveBeenCalled() fireEvent.click(screen.getByRole('button', { name: 'Go back' })) expect(props.goBack).toHaveBeenCalled() - screen.getByRole('img', { name: '' }) + screen.getByLabelText('onboarding animation for page 1') }) }) From 9404144b1a08bb470de8913ddcffbf21f6a413dd Mon Sep 17 00:00:00 2001 From: Jeremy Leon Date: Fri, 22 Nov 2024 09:18:32 -0500 Subject: [PATCH 080/220] test(api): fix or ignore Decoy related warnings in unit tests (#16944) Selectively ignore or otherwise fix all Decoy related warnings in api tests --- api/pytest.ini | 6 + .../protocol_api/test_instrument_context.py | 108 +++++++++++++++--- .../commands/test_verify_tip_presence.py | 12 +- .../unsafe/test_update_position_estimators.py | 5 - .../protocol_engine/test_protocol_engine.py | 3 +- .../protocol_runner/test_protocol_runner.py | 1 + 6 files changed, 105 insertions(+), 30 deletions(-) diff --git a/api/pytest.ini b/api/pytest.ini index a8e3bbb1933..61288b3f3c1 100644 --- a/api/pytest.ini +++ b/api/pytest.ini @@ -5,3 +5,9 @@ markers = ot3_only: Test only functions using the OT3 hardware addopts = --color=yes --strict-markers asyncio_mode = auto + +# TODO this should be looked into being removed upon updating the Decoy library. The purpose of this warning is to +# catch missing attributes, but it raises for any property referenced in a test which accounts for about ~250 warnings +# which aren't serving any useful purpose and obscure other warnings. +filterwarnings = + ignore::decoy.warnings.MissingSpecAttributeWarning diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index 1b8445ed7b2..8282f660a44 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -1501,6 +1501,7 @@ def test_mix_no_lpd( mock_well = decoy.mock(cls=Well) bottom_location = Location(point=Point(1, 2, 3), labware=mock_well) + top_location = Location(point=Point(3, 2, 1), labware=None) input_location = Location(point=Point(2, 2, 2), labware=None) last_location = Location(point=Point(9, 9, 9), labware=None) @@ -1516,6 +1517,7 @@ def test_mix_no_lpd( mock_validation.validate_location(location=None, last_location=last_location) ).then_return(WellTarget(well=mock_well, location=None, in_place=False)) decoy.when(mock_well.bottom(z=1.0)).then_return(bottom_location) + decoy.when(mock_well.top()).then_return(top_location) decoy.when(mock_instrument_core.get_aspirate_flow_rate(1.23)).then_return(5.67) decoy.when(mock_instrument_core.get_dispense_flow_rate(1.23)).then_return(5.67) decoy.when(mock_instrument_core.has_tip()).then_return(True) @@ -1523,19 +1525,63 @@ def test_mix_no_lpd( subject.mix(repetitions=10, volume=10.0, location=input_location, rate=1.23) decoy.verify( - mock_instrument_core.aspirate(), # type: ignore[call-arg] - ignore_extra_args=True, - times=10, - ) - decoy.verify( - mock_instrument_core.dispense(), # type: ignore[call-arg] - ignore_extra_args=True, + mock_instrument_core.aspirate( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + None, + ), times=10, ) + # Slight differences in dispense push-out logic for 2.14 and 2.15 api levels + if subject.api_version < APIVersion(2, 16): + decoy.verify( + mock_instrument_core.dispense( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + None, + None, + ), + times=10, + ) + else: + decoy.verify( + mock_instrument_core.dispense( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + 0.0, + None, + ), + times=9, + ) + decoy.verify( + mock_instrument_core.dispense( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + None, + None, + ), + times=1, + ) + decoy.verify( - mock_instrument_core.liquid_probe_with_recovery(), # type: ignore[call-arg] - ignore_extra_args=True, + mock_instrument_core.liquid_probe_with_recovery(mock_well._core, top_location), times=0, ) @@ -1551,6 +1597,7 @@ def test_mix_with_lpd( """It should aspirate/dispense to a well several times and do 1 lpd.""" mock_well = decoy.mock(cls=Well) bottom_location = Location(point=Point(1, 2, 3), labware=mock_well) + top_location = Location(point=Point(3, 2, 1), labware=None) input_location = Location(point=Point(2, 2, 2), labware=None) last_location = Location(point=Point(9, 9, 9), labware=None) @@ -1566,6 +1613,7 @@ def test_mix_with_lpd( mock_validation.validate_location(location=None, last_location=last_location) ).then_return(WellTarget(well=mock_well, location=None, in_place=False)) decoy.when(mock_well.bottom(z=1.0)).then_return(bottom_location) + decoy.when(mock_well.top()).then_return(top_location) decoy.when(mock_instrument_core.get_aspirate_flow_rate(1.23)).then_return(5.67) decoy.when(mock_instrument_core.get_dispense_flow_rate(1.23)).then_return(5.67) decoy.when(mock_instrument_core.has_tip()).then_return(True) @@ -1577,19 +1625,45 @@ def test_mix_with_lpd( subject.liquid_presence_detection = True subject.mix(repetitions=10, volume=10.0, location=input_location, rate=1.23) decoy.verify( - mock_instrument_core.aspirate(), # type: ignore[call-arg] - ignore_extra_args=True, + mock_instrument_core.aspirate( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + None, + ), times=10, ) decoy.verify( - mock_instrument_core.dispense(), # type: ignore[call-arg] - ignore_extra_args=True, - times=10, + mock_instrument_core.dispense( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + 0.0, + None, + ), + times=9, + ) + decoy.verify( + mock_instrument_core.dispense( + bottom_location, + mock_well._core, + 10.0, + 1.23, + 5.67, + False, + None, + None, + ), + times=1, ) - decoy.verify( - mock_instrument_core.liquid_probe_with_recovery(), # type: ignore[call-arg] - ignore_extra_args=True, + mock_instrument_core.liquid_probe_with_recovery(mock_well._core, top_location), times=1, ) diff --git a/api/tests/opentrons/protocol_engine/commands/test_verify_tip_presence.py b/api/tests/opentrons/protocol_engine/commands/test_verify_tip_presence.py index 53eb1f5a59e..ef6d79629be 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_verify_tip_presence.py +++ b/api/tests/opentrons/protocol_engine/commands/test_verify_tip_presence.py @@ -23,13 +23,13 @@ async def test_verify_tip_presence_implementation( expectedState=TipPresenceStatus.PRESENT, ) - decoy.when( + result = await subject.execute(data) + + assert result == SuccessData(public=VerifyTipPresenceResult()) + decoy.verify( await tip_handler.verify_tip_presence( pipette_id="pipette-id", expected=TipPresenceStatus.PRESENT, + follow_singular_sensor=None, ) - ).then_return(None) - - result = await subject.execute(data) - - assert result == SuccessData(public=VerifyTipPresenceResult()) + ) diff --git a/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py b/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py index 79131994299..da381635ce3 100644 --- a/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py +++ b/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py @@ -37,11 +37,6 @@ async def test_update_position_estimators_implementation( decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.Y)).then_return( Axis.Y ) - decoy.when( - await ot3_hardware_api.update_axis_position_estimations( - [Axis.Z_L, Axis.P_L, Axis.X, Axis.Y] - ) - ).then_return(None) result = await subject.execute(data) diff --git a/api/tests/opentrons/protocol_engine/test_protocol_engine.py b/api/tests/opentrons/protocol_engine/test_protocol_engine.py index bc581114ab2..d7e4b32e02a 100644 --- a/api/tests/opentrons/protocol_engine/test_protocol_engine.py +++ b/api/tests/opentrons/protocol_engine/test_protocol_engine.py @@ -997,8 +997,7 @@ async def test_estop_noops_if_invalid( subject.estop() # Should not raise. decoy.verify( - action_dispatcher.dispatch(), # type: ignore - ignore_extra_args=True, + action_dispatcher.dispatch(expected_action), times=0, ) decoy.verify( diff --git a/api/tests/opentrons/protocol_runner/test_protocol_runner.py b/api/tests/opentrons/protocol_runner/test_protocol_runner.py index 2f06e27c2c2..15e0192175e 100644 --- a/api/tests/opentrons/protocol_runner/test_protocol_runner.py +++ b/api/tests/opentrons/protocol_runner/test_protocol_runner.py @@ -448,6 +448,7 @@ async def test_run_json_runner_stop_requested_stops_enqueuing( await run_func() +@pytest.mark.filterwarnings("ignore::decoy.warnings.RedundantVerifyWarning") @pytest.mark.parametrize( "schema_version, json_protocol", [ From 46d19118ef5fe7dfdcdbc568240d3274f2ba1996 Mon Sep 17 00:00:00 2001 From: syao1226 <146495172+syao1226@users.noreply.github.com> Date: Fri, 22 Nov 2024 10:35:26 -0500 Subject: [PATCH 081/220] fix(protocol-designer): fix copy of incompatible file type modal and update settings page to match design (#16937) fix RQA-3656, RQA-3650 # Overview 1. updated copy of incompatible file type modal to match with design 2. updated `Settings` to match with design ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --------- Co-authored-by: shiyaochen Co-authored-by: shiyaochen --- protocol-designer/cypress/support/commands.ts | 4 ++-- .../assets/localization/en/feature_flags.json | 4 ++-- .../src/assets/localization/en/shared.json | 18 ++++++++-------- .../_tests__/LabwareUploadModal.test.tsx | 8 ++++--- .../Settings/__tests__/Settings.test.tsx | 21 ++++++++----------- .../src/pages/Settings/index.tsx | 11 +++++----- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/protocol-designer/cypress/support/commands.ts b/protocol-designer/cypress/support/commands.ts index b97c11f2bd2..3f9ffd8ddd8 100644 --- a/protocol-designer/cypress/support/commands.ts +++ b/protocol-designer/cypress/support/commands.ts @@ -45,9 +45,9 @@ export const content = { charSet: 'UTF-8', header: 'Protocol Designer', welcome: 'Welcome to Protocol Designer!', - appSettings: 'App settings', + appSettings: 'App Info', privacy: 'Privacy', - shareSessions: 'Share sessions with Opentrons', + shareSessions: 'Share analytics with Opentrons', } export const locators = { diff --git a/protocol-designer/src/assets/localization/en/feature_flags.json b/protocol-designer/src/assets/localization/en/feature_flags.json index 74c524de0e0..c39e10a8785 100644 --- a/protocol-designer/src/assets/localization/en/feature_flags.json +++ b/protocol-designer/src/assets/localization/en/feature_flags.json @@ -25,7 +25,7 @@ "description": "You can choose which tip to pick up and where to drop tip." }, "OT_PD_ENABLE_HOT_KEYS_DISPLAY": { - "title": "Timeline editing tips", - "description": "Show tips for working with steps next to the protocol timeline" + "title": "Timeline editing guidance", + "description": "Show information about working with steps next to the protocol timeline" } } diff --git a/protocol-designer/src/assets/localization/en/shared.json b/protocol-designer/src/assets/localization/en/shared.json index 3a6545622a5..58579da36ff 100644 --- a/protocol-designer/src/assets/localization/en/shared.json +++ b/protocol-designer/src/assets/localization/en/shared.json @@ -3,7 +3,7 @@ "agree": "Agree", "amount": "Amount:", "analytics_tracking": "I consent to analytics tracking:", - "app_settings": "App settings", + "app_info": "App Info", "ask_for_labware_overwrite": "Duplicate labware name", "back": "Back", "cancel": "Cancel", @@ -17,7 +17,7 @@ "create_a_protocol": "Create a protocol", "create_new": "Create new", "destination_well": "Destination Well", - "developer_ff": "Developer feature flags", + "developer_ff": "Developer Feature Flags", "done": "Done", "edit_existing": "Edit existing protocol", "edit_instruments": "Edit Instruments", @@ -84,7 +84,7 @@ }, "message_exact_labware_match": "This labware is identical to one you have already uploaded.", "message_invalid_json_file": "Protocol Designer only accepts custom JSON labware definitions made with our Labware Creator", - "message_not_json": "Protocol Designer only accepts JSON files.", + "message_not_json": "Protocol Designer only accepts custom JSON labware definitions made with our Labware Creator. Upload a valid file to continue.", "message_only_tiprack": "This labware definition is not a tip rack.", "message_uses_standard_namespace": "This labware definition uses the Opentrons standard labware namespace. Change the namespace if it is custom, or use the standard labware in your protocol.", "mismatched": "The new labware has a different arrangement of wells than the labware it is replacing. Clicking Overwrite will deselect all wells in any existing steps that use this labware. You will have to edit each of those steps and select new wells.", @@ -96,7 +96,7 @@ "no-code-required": "The easiest way to automate liquid handling on your Opentrons robot. No code required.", "no": "No", "none": "None", - "not_json": "Incompatible file type", + "not_json": "Invalid file type", "one_channel": "1-Channel", "only_tiprack": "Incompatible file type", "opentrons_flex": "Opentrons Flex", @@ -116,8 +116,8 @@ "release_notes": "Release notes", "reload_app": "Reload app", "remove": "remove", - "reset_hints_and_tips": "Reset all hints and tips notifications", - "reset_hints": "Reset hints", + "show_hints_and_tips": "Show all hints and tips notifications again", + "reset": "Reset", "reset_to_default": "Reset to default", "resize_your_browser": "Resize your browser to at least 768px wide and 650px tall to continue editing your protocol", "review_our_privacy_policy": "You can adjust this setting at any time by clicking on the settings icon. Find detailed information in our privacy policy.", @@ -127,7 +127,7 @@ "settings": "Settings", "shared_display_name": "Shared display name: ", "shared_load_name": "Shared load name: ", - "shared_sessions": "Share sessions with Opentrons", + "shared_analytics": "Share analytics with Opentrons", "shares_name": "This labware has the same load name or display name as {{customOrStandard}}, which is already in this protocol.", "slot_detail": "Slot Detail", "software_manual": "Software manual", @@ -147,14 +147,14 @@ "tip_position": "Edit {{prefix}} tip position", "trashBin": "Trash Bin", "updated_protocol_designer": "We've updated Protocol Designer!", - "user_settings": "User settings", + "user_settings": "User Settings", "uses_standard_namespace": "Opentrons verified labware", "version": "Version {{version}}", "view_release_notes": "View release notes", "warning": "WARNING:", "wasteChute": "Waste chute", "wasteChuteAndStagingArea": "Waste chute and staging area slot", - "we_are_improving": "In order to improve our products, Opentrons would like to collect data related to your use of Protocol Designer. With your consent, Opentrons will collect and store analytics and session data, including through the use of cookies and similar technologies, solely for the purpose enhancing our products. Find detailed information in our privacy policy. By using Protocol Designer, you consent to the Opentrons EULA.", + "we_are_improving": "Help Opentrons improve its products and services by automatically sending anonymous diagnostics and usage data.", "welcome": "Welcome to Protocol Designer!", "yes": "Yes", "your_screen_is_too_small": "Your browser size is too small" diff --git a/protocol-designer/src/organisms/LabwareUploadModal/_tests__/LabwareUploadModal.test.tsx b/protocol-designer/src/organisms/LabwareUploadModal/_tests__/LabwareUploadModal.test.tsx index 0a7aba37a2f..4d3277453b6 100644 --- a/protocol-designer/src/organisms/LabwareUploadModal/_tests__/LabwareUploadModal.test.tsx +++ b/protocol-designer/src/organisms/LabwareUploadModal/_tests__/LabwareUploadModal.test.tsx @@ -24,10 +24,12 @@ describe('LabwareUploadModal', () => { it('renders modal for not json', () => { render() - screen.getByText('Protocol Designer only accepts JSON files.') - screen.getByText('Incompatible file type') + screen.getByText( + 'Protocol Designer only accepts custom JSON labware definitions made with our Labware Creator. Upload a valid file to continue.' + ) + screen.getByText('Invalid file type') fireEvent.click( - screen.getByTestId('ModalHeader_icon_close_Incompatible file type') + screen.getByTestId('ModalHeader_icon_close_Invalid file type') ) expect(vi.mocked(dismissLabwareUploadMessage)).toHaveBeenCalled() }) diff --git a/protocol-designer/src/pages/Settings/__tests__/Settings.test.tsx b/protocol-designer/src/pages/Settings/__tests__/Settings.test.tsx index 76846c4c830..8a1b948e953 100644 --- a/protocol-designer/src/pages/Settings/__tests__/Settings.test.tsx +++ b/protocol-designer/src/pages/Settings/__tests__/Settings.test.tsx @@ -39,24 +39,21 @@ describe('Settings', () => { it('renders the settings page without the dev ffs visible', () => { render() screen.getByText('Settings') - screen.getByText('App settings') + screen.getByText('App Info') screen.getByText('Protocol designer version') screen.getByText('fake_PD_version') screen.getAllByText('Release notes') - screen.getByText('User settings') + screen.getByText('User Settings') screen.getByText('Hints') - screen.getByText('Reset all hints and tips notifications') - screen.getByText('Timeline editing tips') + screen.getByText('Show all hints and tips notifications again') + screen.getByText('Timeline editing guidance') screen.getByText( - 'Show tips for working with steps next to the protocol timeline' + 'Show information about working with steps next to the protocol timeline' ) - screen.getByText('Reset hints') + screen.getByText('Reset') screen.getByText('Privacy') - screen.getByText('Share sessions with Opentrons') + screen.getByText('Share analytics with Opentrons') screen.debug() - screen.getByRole('link', { name: 'privacy policy' }) - screen.getByRole('link', { name: 'EULA' }) - screen.getByRole('link', { name: 'Software manual' }) }) it('renders the announcement modal when view release notes button is clicked', () => { vi.mocked(AnnouncementModal).mockReturnValue( @@ -70,7 +67,7 @@ describe('Settings', () => { }) it('renders the hints button and calls to dismiss them when text is pressed', () => { render() - fireEvent.click(screen.getByText('Reset hints')) + fireEvent.click(screen.getByText('Reset')) expect(vi.mocked(clearAllHintDismissals)).toHaveBeenCalled() }) it('renders the analytics toggle and calls the action when pressed', () => { @@ -85,7 +82,7 @@ describe('Settings', () => { }) render() - screen.getByText('Developer feature flags') + screen.getByText('Developer Feature Flags') screen.getByText('Use prerelease mode') screen.getByText('Show in-progress features for testing & internal use') screen.getByText('Disable module placement restrictions') diff --git a/protocol-designer/src/pages/Settings/index.tsx b/protocol-designer/src/pages/Settings/index.tsx index 32669c3bd60..b678327adb8 100644 --- a/protocol-designer/src/pages/Settings/index.tsx +++ b/protocol-designer/src/pages/Settings/index.tsx @@ -52,6 +52,7 @@ export function Settings(): JSX.Element { : analyticsActions.optIn const prereleaseModeEnabled = flags.PRERELEASE_MODE === true + const pdVersion = process.env.OT_PD_VERSION const allFlags = Object.keys(flags) as FlagTypes[] @@ -126,7 +127,7 @@ export function Settings(): JSX.Element { - {t('shared:app_settings')} + {t('shared:app_info')} - {process.env.OT_PD_VERSION} + {pdVersion} @@ -185,7 +186,7 @@ export function Settings(): JSX.Element { - {t('shared:reset_hints_and_tips')} + {t('shared:show_hints_and_tips')} @@ -202,7 +203,7 @@ export function Settings(): JSX.Element { > {canClearHintDismissals - ? t('shared:reset_hints') + ? t('shared:reset') : t('shared:no_hints_to_restore')} @@ -245,7 +246,7 @@ export function Settings(): JSX.Element { > - {t('shared:shared_sessions')} + {t('shared:shared_analytics')} Date: Fri, 22 Nov 2024 12:29:18 -0500 Subject: [PATCH 082/220] fix(protocol-designer): fix padding on batch edit toolbox (#16953) For both mix and move liquid batch edit toolboxes, fix padding for each field Closes RQA-3679 --- .../src/organisms/EditInstrumentsModal/index.tsx | 4 ++-- .../BatchEditToolbox/BatchEditMixTools.tsx | 14 ++++++++++---- .../BatchEditToolbox/BatchEditMoveLiquidTools.tsx | 12 +++++++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx b/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx index eefcad8f4bd..5aac9eeb3f1 100644 --- a/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx +++ b/protocol-designer/src/organisms/EditInstrumentsModal/index.tsx @@ -89,7 +89,7 @@ export function EditInstrumentsModal( ): JSX.Element { const { onClose } = props const dispatch = useDispatch>() - const { t } = useTranslation([ + const { i18n, t } = useTranslation([ 'create_new_protocol', 'protocol_overview', 'shared', @@ -347,7 +347,7 @@ export function EditInstrumentsModal( desktopStyle="bodyDefaultRegular" color={COLORS.grey60} > - {t('gripper')} + {i18n.format(t('gripper'), 'capitalize')} - + + - + @@ -159,6 +164,7 @@ export function BatchEditMixTools(props: BatchEditMixToolsProps): JSX.Element { options={getBlowoutLocationOptionsForForm({ stepType: 'mix', })} + padding="0" /> ) : null} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx index b032bab56b3..f459d059703 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx @@ -73,12 +73,16 @@ export function BatchEditMoveLiquidTools( } return ( - + - + @@ -227,6 +231,7 @@ export function BatchEditMoveLiquidTools( path: propsForFields.path.value as any, stepType: 'moveLiquid', })} + padding="0" /> Date: Fri, 22 Nov 2024 13:14:30 -0500 Subject: [PATCH 083/220] refactor(app): do not show progress indication during drop tip wizard (#16954) Closes RQA-3643 Because drop tip flows is no longer deterministic, we shouldn't show the progress bar and step counter. --- .../DropTipWizardHeader.tsx | 66 +------------------ .../__tests__/DropTipWizardHeader.test.tsx | 20 +----- 2 files changed, 2 insertions(+), 84 deletions(-) diff --git a/app/src/organisms/DropTipWizardFlows/DropTipWizardHeader.tsx b/app/src/organisms/DropTipWizardFlows/DropTipWizardHeader.tsx index e883da67d2b..55363426104 100644 --- a/app/src/organisms/DropTipWizardFlows/DropTipWizardHeader.tsx +++ b/app/src/organisms/DropTipWizardFlows/DropTipWizardHeader.tsx @@ -1,11 +1,9 @@ -import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' -import { BEFORE_BEGINNING, BLOWOUT_SUCCESS, DT_ROUTES } from './constants' import { WizardHeader } from '/app/molecules/WizardHeader' import type { DropTipWizardProps } from './DropTipWizard' -import type { DropTipFlowsRoute, DropTipFlowsStep, ErrorDetails } from './types' +import type { ErrorDetails } from './types' type DropTipWizardHeaderProps = DropTipWizardProps & { isExitInitiated: boolean @@ -16,9 +14,6 @@ type DropTipWizardHeaderProps = DropTipWizardProps & { export function DropTipWizardHeader({ confirmExit, - currentStep, - currentRoute, - currentStepIdx, isExitInitiated, isFinalWizardStep, errorDetails, @@ -36,73 +31,14 @@ export function DropTipWizardHeader({ handleCleanUpAndClose, }) - const { totalSteps, currentStepNumber } = useSeenBlowoutSuccess({ - currentStep, - currentRoute, - currentStepIdx, - }) - return ( ) } -interface UseSeenBlowoutSuccessProps { - currentStep: DropTipFlowsStep - currentRoute: DropTipFlowsRoute - currentStepIdx: number -} - -interface UseSeenBlowoutSuccessResult { - currentStepNumber: number | null - totalSteps: number | null -} - -// Calculate the props used for determining step count based on the route. Because blowout and drop tip are separate routes, -// there's a need for state to track whether we've seen blowout, so the step counter is accurate when the drop tip route is active. -export function useSeenBlowoutSuccess({ - currentStep, - currentRoute, - currentStepIdx, -}: UseSeenBlowoutSuccessProps): UseSeenBlowoutSuccessResult { - const [hasSeenBlowoutSuccess, setHasSeenBlowoutSuccess] = useState(false) - - useEffect(() => { - if (currentStep === BLOWOUT_SUCCESS) { - setHasSeenBlowoutSuccess(true) - } else if (currentStep === BEFORE_BEGINNING) { - setHasSeenBlowoutSuccess(false) - } - }, [currentStep]) - - const shouldRenderStepCounter = currentRoute !== DT_ROUTES.BEFORE_BEGINNING - - let totalSteps: null | number - if (!shouldRenderStepCounter) { - totalSteps = null - } else if (currentRoute === DT_ROUTES.BLOWOUT || hasSeenBlowoutSuccess) { - totalSteps = DT_ROUTES.BLOWOUT.length + DT_ROUTES.DROP_TIP.length - } else { - totalSteps = currentRoute.length - } - - let currentStepNumber: null | number - if (!shouldRenderStepCounter) { - currentStepNumber = null - } else if (hasSeenBlowoutSuccess && currentRoute === DT_ROUTES.DROP_TIP) { - currentStepNumber = DT_ROUTES.BLOWOUT.length + currentStepIdx + 1 - } else { - currentStepNumber = currentStepIdx + 1 - } - - return { currentStepNumber, totalSteps } -} - export interface UseWizardExitHeaderProps { isFinalStep: boolean hasInitiatedExit: boolean diff --git a/app/src/organisms/DropTipWizardFlows/__tests__/DropTipWizardHeader.test.tsx b/app/src/organisms/DropTipWizardFlows/__tests__/DropTipWizardHeader.test.tsx index 306b3eff6d1..c5720adf4ab 100644 --- a/app/src/organisms/DropTipWizardFlows/__tests__/DropTipWizardHeader.test.tsx +++ b/app/src/organisms/DropTipWizardFlows/__tests__/DropTipWizardHeader.test.tsx @@ -1,16 +1,14 @@ import type * as React from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { renderHook, screen } from '@testing-library/react' +import { screen } from '@testing-library/react' import { renderWithProviders } from '/app/__testing-utils__' import { i18n } from '/app/i18n' import { mockDropTipWizardContainerProps } from '../__fixtures__' import { useWizardExitHeader, - useSeenBlowoutSuccess, DropTipWizardHeader, } from '../DropTipWizardHeader' -import { DT_ROUTES } from '../constants' import type { Mock } from 'vitest' import type { UseWizardExitHeaderProps } from '../DropTipWizardHeader' @@ -31,22 +29,6 @@ describe('DropTipWizardHeader', () => { it('renders appropriate copy and onClick behavior', () => { render(props) screen.getByText('Drop tips') - screen.getByText('Step 1 / 5') - }) -}) - -describe('useSeenBlowoutSuccess', () => { - it('should not render step counter when currentRoute is BEFORE_BEGINNING', () => { - const { result } = renderHook(() => - useSeenBlowoutSuccess({ - currentStep: 'SOME_STEP' as any, - currentRoute: DT_ROUTES.BEFORE_BEGINNING, - currentStepIdx: 0, - }) - ) - - expect(result.current.totalSteps).toBe(null) - expect(result.current.currentStepNumber).toBe(null) }) }) From 7e6c8eead7b0e7c2e21ae95cca818e40fdbcc175 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Fri, 22 Nov 2024 13:29:42 -0500 Subject: [PATCH 084/220] fix(api-client, react-api-client, app, robot-server): support multiple recovery policies during a run (#16950) Closes RQA-3670 We need to support the client ignoring several different classes of errors in a single run, which means the app needs to know the current recovery policy and be able to modify. This PR adds the necessary infrastructure to support that. Co-authored-by: Max Marrone --- api-client/src/runs/getErrorRecoveryPolicy.ts | 17 ++++ api-client/src/runs/index.ts | 1 + api-client/src/runs/types.ts | 1 + .../__tests__/useRecoveryCommands.test.ts | 15 +-- .../hooks/useRecoveryCommands.ts | 40 ++++---- app/src/resources/runs/index.ts | 1 + .../useUpdateRecoveryPolicyWithStrategy.ts | 60 ++++++++++++ react-api-client/src/runs/index.ts | 1 + .../src/runs/useErrorRecoveryPolicy.ts | 31 ++++++ .../src/runs/useUpdateErrorRecoveryPolicy.ts | 4 +- .../robot_server/runs/dependencies.py | 24 +++-- .../robot_server/runs/router/__init__.py | 2 + .../robot_server/runs/router/base_router.py | 42 -------- .../router/error_recovery_policy_router.py | 97 +++++++++++++++++++ .../robot_server/runs/run_data_manager.py | 25 ++++- .../tests/runs/router/test_base_router.py | 40 -------- .../test_error_recovery_policy_router.py | 90 +++++++++++++++++ .../tests/runs/test_run_data_manager.py | 32 +++++- 18 files changed, 396 insertions(+), 127 deletions(-) create mode 100644 api-client/src/runs/getErrorRecoveryPolicy.ts create mode 100644 app/src/resources/runs/useUpdateRecoveryPolicyWithStrategy.ts create mode 100644 react-api-client/src/runs/useErrorRecoveryPolicy.ts create mode 100644 robot-server/robot_server/runs/router/error_recovery_policy_router.py create mode 100644 robot-server/tests/runs/router/test_error_recovery_policy_router.py diff --git a/api-client/src/runs/getErrorRecoveryPolicy.ts b/api-client/src/runs/getErrorRecoveryPolicy.ts new file mode 100644 index 00000000000..67a3d0bd93c --- /dev/null +++ b/api-client/src/runs/getErrorRecoveryPolicy.ts @@ -0,0 +1,17 @@ +import { GET, request } from '../request' + +import type { HostConfig } from '../types' +import type { ResponsePromise } from '../request' +import type { ErrorRecoveryPolicyResponse } from './types' + +export function getErrorRecoveryPolicy( + config: HostConfig, + runId: string +): ResponsePromise { + return request( + GET, + `/runs/${runId}/errorRecoveryPolicy`, + null, + config + ) +} diff --git a/api-client/src/runs/index.ts b/api-client/src/runs/index.ts index 183b8f7e4d4..fff1f303543 100644 --- a/api-client/src/runs/index.ts +++ b/api-client/src/runs/index.ts @@ -15,6 +15,7 @@ export * from './createLabwareOffset' export * from './createLabwareDefinition' export * from './constants' export * from './updateErrorRecoveryPolicy' +export * from './getErrorRecoveryPolicy' export * from './types' export type { CreateRunData } from './createRun' diff --git a/api-client/src/runs/types.ts b/api-client/src/runs/types.ts index bf8596b66d7..e41626b6448 100644 --- a/api-client/src/runs/types.ts +++ b/api-client/src/runs/types.ts @@ -204,6 +204,7 @@ export interface UpdateErrorRecoveryPolicyRequest { } export type UpdateErrorRecoveryPolicyResponse = Record +export type ErrorRecoveryPolicyResponse = UpdateErrorRecoveryPolicyRequest /** * Current Run State Data diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts index 21307b8e4e8..ce333c1fb39 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryCommands.test.ts @@ -4,11 +4,13 @@ import { renderHook, act } from '@testing-library/react' import { useResumeRunFromRecoveryMutation, useStopRunMutation, - useUpdateErrorRecoveryPolicy, useResumeRunFromRecoveryAssumingFalsePositiveMutation, } from '@opentrons/react-api-client' -import { useChainRunCommands } from '/app/resources/runs' +import { + useChainRunCommands, + useUpdateRecoveryPolicyWithStrategy, +} from '/app/resources/runs' import { useRecoveryCommands, HOME_PIPETTE_Z_AXES, @@ -80,9 +82,9 @@ describe('useRecoveryCommands', () => { vi.mocked(useChainRunCommands).mockReturnValue({ chainRunCommands: mockChainRunCommands, } as any) - vi.mocked(useUpdateErrorRecoveryPolicy).mockReturnValue({ - mutateAsync: mockUpdateErrorRecoveryPolicy, - } as any) + vi.mocked(useUpdateRecoveryPolicyWithStrategy).mockReturnValue( + mockUpdateErrorRecoveryPolicy as any + ) vi.mocked( useResumeRunFromRecoveryAssumingFalsePositiveMutation ).mockReturnValue({ @@ -361,7 +363,8 @@ describe('useRecoveryCommands', () => { ) expect(mockUpdateErrorRecoveryPolicy).toHaveBeenCalledWith( - expectedPolicyRules + expectedPolicyRules, + 'append' ) }) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts index 0775d4796a6..3e4b20225c5 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts @@ -4,11 +4,13 @@ import head from 'lodash/head' import { useResumeRunFromRecoveryMutation, useStopRunMutation, - useUpdateErrorRecoveryPolicy, useResumeRunFromRecoveryAssumingFalsePositiveMutation, } from '@opentrons/react-api-client' -import { useChainRunCommands } from '/app/resources/runs' +import { + useChainRunCommands, + useUpdateRecoveryPolicyWithStrategy, +} from '/app/resources/runs' import { DEFINED_ERROR_TYPES, ERROR_KINDS, RECOVERY_MAP } from '../constants' import { getErrorKind } from '/app/organisms/ErrorRecoveryFlows/utils' @@ -23,12 +25,7 @@ import type { PrepareToAspirateRunTimeCommand, MoveLabwareParams, } from '@opentrons/shared-data' -import type { - CommandData, - IfMatchType, - RecoveryPolicyRulesParams, - RunAction, -} from '@opentrons/api-client' +import type { CommandData, IfMatchType, RunAction } from '@opentrons/api-client' import type { WellGroup } from '@opentrons/components' import type { FailedCommand, RecoveryRoute, RouteStep } from '../types' import type { UseFailedLabwareUtilsResult } from './useFailedLabwareUtils' @@ -38,6 +35,7 @@ import type { UseRecoveryAnalyticsResult } from '/app/redux-resources/analytics' import type { CurrentRecoveryOptionUtils } from './useRecoveryRouting' import type { ErrorRecoveryFlowsProps } from '..' import type { FailedCommandBySource } from './useRetainedFailedCommandBySource' +import type { UpdateErrorRecoveryPolicyWithStrategy } from '/app/resources/runs' interface UseRecoveryCommandsParams { runId: string @@ -100,9 +98,7 @@ export function useRecoveryCommands({ mutateAsync: resumeRunFromRecoveryAssumingFalsePositive, } = useResumeRunFromRecoveryAssumingFalsePositiveMutation() const { stopRun } = useStopRunMutation() - const { - mutateAsync: updateErrorRecoveryPolicy, - } = useUpdateErrorRecoveryPolicy(runId) + const updateErrorRecoveryPolicy = useUpdateRecoveryPolicyWithStrategy(runId) const { makeSuccessToast } = recoveryToastUtils // TODO(jh, 11-21-24): Some commands return a 200 with an error body. We should catch these and propagate the error. @@ -231,10 +227,12 @@ export function useRecoveryCommands({ ifMatch ) - return updateErrorRecoveryPolicy(ignorePolicyRules) + return updateErrorRecoveryPolicy(ignorePolicyRules, 'append') .then(() => Promise.resolve()) - .catch(() => - Promise.reject(new Error('Failed to update recovery policy.')) + .catch((e: Error) => + Promise.reject( + new Error(`Failed to update recovery policy: ${e.message}`) + ) ) } else { void proceedToRouteAndStep(RECOVERY_MAP.ERROR_WHILE_RECOVERING.ROUTE) @@ -421,12 +419,8 @@ export const buildIgnorePolicyRules = ( commandType: FailedCommand['commandType'], errorType: string, ifMatch: IfMatchType -): RecoveryPolicyRulesParams => { - return [ - { - commandType, - errorType, - ifMatch, - }, - ] -} +): UpdateErrorRecoveryPolicyWithStrategy['newPolicy'] => ({ + commandType, + errorType, + ifMatch, +}) diff --git a/app/src/resources/runs/index.ts b/app/src/resources/runs/index.ts index 5c97434dd31..d1d84d3bc1b 100644 --- a/app/src/resources/runs/index.ts +++ b/app/src/resources/runs/index.ts @@ -29,3 +29,4 @@ export * from './useModuleCalibrationStatus' export * from './useProtocolAnalysisErrors' export * from './useLastRunCommand' export * from './useRunStatuses' +export * from './useUpdateRecoveryPolicyWithStrategy' diff --git a/app/src/resources/runs/useUpdateRecoveryPolicyWithStrategy.ts b/app/src/resources/runs/useUpdateRecoveryPolicyWithStrategy.ts new file mode 100644 index 00000000000..f26eb507afc --- /dev/null +++ b/app/src/resources/runs/useUpdateRecoveryPolicyWithStrategy.ts @@ -0,0 +1,60 @@ +import { + useHost, + useUpdateErrorRecoveryPolicy, +} from '@opentrons/react-api-client' +import { getErrorRecoveryPolicy } from '@opentrons/api-client' + +import type { + HostConfig, + RecoveryPolicyRulesParams, + UpdateErrorRecoveryPolicyResponse, +} from '@opentrons/api-client' + +/** + * append - Add a new policy rule to the end of the existing recovery policy. + */ +export type UpdatePolicyStrategy = 'append' + +export interface UpdateErrorRecoveryPolicyWithStrategy { + runId: string + newPolicy: RecoveryPolicyRulesParams[number] + strategy: UpdatePolicyStrategy +} + +export function useUpdateRecoveryPolicyWithStrategy( + runId: string +): ( + newPolicy: UpdateErrorRecoveryPolicyWithStrategy['newPolicy'], + strategy: UpdateErrorRecoveryPolicyWithStrategy['strategy'] +) => Promise { + const host = useHost() + + const { + mutateAsync: updateErrorRecoveryPolicy, + } = useUpdateErrorRecoveryPolicy(runId) + + return ( + newPolicy: UpdateErrorRecoveryPolicyWithStrategy['newPolicy'], + strategy: UpdateErrorRecoveryPolicyWithStrategy['strategy'] + ) => + getErrorRecoveryPolicy(host as HostConfig, runId).then(res => { + const existingPolicyRules = res.data.data.policyRules.map(rule => ({ + commandType: rule.matchCriteria.command.commandType, + errorType: rule.matchCriteria.command.error.errorType, + ifMatch: rule.ifMatch, + })) + + const buildUpdatedPolicy = (): RecoveryPolicyRulesParams => { + switch (strategy) { + case 'append': + return [...existingPolicyRules, newPolicy] + default: { + console.error('Unhandled policy strategy, defaulting to append.') + return [...existingPolicyRules, newPolicy] + } + } + } + + return updateErrorRecoveryPolicy(buildUpdatedPolicy()) + }) +} diff --git a/react-api-client/src/runs/index.ts b/react-api-client/src/runs/index.ts index 5e479ed5093..77b487a84fc 100644 --- a/react-api-client/src/runs/index.ts +++ b/react-api-client/src/runs/index.ts @@ -19,6 +19,7 @@ export { useRunCommandErrors } from './useRunCommandErrors' export * from './useCreateLabwareOffsetMutation' export * from './useCreateLabwareDefinitionMutation' export * from './useUpdateErrorRecoveryPolicy' +export * from './useErrorRecoveryPolicy' export type { UsePlayRunMutationResult } from './usePlayRunMutation' export type { UsePauseRunMutationResult } from './usePauseRunMutation' diff --git a/react-api-client/src/runs/useErrorRecoveryPolicy.ts b/react-api-client/src/runs/useErrorRecoveryPolicy.ts new file mode 100644 index 00000000000..dd625689b83 --- /dev/null +++ b/react-api-client/src/runs/useErrorRecoveryPolicy.ts @@ -0,0 +1,31 @@ +import { useQuery } from 'react-query' + +import { getErrorRecoveryPolicy } from '@opentrons/api-client' + +import { useHost } from '../api' + +import type { UseQueryOptions, UseQueryResult } from 'react-query' +import type { + ErrorRecoveryPolicyResponse, + HostConfig, +} from '@opentrons/api-client' + +export function useErrorRecoveryPolicy( + runId: string, + options: UseQueryOptions = {} +): UseQueryResult { + const host = useHost() + + const query = useQuery( + [host, 'runs', runId, 'errorRecoveryPolicy'], + () => + getErrorRecoveryPolicy(host as HostConfig, runId) + .then(response => response.data) + .catch(e => { + throw e + }), + options + ) + + return query +} diff --git a/react-api-client/src/runs/useUpdateErrorRecoveryPolicy.ts b/react-api-client/src/runs/useUpdateErrorRecoveryPolicy.ts index 1fa379b1bc5..7e09abc6160 100644 --- a/react-api-client/src/runs/useUpdateErrorRecoveryPolicy.ts +++ b/react-api-client/src/runs/useUpdateErrorRecoveryPolicy.ts @@ -16,7 +16,7 @@ import type { HostConfig, } from '@opentrons/api-client' -export type UseUpdateErrorRecoveryPolicyResponse = UseMutationResult< +export type UseErrorRecoveryPolicyResponse = UseMutationResult< UpdateErrorRecoveryPolicyResponse, AxiosError, RecoveryPolicyRulesParams @@ -37,7 +37,7 @@ export type UseUpdateErrorRecoveryPolicyOptions = UseMutationOptions< export function useUpdateErrorRecoveryPolicy( runId: string, options: UseUpdateErrorRecoveryPolicyOptions = {} -): UseUpdateErrorRecoveryPolicyResponse { +): UseErrorRecoveryPolicyResponse { const host = useHost() const mutation = useMutation< diff --git a/robot-server/robot_server/runs/dependencies.py b/robot-server/robot_server/runs/dependencies.py index 60c96d1e5e6..5f49f04582d 100644 --- a/robot-server/robot_server/runs/dependencies.py +++ b/robot-server/robot_server/runs/dependencies.py @@ -48,6 +48,7 @@ _run_orchestrator_store_accessor = AppStateAccessor[RunOrchestratorStore]( "run_orchestrator_store" ) +_run_data_manager_accessor = AppStateAccessor[RunDataManager]("run_data_manager") _light_control_accessor = AppStateAccessor[LightController]("light_controller") @@ -154,6 +155,7 @@ async def get_is_okay_to_create_maintenance_run( async def get_run_data_manager( + app_state: Annotated[AppState, Depends(get_app_state)], task_runner: Annotated[TaskRunner, Depends(get_task_runner)], run_orchestrator_store: Annotated[ RunOrchestratorStore, Depends(get_run_orchestrator_store) @@ -164,14 +166,20 @@ async def get_run_data_manager( ErrorRecoverySettingStore, Depends(get_error_recovery_setting_store) ], ) -> RunDataManager: - """Get a run data manager to keep track of current/historical run data.""" - return RunDataManager( - run_orchestrator_store=run_orchestrator_store, - run_store=run_store, - error_recovery_setting_store=error_recovery_setting_store, - task_runner=task_runner, - runs_publisher=runs_publisher, - ) + """Get a singleton run data manager to keep track of current/historical run data.""" + run_data_manager = _run_data_manager_accessor.get_from(app_state) + + if run_data_manager is None: + run_data_manager = RunDataManager( + run_orchestrator_store=run_orchestrator_store, + run_store=run_store, + error_recovery_setting_store=error_recovery_setting_store, + task_runner=task_runner, + runs_publisher=runs_publisher, + ) + _run_data_manager_accessor.set_on(app_state, run_data_manager) + + return run_data_manager async def get_run_auto_deleter( diff --git a/robot-server/robot_server/runs/router/__init__.py b/robot-server/robot_server/runs/router/__init__.py index 738d0e05952..d7a1640edb8 100644 --- a/robot-server/robot_server/runs/router/__init__.py +++ b/robot-server/robot_server/runs/router/__init__.py @@ -5,6 +5,7 @@ from .commands_router import commands_router from .actions_router import actions_router from .labware_router import labware_router +from .error_recovery_policy_router import error_recovery_policy_router runs_router = APIRouter() @@ -12,5 +13,6 @@ runs_router.include_router(commands_router) runs_router.include_router(actions_router) runs_router.include_router(labware_router) +runs_router.include_router(error_recovery_policy_router) __all__ = ["runs_router"] diff --git a/robot-server/robot_server/runs/router/base_router.py b/robot-server/robot_server/runs/router/base_router.py index 1c4b6bf65a9..ac11e79a855 100644 --- a/robot-server/robot_server/runs/router/base_router.py +++ b/robot-server/robot_server/runs/router/base_router.py @@ -75,7 +75,6 @@ get_run_auto_deleter, get_quick_transfer_run_auto_deleter, ) -from ..error_recovery_models import ErrorRecoveryPolicy from robot_server.deck_configuration.fastapi_dependencies import ( get_deck_configuration_store, @@ -439,47 +438,6 @@ async def update_run( ) -@PydanticResponse.wrap_route( - base_router.put, - path="/runs/{runId}/errorRecoveryPolicy", - summary="Set a run's error recovery policy", - description=dedent( - """ - Update how to handle different kinds of command failures. - - For this to have any effect, error recovery must also be enabled globally. - See `PATCH /errorRecovery/settings`. - """ - ), - responses={ - status.HTTP_200_OK: {"model": SimpleEmptyBody}, - status.HTTP_409_CONFLICT: {"model": ErrorBody[RunStopped]}, - }, -) -async def put_error_recovery_policy( - runId: str, - request_body: RequestModel[ErrorRecoveryPolicy], - run_data_manager: Annotated[RunDataManager, Depends(get_run_data_manager)], -) -> PydanticResponse[SimpleEmptyBody]: - """Create run polices. - - Arguments: - runId: Run ID pulled from URL. - request_body: Request body with run policies data. - run_data_manager: Current and historical run data management. - """ - rules = request_body.data.policyRules - try: - run_data_manager.set_error_recovery_rules(run_id=runId, rules=rules) - except RunNotCurrentError as e: - raise RunStopped(detail=str(e)).as_error(status.HTTP_409_CONFLICT) from e - - return await PydanticResponse.create( - content=SimpleEmptyBody.construct(), - status_code=status.HTTP_200_OK, - ) - - @PydanticResponse.wrap_route( base_router.get, path="/runs/{runId}/commandErrors", diff --git a/robot-server/robot_server/runs/router/error_recovery_policy_router.py b/robot-server/robot_server/runs/router/error_recovery_policy_router.py new file mode 100644 index 00000000000..4653d564244 --- /dev/null +++ b/robot-server/robot_server/runs/router/error_recovery_policy_router.py @@ -0,0 +1,97 @@ +"""Router for /runs/{runId}/errorRecoveryPolicy endpoints.""" + + +from textwrap import dedent +from typing import Annotated + +from fastapi import status, APIRouter, Depends + +from robot_server.errors.error_responses import ErrorBody +from robot_server.service.json_api.request import RequestModel +from robot_server.service.json_api.response import ( + PydanticResponse, + SimpleBody, + SimpleEmptyBody, +) + +from .base_router import RunStopped +from ..dependencies import get_run_data_manager +from ..run_data_manager import RunDataManager, RunNotCurrentError +from ..error_recovery_models import ErrorRecoveryPolicy + + +error_recovery_policy_router = APIRouter() + + +@PydanticResponse.wrap_route( + error_recovery_policy_router.put, + path="/runs/{runId}/errorRecoveryPolicy", + summary="Set a run's error recovery policy", + description=dedent( + """ + Update how to handle different kinds of command failures. + + For this to have any effect, error recovery must also be enabled globally. + See `PATCH /errorRecovery/settings`. + """ + ), + responses={ + status.HTTP_200_OK: {"model": SimpleEmptyBody}, + status.HTTP_409_CONFLICT: {"model": ErrorBody[RunStopped]}, + }, +) +async def put_error_recovery_policy( + runId: str, + request_body: RequestModel[ErrorRecoveryPolicy], + run_data_manager: Annotated[RunDataManager, Depends(get_run_data_manager)], +) -> PydanticResponse[SimpleEmptyBody]: + """Set a run's error recovery policy. + + Arguments: + runId: Run ID pulled from URL. + request_body: Request body with the new run policy. + run_data_manager: Current and historical run data management. + """ + rules = request_body.data.policyRules + try: + run_data_manager.set_error_recovery_rules(run_id=runId, rules=rules) + except RunNotCurrentError as e: + raise RunStopped(detail=str(e)).as_error(status.HTTP_409_CONFLICT) from e + + return await PydanticResponse.create( + content=SimpleEmptyBody.construct(), + status_code=status.HTTP_200_OK, + ) + + +@PydanticResponse.wrap_route( + error_recovery_policy_router.get, + path="/runs/{runId}/errorRecoveryPolicy", + summary="Get a run's current error recovery policy", + description="See `PUT /runs/{runId}/errorRecoveryPolicy`.", + responses={ + status.HTTP_200_OK: {"model": SimpleBody[ErrorRecoveryPolicy]}, + status.HTTP_409_CONFLICT: {"model": ErrorBody[RunStopped]}, + }, +) +async def get_error_recovery_policy( + runId: str, + run_data_manager: Annotated[RunDataManager, Depends(get_run_data_manager)], +) -> PydanticResponse[SimpleBody[ErrorRecoveryPolicy]]: + """Get a run's current error recovery policy. + + Arguments: + runId: Run ID pulled from URL. + run_data_manager: Current and historical run data management. + """ + try: + rules = run_data_manager.get_error_recovery_rules(run_id=runId) + except RunNotCurrentError as e: + raise RunStopped(detail=str(e)).as_error(status.HTTP_409_CONFLICT) from e + + return await PydanticResponse.create( + content=SimpleBody.construct( + data=ErrorRecoveryPolicy.construct(policyRules=rules) + ), + status_code=status.HTTP_200_OK, + ) diff --git a/robot-server/robot_server/runs/run_data_manager.py b/robot-server/robot_server/runs/run_data_manager.py index b5ac801a117..f39b0d8ec94 100644 --- a/robot-server/robot_server/runs/run_data_manager.py +++ b/robot-server/robot_server/runs/run_data_manager.py @@ -141,7 +141,7 @@ class PreSerializedCommandsNotAvailableError(LookupError): class RunDataManager: """Collaborator to manage current and historical run data. - Provides a facade to both an EngineStore (current run) and a RunStore + Provides a facade to both a RunOrchestratorStore (current run) and a RunStore (historical runs). Returns `Run` response models to the router. Args: @@ -159,7 +159,14 @@ def __init__( ) -> None: self._run_orchestrator_store = run_orchestrator_store self._run_store = run_store + self._error_recovery_setting_store = error_recovery_setting_store + # todo(mm, 2024-11-22): Storing the list of error recovery rules is outside the + # responsibilities of this class. It's also clunky for us to store it like this + # because we need to remember to clear it whenever the current run changes. + # This error recovery mapping stuff probably belongs in RunOrchestratorStore. + self._current_run_error_recovery_rules: List[ErrorRecoveryRule] = [] + self._task_runner = task_runner self._runs_publisher = runs_publisher @@ -211,9 +218,10 @@ async def create( ) error_recovery_is_enabled = self._error_recovery_setting_store.get_is_enabled() + self._current_run_error_recovery_rules = _INITIAL_ERROR_RECOVERY_RULES initial_error_recovery_policy = ( error_recovery_mapping.create_error_recovery_policy_from_rules( - _INITIAL_ERROR_RECOVERY_RULES, error_recovery_is_enabled + self._current_run_error_recovery_rules, error_recovery_is_enabled ) ) @@ -541,7 +549,7 @@ def get_all_commands_as_preserialized_list( def set_error_recovery_rules( self, run_id: str, rules: List[ErrorRecoveryRule] ) -> None: - """Set the run's error recovery policy. + """Set the run's error recovery policy, in robot-server terms. The input rules get combined with the global error recovery enabled/disabled setting, which this method retrieves automatically. @@ -551,11 +559,20 @@ def set_error_recovery_rules( f"Cannot update {run_id} because it is not the current run." ) is_enabled = self._error_recovery_setting_store.get_is_enabled() + self._current_run_error_recovery_rules = rules mapped_policy = error_recovery_mapping.create_error_recovery_policy_from_rules( - rules, is_enabled + self._current_run_error_recovery_rules, is_enabled ) self._run_orchestrator_store.set_error_recovery_policy(policy=mapped_policy) + def get_error_recovery_rules(self, run_id: str) -> List[ErrorRecoveryRule]: + """Get the run's error recovery policy.""" + if run_id != self._run_orchestrator_store.current_run_id: + raise RunNotCurrentError( + f"Cannot get the error recovery policy of {run_id} because it is not the current run." + ) + return self._current_run_error_recovery_rules + def _get_state_summary(self, run_id: str) -> Union[StateSummary, BadStateSummary]: if run_id == self._run_orchestrator_store.current_run_id: return self._run_orchestrator_store.get_state_summary() diff --git a/robot-server/tests/runs/router/test_base_router.py b/robot-server/tests/runs/router/test_base_router.py index 30a4072f7cf..e16af79ca55 100644 --- a/robot-server/tests/runs/router/test_base_router.py +++ b/robot-server/tests/runs/router/test_base_router.py @@ -25,7 +25,6 @@ from robot_server.data_files.models import DataFileSource from robot_server.errors.error_responses import ApiError -from robot_server.runs.error_recovery_models import ErrorRecoveryPolicy from robot_server.service.json_api import ( RequestModel, SimpleBody, @@ -67,7 +66,6 @@ get_runs, remove_run, update_run, - put_error_recovery_policy, get_run_commands_error, get_current_state, CurrentStateLinks, @@ -701,44 +699,6 @@ async def test_update_to_current_missing( assert exc_info.value.content["errors"][0]["id"] == "RunNotFound" -async def test_create_policies( - decoy: Decoy, mock_run_data_manager: RunDataManager -) -> None: - """It should call RunDataManager create run policies.""" - policies = decoy.mock(cls=ErrorRecoveryPolicy) - await put_error_recovery_policy( - runId="rud-id", - request_body=RequestModel(data=policies), - run_data_manager=mock_run_data_manager, - ) - decoy.verify( - mock_run_data_manager.set_error_recovery_rules( - run_id="rud-id", rules=policies.policyRules - ) - ) - - -async def test_create_policies_raises_not_active_run( - decoy: Decoy, mock_run_data_manager: RunDataManager -) -> None: - """It should raise that the run is not current.""" - policies = decoy.mock(cls=ErrorRecoveryPolicy) - decoy.when( - mock_run_data_manager.set_error_recovery_rules( - run_id="rud-id", rules=policies.policyRules - ) - ).then_raise(RunNotCurrentError()) - with pytest.raises(ApiError) as exc_info: - await put_error_recovery_policy( - runId="rud-id", - request_body=RequestModel(data=policies), - run_data_manager=mock_run_data_manager, - ) - - assert exc_info.value.status_code == 409 - assert exc_info.value.content["errors"][0]["id"] == "RunStopped" - - async def test_get_run_commands_errors( decoy: Decoy, mock_run_data_manager: RunDataManager ) -> None: diff --git a/robot-server/tests/runs/router/test_error_recovery_policy_router.py b/robot-server/tests/runs/router/test_error_recovery_policy_router.py new file mode 100644 index 00000000000..efdf4d15f53 --- /dev/null +++ b/robot-server/tests/runs/router/test_error_recovery_policy_router.py @@ -0,0 +1,90 @@ +# noqa: D100 + +import pytest +from decoy import Decoy + +from robot_server.errors.error_responses import ApiError +from robot_server.runs import error_recovery_models as er_models +from robot_server.runs.router.error_recovery_policy_router import ( + get_error_recovery_policy, + put_error_recovery_policy, +) +from robot_server.runs.run_data_manager import RunDataManager, RunNotCurrentError +from robot_server.service.json_api.request import RequestModel + + +async def test_put(decoy: Decoy, mock_run_data_manager: RunDataManager) -> None: + """It should call RunDataManager create run policies.""" + policies = decoy.mock(cls=er_models.ErrorRecoveryPolicy) + await put_error_recovery_policy( + runId="run-id", + request_body=RequestModel(data=policies), + run_data_manager=mock_run_data_manager, + ) + decoy.verify( + mock_run_data_manager.set_error_recovery_rules( + run_id="run-id", rules=policies.policyRules + ) + ) + + +async def test_put_raises_not_active_run( + decoy: Decoy, mock_run_data_manager: RunDataManager +) -> None: + """It should raise that the run is not current.""" + policies = decoy.mock(cls=er_models.ErrorRecoveryPolicy) + decoy.when( + mock_run_data_manager.set_error_recovery_rules( + run_id="run-id", rules=policies.policyRules + ) + ).then_raise(RunNotCurrentError()) + with pytest.raises(ApiError) as exc_info: + await put_error_recovery_policy( + runId="run-id", + request_body=RequestModel(data=policies), + run_data_manager=mock_run_data_manager, + ) + + assert exc_info.value.status_code == 409 + assert exc_info.value.content["errors"][0]["id"] == "RunStopped" + + +async def test_get(decoy: Decoy, mock_run_data_manager: RunDataManager) -> None: + """It should call RunDataManager create run policies.""" + rule = er_models.ErrorRecoveryRule( + matchCriteria=er_models.MatchCriteria( + command=er_models.CommandMatcher( + commandType="commandType", + error=er_models.ErrorMatcher(errorType="errorType"), + ) + ), + ifMatch=er_models.ReactionIfMatch.WAIT_FOR_RECOVERY, + ) + + decoy.when(mock_run_data_manager.get_error_recovery_rules("run-id")).then_return( + [rule] + ) + result = await get_error_recovery_policy( + runId="run-id", + run_data_manager=mock_run_data_manager, + ) + assert result.status_code == 200 + assert result.content.data == er_models.ErrorRecoveryPolicy(policyRules=[rule]) + + +async def test_get_raises_not_active_run( + decoy: Decoy, mock_run_data_manager: RunDataManager +) -> None: + """It should raise that the run is not current.""" + decoy.when( + mock_run_data_manager.get_error_recovery_rules(run_id="run-id") + ).then_raise(RunNotCurrentError()) + + with pytest.raises(ApiError) as exc_info: + await get_error_recovery_policy( + runId="run-id", + run_data_manager=mock_run_data_manager, + ) + + assert exc_info.value.status_code == 409 + assert exc_info.value.content["errors"][0]["id"] == "RunStopped" diff --git a/robot-server/tests/runs/test_run_data_manager.py b/robot-server/tests/runs/test_run_data_manager.py index 5e4aed1f3e2..2cddd9680bf 100644 --- a/robot-server/tests/runs/test_run_data_manager.py +++ b/robot-server/tests/runs/test_run_data_manager.py @@ -1229,7 +1229,7 @@ async def test_get_current_run_labware_definition( ] -async def test_create_policies_raises_run_not_current( +async def test_set_error_recovery_rules_raises_run_not_current( decoy: Decoy, mock_run_orchestrator_store: RunOrchestratorStore, subject: RunDataManager, @@ -1244,7 +1244,7 @@ async def test_create_policies_raises_run_not_current( ) -async def test_create_policies_translates_and_calls_orchestrator( +async def test_set_error_recovery_rules_translates_and_calls_orchestrator( decoy: Decoy, mock_run_orchestrator_store: RunOrchestratorStore, mock_error_recovery_setting_store: ErrorRecoverySettingStore, @@ -1271,6 +1271,34 @@ async def test_create_policies_translates_and_calls_orchestrator( ) +async def test_get_error_recovery_rules( + decoy: Decoy, + mock_run_orchestrator_store: RunOrchestratorStore, + subject: RunDataManager, +) -> None: + """It should return the current run's previously-set list of error recovery rules.""" + # Before there has been any current run, it should raise an exception. + with pytest.raises(RunNotCurrentError): + subject.get_error_recovery_rules(run_id="whatever") + + # While there is a current run, it should return its list of rules. + decoy.when(mock_run_orchestrator_store.current_run_id).then_return( + sentinel.current_run_id + ) + subject.set_error_recovery_rules( + run_id=sentinel.current_run_id, rules=sentinel.input_rules + ) + assert ( + subject.get_error_recovery_rules(run_id=sentinel.current_run_id) + == sentinel.input_rules + ) + + # When the run stops being current, it should go back to raising. + decoy.when(mock_run_orchestrator_store.current_run_id).then_return(None) + with pytest.raises(RunNotCurrentError): + subject.get_error_recovery_rules(run_id="whatever") + + def test_get_nozzle_map_current_run( decoy: Decoy, mock_run_orchestrator_store: RunOrchestratorStore, From 6ae2f381a77c57ed4195ebe5b43cb0a3b96aa9f3 Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Fri, 22 Nov 2024 13:33:01 -0500 Subject: [PATCH 085/220] fix(app): Plate reader DQA (#16946) fix RQA-3570, RQA-3572, RQA-3573, RQA-3633, RQA-3634 --- app/src/assets/localization/en/shared.json | 1 + .../molecules/WizardRequiredEquipmentList/index.tsx | 2 +- .../Desktop/Devices/HistoricalProtocolRun.tsx | 5 ++++- app/src/organisms/LabwarePositionCheck/CheckItem.tsx | 11 +++++++++-- .../LabwarePositionCheck/utils/getDisplayLocation.ts | 6 +++++- app/src/organisms/ModuleCard/AbsorbanceReaderData.tsx | 8 ++++++-- 6 files changed, 26 insertions(+), 7 deletions(-) diff --git a/app/src/assets/localization/en/shared.json b/app/src/assets/localization/en/shared.json index 0b580a612e8..f4e542e761b 100644 --- a/app/src/assets/localization/en/shared.json +++ b/app/src/assets/localization/en/shared.json @@ -11,6 +11,7 @@ "change_robot": "Change robot", "clear_data": "clear data", "close": "close", + "closed": "closed", "close_robot_door": "Close the robot door before starting the run.", "confirm": "Confirm", "confirm_placement": "Confirm placement", diff --git a/app/src/molecules/WizardRequiredEquipmentList/index.tsx b/app/src/molecules/WizardRequiredEquipmentList/index.tsx index 69c5cd02893..f6f7457a71a 100644 --- a/app/src/molecules/WizardRequiredEquipmentList/index.tsx +++ b/app/src/molecules/WizardRequiredEquipmentList/index.tsx @@ -155,7 +155,7 @@ function RequiredEquipmentCard(props: RequiredEquipmentCardProps): JSX.Element { ) : null} diff --git a/app/src/organisms/Desktop/Devices/HistoricalProtocolRun.tsx b/app/src/organisms/Desktop/Devices/HistoricalProtocolRun.tsx index 1ec488cfc45..b9e05314f80 100644 --- a/app/src/organisms/Desktop/Devices/HistoricalProtocolRun.tsx +++ b/app/src/organisms/Desktop/Devices/HistoricalProtocolRun.tsx @@ -41,12 +41,15 @@ export function HistoricalProtocolRun( const { t } = useTranslation('run_details') const { run, protocolName, robotIsBusy, robotName, protocolKey } = props const [drawerOpen, setDrawerOpen] = useState(false) - const countRunDataFiles = + let countRunDataFiles = 'runTimeParameters' in run ? run?.runTimeParameters.filter( parameter => parameter.type === 'csv_file' ).length : 0 + if ('outputFileIds' in run) { + countRunDataFiles += run.outputFileIds.length + } const runStatus = run.status const runDisplayName = formatTimestamp(run.createdAt) let duration = EMPTY_TIMESTAMP diff --git a/app/src/organisms/LabwarePositionCheck/CheckItem.tsx b/app/src/organisms/LabwarePositionCheck/CheckItem.tsx index c9050b5dd3f..5d5008554a6 100644 --- a/app/src/organisms/LabwarePositionCheck/CheckItem.tsx +++ b/app/src/organisms/LabwarePositionCheck/CheckItem.tsx @@ -156,6 +156,13 @@ export const CheckItem = (props: CheckItemProps): JSX.Element | null => { t as TFunction, i18n ) + const slotOnlyDisplayLocation = getDisplayLocation( + location, + labwareDefs, + t as TFunction, + i18n, + true + ) const labwareDisplayName = getLabwareDisplayName(labwareDef) let placeItemInstruction: JSX.Element = ( @@ -445,7 +452,7 @@ export const CheckItem = (props: CheckItemProps): JSX.Element | null => { { {...props} header={t('prepare_item_in_location', { item: isTiprack ? t('tip_rack') : t('labware'), - location: displayLocation, + location: slotOnlyDisplayLocation, })} body={ { const { moduleData } = props - const { t } = useTranslation('device_details') + const { t, i18n } = useTranslation(['device_details', 'shared']) const StatusLabelProps = { status: 'Idle', @@ -37,6 +37,10 @@ export const AbsorbanceReaderData = ( break } } + const lidDisplayStatus = + moduleData.lidStatus === 'on' + ? i18n.format(t('shared:closed'), 'capitalize') + : i18n.format(t('shared:open'), 'capitalize') return ( <> @@ -46,7 +50,7 @@ export const AbsorbanceReaderData = ( data-testid="abs_module_data" > {t('abs_reader_lid_status', { - status: moduleData.lidStatus === 'on' ? 'closed' : 'open', + status: lidDisplayStatus, })} From 95aa2f7b674061674089fccd939aee3f72c69d9e Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:43:07 -0500 Subject: [PATCH 086/220] fix(protocol-designer): add fallback for well order (#16956) This fixes a case where in batch edit move liquid toolbox, well order was set to null, displaying an unknown translation in the WellOrder component. This PR refactors the util used to set the first and second well order values, providing a fallback if the value is null. --- .../BatchEditToolbox/BatchEditMixTools.tsx | 22 ++++++++----------- .../BatchEditMoveLiquidTools.tsx | 22 +++++-------------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx index 38916f2a09d..6f39f7ff632 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx @@ -22,6 +22,7 @@ import { getBlowoutLocationOptionsForForm, getLabwareFieldForPositioningField, } from '../StepForm/utils' + import type { WellOrderOption } from '../../../../form-types' import type { FieldPropsByName } from '../StepForm/types' @@ -59,17 +60,6 @@ export function BatchEditMixTools(props: BatchEditMixToolsProps): JSX.Element { return pipetteId ? String(pipetteId) : null } - const getWellOrderFieldValue = ( - name: string - ): WellOrderOption | null | undefined => { - const val = propsForFields[name]?.value - if (val === 'l2r' || val === 'r2l' || val === 't2b' || val === 'b2t') { - return val - } else { - return null - } - } - return ( diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx index f459d059703..561a926cc8f 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx @@ -61,16 +61,6 @@ export function BatchEditMoveLiquidTools( const labwareId = propsForFields[labwareField]?.value return labwareId ? String(labwareId) : null } - const getWellOrderFieldValue = ( - name: string - ): WellOrderOption | null | undefined => { - const val = propsForFields[name]?.value - if (val === 'l2r' || val === 'r2l' || val === 't2b' || val === 'b2t') { - return val - } else { - return null - } - } return ( From 9bdd8c18deaa8709ddb90466afd82d4802382835 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:07:23 -0500 Subject: [PATCH 087/220] fix(protocol-designer) make deck map bigger in deck setup (#16947) closes RQA-3666 --- .../Designer/DeckSetup/DeckSetupContainer.tsx | 45 ++++++++++--------- .../src/pages/Designer/DeckSetup/utils.ts | 6 +-- .../src/pages/Designer/index.tsx | 7 ++- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupContainer.tsx b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupContainer.tsx index 921e9c1fc55..91e793f5005 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupContainer.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupContainer.tsx @@ -195,15 +195,14 @@ export function DeckSetupContainer(props: DeckSetupTabType): JSX.Element { ) return ( - + - - {hoverSlot != null && - breakPointSize !== 'small' && - LEFT_SLOTS.includes(hoverSlot) ? ( - - ) : null} - + {zoomIn.slot == null ? ( + + {hoverSlot != null && + breakPointSize !== 'small' && + LEFT_SLOTS.includes(hoverSlot) ? ( + + ) : null} + + ) : null} {() => ( <> @@ -356,13 +357,15 @@ export function DeckSetupContainer(props: DeckSetupTabType): JSX.Element { )} - - {hoverSlot != null && - breakPointSize !== 'small' && - !LEFT_SLOTS.includes(hoverSlot) ? ( - - ) : null} - + {zoomIn.slot == null ? ( + + {hoverSlot != null && + breakPointSize !== 'small' && + !LEFT_SLOTS.includes(hoverSlot) ? ( + + ) : null} + + ) : null} {zoomIn.slot != null && zoomIn.cutout != null ? ( diff --git a/protocol-designer/src/pages/Designer/DeckSetup/utils.ts b/protocol-designer/src/pages/Designer/DeckSetup/utils.ts index 7a1c7c09be3..a288947365a 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/utils.ts +++ b/protocol-designer/src/pages/Designer/DeckSetup/utils.ts @@ -215,15 +215,15 @@ export function zoomInOnCoordinate(props: ZoomInOnCoordinateProps): string { const { x, y, deckDef } = props const [width, height] = [deckDef.dimensions[0], deckDef.dimensions[1]] - const zoomFactor = 0.6 + const zoomFactor = 0.55 const newWidth = width * zoomFactor const newHeight = height * zoomFactor // +125 and +50 to get the approximate center of the screen point - const newMinX = x - newWidth / 2 + 125 + const newMinX = x - newWidth / 2 + 20 const newMinY = y - newHeight / 2 + 50 - return `${newMinX} ${newMinY} ${newWidth} ${newHeight}` + return `${newMinX} ${newMinY} ${newWidth} ${newHeight + 70}` } export interface AnimateZoomProps { diff --git a/protocol-designer/src/pages/Designer/index.tsx b/protocol-designer/src/pages/Designer/index.tsx index 8993d271420..9b2c1beda35 100644 --- a/protocol-designer/src/pages/Designer/index.tsx +++ b/protocol-designer/src/pages/Designer/index.tsx @@ -161,10 +161,15 @@ export function Designer(): JSX.Element { - + {zoomIn.slot == null ? ( Date: Fri, 22 Nov 2024 15:15:27 -0500 Subject: [PATCH 088/220] refactor(app): Use `currentState` for tip detection (#16904) Closes EXEC-1027 After completing a run or during Error Recovery, the app runs tip detection logic to determine whether or not to pop the drop tip wizard. It does so by iterating through protocol analysis, keeping track of attached pipettes, and looking at specific tip exchange commands to determine whether a not a pipette has tips attached. While this approach works, it's both brittle (any changes to tip exchange commands breaks the logic) and also a command scanning operation. Now that we have tip status on our new /runs/:runId/currentState endpoint, we have a more robust option for determining tip status. There's one caveat: the robot and this util do have ideas of when a tip should be considered attached. On the app, because we want to show drop tip wizard when there might be a tip attached, such as during a failed pick up tip command, we assume there is a tip attached. In this instance however, the robot server does not think a tip is attached. Unfortunately, there's no way around manually accounting for these differences, but luckily they are few, and it's still a significant improvement over tracking every tip exchange command. There's another optimization we can make too: we don't actually need to poll /instruments for pipette data, because now, the only place we use that data is during the tip detection util. Instead, we can fetch it along with the other necessary resources when determineTipStatus is invoked. In short, these changes give us: * Much easier to reason about tip detection logic. * Significantly less brittle. * No command scanning. * No /instruments polling. --- .../hooks/useRunHeaderDropTip.ts | 15 +- .../modals/ProtocolDropTipModal.tsx | 2 +- .../DropTipWizardFlows/TipsAttachedModal.tsx | 2 +- .../__tests__/TipsAttachedModal.test.tsx | 2 +- .../__tests__/useTipAttachmentStatus.test.tsx | 119 -------- .../DropTipWizardFlows/hooks/index.ts | 1 - .../getPipettesWithTipAttached.test.ts | 239 --------------- .../getPipettesWithTipAttached.ts | 157 ---------- .../hooks/useTipAttachmentStatus/index.ts | 118 -------- app/src/organisms/DropTipWizardFlows/index.ts | 2 - .../RecoveryOptions/ManageTips.tsx | 6 +- .../RecoveryOptions/SelectRecoveryOption.tsx | 2 +- .../hooks/useRecoveryTipStatus.ts | 8 +- app/src/pages/ODD/RunSummary/index.tsx | 9 +- .../__tests__/useTipAttachmentStatus.test.ts | 277 ++++++++++++++++++ app/src/resources/instruments/index.ts | 1 + .../instruments/useTipAttachmentStatus.ts | 235 +++++++++++++++ 17 files changed, 529 insertions(+), 666 deletions(-) delete mode 100644 app/src/organisms/DropTipWizardFlows/hooks/__tests__/useTipAttachmentStatus.test.tsx delete mode 100644 app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts delete mode 100644 app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts delete mode 100644 app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/index.ts create mode 100644 app/src/resources/instruments/__tests__/useTipAttachmentStatus.test.ts create mode 100644 app/src/resources/instruments/useTipAttachmentStatus.ts diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts index 48887d4ac17..687b0d404c5 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts @@ -1,13 +1,9 @@ import { useEffect } from 'react' -import { useHost } from '@opentrons/react-api-client' import { RUN_STATUS_IDLE, RUN_STATUS_STOPPED } from '@opentrons/api-client' import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' -import { - useDropTipWizardFlows, - useTipAttachmentStatus, -} from '/app/organisms/DropTipWizardFlows' +import { useDropTipWizardFlows } from '/app/organisms/DropTipWizardFlows' import { useProtocolDropTipModal } from '../modals' import { useCloseCurrentRun, @@ -16,13 +12,12 @@ import { } from '/app/resources/runs' import { isTerminalRunStatus } from '../../utils' import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' +import { useTipAttachmentStatus } from '/app/resources/instruments' import type { RobotType } from '@opentrons/shared-data' import type { Run, RunStatus } from '@opentrons/api-client' -import type { - DropTipWizardFlowsProps, - PipetteWithTip, -} from '/app/organisms/DropTipWizardFlows' +import type { PipetteWithTip } from '/app/resources/instruments' +import type { DropTipWizardFlowsProps } from '/app/organisms/DropTipWizardFlows' import type { UseProtocolDropTipModalResult } from '../modals' import type { PipetteDetails } from '/app/resources/maintenance_runs' @@ -49,7 +44,6 @@ export function useRunHeaderDropTip({ robotType, runStatus, }: UseRunHeaderDropTipParams): UseRunHeaderDropTipResult { - const host = useHost() const isRunCurrent = useIsRunCurrent(runId) const enteredER = runRecord?.data.hasEverEnteredErrorRecovery ?? false @@ -66,7 +60,6 @@ export function useRunHeaderDropTip({ } = useTipAttachmentStatus({ runId, runRecord: runRecord ?? null, - host, }) const dropTipModalUtils = useProtocolDropTipModal({ diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ProtocolDropTipModal.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ProtocolDropTipModal.tsx index e1f1be57d22..b9f30de446f 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ProtocolDropTipModal.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ProtocolDropTipModal.tsx @@ -21,7 +21,7 @@ import { useHomePipettes } from '/app/local-resources/instruments' import type { PipetteData } from '@opentrons/api-client' import type { IconProps } from '@opentrons/components' import type { UseHomePipettesProps } from '/app/local-resources/instruments' -import type { TipAttachmentStatusResult } from '/app/organisms/DropTipWizardFlows' +import type { TipAttachmentStatusResult } from '/app/resources/instruments' type UseProtocolDropTipModalProps = Pick< UseHomePipettesProps, diff --git a/app/src/organisms/DropTipWizardFlows/TipsAttachedModal.tsx b/app/src/organisms/DropTipWizardFlows/TipsAttachedModal.tsx index 7198d8bb5ea..86778afe97b 100644 --- a/app/src/organisms/DropTipWizardFlows/TipsAttachedModal.tsx +++ b/app/src/organisms/DropTipWizardFlows/TipsAttachedModal.tsx @@ -19,8 +19,8 @@ import { useHomePipettes } from '/app/local-resources/instruments' import type { HostConfig } from '@opentrons/api-client' import type { OddModalHeaderBaseProps } from '/app/molecules/OddModal/types' import type { UseHomePipettesProps } from '/app/local-resources/instruments' -import type { PipetteWithTip } from './hooks' import type { PipetteDetails } from '/app/resources/maintenance_runs' +import type { PipetteWithTip } from '/app/resources/instruments' type TipsAttachedModalProps = Pick & { aPipetteWithTip: PipetteWithTip diff --git a/app/src/organisms/DropTipWizardFlows/__tests__/TipsAttachedModal.test.tsx b/app/src/organisms/DropTipWizardFlows/__tests__/TipsAttachedModal.test.tsx index 917c770c10e..2a71920c4fc 100644 --- a/app/src/organisms/DropTipWizardFlows/__tests__/TipsAttachedModal.test.tsx +++ b/app/src/organisms/DropTipWizardFlows/__tests__/TipsAttachedModal.test.tsx @@ -14,7 +14,7 @@ import { useDropTipWizardFlows } from '..' import type { Mock } from 'vitest' import type { PipetteModelSpecs } from '@opentrons/shared-data' import type { HostConfig } from '@opentrons/api-client' -import type { PipetteWithTip } from '../hooks' +import type { PipetteWithTip } from '/app/resources/instruments' vi.mock('/app/resources/runs/useCloseCurrentRun') vi.mock('..') diff --git a/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useTipAttachmentStatus.test.tsx b/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useTipAttachmentStatus.test.tsx deleted file mode 100644 index 6d9d25719d2..00000000000 --- a/app/src/organisms/DropTipWizardFlows/hooks/__tests__/useTipAttachmentStatus.test.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { act, renderHook } from '@testing-library/react' - -import { getPipetteModelSpecs } from '@opentrons/shared-data' -import { useInstrumentsQuery } from '@opentrons/react-api-client' - -import { mockPipetteInfo } from '/app/redux/pipettes/__fixtures__' -import { getPipettesWithTipAttached } from '../useTipAttachmentStatus/getPipettesWithTipAttached' -import { DropTipWizard } from '../../DropTipWizard' -import { useTipAttachmentStatus } from '../useTipAttachmentStatus' - -import type { Mock } from 'vitest' -import type { PipetteModelSpecs } from '@opentrons/shared-data' -import type { PipetteWithTip } from '../useTipAttachmentStatus' - -vi.mock('@opentrons/shared-data', async importOriginal => { - const actual = await importOriginal() - return { - ...actual, - getPipetteModelSpecs: vi.fn(), - } -}) -vi.mock('@opentrons/react-api-client') -vi.mock('../useTipAttachmentStatus/getPipettesWithTipAttached') -vi.mock('../../DropTipWizard') - -const MOCK_ACTUAL_PIPETTE = { - ...mockPipetteInfo.pipetteSpecs, - model: 'model', - tipLength: { - value: 20, - }, -} as PipetteModelSpecs - -const mockPipetteWithTip: PipetteWithTip = { - mount: 'left', - specs: MOCK_ACTUAL_PIPETTE, -} - -const mockSecondPipetteWithTip: PipetteWithTip = { - mount: 'right', - specs: MOCK_ACTUAL_PIPETTE, -} - -const mockPipettesWithTip: PipetteWithTip[] = [ - mockPipetteWithTip, - mockSecondPipetteWithTip, -] - -describe('useTipAttachmentStatus', () => { - let mockGetPipettesWithTipAttached: Mock - - beforeEach(() => { - mockGetPipettesWithTipAttached = vi.mocked(getPipettesWithTipAttached) - vi.mocked(getPipetteModelSpecs).mockReturnValue(MOCK_ACTUAL_PIPETTE) - vi.mocked(DropTipWizard).mockReturnValue(

MOCK DROP TIP WIZ
) - mockGetPipettesWithTipAttached.mockResolvedValue(mockPipettesWithTip) - vi.mocked(useInstrumentsQuery).mockReturnValue({ data: {} } as any) - }) - - afterEach(() => { - vi.clearAllMocks() - }) - - it('should return the correct initial state', () => { - const { result } = renderHook(() => useTipAttachmentStatus({} as any)) - - expect(result.current.areTipsAttached).toBe(false) - expect(result.current.aPipetteWithTip).toEqual(null) - }) - - it('should determine tip status and update state accordingly', async () => { - const { result } = renderHook(() => useTipAttachmentStatus({} as any)) - - await act(async () => { - await result.current.determineTipStatus() - }) - - expect(result.current.areTipsAttached).toBe(true) - expect(result.current.aPipetteWithTip).toEqual(mockPipetteWithTip) - }) - - it('should reset tip status', async () => { - const { result } = renderHook(() => useTipAttachmentStatus({} as any)) - - await act(async () => { - await result.current.determineTipStatus() - result.current.resetTipStatus() - }) - - expect(result.current.areTipsAttached).toBe(false) - expect(result.current.aPipetteWithTip).toEqual(null) - }) - - it('should set tip status resolved and update state', async () => { - const { result } = renderHook(() => useTipAttachmentStatus({} as any)) - - await act(async () => { - await result.current.determineTipStatus() - result.current.setTipStatusResolved() - }) - - expect(result.current.aPipetteWithTip).toEqual(mockSecondPipetteWithTip) - }) - - it('should call onEmptyCache callback when cache becomes empty', async () => { - mockGetPipettesWithTipAttached.mockResolvedValueOnce([mockPipetteWithTip]) - - const onEmptyCacheMock = vi.fn() - const { result } = renderHook(() => useTipAttachmentStatus({} as any)) - - await act(async () => { - await result.current.determineTipStatus() - result.current.setTipStatusResolved(onEmptyCacheMock) - }) - - expect(onEmptyCacheMock).toHaveBeenCalled() - }) -}) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/index.ts b/app/src/organisms/DropTipWizardFlows/hooks/index.ts index 3f3f531a9d8..f3145d7d083 100644 --- a/app/src/organisms/DropTipWizardFlows/hooks/index.ts +++ b/app/src/organisms/DropTipWizardFlows/hooks/index.ts @@ -1,6 +1,5 @@ export * from './errors' export * from './useDropTipWithType' -export * from './useTipAttachmentStatus' export * from './useDropTipLocations' export { useDropTipRouting } from './useDropTipRouting' export { useDropTipWithType } from './useDropTipWithType' diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts deleted file mode 100644 index bdaeff2dee0..00000000000 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/__tests__/getPipettesWithTipAttached.test.ts +++ /dev/null @@ -1,239 +0,0 @@ -import { describe, it, beforeEach, expect, vi } from 'vitest' -import { getCommands } from '@opentrons/api-client' - -import { getPipettesWithTipAttached } from '../getPipettesWithTipAttached' -import { LEFT, RIGHT } from '@opentrons/shared-data' - -import type { GetPipettesWithTipAttached } from '../getPipettesWithTipAttached' - -vi.mock('@opentrons/api-client') - -const HOST_NAME = 'localhost' -const RUN_ID = 'testRunId' -const LEFT_PIPETTE_ID = 'testId1' -const RIGHT_PIPETTE_ID = 'testId2' -const LEFT_PIPETTE_NAME = 'testLeftName' -const RIGHT_PIPETTE_NAME = 'testRightName' -const PICK_UP_TIP = 'pickUpTip' -const DROP_TIP = 'dropTip' -const DROP_TIP_IN_PLACE = 'dropTipInPlace' -const LOAD_PIPETTE = 'loadPipette' -const FIXIT_INTENT = 'fixit' - -const LEFT_PIPETTE = { - mount: LEFT, - state: { tipDetected: true }, - instrumentType: 'pipette', - ok: true, -} -const RIGHT_PIPETTE = { - mount: RIGHT, - state: { tipDetected: true }, - instrumentType: 'pipette', - ok: true, -} - -const mockAttachedInstruments = { - data: [LEFT_PIPETTE, RIGHT_PIPETTE], - meta: { cursor: 0, totalLength: 2 }, -} - -const createMockCommand = ( - type: string, - id: string, - pipetteId: string, - status = 'succeeded' -) => ({ - id, - key: `${id}-key`, - commandType: type, - status, - params: { pipetteId }, -}) - -const mockCommands = { - data: [ - createMockCommand(LOAD_PIPETTE, 'load-left', LEFT_PIPETTE_ID), - createMockCommand(LOAD_PIPETTE, 'load-right', RIGHT_PIPETTE_ID), - createMockCommand(PICK_UP_TIP, 'pickup-left', LEFT_PIPETTE_ID), - createMockCommand(DROP_TIP, 'drop-left', LEFT_PIPETTE_ID, 'succeeded'), - ], - meta: { cursor: 0, totalLength: 4 }, -} - -const mockRunRecord = { - data: { - pipettes: [ - { id: LEFT_PIPETTE_ID, pipetteName: LEFT_PIPETTE_NAME, mount: LEFT }, - { id: RIGHT_PIPETTE_ID, pipetteName: RIGHT_PIPETTE_NAME, mount: RIGHT }, - ], - }, -} - -describe('getPipettesWithTipAttached', () => { - let DEFAULT_PARAMS: GetPipettesWithTipAttached - - beforeEach(() => { - DEFAULT_PARAMS = { - host: { hostname: HOST_NAME }, - runId: RUN_ID, - attachedInstruments: mockAttachedInstruments as any, - runRecord: mockRunRecord as any, - } - - vi.mocked(getCommands).mockResolvedValue({ - data: mockCommands, - } as any) - }) - - it('returns an empty array if attachedInstruments is null', async () => { - const params = { ...DEFAULT_PARAMS, attachedInstruments: null } - const result = await getPipettesWithTipAttached(params) - expect(result).toEqual([]) - }) - - it('returns an empty array if runRecord is null', async () => { - const params = { ...DEFAULT_PARAMS, runRecord: null } - const result = await getPipettesWithTipAttached(params) - expect(result).toEqual([]) - }) - - it('returns an empty array when no tips are attached according to protocol', async () => { - const mockCommandsWithoutAttachedTips = { - ...mockCommands, - data: [ - createMockCommand(LOAD_PIPETTE, 'load-left', LEFT_PIPETTE_ID), - createMockCommand(LOAD_PIPETTE, 'load-right', RIGHT_PIPETTE_ID), - createMockCommand(PICK_UP_TIP, 'pickup-left', LEFT_PIPETTE_ID), - createMockCommand(DROP_TIP, 'drop-left', LEFT_PIPETTE_ID, 'succeeded'), - ], - } - - vi.mocked(getCommands).mockResolvedValue({ - data: mockCommandsWithoutAttachedTips, - } as any) - - const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) - expect(result).toEqual([]) - }) - - it('returns pipettes with protocol detected tip attachment', async () => { - const mockCommandsWithPickUpTip = { - ...mockCommands, - data: [ - ...mockCommands.data, - createMockCommand(PICK_UP_TIP, 'pickup-left-2', LEFT_PIPETTE_ID), - createMockCommand(PICK_UP_TIP, 'pickup-right', RIGHT_PIPETTE_ID), - ], - } - - vi.mocked(getCommands).mockResolvedValue({ - data: mockCommandsWithPickUpTip, - } as any) - - const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) - expect(result).toEqual(mockAttachedInstruments.data) - }) - - it('always returns the left mount before the right mount if both pipettes have tips attached', async () => { - const mockCommandsWithPickUpTip = { - ...mockCommands, - data: [ - ...mockCommands.data, - createMockCommand(PICK_UP_TIP, 'pickup-right', RIGHT_PIPETTE_ID), - createMockCommand(PICK_UP_TIP, 'pickup-left-2', LEFT_PIPETTE_ID), - ], - } - - vi.mocked(getCommands).mockResolvedValue({ - data: mockCommandsWithPickUpTip, - } as any) - - const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) - expect(result.length).toBe(2) - expect(result[0].mount).toEqual(LEFT) - expect(result[1].mount).toEqual(RIGHT) - }) - - it('does not return otherwise legitimate failed tip exchange commands if fixit intent tip commands are present and successful', async () => { - const mockCommandsWithFixit = { - ...mockCommands, - data: [ - ...mockCommands.data, - { - ...createMockCommand( - DROP_TIP_IN_PLACE, - 'fixit-drop', - LEFT_PIPETTE_ID - ), - intent: FIXIT_INTENT, - }, - ], - } - - vi.mocked(getCommands).mockResolvedValue({ - data: mockCommandsWithFixit, - } as any) - - const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) - expect(result).toEqual([]) - }) - - it('considers a tip attached only if the last tip exchange command was pickUpTip', async () => { - const mockCommandsWithPickUpTip = { - ...mockCommands, - data: [ - ...mockCommands.data, - createMockCommand(PICK_UP_TIP, 'pickup-left-2', LEFT_PIPETTE_ID), - ], - } - - vi.mocked(getCommands).mockResolvedValue({ - data: mockCommandsWithPickUpTip, - } as any) - - const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) - expect(result).toEqual([mockAttachedInstruments.data[0]]) - }) - - it('returns all valid attached pipettes when an error occurs', async () => { - vi.mocked(getCommands).mockRejectedValueOnce( - new Error('Example network error') - ) - - const result = await getPipettesWithTipAttached(DEFAULT_PARAMS) - - expect(result).toEqual([LEFT_PIPETTE, RIGHT_PIPETTE]) - }) - - it('filters out not ok pipettes', async () => { - vi.mocked(getCommands).mockRejectedValueOnce(new Error('Network error')) - - const mockInvalidPipettes = { - data: [ - LEFT_PIPETTE, - { - ...RIGHT_PIPETTE, - ok: false, - }, - ], - meta: { cursor: 0, totalLength: 2 }, - } - - const params = { - ...DEFAULT_PARAMS, - attachedInstruments: mockInvalidPipettes as any, - } - - const result = await getPipettesWithTipAttached(params) - - expect(result).toEqual([ - { - mount: LEFT, - state: { tipDetected: true }, - instrumentType: 'pipette', - ok: true, - }, - ]) - }) -}) diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts deleted file mode 100644 index b710ba5a810..00000000000 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/getPipettesWithTipAttached.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { getCommands } from '@opentrons/api-client' -import { LEFT } from '@opentrons/shared-data' - -import type { - HostConfig, - PipetteData, - Run, - CommandsData, - RunCommandSummary, - Instruments, -} from '@opentrons/api-client' -import type { - LoadedPipette, - PipettingRunTimeCommand, -} from '@opentrons/shared-data' - -export interface GetPipettesWithTipAttached { - host: HostConfig | null - runId: string - attachedInstruments: Instruments | null - runRecord: Run | null -} - -export function getPipettesWithTipAttached({ - host, - runId, - attachedInstruments, - runRecord, -}: GetPipettesWithTipAttached): Promise { - if (attachedInstruments == null || runRecord == null) { - return Promise.resolve([]) - } - - return ( - getCommandsExecutedDuringRun(host as HostConfig, runId) - .then(executedCmdData => - checkPipettesForAttachedTips( - executedCmdData.data, - runRecord.data.pipettes, - attachedInstruments.data as PipetteData[] - ) - ) - // If any network error occurs, return all attached pipettes as having tips attached for safety reasons. - .catch(() => Promise.resolve(getPipettesDataFrom(attachedInstruments))) - ) -} - -function getCommandsExecutedDuringRun( - host: HostConfig, - runId: string -): Promise { - return getCommands(host, runId, { - cursor: null, - pageLength: 0, - includeFixitCommands: true, - }).then(response => { - const { totalLength } = response.data.meta - return getCommands(host, runId, { - cursor: 0, - pageLength: totalLength, - includeFixitCommands: null, - }).then(response => response.data) - }) -} - -const TIP_EXCHANGE_COMMAND_TYPES = [ - 'dropTip', - 'dropTipInPlace', - 'pickUpTip', - 'moveToAddressableAreaForDropTip', -] - -function checkPipettesForAttachedTips( - commands: RunCommandSummary[], - pipettesUsedInRun: LoadedPipette[], - attachedPipettes: PipetteData[] -): PipetteData[] { - let pipettesWithUnknownTipStatus = pipettesUsedInRun - const mountsWithTipAttached: Array = [] - - // Iterate backwards through commands, finding first tip exchange command for each pipette. - // If there's a chance the tip is still attached, flag the pipette. - for (let i = commands.length - 1; i >= 0; i--) { - if (pipettesWithUnknownTipStatus.length === 0) { - break - } - - const commandType = commands[i].commandType - const pipetteUsedInCommand = (commands[i] as PipettingRunTimeCommand).params - .pipetteId - const isTipExchangeCommand = TIP_EXCHANGE_COMMAND_TYPES.includes( - commandType - ) - const pipetteUsedInCommandWithUnknownTipStatus = - pipettesWithUnknownTipStatus.find( - pipette => pipette.id === pipetteUsedInCommand - ) ?? null - - // If the currently iterated command is a fixit command, we can safely assume the user - // had the option to fix pipettes with tips in this command and all commands - // earlier in the run, during Error Recovery flows. - if ( - commands[i].intent === 'fixit' && - isTipExchangeCommand && - commands[i].status === 'succeeded' - ) { - break - } - - if ( - isTipExchangeCommand && - pipetteUsedInCommandWithUnknownTipStatus != null - ) { - const tipPossiblyAttached = - commands[i].status !== 'succeeded' || commandType === 'pickUpTip' - - if (tipPossiblyAttached) { - mountsWithTipAttached.push( - pipetteUsedInCommandWithUnknownTipStatus.mount - ) - } - pipettesWithUnknownTipStatus = pipettesWithUnknownTipStatus.filter( - pipette => pipette.id !== pipetteUsedInCommand - ) - } - } - - // Convert the array of mounts with attached tips to PipetteData with attached tips. - const pipettesWithTipAttached = attachedPipettes.filter( - attachedPipette => - mountsWithTipAttached.includes(attachedPipette.mount) && - attachedPipette.ok - ) - - // Preferentially assign the left mount as the first element. - if ( - pipettesWithTipAttached.length === 2 && - pipettesWithTipAttached[1].mount === LEFT - ) { - ;[pipettesWithTipAttached[0], pipettesWithTipAttached[1]] = [ - pipettesWithTipAttached[1], - pipettesWithTipAttached[0], - ] - } - - return pipettesWithTipAttached -} - -function getPipettesDataFrom( - attachedInstruments: Instruments | null -): PipetteData[] { - return attachedInstruments != null - ? (attachedInstruments.data.filter( - instrument => instrument.instrumentType === 'pipette' && instrument.ok - ) as PipetteData[]) - : [] -} diff --git a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/index.ts b/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/index.ts deleted file mode 100644 index 99d4ea9abd8..00000000000 --- a/app/src/organisms/DropTipWizardFlows/hooks/useTipAttachmentStatus/index.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { useState, useCallback } from 'react' -import head from 'lodash/head' - -import { useInstrumentsQuery } from '@opentrons/react-api-client' -import { getPipetteModelSpecs } from '@opentrons/shared-data' - -import { getPipettesWithTipAttached } from './getPipettesWithTipAttached' - -import type { Mount } from '@opentrons/api-client' -import type { PipetteModelSpecs } from '@opentrons/shared-data' -import type { GetPipettesWithTipAttached } from './getPipettesWithTipAttached' - -const INSTRUMENTS_POLL_MS = 5000 - -export interface PipetteWithTip { - mount: Mount - specs: PipetteModelSpecs -} - -export interface TipAttachmentStatusResult { - /** Updates the pipettes with tip cache. Determine whether tips are likely attached on one or more pipettes. - * - * NOTE: Use responsibly! This function can potentially (but not likely) iterate over the entire length of a protocol run. - * */ - determineTipStatus: () => Promise - /* Whether tips are likely attached on *any* pipette. Typically called after determineTipStatus() */ - areTipsAttached: boolean - /* Resets the cached pipettes with tip statuses to null. */ - resetTipStatus: () => void - /** Removes the first element from the tip attached cache if present. - * @param {Function} onEmptyCache After removing the pipette from the cache, if the attached tip cache is empty, invoke this callback. - * @param {Function} onTipsDetected After removing the pipette from the cache, if the attached tip cache is not empty, invoke this callback. - * */ - setTipStatusResolved: ( - onEmptyCache?: () => void, - onTipsDetected?: () => void - ) => Promise - /* Relevant pipette information for a pipette with a tip attached. If both pipettes have tips attached, return the left pipette. */ - aPipetteWithTip: PipetteWithTip | null - /* The initial number of pipettes with tips. Null if there has been no tip check yet. */ - initialPipettesWithTipsCount: number | null -} - -// Returns various utilities for interacting with the cache of pipettes with tips attached. -export function useTipAttachmentStatus( - params: Omit -): TipAttachmentStatusResult { - const [pipettesWithTip, setPipettesWithTip] = useState([]) - const [initialPipettesCount, setInitialPipettesCount] = useState< - number | null - >(null) - const { data: attachedInstruments } = useInstrumentsQuery({ - refetchInterval: INSTRUMENTS_POLL_MS, - }) - - const aPipetteWithTip = head(pipettesWithTip) ?? null - const areTipsAttached = - pipettesWithTip.length > 0 && head(pipettesWithTip)?.specs != null - - const determineTipStatus = useCallback((): Promise => { - return getPipettesWithTipAttached({ - ...params, - attachedInstruments: attachedInstruments ?? null, - }).then(pipettesWithTip => { - const pipettesWithTipsData = pipettesWithTip.map(pipette => { - const specs = getPipetteModelSpecs(pipette.instrumentModel) - return { - specs, - mount: pipette.mount, - } - }) - const pipettesWithTipAndSpecs = pipettesWithTipsData.filter( - pipette => pipette.specs != null - ) as PipetteWithTip[] - - setPipettesWithTip(pipettesWithTipAndSpecs) - // Set only once. - if (initialPipettesCount === null) { - setInitialPipettesCount(pipettesWithTipAndSpecs.length) - } - - return Promise.resolve(pipettesWithTipAndSpecs) - }) - }, [params]) - - const resetTipStatus = (): void => { - setPipettesWithTip([]) - setInitialPipettesCount(null) - } - - const setTipStatusResolved = ( - onEmptyCache?: () => void, - onTipsDetected?: () => void - ): Promise => { - return new Promise(resolve => { - setPipettesWithTip(prevPipettesWithTip => { - const newState = [...prevPipettesWithTip.slice(1)] - if (newState.length === 0) { - onEmptyCache?.() - } else { - onTipsDetected?.() - } - - resolve(newState[0]) - return newState - }) - }) - } - - return { - areTipsAttached, - determineTipStatus, - resetTipStatus, - aPipetteWithTip, - setTipStatusResolved, - initialPipettesWithTipsCount: initialPipettesCount, - } -} diff --git a/app/src/organisms/DropTipWizardFlows/index.ts b/app/src/organisms/DropTipWizardFlows/index.ts index 1b53f36e5c8..05a16f92e49 100644 --- a/app/src/organisms/DropTipWizardFlows/index.ts +++ b/app/src/organisms/DropTipWizardFlows/index.ts @@ -1,6 +1,4 @@ export * from './DropTipWizardFlows' -export { useTipAttachmentStatus } from './hooks' export * from './TipsAttachedModal' -export type { TipAttachmentStatusResult, PipetteWithTip } from './hooks' export type { FixitCommandTypeUtils } from './types' diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx index 57eef74d2d6..1609acfa0ca 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx @@ -24,10 +24,8 @@ import { DT_ROUTES } from '/app/organisms/DropTipWizardFlows/constants' import { SelectRecoveryOption } from './SelectRecoveryOption' import type { RecoveryContentProps, RecoveryRoute, RouteStep } from '../types' -import type { - FixitCommandTypeUtils, - PipetteWithTip, -} from '/app/organisms/DropTipWizardFlows' +import type { FixitCommandTypeUtils } from '/app/organisms/DropTipWizardFlows' +import type { PipetteWithTip } from '/app/resources/instruments' // The Drop Tip flow entry point. Includes entry from SelectRecoveryOption and CancelRun. export function ManageTips(props: RecoveryContentProps): JSX.Element { diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx index c44252e2da9..59888c39c42 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx @@ -20,7 +20,7 @@ import { import { RecoverySingleColumnContentWrapper } from '../shared' import type { ErrorKind, RecoveryContentProps, RecoveryRoute } from '../types' -import type { PipetteWithTip } from '/app/organisms/DropTipWizardFlows' +import type { PipetteWithTip } from '/app/resources/instruments' // The "home" route within Error Recovery. When a user completes a non-terminal flow or presses "Go back" enough // to escape the boundaries of any route, they will be redirected here. diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts index 0a12b59d089..8db4af030ea 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryTipStatus.ts @@ -1,9 +1,9 @@ import { useState } from 'react' import head from 'lodash/head' -import { useHost, useRunCurrentState } from '@opentrons/react-api-client' +import { useRunCurrentState } from '@opentrons/react-api-client' import { getPipetteModelSpecs } from '@opentrons/shared-data' -import { useTipAttachmentStatus } from '/app/organisms/DropTipWizardFlows' +import { useTipAttachmentStatus } from '/app/resources/instruments' import { ERROR_KINDS } from '/app/organisms/ErrorRecoveryFlows/constants' import { getErrorKind } from '/app/organisms/ErrorRecoveryFlows/utils' @@ -11,7 +11,7 @@ import type { Run, Instruments, PipetteData } from '@opentrons/api-client' import type { PipetteWithTip, TipAttachmentStatusResult, -} from '/app/organisms/DropTipWizardFlows' +} from '/app/resources/instruments' import type { ERUtilsProps } from '/app/organisms/ErrorRecoveryFlows/hooks/useERUtils' interface UseRecoveryTipStatusProps { @@ -38,11 +38,9 @@ export function useRecoveryTipStatus( failedCommandPipette, setFailedCommandPipette, ] = useState(null) - const host = useHost() const tipAttachmentStatusUtils = useTipAttachmentStatus({ ...props, - host, runRecord: props.runRecord ?? null, }) diff --git a/app/src/pages/ODD/RunSummary/index.tsx b/app/src/pages/ODD/RunSummary/index.tsx index ce7fd3c0ef6..98a53f591d4 100644 --- a/app/src/pages/ODD/RunSummary/index.tsx +++ b/app/src/pages/ODD/RunSummary/index.tsx @@ -67,15 +67,13 @@ import { EMPTY_TIMESTAMP, useCurrentRunCommands, } from '/app/resources/runs' -import { - useTipAttachmentStatus, - handleTipsAttachedModal, -} from '/app/organisms/DropTipWizardFlows' +import { handleTipsAttachedModal } from '/app/organisms/DropTipWizardFlows' import { lastRunCommandPromptedErrorRecovery } from '/app/local-resources/commands' +import { useTipAttachmentStatus } from '/app/resources/instruments' import type { IconName } from '@opentrons/components' import type { OnDeviceRouteParams } from '/app/App/types' -import type { PipetteWithTip } from '/app/organisms/DropTipWizardFlows' +import type { PipetteWithTip } from '/app/resources/instruments' export function RunSummary(): JSX.Element { const { runId } = useParams< @@ -236,7 +234,6 @@ export function RunSummary(): JSX.Element { } = useTipAttachmentStatus({ runId, runRecord: runRecord ?? null, - host, }) // Determine tip status on initial render only. Error Recovery always handles tip status, so don't show it twice. diff --git a/app/src/resources/instruments/__tests__/useTipAttachmentStatus.test.ts b/app/src/resources/instruments/__tests__/useTipAttachmentStatus.test.ts new file mode 100644 index 00000000000..6d0de5c6d05 --- /dev/null +++ b/app/src/resources/instruments/__tests__/useTipAttachmentStatus.test.ts @@ -0,0 +1,277 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { act, renderHook, waitFor } from '@testing-library/react' + +import { + getCommands, + getInstruments, + getRunCurrentState, +} from '@opentrons/api-client' +import { getPipetteModelSpecs } from '@opentrons/shared-data' +import { useHost } from '@opentrons/react-api-client' + +import { mockPipetteInfo } from '/app/redux/pipettes/__fixtures__' +import { useTipAttachmentStatus } from '../useTipAttachmentStatus' + +import type { PipetteModelSpecs } from '@opentrons/shared-data' +import type { PipetteData } from '@opentrons/api-client' + +vi.mock('@opentrons/shared-data', async importOriginal => { + const actual = await importOriginal() + return { + ...actual, + getPipetteModelSpecs: vi.fn(), + } +}) +vi.mock('@opentrons/api-client') +vi.mock('@opentrons/react-api-client') + +const MOCK_HOST = { ip: '1.2.3.4', port: 31950 } as any +const MOCK_RUN_ID = 'run-123' + +const MOCK_ACTUAL_PIPETTE = { + ...mockPipetteInfo.pipetteSpecs, + model: 'model', + tipLength: { + value: 20, + }, +} as PipetteModelSpecs + +const mockPipetteData: PipetteData = { + mount: 'left', + instrumentType: 'pipette', + instrumentModel: 'p1000_single_v3.6', + ok: true, +} as any + +const mockSecondPipetteData: PipetteData = { + ...mockPipetteData, + mount: 'right', +} + +const mockRunRecord = { + data: { + pipettes: [ + { id: 'pipette-1', mount: 'left' }, + { id: 'pipette-2', mount: 'right' }, + ], + }, +} as any + +const mockTipStates = { + 'pipette-1': { hasTip: true }, + 'pipette-2': { hasTip: true }, +} + +describe('useTipAttachmentStatus', () => { + beforeEach(() => { + vi.mocked(useHost).mockReturnValue(MOCK_HOST) + vi.mocked(getPipetteModelSpecs).mockReturnValue(MOCK_ACTUAL_PIPETTE) + + vi.mocked(getInstruments).mockResolvedValue({ + data: { data: [mockPipetteData, mockSecondPipetteData] }, + } as any) + + vi.mocked(getRunCurrentState).mockResolvedValue({ + data: { data: { tipStates: mockTipStates } }, + } as any) + + vi.mocked(getCommands).mockResolvedValue({ + data: { data: [{ commandType: 'mockType' }] }, + } as any) + }) + + const renderTipAttachmentStatus = () => { + return renderHook(() => + useTipAttachmentStatus({ + runId: MOCK_RUN_ID, + runRecord: mockRunRecord, + }) + ) + } + + it('should return the correct initial state', async () => { + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + expect(result.current.areTipsAttached).toBe(false) + expect(result.current.aPipetteWithTip).toEqual(null) + expect(result.current.initialPipettesWithTipsCount).toEqual(null) + }) + + it('should determine tip status and update state accordingly', async () => { + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + expect(result.current.areTipsAttached).toBe(true) + expect(result.current.aPipetteWithTip).toMatchObject({ + mount: 'left', + specs: MOCK_ACTUAL_PIPETTE, + }) + expect(result.current.initialPipettesWithTipsCount).toBe(2) + }) + + it('should handle network errors', async () => { + vi.mocked(getInstruments).mockRejectedValueOnce(new Error('Error')) + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + expect(result.current.areTipsAttached).toBe(false) + expect(result.current.aPipetteWithTip).toBeNull() + }) + + it('should reset tip status', async () => { + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + act(() => { + result.current.resetTipStatus() + }) + + expect(result.current.areTipsAttached).toBe(false) + expect(result.current.aPipetteWithTip).toEqual(null) + expect(result.current.initialPipettesWithTipsCount).toEqual(null) + }) + + it('should set tip status resolved and a state', async () => { + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + expect(result.current.aPipetteWithTip).toMatchObject({ + mount: 'left', + specs: MOCK_ACTUAL_PIPETTE, + }) + + act(() => { + result.current.setTipStatusResolved() + }) + + await waitFor(() => + expect(result.current.aPipetteWithTip?.mount).toBe('right') + ) + }) + + it('should call onEmptyCache callback when cache becomes empty', async () => { + vi.mocked(getRunCurrentState).mockResolvedValueOnce({ + data: { + data: { + tipStates: { + 'pipette-1': { hasTip: true }, + 'pipette-2': { hasTip: false }, + }, + }, + }, + } as any) + + const onEmptyCacheMock = vi.fn() + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + expect(result.current.aPipetteWithTip).toMatchObject({ + mount: 'left', + specs: MOCK_ACTUAL_PIPETTE, + }) + + act(() => { + result.current.setTipStatusResolved(onEmptyCacheMock) + }) + + await waitFor(() => { + expect(onEmptyCacheMock).toHaveBeenCalled() + }) + }) + + it('should handle tipPhysicallyMissing error by assuming tip is attached', async () => { + vi.mocked(getCommands).mockResolvedValueOnce({ + data: { + data: [ + { + error: { + errorType: 'tipPhysicallyMissing', + }, + }, + ], + }, + } as any) + + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + expect(result.current.areTipsAttached).toBe(true) + }) + + it('should call onTipsDetected callback when tips remain after resolution', async () => { + const onTipsDetectedMock = vi.fn() + const { result } = renderTipAttachmentStatus() + + await waitFor(() => { + expect(result.current).toBeDefined() + }) + + await act(async () => { + await result.current.determineTipStatus() + }) + + expect(result.current.aPipetteWithTip).toMatchObject({ + mount: 'left', + specs: MOCK_ACTUAL_PIPETTE, + }) + + act(() => { + result.current.setTipStatusResolved(undefined, onTipsDetectedMock) + }) + + await waitFor(() => { + expect(onTipsDetectedMock).toHaveBeenCalled() + }) + + expect(result.current.aPipetteWithTip).toMatchObject({ + mount: 'right', + specs: MOCK_ACTUAL_PIPETTE, + }) + }) +}) diff --git a/app/src/resources/instruments/index.ts b/app/src/resources/instruments/index.ts index 16fae1ecad8..d88a2c7215f 100644 --- a/app/src/resources/instruments/index.ts +++ b/app/src/resources/instruments/index.ts @@ -1,3 +1,4 @@ export * from './useAttachedPipettes' export * from './useAttachedPipetteCalibrations' export * from './useAttachedPipettesFromInstrumentsQuery' +export * from './useTipAttachmentStatus' diff --git a/app/src/resources/instruments/useTipAttachmentStatus.ts b/app/src/resources/instruments/useTipAttachmentStatus.ts new file mode 100644 index 00000000000..ee0d6449ea6 --- /dev/null +++ b/app/src/resources/instruments/useTipAttachmentStatus.ts @@ -0,0 +1,235 @@ +import { useState, useCallback } from 'react' +import head from 'lodash/head' + +import { useHost } from '@opentrons/react-api-client' +import { + getCommands, + getInstruments, + getRunCurrentState, +} from '@opentrons/api-client' +import { getPipetteModelSpecs } from '@opentrons/shared-data' + +import type { + HostConfig, + Mount, + PipetteData, + Run, + RunCommandSummary, +} from '@opentrons/api-client' +import type { PipetteModelSpecs } from '@opentrons/shared-data' + +export interface PipetteWithTip { + mount: Mount + specs: PipetteModelSpecs +} + +export interface PipetteTipState { + specs: PipetteModelSpecs | null + mount: Mount + hasTip: boolean +} + +export interface TipAttachmentStatusParams { + runId: string + runRecord: Run | null +} + +export interface TipAttachmentStatusResult { + /** Updates the pipettes with tip cache. Determine whether tips are likely attached on one or more pipettes, assuming + * tips are attached when there's uncertainty. + * + * NOTE: This function makes a few network requests on each invocation! + * */ + determineTipStatus: () => Promise + /* Whether tips are likely attached on *any* pipette. Typically called after determineTipStatus() */ + areTipsAttached: boolean + /* Resets the cached pipettes with tip statuses to null. */ + resetTipStatus: () => void + /** Removes the first element from the tip attached cache if present. + * @param {Function} onEmptyCache After removing the pipette from the cache, if the attached tip cache is empty, invoke this callback. + * @param {Function} onTipsDetected After removing the pipette from the cache, if the attached tip cache is not empty, invoke this callback. + * */ + setTipStatusResolved: ( + onEmptyCache?: () => void, + onTipsDetected?: () => void + ) => Promise + /* Relevant pipette information for a pipette with a tip attached. If both pipettes have tips attached, return the left pipette. */ + aPipetteWithTip: PipetteWithTip | null + /* The initial number of pipettes with tips. Null if there has been no tip check yet. */ + initialPipettesWithTipsCount: number | null +} + +// Returns various utilities for interacting with the cache of pipettes with tips attached. +export function useTipAttachmentStatus( + params: TipAttachmentStatusParams +): TipAttachmentStatusResult { + const { runId, runRecord } = params + const host = useHost() + const [pipettesWithTip, setPipettesWithTip] = useState([]) + const [initialPipettesCount, setInitialPipettesCount] = useState< + number | null + >(null) + + const aPipetteWithTip = head(pipettesWithTip) ?? null + const areTipsAttached = + pipettesWithTip.length > 0 && head(pipettesWithTip)?.specs != null + + const determineTipStatus = useCallback((): Promise => { + return Promise.all([ + getInstruments(host as HostConfig), + getRunCurrentState(host as HostConfig, runId), + getCommands(host as HostConfig, runId, { + includeFixitCommands: false, + pageLength: 1, + cursor: null, + }), + ]) + .then(([attachedInstruments, currentState, commandsData]) => { + const { tipStates } = currentState.data.data + + const pipetteInfo = validatePipetteInfo( + attachedInstruments?.data.data as PipetteData[] + ) + + const pipetteInfoById = createPipetteInfoById(runRecord, pipetteInfo) + const pipettesWithTipsData = getPipettesWithTipsData( + // eslint-disable-next-line + tipStates, + pipetteInfoById, + commandsData.data.data as RunCommandSummary[] + ) + const pipettesWithTipAndSpecs = filterPipettesWithTips( + pipettesWithTipsData + ) + + setPipettesWithTip(pipettesWithTipAndSpecs) + + if (initialPipettesCount === null) { + setInitialPipettesCount(pipettesWithTipAndSpecs.length) + } + + return Promise.resolve(pipettesWithTipAndSpecs) + }) + .catch(e => { + console.error(`Error during tip status check: ${e.message}`) + return Promise.resolve([]) + }) + }, [host, initialPipettesCount, runId, runRecord]) + + const resetTipStatus = (): void => { + setPipettesWithTip([]) + setInitialPipettesCount(null) + } + + const setTipStatusResolved = ( + onEmptyCache?: () => void, + onTipsDetected?: () => void + ): Promise => { + return new Promise(resolve => { + setPipettesWithTip(prevPipettesWithTip => { + const newState = [...prevPipettesWithTip.slice(1)] + if (newState.length === 0) { + onEmptyCache?.() + } else { + onTipsDetected?.() + } + + resolve(newState[0]) + return newState + }) + }) + } + + return { + areTipsAttached, + determineTipStatus, + resetTipStatus, + aPipetteWithTip, + setTipStatusResolved, + initialPipettesWithTipsCount: initialPipettesCount, + } +} + +// Return good pipettes from instrument data. +const validatePipetteInfo = ( + attachedInstruments: PipetteData[] | null +): PipetteData[] => { + const goodPipetteInfo = + attachedInstruments?.filter( + instr => instr.instrumentType === 'pipette' && instr.ok + ) ?? null + + if (goodPipetteInfo == null) { + throw new Error( + 'Attached instrument pipettes differ from current state pipettes.' + ) + } + + return goodPipetteInfo +} + +// Associate pipette info with a pipette id. +const createPipetteInfoById = ( + runRecord: Run | null, + pipetteInfo: PipetteData[] +): Record => { + const pipetteInfoById: Record = {} + + runRecord?.data.pipettes.forEach(p => { + const pipetteInfoForThisPipette = pipetteInfo.find( + goodPipette => p.mount === goodPipette.mount + ) + if (pipetteInfoForThisPipette != null) { + pipetteInfoById[p.id] = pipetteInfoForThisPipette + } + }) + + return pipetteInfoById +} + +const getPipettesWithTipsData = ( + tipStates: Record, + pipetteInfoById: Record, + commands: RunCommandSummary[] +): PipetteTipState[] => { + return Object.entries(tipStates).map(([pipetteId, tipInfo]) => { + const pipetteInfo = pipetteInfoById[pipetteId] + const specs = getPipetteModelSpecs(pipetteInfo.instrumentModel) + return { + specs, + mount: pipetteInfo.mount, + hasTip: getMightHaveTipGivenCommands(Boolean(tipInfo.hasTip), commands), + } + }) +} + +const PICK_UP_TIP_COMMAND_TYPES: Array = [ + 'pickUpTip', +] as const + +// Sometimes, the robot and the tip status util have different ideas of when tips are attached. +// For example, if a pickUpTip command fails, the robot does not think a tip is attached. However, we want to be +// conservative and prompt drop tip wizard in case there are tips attached unexpectedly. +const getMightHaveTipGivenCommands = ( + hasTip: boolean, + commands: RunCommandSummary[] +): boolean => { + const lastRunProtocolCommand = commands[commands.length - 1] + + if ( + PICK_UP_TIP_COMMAND_TYPES.includes(lastRunProtocolCommand.commandType) || + lastRunProtocolCommand?.error?.errorType === 'tipPhysicallyMissing' + ) { + return true + } else { + return hasTip + } +} + +const filterPipettesWithTips = ( + pipettesWithTipsData: PipetteTipState[] +): PipetteWithTip[] => { + return pipettesWithTipsData.filter( + pipette => pipette.specs != null && pipette.hasTip + ) as PipetteWithTip[] +} From 02a57a12519da1710516da8394480578ac4c1575 Mon Sep 17 00:00:00 2001 From: Caila Marashaj <98041399+caila-marashaj@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:21:58 -0500 Subject: [PATCH 089/220] feat(api): disable pressure sensor capabilities for PEEK pipettes (#16921) --- .../backends/flex_protocol.py | 8 + .../backends/ot3controller.py | 26 +- .../opentrons/hardware_control/dev_types.py | 2 + api/src/opentrons/hardware_control/ot3api.py | 23 ++ .../protocol_api/core/engine/instrument.py | 15 + .../opentrons/protocol_api/core/instrument.py | 4 + .../core/legacy/legacy_instrument_core.py | 3 + .../legacy_instrument_core.py | 3 + .../protocol_api/instrument_context.py | 14 +- .../protocol_engine/commands/liquid_probe.py | 9 + .../resources/pipette_data_provider.py | 9 + .../protocol_engine/state/pipettes.py | 9 + .../backends/test_ot3_controller.py | 38 +++ .../protocol_api/test_instrument_context.py | 2 +- .../commands/test_configure_for_volume.py | 13 +- .../commands/test_liquid_probe.py | 273 +++++++++++++++++- .../commands/test_load_pipette.py | 11 + .../execution/test_equipment_handler.py | 10 + .../resources/test_pipette_data_provider.py | 18 ++ .../state/test_geometry_view.py | 10 + .../state/test_pipette_store.py | 13 + .../state/test_pipette_view.py | 27 +- .../protocol_engine/state/test_tip_state.py | 43 ++- 23 files changed, 574 insertions(+), 9 deletions(-) diff --git a/api/src/opentrons/hardware_control/backends/flex_protocol.py b/api/src/opentrons/hardware_control/backends/flex_protocol.py index 8b81d2c66ef..e5bc7ba1905 100644 --- a/api/src/opentrons/hardware_control/backends/flex_protocol.py +++ b/api/src/opentrons/hardware_control/backends/flex_protocol.py @@ -60,6 +60,14 @@ def restore_system_constraints(self) -> AsyncIterator[None]: def grab_pressure(self, channels: int, mount: OT3Mount) -> AsyncIterator[None]: ... + def set_pressure_sensor_available( + self, pipette_axis: Axis, available: bool + ) -> None: + ... + + def get_pressure_sensor_available(self, pipette_axis: Axis) -> bool: + ... + def update_constraints_for_gantry_load(self, gantry_load: GantryLoad) -> None: ... diff --git a/api/src/opentrons/hardware_control/backends/ot3controller.py b/api/src/opentrons/hardware_control/backends/ot3controller.py index 87f886f1c74..a7c30677910 100644 --- a/api/src/opentrons/hardware_control/backends/ot3controller.py +++ b/api/src/opentrons/hardware_control/backends/ot3controller.py @@ -198,6 +198,7 @@ PipetteLiquidNotFoundError, CommunicationError, PythonException, + UnsupportedHardwareCommand, ) from .subsystem_manager import SubsystemManager @@ -363,6 +364,7 @@ def __init__( self._configuration.motion_settings, GantryLoad.LOW_THROUGHPUT ) ) + self._pressure_sensor_available: Dict[NodeId, bool] = {} @asynccontextmanager async def restore_system_constraints(self) -> AsyncIterator[None]: @@ -381,6 +383,16 @@ async def grab_pressure( async with grab_pressure(channels, tool, self._messenger): yield + def set_pressure_sensor_available( + self, pipette_axis: Axis, available: bool + ) -> None: + pip_node = axis_to_node(pipette_axis) + self._pressure_sensor_available[pip_node] = available + + def get_pressure_sensor_available(self, pipette_axis: Axis) -> bool: + pip_node = axis_to_node(pipette_axis) + return self._pressure_sensor_available[pip_node] + def update_constraints_for_calibration_with_gantry_load( self, gantry_load: GantryLoad, @@ -775,7 +787,8 @@ async def _runner_coroutine( for runner, is_gear_move in maybe_runners if runner ] - async with self._monitor_overpressure(pipettes_moving): + checked_moving_pipettes = self._pipettes_to_monitor_pressure(pipettes_moving) + async with self._monitor_overpressure(checked_moving_pipettes): all_positions = await asyncio.gather(*coros) for positions, handle_gear_move in all_positions: @@ -884,7 +897,8 @@ async def home( moving_pipettes = [ axis_to_node(ax) for ax in checked_axes if ax in Axis.pipette_axes() ] - async with self._monitor_overpressure(moving_pipettes): + checked_moving_pipettes = self._pipettes_to_monitor_pressure(moving_pipettes) + async with self._monitor_overpressure(checked_moving_pipettes): positions = await asyncio.gather(*coros) # TODO(CM): default gear motor homing routine to have some acceleration if Axis.Q in checked_axes: @@ -899,6 +913,9 @@ async def home( self._handle_motor_status_response(position) return axis_convert(self._position, 0.0) + def _pipettes_to_monitor_pressure(self, pipettes: List[NodeId]) -> List[NodeId]: + return [pip for pip in pipettes if self._pressure_sensor_available[pip]] + def _filter_move_group(self, move_group: MoveGroup) -> MoveGroup: new_group: MoveGroup = [] for step in move_group: @@ -1486,6 +1503,11 @@ async def liquid_probe( ) -> float: head_node = axis_to_node(Axis.by_mount(mount)) tool = sensor_node_for_pipette(OT3Mount(mount.value)) + if tool not in self._pipettes_to_monitor_pressure([tool]): + raise UnsupportedHardwareCommand( + "Liquid Presence Detection not available on this pipette." + ) + positions = await liquid_probe( messenger=self._messenger, tool=tool, diff --git a/api/src/opentrons/hardware_control/dev_types.py b/api/src/opentrons/hardware_control/dev_types.py index 575a5e612d9..981e95e114e 100644 --- a/api/src/opentrons/hardware_control/dev_types.py +++ b/api/src/opentrons/hardware_control/dev_types.py @@ -20,6 +20,7 @@ PipetteConfigurations, SupportedTipsDefinition, PipetteBoundingBoxOffsetDefinition, + AvailableSensorDefinition, ) from opentrons_shared_data.gripper import ( GripperModel, @@ -102,6 +103,7 @@ class PipetteDict(InstrumentDict): lld_settings: Optional[Dict[str, Dict[str, float]]] plunger_positions: Dict[str, float] shaft_ul_per_mm: float + available_sensors: AvailableSensorDefinition class PipetteStateDict(TypedDict): diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index de2de9ae9ab..af170484150 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -32,6 +32,7 @@ ) from opentrons_shared_data.pipette import ( pipette_load_name_conversions as pipette_load_name, + pipette_definition, ) from opentrons_shared_data.robot.types import RobotType @@ -634,8 +635,13 @@ async def cache_pipette( self._feature_flags.use_old_aspiration_functions, ) self._pipette_handler.hardware_instruments[mount] = p + if self._pipette_handler.has_pipette(mount): self._confirm_pipette_motion_constraints(mount) + + if config is not None: + self._set_pressure_sensor_available(mount, instrument_config=config) + # TODO (lc 12-5-2022) Properly support backwards compatibility # when applicable return skipped @@ -649,6 +655,23 @@ def _confirm_pipette_motion_constraints( mount, self.gantry_load ) + def get_pressure_sensor_available(self, mount: OT3Mount) -> bool: + pip_axis = Axis.of_main_tool_actuator(mount) + return self._backend.get_pressure_sensor_available(pip_axis) + + def _set_pressure_sensor_available( + self, + mount: OT3Mount, + instrument_config: pipette_definition.PipetteConfigurations, + ) -> None: + pressure_sensor_available = ( + "pressure" in instrument_config.available_sensors.sensors + ) + pip_axis = Axis.of_main_tool_actuator(mount) + self._backend.set_pressure_sensor_available( + pipette_axis=pip_axis, available=pressure_sensor_available + ) + async def cache_gripper(self, instrument_data: AttachedGripper) -> bool: """Set up gripper based on scanned information.""" grip_cal = load_gripper_calibration_offset(instrument_data.get("id")) diff --git a/api/src/opentrons/protocol_api/core/engine/instrument.py b/api/src/opentrons/protocol_api/core/engine/instrument.py index 2f172c8cda2..8fc707541f0 100644 --- a/api/src/opentrons/protocol_api/core/engine/instrument.py +++ b/api/src/opentrons/protocol_api/core/engine/instrument.py @@ -32,6 +32,9 @@ from opentrons.protocol_engine.clients import SyncClient as EngineClient from opentrons.protocols.api_support.definitions import MAX_SUPPORTED_VERSION from opentrons_shared_data.pipette.types import PipetteNameType +from opentrons_shared_data.errors.exceptions import ( + UnsupportedHardwareCommand, +) from opentrons.protocol_api._nozzle_layout import NozzleLayout from . import overlap_versions, pipette_movement_conflict @@ -85,6 +88,13 @@ def __init__( self._liquid_presence_detection = bool( self._engine_client.state.pipettes.get_liquid_presence_detection(pipette_id) ) + if ( + self._liquid_presence_detection + and not self._pressure_supported_by_pipette() + ): + raise UnsupportedHardwareCommand( + "Pressure sensor not available for this pipette" + ) @property def pipette_id(self) -> str: @@ -859,6 +869,11 @@ def retract(self) -> None: z_axis = self._engine_client.state.pipettes.get_z_axis(self._pipette_id) self._engine_client.execute_command(cmd.HomeParams(axes=[z_axis])) + def _pressure_supported_by_pipette(self) -> bool: + return self._engine_client.state.pipettes.get_pipette_supports_pressure( + self.pipette_id + ) + def detect_liquid_presence(self, well_core: WellCore, loc: Location) -> bool: labware_id = well_core.labware_id well_name = well_core.get_name() diff --git a/api/src/opentrons/protocol_api/core/instrument.py b/api/src/opentrons/protocol_api/core/instrument.py index d17ab43dd4f..f110bde928d 100644 --- a/api/src/opentrons/protocol_api/core/instrument.py +++ b/api/src/opentrons/protocol_api/core/instrument.py @@ -260,6 +260,10 @@ def get_blow_out_flow_rate(self, rate: float = 1.0) -> float: def get_liquid_presence_detection(self) -> bool: ... + @abstractmethod + def _pressure_supported_by_pipette(self) -> bool: + ... + @abstractmethod def set_liquid_presence_detection(self, enable: bool) -> None: ... diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py index 90a8a05c6da..76d49b40557 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py @@ -586,6 +586,9 @@ def liquid_probe_without_recovery( """This will never be called because it was added in API 2.20.""" assert False, "liquid_probe_without_recovery only supported in API 2.20 & later" + def _pressure_supported_by_pipette(self) -> bool: + return False + def nozzle_configuration_valid_for_lld(self) -> bool: """Check if the nozzle configuration currently supports LLD.""" return False diff --git a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py index 66c33aae511..f55bf05c447 100644 --- a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py @@ -504,6 +504,9 @@ def liquid_probe_without_recovery( """This will never be called because it was added in API 2.20.""" assert False, "liquid_probe_without_recovery only supported in API 2.20 & later" + def _pressure_supported_by_pipette(self) -> bool: + return False + def nozzle_configuration_valid_for_lld(self) -> bool: """Check if the nozzle configuration currently supports LLD.""" return False diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index a8d0a4b5765..7cc2d43bac2 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -6,6 +6,7 @@ CommandPreconditionViolated, CommandParameterLimitViolated, UnexpectedTipRemovalError, + UnsupportedHardwareCommand, ) from opentrons.legacy_broker import LegacyBroker from opentrons.hardware_control.dev_types import PipetteDict @@ -259,6 +260,7 @@ def aspirate( and self._core.nozzle_configuration_valid_for_lld() and self._core.get_current_volume() == 0 ): + self._raise_if_pressure_not_supported_by_pipette() self.require_liquid_presence(well=well) with publisher.publish_context( @@ -1705,6 +1707,8 @@ def liquid_presence_detection(self) -> bool: @liquid_presence_detection.setter @requires_version(2, 20) def liquid_presence_detection(self, enable: bool) -> None: + if enable: + self._raise_if_pressure_not_supported_by_pipette() self._core.set_liquid_presence_detection(enable) @property @@ -2141,6 +2145,7 @@ def detect_liquid_presence(self, well: labware.Well) -> bool: .. note:: The pressure sensors for the Flex 8-channel pipette are on channels 1 and 8 (positions A1 and H1). For the Flex 96-channel pipette, the pressure sensors are on channels 1 and 96 (positions A1 and H12). Other channels on multi-channel pipettes do not have sensors and cannot detect liquid. """ + self._raise_if_pressure_not_supported_by_pipette() loc = well.top() return self._core.detect_liquid_presence(well._core, loc) @@ -2153,6 +2158,7 @@ def require_liquid_presence(self, well: labware.Well) -> None: .. note:: The pressure sensors for the Flex 8-channel pipette are on channels 1 and 8 (positions A1 and H1). For the Flex 96-channel pipette, the pressure sensors are on channels 1 and 96 (positions A1 and H12). Other channels on multi-channel pipettes do not have sensors and cannot detect liquid. """ + self._raise_if_pressure_not_supported_by_pipette() loc = well.top() self._core.liquid_probe_with_recovery(well._core, loc) @@ -2166,7 +2172,7 @@ def measure_liquid_height(self, well: labware.Well) -> float: This is intended for Opentrons internal use only and is not a guaranteed API. """ - + self._raise_if_pressure_not_supported_by_pipette() loc = well.top() height = self._core.liquid_probe_without_recovery(well._core, loc) return height @@ -2187,6 +2193,12 @@ def _raise_if_configuration_not_supported_by_pipette( ) # SINGLE, QUADRANT and ALL are supported by all pipettes + def _raise_if_pressure_not_supported_by_pipette(self) -> None: + if not self._core._pressure_supported_by_pipette(): + raise UnsupportedHardwareCommand( + "Pressure sensor not available for this pipette" + ) + def _handle_aspirate_target( self, target: validation.ValidTarget ) -> tuple[types.Location, Optional[labware.Well], Optional[bool]]: diff --git a/api/src/opentrons/protocol_engine/commands/liquid_probe.py b/api/src/opentrons/protocol_engine/commands/liquid_probe.py index b99e6ac11b1..1bf58e8be26 100644 --- a/api/src/opentrons/protocol_engine/commands/liquid_probe.py +++ b/api/src/opentrons/protocol_engine/commands/liquid_probe.py @@ -17,6 +17,7 @@ from opentrons.types import MountType from opentrons_shared_data.errors.exceptions import ( PipetteLiquidNotFoundError, + UnsupportedHardwareCommand, ) from ..types import DeckPoint @@ -119,6 +120,14 @@ async def _execute_common( pipette_id = params.pipetteId labware_id = params.labwareId well_name = params.wellName + if ( + "pressure" + not in state_view.pipettes.get_config(pipette_id).available_sensors.sensors + ): + raise UnsupportedHardwareCommand( + "Pressure sensor not available for this pipette" + ) + if not state_view.pipettes.get_nozzle_configuration_supports_lld(pipette_id): raise TipNotAttachedError( "Either the front right or back left nozzle must have a tip attached to probe liquid height." diff --git a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py index 6387bf5dcf1..4df6b0d4d77 100644 --- a/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py +++ b/api/src/opentrons/protocol_engine/resources/pipette_data_provider.py @@ -69,6 +69,7 @@ class LoadedStaticPipetteData: pipette_lld_settings: Optional[Dict[str, Dict[str, float]]] plunger_positions: Dict[str, float] shaft_ul_per_mm: float + available_sensors: pipette_definition.AvailableSensorDefinition class VirtualPipetteDataProvider: @@ -290,6 +291,8 @@ def _get_virtual_pipette_static_config_by_model( # noqa: C901 "drop_tip": plunger_positions.drop_tip, }, shaft_ul_per_mm=config.shaft_ul_per_mm, + available_sensors=config.available_sensors + or pipette_definition.AvailableSensorDefinition(sensors=[]), ) def get_virtual_pipette_static_config( @@ -308,6 +311,11 @@ def get_pipette_static_config( """Get the config for a pipette, given the state/config object from the HW API.""" back_left_offset = pipette_dict["pipette_bounding_box_offsets"].back_left_corner front_right_offset = pipette_dict["pipette_bounding_box_offsets"].front_right_corner + available_sensors = ( + pipette_dict["available_sensors"] + if "available_sensors" in pipette_dict.keys() + else pipette_definition.AvailableSensorDefinition(sensors=[]) + ) return LoadedStaticPipetteData( model=pipette_dict["model"], display_name=pipette_dict["display_name"], @@ -339,6 +347,7 @@ def get_pipette_static_config( pipette_lld_settings=pipette_dict["lld_settings"], plunger_positions=pipette_dict["plunger_positions"], shaft_ul_per_mm=pipette_dict["shaft_ul_per_mm"], + available_sensors=available_sensors, ) diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index d20b8665318..6418f50ee90 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -105,6 +105,7 @@ class StaticPipetteConfig: lld_settings: Optional[Dict[str, Dict[str, float]]] plunger_positions: Dict[str, float] shaft_ul_per_mm: float + available_sensors: pipette_definition.AvailableSensorDefinition @dataclasses.dataclass @@ -296,6 +297,7 @@ def _update_pipette_config(self, state_update: update_types.StateUpdate) -> None lld_settings=config.pipette_lld_settings, plunger_positions=config.plunger_positions, shaft_ul_per_mm=config.shaft_ul_per_mm, + available_sensors=config.available_sensors, ) self._state.flow_rates_by_id[ state_update.pipette_config.pipette_id @@ -761,6 +763,13 @@ def get_pipette_bounds_at_specified_move_to_position( pip_front_left_bound, ) + def get_pipette_supports_pressure(self, pipette_id: str) -> bool: + """Return if this pipette supports a pressure sensor.""" + return ( + "pressure" + in self._state.static_config_by_id[pipette_id].available_sensors.sensors + ) + def get_liquid_presence_detection(self, pipette_id: str) -> bool: """Determine if liquid presence detection is enabled for this pipette.""" try: diff --git a/api/tests/opentrons/hardware_control/backends/test_ot3_controller.py b/api/tests/opentrons/hardware_control/backends/test_ot3_controller.py index 1035649b7f5..9c03bed68b2 100644 --- a/api/tests/opentrons/hardware_control/backends/test_ot3_controller.py +++ b/api/tests/opentrons/hardware_control/backends/test_ot3_controller.py @@ -374,6 +374,8 @@ async def test_home_execute( **config ) as mock_runner: present_axes = set(ax for ax in axes if controller.axis_is_present(ax)) + controller.set_pressure_sensor_available(Axis.P_L, True) + controller.set_pressure_sensor_available(Axis.P_R, True) # nothing has been homed assert not controller._motor_status @@ -485,6 +487,8 @@ async def test_home_only_present_devices( homed_position = {} controller._position = starting_position + controller.set_pressure_sensor_available(Axis.P_L, True) + controller.set_pressure_sensor_available(Axis.P_R, True) mock_move_group_run.side_effect = move_group_run_side_effect_home(controller, axes) @@ -729,6 +733,9 @@ async def test_liquid_probe( mock_move_group_run.side_effect = probe_move_group_run_side_effect( head_node, tool_node ) + controller._pipettes_to_monitor_pressure = mock.MagicMock( # type: ignore[method-assign] + return_value=[sensor_node_for_mount(mount)] + ) try: await controller.liquid_probe( mount=mount, @@ -1413,3 +1420,34 @@ async def test_controller_move( assert position == expected_pos assert gear_position == gear_position + + +@pytest.mark.parametrize( + argnames=["axes", "pipette_has_sensor"], + argvalues=[[[Axis.P_L, Axis.P_R], True], [[Axis.P_L, Axis.P_R], False]], +) +async def test_pressure_disable( + controller: OT3Controller, + axes: List[Axis], + mock_present_devices: None, + mock_check_overpressure: None, + pipette_has_sensor: bool, +) -> None: + config = {"run.side_effect": move_group_run_side_effect_home(controller, axes)} + with mock.patch( # type: ignore [call-overload] + "opentrons.hardware_control.backends.ot3controller.MoveGroupRunner", + spec=MoveGroupRunner, + **config + ): + with mock.patch.object(controller, "_monitor_overpressure") as monitor: + controller.set_pressure_sensor_available(Axis.P_L, pipette_has_sensor) + controller.set_pressure_sensor_available(Axis.P_R, True) + + await controller.home(axes, GantryLoad.LOW_THROUGHPUT) + + if pipette_has_sensor: + monitor.assert_called_once_with( + [NodeId.pipette_left, NodeId.pipette_right] + ) + else: + monitor.assert_called_once_with([NodeId.pipette_right]) diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index 8282f660a44..1caae624377 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -85,7 +85,7 @@ def mock_instrument_core(decoy: Decoy) -> InstrumentCore: """Get a mock instrument implementation core.""" instrument_core = decoy.mock(cls=InstrumentCore) decoy.when(instrument_core.get_mount()).then_return(Mount.LEFT) - + decoy.when(instrument_core._pressure_supported_by_pipette()).then_return(True) # we need to add this for the mock of liquid_presence detection to actually work # this replaces the mock with a a property again instrument_core._liquid_presence_detection = False # type: ignore[attr-defined] diff --git a/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py b/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py index 9be08a0a71b..2d8685109ed 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py +++ b/api/tests/opentrons/protocol_engine/commands/test_configure_for_volume.py @@ -22,10 +22,17 @@ ConfigureForVolumeImplementation, ) from opentrons_shared_data.pipette.types import PipetteNameType +from opentrons_shared_data.pipette.pipette_definition import AvailableSensorDefinition from ..pipette_fixtures import get_default_nozzle_map from opentrons.types import Point +@pytest.fixture +def available_sensors() -> AvailableSensorDefinition: + """Provide a list of sensors.""" + return AvailableSensorDefinition(sensors=["pressure", "capacitive", "environment"]) + + @pytest.mark.parametrize( "data", [ @@ -41,7 +48,10 @@ ], ) async def test_configure_for_volume_implementation( - decoy: Decoy, equipment: EquipmentHandler, data: ConfigureForVolumeParams + decoy: Decoy, + equipment: EquipmentHandler, + data: ConfigureForVolumeParams, + available_sensors: AvailableSensorDefinition, ) -> None: """A ConfigureForVolume command should have an execution implementation.""" subject = ConfigureForVolumeImplementation(equipment=equipment) @@ -70,6 +80,7 @@ async def test_configure_for_volume_implementation( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) decoy.when( diff --git a/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py b/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py index ab46c4b03e2..34b979901aa 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py +++ b/api/tests/opentrons/protocol_engine/commands/test_liquid_probe.py @@ -16,9 +16,20 @@ PipetteLiquidNotFoundError, StallOrCollisionDetectedError, ) +from opentrons_shared_data.pipette.pipette_definition import ( + AvailableSensorDefinition, + SupportedTipsDefinition, +) + +from opentrons_shared_data.pipette.types import PipetteNameType from opentrons.protocol_engine.commands.pipetting_common import LiquidNotFoundError from opentrons.protocol_engine.state.state import StateView +from opentrons.protocol_engine.state.pipettes import ( + StaticPipetteConfig, + BoundingNozzlesOffsets, + PipetteBoundingBoxOffsets, +) from opentrons.protocol_engine.state import update_types from opentrons.types import MountType, Point from opentrons.protocol_engine import WellLocation, WellOrigin, WellOffset, DeckPoint @@ -41,6 +52,8 @@ ) from opentrons.protocol_engine.resources.model_utils import ModelUtils +from ..pipette_fixtures import get_default_nozzle_map + EitherImplementationType = Union[ Type[LiquidProbeImplementation], Type[TryLiquidProbeImplementation] ] @@ -49,6 +62,12 @@ EitherResultType = Union[Type[LiquidProbeResult], Type[TryLiquidProbeResult]] +@pytest.fixture +def available_sensors() -> AvailableSensorDefinition: + """Provide a list of sensors.""" + return AvailableSensorDefinition(sensors=["pressure", "capacitive", "environment"]) + + @pytest.fixture( params=[ (LiquidProbeImplementation, LiquidProbeParams, LiquidProbeResult), @@ -108,6 +127,8 @@ async def test_liquid_probe_implementation( params_type: EitherParamsType, result_type: EitherResultType, model_utils: ModelUtils, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should move to the destination and do a liquid probe there.""" location = WellLocation(origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1)) @@ -157,6 +178,41 @@ async def test_liquid_probe_implementation( state_view.pipettes.get_nozzle_configuration_supports_lld("abc") ).then_return(True) + decoy.when(state_view.pipettes.get_config("abc")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) + timestamp = datetime(year=2020, month=1, day=2) decoy.when(model_utils.get_timestamp()).then_return(timestamp) @@ -190,6 +246,8 @@ async def test_liquid_not_found_error( subject: EitherImplementation, params_type: EitherParamsType, model_utils: ModelUtils, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should return a liquid not found error if the hardware API indicates that.""" pipette_id = "pipette-id" @@ -212,7 +270,40 @@ async def test_liquid_not_found_error( ) decoy.when(state_view.pipettes.get_aspirated_volume(pipette_id)).then_return(0) - + decoy.when(state_view.pipettes.get_config("pipette-id")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) decoy.when( await movement.move_to_well( pipette_id=pipette_id, @@ -281,6 +372,8 @@ async def test_liquid_probe_tip_checking( state_view: StateView, subject: EitherImplementation, params_type: EitherParamsType, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should raise a TipNotAttached error if the state view indicates that.""" pipette_id = "pipette-id" @@ -302,6 +395,40 @@ async def test_liquid_probe_tip_checking( decoy.when(state_view.pipettes.get_aspirated_volume(pipette_id)).then_raise( TipNotAttachedError() ) + decoy.when(state_view.pipettes.get_config("pipette-id")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) with pytest.raises(TipNotAttachedError): await subject.execute(data) @@ -311,6 +438,8 @@ async def test_liquid_probe_plunger_preparedness_checking( state_view: StateView, subject: EitherImplementation, params_type: EitherParamsType, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should raise a PipetteNotReadyToAspirate error if the state view indicates that.""" pipette_id = "pipette-id" @@ -329,6 +458,40 @@ async def test_liquid_probe_plunger_preparedness_checking( decoy.when( state_view.pipettes.get_nozzle_configuration_supports_lld(pipette_id) ).then_return(True) + decoy.when(state_view.pipettes.get_config("pipette-id")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) decoy.when(state_view.pipettes.get_aspirated_volume(pipette_id)).then_return(None) with pytest.raises(PipetteNotReadyToAspirateError): await subject.execute(data) @@ -339,6 +502,8 @@ async def test_liquid_probe_volume_checking( state_view: StateView, subject: EitherImplementation, params_type: EitherParamsType, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should return a TipNotEmptyError if the hardware API indicates that.""" pipette_id = "pipette-id" @@ -358,6 +523,40 @@ async def test_liquid_probe_volume_checking( decoy.when( state_view.pipettes.get_aspirated_volume(pipette_id=pipette_id), ).then_return(123) + decoy.when(state_view.pipettes.get_config("pipette-id")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) decoy.when( state_view.pipettes.get_nozzle_configuration_supports_lld(pipette_id) ).then_return(True) @@ -379,6 +578,8 @@ async def test_liquid_probe_location_checking( movement: MovementHandler, subject: EitherImplementation, params_type: EitherParamsType, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should return a PositionUnkownError if the hardware API indicates that.""" pipette_id = "pipette-id" @@ -395,6 +596,40 @@ async def test_liquid_probe_location_checking( wellLocation=well_location, ) decoy.when(state_view.pipettes.get_aspirated_volume(pipette_id)).then_return(0) + decoy.when(state_view.pipettes.get_config("pipette-id")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) decoy.when( await movement.check_for_valid_position( mount=MountType.LEFT, @@ -415,6 +650,8 @@ async def test_liquid_probe_stall( subject: EitherImplementation, params_type: EitherParamsType, model_utils: ModelUtils, + available_sensors: AvailableSensorDefinition, + supported_tip_fixture: SupportedTipsDefinition, ) -> None: """It should move to the destination and do a liquid probe there.""" location = WellLocation(origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1)) @@ -429,6 +666,40 @@ async def test_liquid_probe_stall( decoy.when(state_view.pipettes.get_aspirated_volume(pipette_id="abc")).then_return( 0 ) + decoy.when(state_view.pipettes.get_config("abc")).then_return( + StaticPipetteConfig( + min_volume=1, + max_volume=9001, + channels=1, + model="blah", + display_name="bleh", + serial_number="", + tip_configuration_lookup_table={9001: supported_tip_fixture}, + nominal_tip_overlap={}, + home_position=0, + nozzle_offset_z=0, + bounding_nozzle_offsets=BoundingNozzlesOffsets( + back_left_offset=Point(x=10, y=20, z=30), + front_right_offset=Point(x=40, y=50, z=60), + ), + default_nozzle_map=get_default_nozzle_map(PipetteNameType.P1000_96), + pipette_bounding_box_offsets=PipetteBoundingBoxOffsets( + back_left_corner=Point(x=10, y=20, z=30), + front_right_corner=Point(x=40, y=50, z=60), + front_left_corner=Point(x=10, y=50, z=60), + back_right_corner=Point(x=40, y=20, z=60), + ), + lld_settings={}, + plunger_positions={ + "top": 0.0, + "bottom": 5.0, + "blow_out": 19.0, + "drop_tip": 20.0, + }, + shaft_ul_per_mm=5.0, + available_sensors=available_sensors, + ) + ) decoy.when( state_view.pipettes.get_nozzle_configuration_supports_lld("abc") ).then_return(True) diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py b/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py index 570666e9c98..a251c6aef1f 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py +++ b/api/tests/opentrons/protocol_engine/commands/test_load_pipette.py @@ -10,6 +10,7 @@ from opentrons_shared_data.pipette.types import PipetteNameType from opentrons_shared_data.robot.types import RobotType +from opentrons_shared_data.pipette.pipette_definition import AvailableSensorDefinition from opentrons.types import MountType, Point from opentrons.protocol_engine.errors import InvalidSpecificationForRobotTypeError @@ -28,6 +29,12 @@ from ..pipette_fixtures import get_default_nozzle_map +@pytest.fixture +def available_sensors() -> AvailableSensorDefinition: + """Provide a list of sensors.""" + return AvailableSensorDefinition(sensors=["pressure", "capacitive", "environment"]) + + @pytest.mark.parametrize( "data", [ @@ -49,6 +56,7 @@ async def test_load_pipette_implementation( equipment: EquipmentHandler, state_view: StateView, data: LoadPipetteParams, + available_sensors: AvailableSensorDefinition, ) -> None: """A LoadPipette command should have an execution implementation.""" subject = LoadPipetteImplementation(equipment=equipment, state_view=state_view) @@ -76,6 +84,7 @@ async def test_load_pipette_implementation( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) decoy.when( @@ -118,6 +127,7 @@ async def test_load_pipette_implementation_96_channel( decoy: Decoy, equipment: EquipmentHandler, state_view: StateView, + available_sensors: AvailableSensorDefinition, ) -> None: """A LoadPipette command should have an execution implementation.""" subject = LoadPipetteImplementation(equipment=equipment, state_view=state_view) @@ -151,6 +161,7 @@ async def test_load_pipette_implementation_96_channel( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) decoy.when( diff --git a/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py b/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py index 3ee027c24c1..39208184754 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py +++ b/api/tests/opentrons/protocol_engine/execution/test_equipment_handler.py @@ -69,6 +69,14 @@ def _make_config(use_virtual_modules: bool) -> Config: ) +@pytest.fixture +def available_sensors() -> pipette_definition.AvailableSensorDefinition: + """Provide a list of sensors.""" + return pipette_definition.AvailableSensorDefinition( + sensors=["pressure", "capacitive", "environment"] + ) + + @pytest.fixture(autouse=True) def patch_mock_pipette_data_provider( decoy: Decoy, @@ -133,6 +141,7 @@ def tip_overlap_versions(request: SubRequest) -> str: def loaded_static_pipette_data( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, target_tip_overlap_data: Dict[str, float], + available_sensors: pipette_definition.AvailableSensorDefinition, ) -> LoadedStaticPipetteData: """Get a pipette config data value object.""" return LoadedStaticPipetteData( @@ -161,6 +170,7 @@ def loaded_static_pipette_data( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) diff --git a/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py b/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py index cbf7fa6174e..ae3d78d2230 100644 --- a/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py +++ b/api/tests/opentrons/protocol_engine/resources/test_pipette_data_provider.py @@ -7,6 +7,7 @@ from opentrons_shared_data.pipette.pipette_definition import ( PipetteBoundingBoxOffsetDefinition, TIP_OVERLAP_VERSION_MAXIMUM, + AvailableSensorDefinition, ) from opentrons.hardware_control.dev_types import PipetteDict @@ -24,6 +25,12 @@ from opentrons.types import Point +@pytest.fixture +def available_sensors() -> AvailableSensorDefinition: + """Provide a list of sensors.""" + return AvailableSensorDefinition(sensors=["pressure", "capacitive", "environment"]) + + @pytest.fixture def subject_instance() -> VirtualPipetteDataProvider: """Instance of a VirtualPipetteDataProvider for test.""" @@ -32,6 +39,7 @@ def subject_instance() -> VirtualPipetteDataProvider: def test_get_virtual_pipette_static_config( subject_instance: VirtualPipetteDataProvider, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return config data given a pipette name.""" result = subject_instance.get_virtual_pipette_static_config( @@ -72,11 +80,13 @@ def test_get_virtual_pipette_static_config( "drop_tip": -27.0, }, shaft_ul_per_mm=0.785, + available_sensors=AvailableSensorDefinition(sensors=[]), ) def test_configure_virtual_pipette_for_volume( subject_instance: VirtualPipetteDataProvider, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return an updated config if the liquid class changes.""" result1 = subject_instance.get_virtual_pipette_static_config( @@ -108,6 +118,7 @@ def test_configure_virtual_pipette_for_volume( "drop_tip": 90.5, }, shaft_ul_per_mm=0.785, + available_sensors=available_sensors, ) subject_instance.configure_virtual_pipette_for_volume( "my-pipette", 1, result1.model @@ -141,11 +152,13 @@ def test_configure_virtual_pipette_for_volume( "drop_tip": 90.5, }, shaft_ul_per_mm=0.785, + available_sensors=available_sensors, ) def test_load_virtual_pipette_by_model_string( subject_instance: VirtualPipetteDataProvider, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return config data given a pipette model.""" result = subject_instance.get_virtual_pipette_static_config_by_model_string( @@ -177,6 +190,7 @@ def test_load_virtual_pipette_by_model_string( "drop_tip": -33.4, }, shaft_ul_per_mm=9.621, + available_sensors=AvailableSensorDefinition(sensors=[]), ) @@ -221,6 +235,7 @@ def test_load_virtual_pipette_nozzle_layout( @pytest.fixture def pipette_dict( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> PipetteDict: """Get a pipette dict.""" return { @@ -276,6 +291,7 @@ def pipette_dict( }, "plunger_positions": {"top": 100, "bottom": 20, "blow_out": 10, "drop_tip": 0}, "shaft_ul_per_mm": 5.0, + "available_sensors": available_sensors, } @@ -293,6 +309,7 @@ def test_get_pipette_static_config( pipette_dict: PipetteDict, tip_overlap_version: str, overlap_data: Dict[str, float], + available_sensors: AvailableSensorDefinition, ) -> None: """It should return config data given a PipetteDict.""" result = subject.get_pipette_static_config(pipette_dict, tip_overlap_version) @@ -324,6 +341,7 @@ def test_get_pipette_static_config( }, plunger_positions={"top": 100, "bottom": 20, "blow_out": 10, "drop_tip": 0}, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) diff --git a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py index abfb31f5f2a..b145458649d 100644 --- a/api/tests/opentrons/protocol_engine/state/test_geometry_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_geometry_view.py @@ -101,6 +101,14 @@ from ...protocol_runner.test_json_translator import _load_labware_definition_data +@pytest.fixture +def available_sensors() -> pipette_definition.AvailableSensorDefinition: + """Provide a list of sensors.""" + return pipette_definition.AvailableSensorDefinition( + sensors=["pressure", "capacitive", "environment"] + ) + + @pytest.fixture def mock_labware_view(decoy: Decoy) -> LabwareView: """Get a mock in the shape of a LabwareView.""" @@ -2575,6 +2583,7 @@ def test_get_next_drop_tip_location( pipette_mount: MountType, expected_locations: List[DropTipWellLocation], supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: pipette_definition.AvailableSensorDefinition, ) -> None: """It should provide the next location to drop tips into within a labware.""" decoy.when(mock_labware_view.is_fixed_trash(labware_id="abc")).then_return(True) @@ -2618,6 +2627,7 @@ def test_get_next_drop_tip_location( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) ) decoy.when(mock_pipette_view.get_mount("pip-123")).then_return(pipette_mount) diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_store.py b/api/tests/opentrons/protocol_engine/state/test_pipette_store.py index 60c857e4911..e88f7886b81 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_store.py @@ -53,6 +53,14 @@ from ..pipette_fixtures import get_default_nozzle_map +@pytest.fixture +def available_sensors() -> pipette_definition.AvailableSensorDefinition: + """Provide a list of sensors.""" + return pipette_definition.AvailableSensorDefinition( + sensors=["pressure", "capacitive", "environment"] + ) + + @pytest.fixture def subject() -> PipetteStore: """Get a PipetteStore test subject for all subsequent tests.""" @@ -190,6 +198,7 @@ def test_location_state_update(subject: PipetteStore) -> None: def test_handles_load_pipette( subject: PipetteStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: pipette_definition.AvailableSensorDefinition, ) -> None: """It should add the pipette data to the state.""" dummy_command = create_succeeded_command() @@ -227,6 +236,7 @@ def test_handles_load_pipette( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) config_update = update_types.PipetteConfigUpdate( pipette_id="pipette-id", @@ -752,6 +762,7 @@ def test_set_movement_speed(subject: PipetteStore) -> None: def test_add_pipette_config( subject: PipetteStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: pipette_definition.AvailableSensorDefinition, ) -> None: """It should update state from any pipette config private result.""" command = cmd.LoadPipette.construct( # type: ignore[call-arg] @@ -786,6 +797,7 @@ def test_add_pipette_config( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) subject.handle_action( @@ -831,6 +843,7 @@ def test_add_pipette_config( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) assert subject.state.flow_rates_by_id["pipette-id"].default_aspirate == {"a": 1.0} assert subject.state.flow_rates_by_id["pipette-id"].default_dispense == {"b": 2.0} diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py b/api/tests/opentrons/protocol_engine/state/test_pipette_view.py index 14c43bf70f6..c3addf9f1d7 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_view.py @@ -9,7 +9,10 @@ from opentrons_shared_data.pipette.types import PipetteNameType from opentrons_shared_data.pipette import pipette_definition -from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps +from opentrons_shared_data.pipette.pipette_definition import ( + ValidNozzleMaps, + AvailableSensorDefinition, +) from opentrons.config.defaults_ot2 import Z_RETRACT_DISTANCE from opentrons.hardware_control import CriticalPoint @@ -58,6 +61,12 @@ ) +@pytest.fixture +def available_sensors() -> AvailableSensorDefinition: + """Provide a list of sensors.""" + return AvailableSensorDefinition(sensors=["pressure", "capacitive", "environment"]) + + def get_pipette_view( pipettes_by_id: Optional[Dict[str, LoadedPipette]] = None, current_well: Optional[CurrentPipetteLocation] = None, @@ -269,6 +278,7 @@ def test_get_aspirated_volume(decoy: Decoy) -> None: def test_get_pipette_working_volume( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should get the minimum value of tip volume and max volume.""" subject = get_pipette_view( @@ -298,6 +308,7 @@ def test_get_pipette_working_volume( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) }, ) @@ -307,6 +318,7 @@ def test_get_pipette_working_volume( def test_get_pipette_working_volume_raises_if_tip_volume_is_none( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """Should raise an exception that no tip is attached.""" subject = get_pipette_view( @@ -336,6 +348,7 @@ def test_get_pipette_working_volume_raises_if_tip_volume_is_none( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) }, ) @@ -348,7 +361,9 @@ def test_get_pipette_working_volume_raises_if_tip_volume_is_none( def test_get_pipette_available_volume( - supported_tip_fixture: pipette_definition.SupportedTipsDefinition, decoy: Decoy + supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + decoy: Decoy, + available_sensors: AvailableSensorDefinition, ) -> None: """It should get the available volume for a pipette.""" stack = decoy.mock(cls=fluid_stack.FluidStack) @@ -385,6 +400,7 @@ def test_get_pipette_available_volume( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), "pipette-id-none": StaticPipetteConfig( min_volume=1, @@ -408,6 +424,7 @@ def test_get_pipette_available_volume( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), }, ) @@ -503,6 +520,7 @@ def test_get_deck_point( def test_get_static_config( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the static pipette configuration that was set for the given pipette.""" config = StaticPipetteConfig( @@ -527,6 +545,7 @@ def test_get_static_config( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) subject = get_pipette_view( @@ -558,6 +577,7 @@ def test_get_static_config( def test_get_nominal_tip_overlap( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the static pipette configuration that was set for the given pipette.""" config = StaticPipetteConfig( @@ -585,6 +605,7 @@ def test_get_nominal_tip_overlap( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) subject = get_pipette_view(static_config_by_id={"pipette-id": config}) @@ -986,6 +1007,7 @@ def test_get_pipette_bounds_at_location( destination_position: Point, critical_point: Optional[CriticalPoint], pipette_bounds_result: Tuple[Point, Point, Point, Point], + available_sensors: AvailableSensorDefinition, ) -> None: """It should get the pipette's nozzle's bounds at the given location.""" subject = get_pipette_view( @@ -1016,6 +1038,7 @@ def test_get_pipette_bounds_at_location( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ) }, ) diff --git a/api/tests/opentrons/protocol_engine/state/test_tip_state.py b/api/tests/opentrons/protocol_engine/state/test_tip_state.py index 8abcc6a24e2..7a958a37e5f 100644 --- a/api/tests/opentrons/protocol_engine/state/test_tip_state.py +++ b/api/tests/opentrons/protocol_engine/state/test_tip_state.py @@ -22,6 +22,9 @@ ) from opentrons.types import DeckSlotName, Point from opentrons_shared_data.pipette.types import PipetteNameType +from opentrons_shared_data.pipette.pipette_definition import ( + AvailableSensorDefinition, +) from ..pipette_fixtures import ( NINETY_SIX_MAP, NINETY_SIX_COLS, @@ -32,6 +35,12 @@ _tip_rack_parameters = LabwareParameters.construct(isTiprack=True) # type: ignore[call-arg] +@pytest.fixture +def available_sensors() -> AvailableSensorDefinition: + """Provide a list of sensors.""" + return AvailableSensorDefinition(sensors=["pressure", "capacitive", "environment"]) + + @pytest.fixture def subject() -> TipStore: """Get a TipStore test subject.""" @@ -94,6 +103,7 @@ def test_get_next_tip_returns_none( load_labware_action: actions.SucceedCommandAction, subject: TipStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should start at the first tip in the labware.""" subject.handle_action(load_labware_action) @@ -126,6 +136,7 @@ def test_get_next_tip_returns_none( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -151,6 +162,7 @@ def test_get_next_tip_returns_first_tip( subject: TipStore, input_tip_amount: int, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should start at the first tip in the labware.""" subject.handle_action(load_labware_action) @@ -191,6 +203,7 @@ def test_get_next_tip_returns_first_tip( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -217,6 +230,7 @@ def test_get_next_tip_used_starting_tip( input_tip_amount: int, result_well_name: str, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should start searching at the given starting tip.""" subject.handle_action(load_labware_action) @@ -250,6 +264,7 @@ def test_get_next_tip_used_starting_tip( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -291,6 +306,7 @@ def test_get_next_tip_skips_picked_up_tip( input_starting_tip: Optional[str], result_well_name: Optional[str], supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should get the next tip in the column if one has been picked up.""" subject.handle_action(load_labware_action) @@ -342,6 +358,7 @@ def test_get_next_tip_skips_picked_up_tip( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -379,6 +396,7 @@ def test_get_next_tip_with_starting_tip( subject: TipStore, load_labware_action: actions.SucceedCommandAction, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the starting tip, and then the following tip after that.""" subject.handle_action(load_labware_action) @@ -412,6 +430,7 @@ def test_get_next_tip_with_starting_tip( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -453,6 +472,7 @@ def test_get_next_tip_with_starting_tip_8_channel( subject: TipStore, load_labware_action: actions.SucceedCommandAction, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the starting tip, and then the following tip after that.""" subject.handle_action(load_labware_action) @@ -486,6 +506,7 @@ def test_get_next_tip_with_starting_tip_8_channel( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -530,6 +551,7 @@ def test_get_next_tip_with_1_channel_followed_by_8_channel( subject: TipStore, load_labware_action: actions.SucceedCommandAction, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the first tip of column 2 for the 8 channel after performing a single tip pickup on column 1.""" subject.handle_action(load_labware_action) @@ -563,6 +585,7 @@ def test_get_next_tip_with_1_channel_followed_by_8_channel( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -601,6 +624,7 @@ def test_get_next_tip_with_1_channel_followed_by_8_channel( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -645,6 +669,7 @@ def test_get_next_tip_with_starting_tip_out_of_tips( subject: TipStore, load_labware_action: actions.SucceedCommandAction, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the starting tip of H12 and then None after that.""" subject.handle_action(load_labware_action) @@ -678,6 +703,7 @@ def test_get_next_tip_with_starting_tip_out_of_tips( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -722,6 +748,7 @@ def test_get_next_tip_with_column_and_starting_tip( subject: TipStore, load_labware_action: actions.SucceedCommandAction, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should return the first tip in a column, taking starting tip into account.""" subject.handle_action(load_labware_action) @@ -755,6 +782,7 @@ def test_get_next_tip_with_column_and_starting_tip( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -778,6 +806,7 @@ def test_reset_tips( subject: TipStore, load_labware_action: actions.SucceedCommandAction, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """It should be able to reset tip tracking state.""" subject.handle_action(load_labware_action) @@ -811,6 +840,7 @@ def test_reset_tips( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) @@ -848,7 +878,9 @@ def get_result() -> str | None: def test_handle_pipette_config_action( - subject: TipStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition + subject: TipStore, + supported_tip_fixture: pipette_definition.SupportedTipsDefinition, + available_sensors: AvailableSensorDefinition, ) -> None: """Should add pipette channel to state.""" config_update = update_types.PipetteConfigUpdate( @@ -880,6 +912,7 @@ def test_handle_pipette_config_action( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -988,6 +1021,7 @@ def test_active_channels( supported_tip_fixture: pipette_definition.SupportedTipsDefinition, nozzle_map: NozzleMap, expected_channels: int, + available_sensors: AvailableSensorDefinition, ) -> None: """Should update active channels after pipette configuration change.""" # Load pipette to update state @@ -1020,6 +1054,7 @@ def test_active_channels( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -1052,6 +1087,7 @@ def test_next_tip_uses_active_channels( subject: TipStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, load_labware_action: actions.SucceedCommandAction, + available_sensors: AvailableSensorDefinition, ) -> None: """Test that tip tracking logic uses pipette's active channels.""" # Load labware @@ -1087,6 +1123,7 @@ def test_next_tip_uses_active_channels( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -1157,6 +1194,7 @@ def test_next_tip_automatic_tip_tracking_with_partial_configurations( subject: TipStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, load_labware_action: actions.SucceedCommandAction, + available_sensors: AvailableSensorDefinition, ) -> None: """Test tip tracking logic using multiple pipette configurations.""" # Load labware @@ -1192,6 +1230,7 @@ def test_next_tip_automatic_tip_tracking_with_partial_configurations( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( @@ -1316,6 +1355,7 @@ def test_next_tip_automatic_tip_tracking_tiprack_limits( subject: TipStore, supported_tip_fixture: pipette_definition.SupportedTipsDefinition, load_labware_action: actions.SucceedCommandAction, + available_sensors: AvailableSensorDefinition, ) -> None: """Test tip tracking logic to ensure once a tiprack is consumed it returns None when consuming tips using multiple pipette configurations.""" # Load labware @@ -1351,6 +1391,7 @@ def test_next_tip_automatic_tip_tracking_tiprack_limits( "drop_tip": 20.0, }, shaft_ul_per_mm=5.0, + available_sensors=available_sensors, ), ) subject.handle_action( From 6297c7b7181b0cd28e0a669d8e651219c1f66b49 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:22:53 -0500 Subject: [PATCH 090/220] fix(protocol-designer): fix layout for ProtocolSteps (#16959) This PR fixes the layout for protocol steps, acocunting for TimelineAlerts. To maintain position without flickering when hovering timeline steps, we align the center content to the top of the container, and provide top padding dependent on the presence of timeline alerts. We also fix logic to not show timeline alerts if a stepform toolbox is open. Lastly, we make the container scrollable to handle timeline alerts and step summaries rendering at the same time, and set the timeline, stepform, and substeps toolbox heights to fill the view height with padding. --- .../StepForm/StepFormToolbox.tsx | 1 + .../Designer/ProtocolSteps/StepSummary.tsx | 4 +-- .../Timeline/SubstepsToolbox.tsx | 1 + .../Timeline/TimelineToolbox.tsx | 1 + .../__tests__/ProtocolSteps.test.tsx | 9 ++++++- .../pages/Designer/ProtocolSteps/index.tsx | 26 ++++++++++++------- .../src/pages/Designer/index.tsx | 3 ++- 7 files changed, 30 insertions(+), 15 deletions(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx index 2088409227e..fc452103584 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepFormToolbox.tsx @@ -272,6 +272,7 @@ export function StepFormToolbox(props: StepFormToolboxProps): JSX.Element { /> ) : null} {stepSummaryContent != null ? ( - - {stepSummaryContent} - + {stepSummaryContent} ) : null} {stepDetails != null && stepDetails !== '' ? ( diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx index e2460741ebf..eb0a0ba835b 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/SubstepsToolbox.tsx @@ -58,6 +58,7 @@ export function SubstepsToolbox( substeps.commandCreatorFnName === 'mix')) || substeps.substepType === THERMOCYCLER_PROFILE ? ( } onCloseClick={handleClose} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/TimelineToolbox.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/TimelineToolbox.tsx index 9cd9b89230e..a5a3fc99ff1 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/TimelineToolbox.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/TimelineToolbox.tsx @@ -69,6 +69,7 @@ export const TimelineToolbox = (): JSX.Element => { titlePadding={SPACING.spacing12} childrenPadding={SPACING.spacing12} confirmButton={formData != null ? undefined : } + height="calc(100vh - 6rem)" > { beforeEach(() => { vi.mocked(getDesignerTab).mockReturnValue('protocolSteps') + vi.mocked(getRobotStateTimeline).mockReturnValue({ + timeline: [], + errors: [], + }) vi.mocked(TimelineToolbox).mockReturnValue(
mock TimelineToolbox
) vi.mocked(DeckSetupContainer).mockReturnValue(
mock DeckSetupContainer
diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx index 8cb7d8fbfe2..4617163a247 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx @@ -5,9 +5,9 @@ import { ALIGN_CENTER, COLORS, DIRECTION_COLUMN, + FLEX_MAX_CONTENT, Flex, JUSTIFY_CENTER, - JUSTIFY_FLEX_START, JUSTIFY_SPACE_BETWEEN, POSITION_FIXED, SPACING, @@ -34,7 +34,10 @@ import { TimelineToolbox, SubstepsToolbox } from './Timeline' import { StepForm } from './StepForm' import { StepSummary } from './StepSummary' import { BatchEditToolbox } from './BatchEditToolbox' -import { getDesignerTab } from '../../../file-data/selectors' +import { + getDesignerTab, + getRobotStateTimeline, +} from '../../../file-data/selectors' import { TimelineAlerts } from '../../../organisms' const CONTENT_MAX_WIDTH = '46.9375rem' @@ -64,31 +67,37 @@ export function ProtocolSteps(): JSX.Element { ? savedStepForms[currentstepIdForStepSummary] : null + const { errors: timelineErrors } = useSelector(getRobotStateTimeline) + const hasTimelineErrors = + timelineErrors != null ? timelineErrors.length > 0 : false + const showTimelineAlerts = + hasTimelineErrors && tab === 'protocolSteps' && formData == null const stepDetails = currentStep?.stepDetails ?? null + return ( - {tab === 'protocolSteps' ? ( + {showTimelineAlerts ? ( ) : null} @@ -128,9 +137,6 @@ export function ProtocolSteps(): JSX.Element { stepDetails={stepDetails} /> ) : null} - {selectedTerminalItem != null && currentHoveredStepId == null ? ( - - ) : null} {enableHoyKeyDisplay ? ( diff --git a/protocol-designer/src/pages/Designer/index.tsx b/protocol-designer/src/pages/Designer/index.tsx index 9b2c1beda35..f9f343735d4 100644 --- a/protocol-designer/src/pages/Designer/index.tsx +++ b/protocol-designer/src/pages/Designer/index.tsx @@ -6,6 +6,7 @@ import { ALIGN_END, COLORS, DIRECTION_COLUMN, + FLEX_MAX_CONTENT, Flex, INFO_TOAST, SPACING, @@ -149,7 +150,7 @@ export function Designer(): JSX.Element { }} /> ) : null} - + Date: Fri, 22 Nov 2024 15:36:56 -0500 Subject: [PATCH 091/220] refactor(app): Refactor effect-driven commands in Error Recovery (#16948) Closes RQA-3664 --- .../ErrorRecoveryWizard.tsx | 49 +--- .../ErrorRecoveryFlows/RecoveryInProgress.tsx | 98 ++++---- .../ErrorRecoveryFlows/RecoverySplash.tsx | 16 +- .../__tests__/ErrorRecoveryWizard.test.tsx | 75 +----- .../__tests__/RecoveryInProgress.test.tsx | 214 ++++++++++-------- .../__tests__/RecoverySplash.test.tsx | 11 + .../hooks/__tests__/useHomeGripper.test.ts | 124 ---------- .../ErrorRecoveryFlows/hooks/index.ts | 1 - .../hooks/useHomeGripper.ts | 40 ---- .../shared/RecoveryDoorOpenSpecial.tsx | 63 ++++-- .../RecoveryDoorOpenSpecial.test.tsx | 71 ++++-- 11 files changed, 293 insertions(+), 469 deletions(-) delete mode 100644 app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useHomeGripper.test.ts delete mode 100644 app/src/organisms/ErrorRecoveryFlows/hooks/useHomeGripper.ts diff --git a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx index 1c62471380d..795b1517ee8 100644 --- a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useLayoutEffect } from 'react' +import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' @@ -29,7 +29,6 @@ import { import { RecoveryInProgress } from './RecoveryInProgress' import { getErrorKind } from './utils' import { RECOVERY_MAP } from './constants' -import { useHomeGripper } from './hooks' import type { LabwareDefinition2, RobotType } from '@opentrons/shared-data' import type { RecoveryRoute, RouteStep, RecoveryContentProps } from './types' @@ -76,23 +75,12 @@ export type ErrorRecoveryWizardProps = ErrorRecoveryFlowsProps & export function ErrorRecoveryWizard( props: ErrorRecoveryWizardProps ): JSX.Element { - const { - hasLaunchedRecovery, - failedCommand, - recoveryCommands, - routeUpdateActions, - } = props - const errorKind = getErrorKind(failedCommand) - - useInitialPipetteHome({ - hasLaunchedRecovery, - recoveryCommands, - routeUpdateActions, - }) - - useHomeGripper(props) - - return + return ( + + ) } export function ErrorRecoveryComponent( @@ -283,26 +271,3 @@ export function ErrorRecoveryContent(props: RecoveryContentProps): JSX.Element { return buildSelectRecoveryOption() } } -interface UseInitialPipetteHomeParams { - hasLaunchedRecovery: ErrorRecoveryWizardProps['hasLaunchedRecovery'] - recoveryCommands: ErrorRecoveryWizardProps['recoveryCommands'] - routeUpdateActions: ErrorRecoveryWizardProps['routeUpdateActions'] -} -// Home the Z-axis of all attached pipettes on Error Recovery launch. -export function useInitialPipetteHome({ - hasLaunchedRecovery, - recoveryCommands, - routeUpdateActions, -}: UseInitialPipetteHomeParams): void { - const { homePipetteZAxes } = recoveryCommands - const { handleMotionRouting } = routeUpdateActions - - // Synchronously set the recovery route to "robot in motion" before initial render to prevent screen flicker on ER launch. - useLayoutEffect(() => { - if (hasLaunchedRecovery) { - void handleMotionRouting(true) - .then(() => homePipetteZAxes()) - .finally(() => handleMotionRouting(false)) - } - }, [hasLaunchedRecovery]) -} diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx index 3a176942a74..3353c9d4b05 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx @@ -101,7 +101,7 @@ export function useGripperRelease({ doorStatusUtils, recoveryMap, }: UseGripperReleaseProps): number { - const { releaseGripperJaws } = recoveryCommands + const { releaseGripperJaws, homeExceptPlungers } = recoveryCommands const { selectedRecoveryOption } = currentRecoveryOptionUtils const { proceedToRouteAndStep, @@ -112,49 +112,47 @@ export function useGripperRelease({ const { MANUAL_MOVE_AND_SKIP, MANUAL_REPLACE_AND_RETRY } = RECOVERY_MAP const [countdown, setCountdown] = useState(GRIPPER_RELEASE_COUNTDOWN_S) - const proceedToValidNextStep = (): void => { - if (isDoorOpen) { - switch (selectedRecoveryOption) { - case MANUAL_MOVE_AND_SKIP.ROUTE: - void proceedToRouteAndStep( - MANUAL_MOVE_AND_SKIP.ROUTE, - MANUAL_MOVE_AND_SKIP.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME - ) - break - case MANUAL_REPLACE_AND_RETRY.ROUTE: - void proceedToRouteAndStep( - MANUAL_REPLACE_AND_RETRY.ROUTE, - MANUAL_REPLACE_AND_RETRY.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME - ) - break - default: { - console.error( - 'Unhandled post grip-release routing when door is open.' - ) - void proceedToRouteAndStep(RECOVERY_MAP.OPTION_SELECTION.ROUTE) - } - } - } else { - switch (selectedRecoveryOption) { - case MANUAL_MOVE_AND_SKIP.ROUTE: - void proceedToRouteAndStep( - MANUAL_MOVE_AND_SKIP.ROUTE, - MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - ) - break - case MANUAL_REPLACE_AND_RETRY.ROUTE: - void proceedToRouteAndStep( - MANUAL_REPLACE_AND_RETRY.ROUTE, - MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE - ) - break - default: - console.error('Unhandled post grip-release routing.') - void proceedNextStep() + const proceedToDoorStep = (): void => { + switch (selectedRecoveryOption) { + case MANUAL_MOVE_AND_SKIP.ROUTE: + void proceedToRouteAndStep( + MANUAL_MOVE_AND_SKIP.ROUTE, + MANUAL_MOVE_AND_SKIP.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME + ) + break + case MANUAL_REPLACE_AND_RETRY.ROUTE: + void proceedToRouteAndStep( + MANUAL_REPLACE_AND_RETRY.ROUTE, + MANUAL_REPLACE_AND_RETRY.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME + ) + break + default: { + console.error('Unhandled post grip-release routing when door is open.') + void proceedToRouteAndStep(RECOVERY_MAP.OPTION_SELECTION.ROUTE) } } } + const proceedToValidNextStep = (): void => { + switch (selectedRecoveryOption) { + case MANUAL_MOVE_AND_SKIP.ROUTE: + void proceedToRouteAndStep( + MANUAL_MOVE_AND_SKIP.ROUTE, + MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE + ) + break + case MANUAL_REPLACE_AND_RETRY.ROUTE: + void proceedToRouteAndStep( + MANUAL_REPLACE_AND_RETRY.ROUTE, + MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE + ) + break + default: + console.error('Unhandled post grip-release routing.') + void proceedNextStep() + } + } + useEffect(() => { let intervalId: NodeJS.Timeout | null = null @@ -167,11 +165,21 @@ export function useGripperRelease({ if (intervalId != null) { clearInterval(intervalId) } - void releaseGripperJaws() - .finally(() => handleMotionRouting(false)) - .then(() => { - proceedToValidNextStep() - }) + + void releaseGripperJaws().then(() => { + if (isDoorOpen) { + return handleMotionRouting(false).then(() => { + proceedToDoorStep() + }) + } + + return handleMotionRouting(true) + .then(() => homeExceptPlungers()) + .then(() => handleMotionRouting(false)) + .then(() => { + proceedToValidNextStep() + }) + }) } return updatedCountdown diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx index 7a17b443508..cd31843f834 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx @@ -83,13 +83,14 @@ export function RecoverySplash(props: RecoverySplashProps): JSX.Element | null { runStatus, recoveryActionMutationUtils, resumePausedRecovery, + recoveryCommands, } = props const { t } = useTranslation('error_recovery') const errorKind = getErrorKind(failedCommand) const title = useErrorName(errorKind) const { makeToast } = useToaster() - const { proceedToRouteAndStep } = routeUpdateActions + const { proceedToRouteAndStep, handleMotionRouting } = routeUpdateActions const { reportErrorEvent } = analytics const buildTitleHeadingDesktop = (): JSX.Element => { @@ -138,9 +139,16 @@ export function RecoverySplash(props: RecoverySplashProps): JSX.Element | null { const onLaunchERClick = (): void => { const onClick = (): void => { - void toggleERWizAsActiveUser(true, true).then(() => { - reportErrorEvent(failedCommand?.byRunRecord ?? null, 'launch-recovery') - }) + void toggleERWizAsActiveUser(true, true) + .then(() => { + reportErrorEvent( + failedCommand?.byRunRecord ?? null, + 'launch-recovery' + ) + }) + .then(() => handleMotionRouting(true)) + .then(() => recoveryCommands.homePipetteZAxes()) + .finally(() => handleMotionRouting(false)) } handleConditionalClick(onClick) } diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx index 62fb2849753..dd915b72afb 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx @@ -1,13 +1,12 @@ import type * as React from 'react' import { vi, describe, it, expect, beforeEach } from 'vitest' -import { renderHook, act, screen, waitFor } from '@testing-library/react' +import { renderHook, act, screen } from '@testing-library/react' import { renderWithProviders } from '/app/__testing-utils__' import { i18n } from '/app/i18n' import { mockRecoveryContentProps } from '../__fixtures__' import { ErrorRecoveryContent, - useInitialPipetteHome, useERWizard, ErrorRecoveryComponent, } from '../ErrorRecoveryWizard' @@ -35,8 +34,6 @@ import { RecoveryDoorOpenSpecial, } from '../shared' -import type { Mock } from 'vitest' - vi.mock('../RecoveryOptions') vi.mock('../RecoveryInProgress') vi.mock('../RecoveryError') @@ -509,73 +506,3 @@ describe('ErrorRecoveryContent', () => { screen.getByText('MOCK_DOOR_OPEN_SPECIAL') }) }) - -describe('useInitialPipetteHome', () => { - let mockZHomePipetteZAxes: Mock - let mockhandleMotionRouting: Mock - let mockRecoveryCommands: any - let mockRouteUpdateActions: any - - beforeEach(() => { - mockZHomePipetteZAxes = vi.fn() - mockhandleMotionRouting = vi.fn() - - mockhandleMotionRouting.mockResolvedValue(() => mockZHomePipetteZAxes()) - mockZHomePipetteZAxes.mockResolvedValue(() => mockhandleMotionRouting()) - - mockRecoveryCommands = { - homePipetteZAxes: mockZHomePipetteZAxes, - } as any - mockRouteUpdateActions = { - handleMotionRouting: mockhandleMotionRouting, - } as any - }) - - it('does not z-home the pipettes if error recovery was not launched', () => { - renderHook(() => - useInitialPipetteHome({ - hasLaunchedRecovery: false, - recoveryCommands: mockRecoveryCommands, - routeUpdateActions: mockRouteUpdateActions, - }) - ) - - expect(mockhandleMotionRouting).not.toHaveBeenCalled() - }) - - it('sets the motion screen properly and z-homes all pipettes only on the initial render of Error Recovery', async () => { - const { rerender } = renderHook(() => - useInitialPipetteHome({ - hasLaunchedRecovery: true, - recoveryCommands: mockRecoveryCommands, - routeUpdateActions: mockRouteUpdateActions, - }) - ) - - await waitFor(() => { - expect(mockhandleMotionRouting).toHaveBeenCalledWith(true) - }) - await waitFor(() => { - expect(mockZHomePipetteZAxes).toHaveBeenCalledTimes(1) - }) - await waitFor(() => { - expect(mockhandleMotionRouting).toHaveBeenCalledWith(false) - }) - - expect(mockhandleMotionRouting.mock.invocationCallOrder[0]).toBeLessThan( - mockZHomePipetteZAxes.mock.invocationCallOrder[0] - ) - expect(mockZHomePipetteZAxes.mock.invocationCallOrder[0]).toBeLessThan( - mockhandleMotionRouting.mock.invocationCallOrder[1] - ) - - rerender() - - await waitFor(() => { - expect(mockhandleMotionRouting).toHaveBeenCalledTimes(2) - }) - await waitFor(() => { - expect(mockZHomePipetteZAxes).toHaveBeenCalledTimes(1) - }) - }) -}) diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx index c3005c10cda..2dfa5711644 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx @@ -39,10 +39,12 @@ describe('RecoveryInProgress', () => { }, recoveryCommands: { releaseGripperJaws: vi.fn(() => Promise.resolve()), + homeExceptPlungers: vi.fn(() => Promise.resolve()), } as any, routeUpdateActions: { handleMotionRouting: vi.fn(() => Promise.resolve()), proceedNextStep: vi.fn(() => Promise.resolve()), + proceedToRouteAndStep: vi.fn(() => Promise.resolve()), } as any, } }) @@ -166,14 +168,12 @@ describe('useGripperRelease', () => { }, recoveryCommands: { releaseGripperJaws: vi.fn().mockResolvedValue(undefined), + homeExceptPlungers: vi.fn().mockResolvedValue(undefined), }, routeUpdateActions: { - proceedToRouteAndStep: vi.fn(), - proceedNextStep: vi.fn(), - handleMotionRouting: vi.fn(), - stashedMap: { - route: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - }, + proceedToRouteAndStep: vi.fn().mockResolvedValue(undefined), + proceedNextStep: vi.fn().mockResolvedValue(undefined), + handleMotionRouting: vi.fn().mockResolvedValue(undefined), }, currentRecoveryOptionUtils: { selectedRecoveryOption: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, @@ -183,6 +183,7 @@ describe('useGripperRelease', () => { beforeEach(() => { vi.useFakeTimers() + vi.clearAllMocks() }) afterEach(() => { @@ -207,118 +208,143 @@ describe('useGripperRelease', () => { expect(result.current).toBe(0) }) - const IS_DOOR_OPEN = [false, true] - - IS_DOOR_OPEN.forEach(doorStatus => { - it(`releases gripper jaws and proceeds to next step after countdown for ${RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE} when the isDoorOpen is ${doorStatus}`, async () => { - renderHook(() => - useGripperRelease({ + describe('when door is closed', () => { + it.each([ + { + recoveryOption: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, + nextStep: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE, + }, + { + recoveryOption: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, + nextStep: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE, + }, + ])( + 'executes the full sequence of commands for $recoveryOption', + async ({ recoveryOption, nextStep }) => { + const props = { ...mockProps, - doorStatusUtils: { isDoorOpen: doorStatus }, - }) - ) - - act(() => { - vi.advanceTimersByTime(GRIPPER_RELEASE_COUNTDOWN_S * 1000) - }) + currentRecoveryOptionUtils: { + selectedRecoveryOption: recoveryOption, + }, + doorStatusUtils: { isDoorOpen: false }, + } - await vi.runAllTimersAsync() + renderHook(() => useGripperRelease(props)) - expect(mockProps.recoveryCommands.releaseGripperJaws).toHaveBeenCalled() - expect( - mockProps.routeUpdateActions.handleMotionRouting - ).toHaveBeenCalledWith(false) - if (!doorStatus) { - expect( - mockProps.routeUpdateActions.proceedToRouteAndStep - ).toHaveBeenCalledWith( - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - ) - } else { - expect( - mockProps.routeUpdateActions.proceedToRouteAndStep - ).toHaveBeenCalledWith( - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME + act(() => { + vi.advanceTimersByTime(GRIPPER_RELEASE_COUNTDOWN_S * 1000) + }) + await vi.runAllTimersAsync() + + const { + releaseGripperJaws, + homeExceptPlungers, + } = props.recoveryCommands + const { + handleMotionRouting, + proceedToRouteAndStep, + } = props.routeUpdateActions + + expect(releaseGripperJaws).toHaveBeenCalledTimes(1) + expect(handleMotionRouting).toHaveBeenNthCalledWith(1, true) + expect(homeExceptPlungers).toHaveBeenCalledTimes(1) + expect(handleMotionRouting).toHaveBeenNthCalledWith(2, false) + expect(proceedToRouteAndStep).toHaveBeenCalledWith( + recoveryOption, + nextStep ) } + ) + + describe('when door is open', () => { + it.each([ + { + recoveryOption: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, + doorStep: + RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME, + }, + { + recoveryOption: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, + doorStep: + RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS + .CLOSE_DOOR_GRIPPER_Z_HOME, + }, + ])( + 'executes proceed to door step for $recoveryOption', + async ({ recoveryOption, doorStep }) => { + const props = { + ...mockProps, + currentRecoveryOptionUtils: { + selectedRecoveryOption: recoveryOption, + }, + doorStatusUtils: { isDoorOpen: true }, + } + + const { + releaseGripperJaws, + homeExceptPlungers, + } = props.recoveryCommands + const { + handleMotionRouting, + proceedToRouteAndStep, + } = props.routeUpdateActions + + renderHook(() => useGripperRelease(props)) + + act(() => { + vi.advanceTimersByTime(GRIPPER_RELEASE_COUNTDOWN_S * 1000) + }) + await vi.runAllTimersAsync() + + expect(releaseGripperJaws).toHaveBeenCalledTimes(1) + expect(handleMotionRouting).toHaveBeenNthCalledWith(1, false) + expect(homeExceptPlungers).not.toHaveBeenCalled() + expect(proceedToRouteAndStep).toHaveBeenCalledWith( + recoveryOption, + doorStep + ) + } + ) }) - }) - IS_DOOR_OPEN.forEach(doorStatus => { - it(`releases gripper jaws and proceeds to next step after countdown for ${RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE} when the isDoorOpen is ${doorStatus}`, async () => { - const modifiedProps = { + it('falls back to option selection for unhandled routes when door is open', async () => { + const props = { ...mockProps, - routeUpdateActions: { - ...mockProps.routeUpdateActions, - stashedMap: { - route: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - }, - }, currentRecoveryOptionUtils: { - selectedRecoveryOption: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, + selectedRecoveryOption: 'UNHANDLED_ROUTE', }, + doorStatusUtils: { isDoorOpen: true }, } - renderHook(() => - useGripperRelease({ - ...modifiedProps, - doorStatusUtils: { isDoorOpen: doorStatus }, - }) - ) + renderHook(() => useGripperRelease(props)) act(() => { vi.advanceTimersByTime(GRIPPER_RELEASE_COUNTDOWN_S * 1000) }) - await vi.runAllTimersAsync() - expect(mockProps.recoveryCommands.releaseGripperJaws).toHaveBeenCalled() expect( - mockProps.routeUpdateActions.handleMotionRouting - ).toHaveBeenCalledWith(false) - if (!doorStatus) { - expect( - mockProps.routeUpdateActions.proceedToRouteAndStep - ).toHaveBeenCalledWith( - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - ) - } else { - expect( - mockProps.routeUpdateActions.proceedToRouteAndStep - ).toHaveBeenCalledWith( - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.CLOSE_DOOR_GRIPPER_Z_HOME - ) - } + props.routeUpdateActions.proceedToRouteAndStep + ).toHaveBeenCalledWith(RECOVERY_MAP.OPTION_SELECTION.ROUTE) }) - }) - it('calls proceedNextStep for unhandled routes', async () => { - const modifiedProps = { - ...mockProps, - routeUpdateActions: { - ...mockProps.routeUpdateActions, - stashedMap: { - route: 'UNHANDLED_ROUTE', + it('falls back to proceedNextStep for unhandled routes when door is closed', async () => { + const props = { + ...mockProps, + currentRecoveryOptionUtils: { + selectedRecoveryOption: 'UNHANDLED_ROUTE', }, - }, - currentRecoveryOptionUtils: { - selectedRecoveryOption: RECOVERY_MAP.MANUAL_FILL_AND_SKIP.ROUTE, - }, - doorStatusUtils: { isDoorOpen: false }, - } - - renderHook(() => useGripperRelease(modifiedProps)) + doorStatusUtils: { isDoorOpen: false }, + } - act(() => { - vi.advanceTimersByTime(GRIPPER_RELEASE_COUNTDOWN_S * 1000) - }) + renderHook(() => useGripperRelease(props)) - await vi.runAllTimersAsync() + act(() => { + vi.advanceTimersByTime(GRIPPER_RELEASE_COUNTDOWN_S * 1000) + }) + await vi.runAllTimersAsync() - expect(modifiedProps.routeUpdateActions.proceedNextStep).toHaveBeenCalled() + expect(props.routeUpdateActions.proceedNextStep).toHaveBeenCalled() + }) }) }) diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx index da3ddc07629..7446ea7464c 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoverySplash.test.tsx @@ -80,11 +80,14 @@ describe('RecoverySplash', () => { let props: React.ComponentProps const mockToggleERWiz = vi.fn(() => Promise.resolve()) const mockProceedToRouteAndStep = vi.fn() + const mockHandleMotionRouting = vi.fn(() => Promise.resolve()) const mockRouteUpdateActions = { proceedToRouteAndStep: mockProceedToRouteAndStep, + handleMotionRouting: mockHandleMotionRouting, } as any const mockMakeToast = vi.fn() const mockResumeRecovery = vi.fn() + const mockHomePipetteZAxes = vi.fn(() => Promise.resolve()) beforeEach(() => { props = { @@ -96,6 +99,7 @@ describe('RecoverySplash', () => { resumeRecovery: mockResumeRecovery, } as any, resumePausedRecovery: true, + recoveryCommands: { homePipetteZAxes: mockHomePipetteZAxes } as any, } vi.mocked(StepInfo).mockReturnValue(
MOCK STEP INFO
) @@ -162,6 +166,13 @@ describe('RecoverySplash', () => { await waitFor(() => { expect(mockToggleERWiz).toHaveBeenCalledWith(true, true) }) + + expect(mockHandleMotionRouting).toHaveBeenNthCalledWith(1, true) + expect(mockHandleMotionRouting).toHaveBeenNthCalledWith(2, false) + + await waitFor(() => { + expect(props.recoveryCommands.homePipetteZAxes).toHaveBeenCalled() + }) }) it('should render a door open toast if the door is open', () => { diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useHomeGripper.test.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useHomeGripper.test.ts deleted file mode 100644 index 32de0f0096d..00000000000 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useHomeGripper.test.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { renderHook, act } from '@testing-library/react' -import { describe, it, expect, vi, beforeEach } from 'vitest' - -import { useHomeGripper } from '../useHomeGripper' -import { RECOVERY_MAP } from '/app/organisms/ErrorRecoveryFlows/constants' - -describe('useHomeGripper', () => { - const mockRecoveryCommands = { - homeExceptPlungers: vi.fn().mockResolvedValue(undefined), - } - - const mockRouteUpdateActions = { - handleMotionRouting: vi.fn().mockResolvedValue(undefined), - goBackPrevStep: vi.fn(), - } - - const mockRecoveryMap = { - step: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE, - } - - const mockDoorStatusUtils = { - isDoorOpen: false, - } - - beforeEach(() => { - vi.clearAllMocks() - }) - - it('should home gripper Z axis when in manual gripper step and door is closed', async () => { - renderHook(() => { - useHomeGripper({ - recoveryCommands: mockRecoveryCommands, - routeUpdateActions: mockRouteUpdateActions, - recoveryMap: mockRecoveryMap, - doorStatusUtils: mockDoorStatusUtils, - } as any) - }) - - await act(async () => { - await new Promise(resolve => setTimeout(resolve, 0)) - }) - - expect(mockRouteUpdateActions.handleMotionRouting).toHaveBeenCalledWith( - true - ) - expect(mockRecoveryCommands.homeExceptPlungers).toHaveBeenCalled() - expect(mockRouteUpdateActions.handleMotionRouting).toHaveBeenCalledWith( - false - ) - }) - - it('should go back to previous step when door is open', () => { - renderHook(() => { - useHomeGripper({ - recoveryCommands: mockRecoveryCommands, - routeUpdateActions: mockRouteUpdateActions, - recoveryMap: mockRecoveryMap, - doorStatusUtils: { ...mockDoorStatusUtils, isDoorOpen: true }, - } as any) - }) - - expect(mockRouteUpdateActions.goBackPrevStep).toHaveBeenCalled() - expect(mockRecoveryCommands.homeExceptPlungers).not.toHaveBeenCalled() - }) - - it('should not home again if already homed once', async () => { - const { rerender } = renderHook(() => { - useHomeGripper({ - recoveryCommands: mockRecoveryCommands, - routeUpdateActions: mockRouteUpdateActions, - recoveryMap: mockRecoveryMap, - doorStatusUtils: mockDoorStatusUtils, - } as any) - }) - - await act(async () => { - await new Promise(resolve => setTimeout(resolve, 0)) - }) - - expect(mockRecoveryCommands.homeExceptPlungers).toHaveBeenCalledTimes(1) - - rerender() - - expect(mockRecoveryCommands.homeExceptPlungers).toHaveBeenCalledTimes(1) - }) - - it('should only reset hasHomedOnce when step changes to non-manual gripper step', async () => { - const { rerender } = renderHook( - ({ recoveryMap }) => { - useHomeGripper({ - recoveryCommands: mockRecoveryCommands, - routeUpdateActions: mockRouteUpdateActions, - recoveryMap, - doorStatusUtils: mockDoorStatusUtils, - } as any) - }, - { - initialProps: { recoveryMap: mockRecoveryMap }, - } - ) - - await act(async () => { - await new Promise(resolve => setTimeout(resolve, 0)) - }) - - expect(mockRecoveryCommands.homeExceptPlungers).toHaveBeenCalledTimes(1) - - rerender({ recoveryMap: { step: 'SOME_OTHER_STEP' } as any }) - - await act(async () => { - await new Promise(resolve => setTimeout(resolve, 0)) - }) - - expect(mockRecoveryCommands.homeExceptPlungers).toHaveBeenCalledTimes(1) - - rerender({ recoveryMap: mockRecoveryMap }) - - await act(async () => { - await new Promise(resolve => setTimeout(resolve, 0)) - }) - - expect(mockRecoveryCommands.homeExceptPlungers).toHaveBeenCalledTimes(1) - }) -}) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/index.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/index.ts index 75904a24966..497fd3223da 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/index.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/index.ts @@ -5,7 +5,6 @@ export { useRouteUpdateActions } from './useRouteUpdateActions' export { useERUtils } from './useERUtils' export { useRecoveryTakeover } from './useRecoveryTakeover' export { useRetainedFailedCommandBySource } from './useRetainedFailedCommandBySource' -export { useHomeGripper } from './useHomeGripper' export type { ERUtilsProps } from './useERUtils' export type { UseRouteUpdateActionsResult } from './useRouteUpdateActions' diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useHomeGripper.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useHomeGripper.ts deleted file mode 100644 index 55fe64fdcc4..00000000000 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useHomeGripper.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { useLayoutEffect, useState } from 'react' -import { RECOVERY_MAP } from '/app/organisms/ErrorRecoveryFlows/constants' - -import type { ErrorRecoveryWizardProps } from '/app/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard' - -// Home the gripper implicitly. Because the home is not tied to a CTA, it must be handled here. -export function useHomeGripper({ - recoveryCommands, - routeUpdateActions, - recoveryMap, - doorStatusUtils, -}: ErrorRecoveryWizardProps): void { - const { step } = recoveryMap - const { isDoorOpen } = doorStatusUtils - const [hasHomedOnce, setHasHomedOnce] = useState(false) - - const isManualGripperStep = - step === RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE || - step === RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - - useLayoutEffect(() => { - const { handleMotionRouting, goBackPrevStep } = routeUpdateActions - const { homeExceptPlungers } = recoveryCommands - - if (!hasHomedOnce) { - if (isManualGripperStep) { - if (isDoorOpen) { - void goBackPrevStep() - } else { - void handleMotionRouting(true) - .then(() => homeExceptPlungers()) - .then(() => handleMotionRouting(false)) - .then(() => { - setHasHomedOnce(true) - }) - } - } - } - }, [step, hasHomedOnce, isDoorOpen, isManualGripperStep]) -} diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx index 4331a976d5e..98744985225 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import { css } from 'styled-components' import { useTranslation } from 'react-i18next' @@ -20,7 +20,11 @@ import { RecoverySingleColumnContentWrapper } from './RecoveryContentWrapper' import { RecoveryFooterButtons } from './RecoveryFooterButtons' import { RECOVERY_MAP } from '../constants' -import type { RecoveryContentProps } from '../../ErrorRecoveryFlows/types' +import type { + RecoveryContentProps, + RecoveryRoute, + RouteStep, +} from '../../ErrorRecoveryFlows/types' // Whenever a step uses a custom "close the robot door" view, use this component. // Note that the allowDoorOpen metadata for the route must be set to true for this view to render. @@ -30,9 +34,11 @@ export function RecoveryDoorOpenSpecial({ recoveryActionMutationUtils, routeUpdateActions, doorStatusUtils, + recoveryCommands, }: RecoveryContentProps): JSX.Element { const { selectedRecoveryOption } = currentRecoveryOptionUtils const { resumeRecovery } = recoveryActionMutationUtils + const { proceedToRouteAndStep, handleMotionRouting } = routeUpdateActions const { t } = useTranslation('error_recovery') const [isLoading, setIsLoading] = useState(false) @@ -56,29 +62,40 @@ export function RecoveryDoorOpenSpecial({ } } - if (!doorStatusUtils.isDoorOpen) { - const { proceedToRouteAndStep } = routeUpdateActions - switch (selectedRecoveryOption) { - case RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE: - void proceedToRouteAndStep( - RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, - RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE - ) - break - case RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE: - void proceedToRouteAndStep( - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - ) - break - default: { - console.error( - `Unhandled special-cased door open on route ${selectedRecoveryOption}.` - ) - void proceedToRouteAndStep(RECOVERY_MAP.OPTION_SELECTION.ROUTE) + const handleHomeExceptPlungersAndRoute = ( + route: RecoveryRoute, + step?: RouteStep + ): void => { + void handleMotionRouting(true, RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE) + .then(() => recoveryCommands.homeExceptPlungers()) + .finally(() => handleMotionRouting(false)) + .then(() => proceedToRouteAndStep(route, step)) + } + + useEffect(() => { + if (!doorStatusUtils.isDoorOpen) { + switch (selectedRecoveryOption) { + case RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE: + handleHomeExceptPlungersAndRoute( + RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, + RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE + ) + break + case RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE: + handleHomeExceptPlungersAndRoute( + RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, + RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE + ) + break + default: { + console.error( + `Unhandled special-cased door open on route ${selectedRecoveryOption}.` + ) + void proceedToRouteAndStep(RECOVERY_MAP.OPTION_SELECTION.ROUTE) + } } } - } + }, [doorStatusUtils.isDoorOpen]) return ( diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/RecoveryDoorOpenSpecial.test.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/RecoveryDoorOpenSpecial.test.tsx index 76e42a04c6d..5cc4ae74b87 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/RecoveryDoorOpenSpecial.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/RecoveryDoorOpenSpecial.test.tsx @@ -1,5 +1,5 @@ import { describe, it, vi, expect, beforeEach } from 'vitest' -import { screen } from '@testing-library/react' +import { screen, waitFor } from '@testing-library/react' import { RUN_STATUS_AWAITING_RECOVERY_BLOCKED_BY_OPEN_DOOR, @@ -28,10 +28,14 @@ describe('RecoveryDoorOpenSpecial', () => { }, routeUpdateActions: { proceedToRouteAndStep: vi.fn(), + handleMotionRouting: vi.fn().mockImplementation(_ => Promise.resolve()), }, doorStatusUtils: { isDoorOpen: true, }, + recoveryCommands: { + homeExceptPlungers: vi.fn().mockResolvedValue(undefined), + }, } as any }) @@ -70,7 +74,50 @@ describe('RecoveryDoorOpenSpecial', () => { ) }) - it('renders default subtext for unhandled recovery option', () => { + it.each([ + { + recoveryOption: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, + expectedRoute: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, + expectedStep: RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE, + }, + { + recoveryOption: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, + expectedRoute: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, + expectedStep: RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE, + }, + ])( + 'executes correct chain of actions when door is closed for $recoveryOption', + async ({ recoveryOption, expectedRoute, expectedStep }) => { + props.currentRecoveryOptionUtils.selectedRecoveryOption = recoveryOption + props.doorStatusUtils.isDoorOpen = false + + render(props) + + await waitFor(() => { + expect( + props.routeUpdateActions.handleMotionRouting + ).toHaveBeenCalledWith(true, RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE) + }) + + await waitFor(() => { + expect(props.recoveryCommands.homeExceptPlungers).toHaveBeenCalled() + }) + + await waitFor(() => { + expect( + props.routeUpdateActions.handleMotionRouting + ).toHaveBeenCalledWith(false) + }) + + await waitFor(() => { + expect( + props.routeUpdateActions.proceedToRouteAndStep + ).toHaveBeenCalledWith(expectedRoute, expectedStep) + }) + } + ) + + it('renders default subtext for an unhandled recovery option', () => { props.currentRecoveryOptionUtils.selectedRecoveryOption = 'UNHANDLED_OPTION' as any render(props) screen.getByText('Close the robot door') @@ -79,26 +126,6 @@ describe('RecoveryDoorOpenSpecial', () => { ) }) - it(`calls proceedToRouteAndStep when door is closed for ${RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE}`, () => { - props.doorStatusUtils.isDoorOpen = false - render(props) - expect(props.routeUpdateActions.proceedToRouteAndStep).toHaveBeenCalledWith( - RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE, - RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.STEPS.MANUAL_REPLACE - ) - }) - - it(`calls proceedToRouteAndStep when door is closed for ${RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE}`, () => { - props.currentRecoveryOptionUtils.selectedRecoveryOption = - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE - props.doorStatusUtils.isDoorOpen = false - render(props) - expect(props.routeUpdateActions.proceedToRouteAndStep).toHaveBeenCalledWith( - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE, - RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE - ) - }) - it('calls proceedToRouteAndStep with OPTION_SELECTION for unhandled recovery option when door is closed', () => { props.currentRecoveryOptionUtils.selectedRecoveryOption = 'UNHANDLED_OPTION' as any props.doorStatusUtils.isDoorOpen = false From 6c2948e818283e6a443ebecab44164a4efae16bd Mon Sep 17 00:00:00 2001 From: syao1226 <146495172+syao1226@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:48:02 -0500 Subject: [PATCH 092/220] fix(protocol-designer): fix hotkey copy (#16960) fix RQA-3682 # Overview Revert the hotkey copy to what it was before without the symbols ## Test Plan and Hands on Testing ## Changelog ## Review requests ## Risk assessment --------- Co-authored-by: shiyaochen --- .../src/assets/localization/en/starting_deck_state.json | 4 ++-- .../Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/starting_deck_state.json b/protocol-designer/src/assets/localization/en/starting_deck_state.json index 0522cc1291a..cbf5e74587c 100644 --- a/protocol-designer/src/assets/localization/en/starting_deck_state.json +++ b/protocol-designer/src/assets/localization/en/starting_deck_state.json @@ -16,7 +16,7 @@ "clear_labware": "Clear labware", "clear_slot": "Clear slot", "clear": "Clear", - "command_click_to_multi_select": "^/⌘ + click to select multiple", + "command_click_to_multi_select": "Command + click to select multiple", "convert_gen1_to_gen2": "To convert engage heights from GEN1 to GEN2, divide your engage height by 2.", "convert_gen2_to_gen1": "To convert engage heights from GEN2 to GEN1, multiply your engage height by 2.", "custom": "Custom labware definitions", @@ -51,7 +51,7 @@ "read_more_gen1_gen2": "Read more about the differences between GEN1 and GEN2 Magnetic Modules", "rename_lab": "Rename labware", "reservoir": "Reservoirs", - "shift_click_to_select_range": "⇧ + click to select range", + "shift_click_to_select_range": "Shift + click to select range", "starting_deck_state": "Starting deck state", "tc_slots_occupied_flex": "The Thermocycler needs slots A1 and B1. Slot A1 is occupied", "tc_slots_occupied_ot2": "The Thermocycler needs slots 7, 8, 10, and 11. One or more of those slots is occupied", diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx index 51f9baeeb10..6984d07e8b9 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/__tests__/ProtocolSteps.test.tsx @@ -104,8 +104,8 @@ describe('ProtocolSteps', () => { it('renders the hot keys display', () => { render() screen.getByText('Double-click to edit') - screen.getByText('⇧ + click to select range') - screen.getByText('^/⌘ + click to select multiple') + screen.getByText('Shift + click to select range') + screen.getByText('Command + click to select multiple') }) it('renders the current step name', () => { From 7bbb1c2f40108044a6841ac1c2bea893cce8330d Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:54:06 -0500 Subject: [PATCH 093/220] feat(protocol-designer): onboarding animations for ot-2 (#16958) closes RQA-3677 --- .../images/onboarding_animation_ot2_2.gif | Bin 0 -> 791398 bytes .../images/onboarding_animation_ot2_3.gif | Bin 0 -> 808934 bytes .../images/onboarding_animation_ot2_4.gif | Bin 0 -> 619803 bytes .../CreateNewProtocolWizard/AddMetadata.tsx | 1 + .../SelectFixtures.tsx | 2 + .../CreateNewProtocolWizard/SelectGripper.tsx | 3 +- .../CreateNewProtocolWizard/SelectModules.tsx | 1 + .../SelectPipettes.tsx | 1 + .../CreateNewProtocolWizard/SelectRobot.tsx | 1 + .../CreateNewProtocolWizard/WizardBody.tsx | 61 +++++++++++++----- .../__tests__/WizardBody.test.tsx | 2 + 11 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 protocol-designer/src/assets/images/onboarding_animation_ot2_2.gif create mode 100644 protocol-designer/src/assets/images/onboarding_animation_ot2_3.gif create mode 100644 protocol-designer/src/assets/images/onboarding_animation_ot2_4.gif diff --git a/protocol-designer/src/assets/images/onboarding_animation_ot2_2.gif b/protocol-designer/src/assets/images/onboarding_animation_ot2_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ce6504b28c4bac11285cf303b4f7182521b5a5a GIT binary patch literal 791398 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,dEy#>8!^N)SyX*=AwElU%~*&@O2FX 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 z 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

Di22P<5^9> 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 z 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

Q&bo}HAPdjj67)>2C-$B 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 Wz`U!~Fi`>o2yieNvED(d@Bar?6(5=a literal 0 HcmV?d00001 diff --git a/protocol-designer/src/assets/images/onboarding_animation_ot2_3.gif b/protocol-designer/src/assets/images/onboarding_animation_ot2_3.gif new file mode 100644 index 0000000000000000000000000000000000000000..e1b8cfb92913f2ec774490660e4c30604cdeca6c GIT binary patch literal 808934 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⪚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

siBaz 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

M`XMl16&aGfL@A4enx#uI-n24X>(Aw}>E7`WD^ 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 C8k823DC$acx4HN6+(UfwY8O|aAD z=?T0&4*BV|!Km%$Btf1CYikS7NH(d2%h`qj9)V8dLF2Dvk{@RJ4|8`e%f zut6(%V_#q!+sLn_As4t&!h_yqVfd?J{SVe%k5W~r*HeA$8UPrHK4xx*OPRZ~;Uap^ zB?26zOxi0hspY=D^oa4qL$O@x+{b2$Q2n;-SHDX~CK7IGs+BS279wO+S}XS9NR9?8 zECOc{6%hfdfd0_L0l*)M&F&5F&D&$F^So}H{{S|6AN`^!*?I&6Im#ubG zmg?L}pKfi9u?Vi)J1!wgLEta1W2=CSW*pQhn;%zE)6XwLBu9KXeINPui4 z99I!5a3&=@|0svbQum8YVpN=P1iFAQJxhD75(}BV<;gxZhka5v&!>|Z{4@*zFW0ygk-%wE!Mh2HvPMnhpYo!qY#t;2Lf{Z%DM-H&k~h#vgI#+% zYhu_lG}S?|SLU2tLAA=h#t?_3oDK_Y1@W`QCo44k8!c$)+{){EN|eh=74mx6pN9SKHFI%5n{Tt?1Rh6wM?Q zBi6));ZHnOzRFvl@Bk!LXNxXRjE+ecGqr*ql-Y(ss&`PKor;v_)_P{KQFh~y5OvIy z#`6lPnx&`2)eA;bHRSEddvkFhW#NxIgBaqug;HFQKiSV65wYjg($gxiWZv#_kFHx{ z*vJ0w4noasQ&nAVIWehTPX$6;x*iH^s_`VkiryjK)WQn6lKV3Jr|vr+W)^iI2xXx< z$CQSqst@sZE6J2%Ftl{aEG}`&FWS9Fuqf9h*2J+%l?^T;&%S*yE@<_ooaGw>`dymA zeZM9S&d5lvwe@P|;lVfXm_zk>>-L!GWrSO2LsVbR8_`h1XJ8Weab`Gf84oHGJ6)Vc;a`7!HLJ0>2ouPvZeVN$QmjoX6}R#xa`PG6?65_ zx{S(;sze!)KUwWJ%WycV&Ux$YN_VYmOP2?5BIdEo#DuG(y8cK`lk?Dj2?n-6O&oUT zMp8W*DEoX|7PMJn9XA>qiUitPby2adgD(g~KaLzuJ1;V86&EVyPxr#SQD9qxH(tAy zCH6k9kA|93txaIUJq0Zz3w~{yS=tKHy_|+e#xBufRE})=Emp=<9Q=v{Fsv?}VF$f} zt)*ede(BzbLbS$#w!+cLU7XV0?vuBqbc{Yvk+%YpRA?)M)rZYHGnt?<1=y;q+Ssml}5uJ2w9 z^kIX$ZOMW^XsQe$pAeq0eZjT*6GVd5Kk0>}b1;9lnpWR|+t8Q&=e>BylcW>$%P0PR zP9`&3+a$AGq%Z;ca|3_v<U~#l+tbei5lPa1M zoOO|10so-T^a7LrUI=d`Q7ek0ZXdVle+l^G_maKh{^vFN52n5j;RErdIT;z-&YRpQ zf`i7iP;eY-dJ7hgveVqHKN#%4ffJGWRdW@snp{{)KWlMozHI4!F%7mpZy|UqC0Ysx z4T~L+HLeW2VTQ^(QA;)1BFWDpyj11&&tn(R$`UsCWFE#p{93?nxcOjko}`s~k@KLj zN{?#LA(uOpyiEhz1bStYR;yz}>AZ@qW;5qg=x+eHvmj*@W8phCut}@r{j=F*w&FV! zSPLiOLVI~&mPaB+Omt?BrG8?+?KVFOmh95DOxm0;kpHXzobnr`T*T)1yVx=Lm(-%P zDN69QxX|i;Jlwlbs&U9}x(vG7yr;cu#QmQbh6l;Oo0&xZQ?38H<^eXcmrf_O?6M4T&L6{kP4Zd)&Z!({afVotoBGJf^T znC_MdTqm^=DEmL|aeWF?RJ4M%=shjx1UNI(ueZ_EDtqIDhJq=D^g9KDg@?qgYv$dg zHwvM@V@%odjE3lU)Hp;`%D{swG`KOb1Pf?%A%^Tye;Aj@eLn~hgSG5GNpY?N;hpp} zw?rK;jWjfht!!Z0q=}qGwmGzq)~QX-@Qcz-l729a=G+ju*Bdw@WXa9_RVAQ7_Wnm# z1-p&W5*7=A+=P0XOxYYvhTKe$C;~?+!M>M)MB@gPl@~S0kU?@?SAax!Ubk4fkzL_b8%3hv=4kt z{Ihlaav93|GyrgR2ZC@1e_X)oEEYv9lD>riAd!#)pC62ZpR)W>m>sxOsk|toymU37 zm;wx~ER>&fT48t$pZkw<>W8v&`fo*@094+Vvu_KbfQ9}yT6GQpdw*KT00j>?tL3Pu zoda`FST<^kHYiopE&-6GES;M}{85!HTeiUPW|pnGYAqg&{{XA4bAUEgOEmqnHq$fs z1wic>0ChnKbpu?lYKhu<)*XY;;=+h_Z3)g0YF9e@$2|qt19~~mP=(HV+b!V-&iYO( z`fn@xG%MPaDm%si4RhdX)5?z5vs$0?ZU)OA|ECkx2Z#We1}^{KPSjB=zT~nJCs37U z%}S-q_=QK$|3p3YhVcsw3JwVk3y+A5ivFLerkCH{>3)@KkJcBBr?MH1Wl1*_PiFEuo^FgbluSeZ z2n8Y$gBnX`3#1YmbjBLX=1UX`K-r+C^2G}E28+$Hri$en{r(7I8E*LiI+ML@IeTvA z&L-%!c57E|pdTzO-h_BdN>u7=d2;9A?PJY&_tvNpE zYAdgACc8;@6tTquPIuF&x_Zk3n;O5z8l#P-F7(~Dp*Pd>9<|%*95)XJeQ`E;z3Ugk zG+1MVd_EtbLzsW-vD-g5Yxq?^sA;>0z{0Ql^*wW~`rne12|G=jz?0b|3FAS?{eGXQ z?F3X?(-|6>{o|4Nz-y-LMBd4fsUz(~Xq!{S`uuD&Fpt1u8(O|X^g^INEQd&dZ zOMyeohU)jM5Cq!rQqcljkCL=7H8gT+lv7PozmD*3nV`;Slw>!4sFvuX&xF%4dQu#d zm}3GEGki4@5KRMR10L0YNLJ;b1c%S#knJo*T74to6Ts`iKo9Uz+oVQN8yW@Y#; zbK8!EH^b3c4QT2+fv?SHi=|W1mT84GSn%yM7sg8?%Z+18x*)o=83B@84u`gV(cAGphcyhK(b`Z_+yQiC4gRmkFLJ5T-wMG*%3sU zG|}$PUbu>MmILsXPN`$OsXhY?ml{6RHCLLfUW``ndswBN2WZ)vT+C&a2BIXG|E@OJ z&Bz%2(Vw4@gg|IT(MnCr965-L;!ZxnPFh;1r}Wc$drVZ*gK{+6S#EqTy_qR1*LBpy zC1Ynw{o4R$!uw;gK`4sLf~y{VrG0evnDaj@0(ZR$$Jdy`m8js6n%y?z)wMJmQC;3y zg9@XUT_f(&m&16eN94?#8;3U>qy$9L_I9+eA2 zE7gmnc^!Z^kqgH&(u?MC9Y}_fhwwjAPkATu&|F9QNnWo*g;4U*L!|~N2yU!Ap#X*g zX#+G2H;Ph$xtJxTd<^pOP>k1LbQB@~yR2%@4b8x>nPz?zjoVR-D}Ds5=;io|)0|(~ zgy3k%5V+JK_EFFZ!kD^X$#3Ok(0KZLV?sflMT*-{76N<7Y}b)dy$55b0 z#b~rrqieCybWtd!_!I#&0+Q7MXtNuH6j^HOY$^ddcO}?lWfLaK>o(49dr4H@A`Ig) z5X?Qu6)mCwP5@m-S1AE1P#T*4iq{{9EH73@g zD3G4QS*dbS#qxur(U3QLRZ3ThqQ&L`Pg&cLrPuWv@%~wrmodf6`HOYL+j0U0ZC3C6 zmq>{7MS2F8%rR+vBOUx|K4$a1#&6Z+d63O=&}P#Zk!BC?%YDr3gAJgVRs zk$?hW@CJxCt^WMM0VtwJJ<(xNP)e+}LHP$9fK8fFz|B2!7KR1jXths91}K;GpO-Ow z8RJVv(=U*%c$Z^)CN97q&(@}Nf)x#3ClPrc z>nv|gzZ!jAsLxqUFi*A;bNA2$MKqzbe2WGlf;D??9bhs1n3eytoWLGXY5D6VtAuQ+ zr9qL>fG^i8Yi=PM7@=C?SXU11q@ftVhg(WMNNf5VU*jBZF=Jjf5+v8LDO0|PY^(zj z5rrVmrg`W?J5dp9bXzXpswVJzc2WCWc+Nj2Jk&F@3DNkTCJ!bgv@UvEy0+!c=iR2H zu8CL6n_I#lDa$flT3=98Ms4jcwY2VgG2>Nw;KC@VApp6*`nM=)dRVmPdVh$xbXojG zrBba^6$HRNn)#c0n{+lY*C3H>Z<@&8_v&}mMO9f$9-!qVTn{Sx6IN~wli&_xMB4|r z)BD4^u7Gci{UWs@{H3b!sPipF6-pwF9dum>@R{W@3tr?AeSZPaSjvKZJu$huBt~6y zi_fnV=PGr90V}tSjZ!5zGT%HW9C{ojQ&Yv*TnV?-^-{fO`+7MAgM|Fr zQr}g1PBo3aDlgoh^NFw6sQIeM-5Xy zm_gS;QP39d(+$*Bjub#!XTiIoc^gm7u9W;l!?8nk6@#^T{FnQ5?99@N_#~syjk*o$ zzlck9g(oXn7CWVWuk_f*XYVSxcwiECQf#nuv45tC4)XVHH7T3s7gWeW!I|f7I&8Z* z4pKlqiRYs3&)+#*8@Il{(+fGj*sZ0z@8&;oR{gr-?kKR4F3H&l$A#|zihKs~mb}-X z_m~VfO-gDR1XH)K`!>`KGqispEJcF%dsGTJAF;OnLFEfX&MJ z?QgVu8rQ{9U0iJQ>Qhx-OY%O@xn_AELpR^ghv{r_HQrtF3N$wFjJMT$x`Nfb5 zy@njss_AgwuVwJvt06vb7}On?^m_4beLmwbD#E@xkdg7g&7Be7Li#VPGWjK1$3G`1 z?g^*8LfM*E>4scuRo$}_JPAxavz}b;CFLz~eP3bxOw=3@c)cM^Eq*WuuHo>~IQsr& zV#Y1Qj&d_vh)@21lboVjJU2~^`I~*c2Xq~Aal?zfsSu?7ab4AMt*3_l4}$zLZ}jvf zt52h6;fsvq_LU}$Z>73BO%w}ipW$)`09mZB)TN(#xF2Y)|V1*EKRw=+R zk3FGV(8ZItwrdy~f*bjWtMEvucbE#(h?MNI7uj=&m$6ZpnR~36QcH>#+=!dyN+1=D zGCH2Wml|-+HFO{~BK9Fz2Hl>E*D<#xxOK^8X4s>|H3Bl78d4M%d6E>`oaU;}Ynd?; z8OiQHcRJtg5Z!x>swYDQ4bUIz$-zy7*l8LtGpdJ`D}k6 z<|I#y5sf(G=;0Q*UE)Hp>Xxb= zSBMq*J_Kw^a|S%cD=q`rHGE8^#E;d(tK5QPR-zU|5+j47N8JL6rM-}(VW^*?zz;Z7 zA-^fhJep{dq+btUJ7cPl&G{Fh$?NB8fY4x zoUxoJKjW_RPbG+$5?Pc`q5`ZwHj6;;A|VU22$xJr*Lg<>^I1*6d`Q0#i<79e;tN-c z{T|x9s;!BbCV!uijT;M+^eG9CPe)9CdQ9DU$}AO6G!Bp7Rr44tHDwUbl8^{zG>;dP zmIx|yjFirvk(OSj&k*<>3Z}KOvWswhKvU7k28GIQeb0$i4uc<#I6g@rz*m(rH?A|! zPBc&ZU(B6FS6p4#U<-GGO9cq-9$XS2xVyW%y9IX$?p8QexO;GScXx;2FG)3D4|~+3 zUi}m9;I4JfbDq8TOL<-*N)&xzhD@RNkxhP^47}o6AvEVDLo895lLj=zWxjfrpG%BM z%@Yr9hxM>2IBUv*TLaaDm|32><@;`kB(toWC=~8%8vPq@}i|+7!qk- z%Z8pKwhoKjkt!Nm-RNbaeoI9L+Jd}nRm^NMuq7(rhf`FY3y&l0cYLJ0QOf$(a>^^r z!aFbnPSZ8tv{XCFCJw{i3F16#eR5@!K>T@7%_b$jj*8XD)pNJ`b9asga)*xH_XGL@peTocTwO1*~Ntb-x*W*zpCzKd#GaHt;u1e4c zeBx{D&>?%2>5su@)hkd@ds^WSgdm{h9D+ab^EA|=YR*?yT1112zzuo(;B#=ozHcU0 zY>BNv*Iyyw(UqAA<9_;heTIJR4%!LHF!i zsqpyGYYo=UDU)SVHL}%C;EmNLYJna-DyL?tAYc_HEEQ|1^1IEZpPe_>hlN}M39Y@I z=^mT6Y#S5=OZb@T>Lb0_tX+P4d#mfA4boOzwbvzN>w5WVaR1ln&!ldU1EOjxL_MuA zVa$E7XmPaAEc+_&R#I$vmy+qzKD<$rd`CLz& z+*Z}hu5Uk%kk#E~6;bpQ7_XbDT7XtMqj<7@)pBmzKlnHKw3ElsxPLr{_iU=&m?8So z7}Ja-WC`JY5}JECKgQ6YF0zDN-NvF@Ezu17z)&XfcaEE8s-SDJDPr-ui;ijCvW0Q% z0X>{hCs+7tK?iLl-&m&{eaJJf1yNz;Dy)j~ulPV!%{kJt+M%s!K($_u_yFT_fH_1l zp!+ZC`Wf9?t@5&CUSPJws6bqHVs|G>Y<*#TkKfjk?$&?|DY3nuvma6Wy%gjubF791 zRrIW0h1Y!gvVCS^0`XnC|F4G7sd$-?t+?O(DR5)1ec@SWD>h#DE*x#1XiIiQJ*GW@ zs(OoyE*~X+#hAo|eyh+oU_-qGTt;e49y=UHq;cLIlhn_TLEba!phSe;@MmMChowT0 zc?W}~3Ca-f7__zXT^Jnmu@a$cr@4jd2TSxGuwz*cW24rFy0oydxbB}DM&g}C-iE@di@flP;I^B`Md zFG_Qr%S_39{NJeO-F$FEGhYah`UJyE-M8!+dV^)6;zi5xQxw-g#+Bzc1x<|R5 zvgRxKd1o}e0$uZ05==hAXVL(*t`^0aQpTNmUrpJaz*Bsq9YZq5E+lhdwtMk^H=5fo zU4O5>Ipq`mYAo0~2%ov7%Dw1SmFW6rD-_*n&6Z{NYe^OJKdCFTnV`3=?PFEwaja5F zkI^eiG{*z!jn1RnO;tys)dNuHsN8aoGr+T~_D{v{oy47U=bobSm6cQwY~n5{di-=F7#IjcWGVSx=fEE z+ni%!2u-N%H*FIKQF4NN_Pj$(`P=xX@=Ashkkl97=bE69aGT!&Kzwt1wts_F&fPQM zJy^X^l%4q{RT~7DYysQ!mI?UQ{Kl4vi|BzW{|RbIJW+X>Ap}WYdoH!igO*a~J#y-E4 z^&*Jqvlw^4BHtB*F_zJV_@hOJY^&T4l!7_cA|`-eWkgk*m;t?sH4U=HD#!ZD!NK}U z@=Npahw5^xZu~TwXo2Dw4N7i;L*cTHUr2WKOu`b8I(MM?nMjLVJH2*BUUF+#TcHb& zT#dX*R}gixb>h@^jL}*9UG7w@egrZr4ax$|=R?8@6Yew0Lu&jxmqAi&$1I)jJ?&m? zyJQ23f(+bFqWQpyBoEDa25Vky3W{0c0|7GY1#OU5V8(YvbWfdgnI&$V)QIZE-Wl&^ zX98n}r(Oaf3ZhdnQENDaBlE}XV4e>3qI_LPN)yD`&s90#T_Mc+I&KBi>ux&qpAmen zk}(+F)x3td_tw%Kv@w3ym9dK&l3m>}R;13~S#E9{vdYYE4T93!%qYx?ch_BH;=ytA zj8;DPYiGkLK`qwT9(Lfp)hEry3o+9u40$WTyj|$%*Ee_7d=s4e4w~}3dvLjajvmc3 ztqy0clZ09mjb=gHWM573vFi6cIzS3B2nh*fD+CF5;A6s6^HZ&8Not8C)czT_p z)OsqF5-EG7Q7NJimd?5OYd1}S3v#0XgLdgTHT|@+*iB~BBJzIQF27ifvCFa$I+arM zRJ90B!CS8Q{tNO~OH>Q0={^OTskNqCIV)H>T}HIh=&-h4P3I zxX*39@W5SxLfOR%43)59U96r8viMZwBT@ypBX#^Ew<>>Ubv5-tn0$fW612?x^0Gx$ zgM^xDqn8t#SM8DThk5p7=TC1nQ8T9SAxBrPaV526oRtgE1@arqLclkVHV*+&Crb7rwg#Q&5v zQNVE@`wBU<^&Y2G47~ScP?f*9*Y4K)he<(*1!kS`nF!<%36%2%5dBsJE`jb+x=#u9 zd_%@5EZlM;<1FABARmCVJ89MVKCHaJq<=oDp+3sT<9b=hf7+!9aGNEPE3oMr#E-=) zSE;uNS~G)qfAT8kl@y@Q!N^KyhvicK*0|-mb60vpVTz=e>QK>UY0Xl|1X{g4fUo$> zKpAzh%9sglgP~46FFsPiL4@+TWK_~R8%5CWpNTA>iYrL^Am{3PRj-vr7kSZAwFAu~ z*BJi%c7GG|HM_aUU`M)K7e?&*-MJvuJ)(EXb0+`+kI(8KS>-^i>+Q#TcxNx?%MhvD zjclXJ*9O|Q3N}S`BmhBrR5q~p!hQ)?d^yDO-;2Eu2L9N-yS!^Li?+)3F{%(bBdb6E zPxb_jFNQ>A5(CzwTlV@Xe0~*)rlm+a@3S?$W)x)aRE2k( z!wLFA)BZhBMX+6hHcs0cgdXBE{u0}Kfw^ELduCq>s2`Ji*mp~>?C0`_WBqA$$qJ1Z z*zqx_{H^}v_%riJ(jS3c$uz@iN9Gr=Yx3BqiyhvAS&UtW7tx%+SR}HUuNlAJRtlgB z>SS-xGeKs*j{XHD{Nt*5hR3p6WrN`#%}2f36p{1BoV~O~+@oiOZI1pAj~#BsVm|Jy z1K?cEoH(!xje)&kh5sT8Ri1tA`t%62JC|n<>1RA3=~FYTn^C<*ygBU^s6)VjAet48 zQX3;m%^<~#!Nn&A^-uTdV?6~q&p2a!imFS>$AYs!S*f#o=V7a2HlD3;{#)dnpTLgp zRW!@>=^3`>n%N#z;Q*~v8NKs1DQ0Z8uI{qu0_?4XF&BfuHj825v`3_z%sB%OR|8(H z2Hau&dbpi`se65|%fYHGq`d9qWJO-M#Ukdw#-GEf2Vs9IOdGGeLrn5!2fXGgQVAbr zpF|=Q>N(l8=_0ai*H0OALSk~jhfH$f61rQD-wF9*6J4&)Jo9k(-C3MGWfXfweh81# zn|5xsi$juZUYs1IkJD+0k+WyIwi#1ZkHMAgNRU#xi##Cg3gKgRY@t za5MLFn{#y!w8@_AY!J-PE2>|8Ro_{!DInuYh1FN1SnP0(Y-Fx`qq8hK^VHSjl6)>V z$g!MXzUr{6aC*%$ep*l@cfKnmCo%)k{x?H+qPlT?^U1@7mAh0A_U>R+0r{7Sc7834 zMB~>j`#b_Dk&Hd^{y=eI{u4+O;;=)Zj%Q4l6GI(|I&bb1< zrk1%AY`4a%tI_K+r&I>f{GActaJ>3=N2`Z>sLc5qxF_9nej^0PW*kAhaeEBrophq&ZB^-no`m_naTNmO?K-m86&j!Q0L{G>U{1m`Yp>b&IK=nAI$ zk;M+zb}OEK`DO2uz|5Zta(J@5hOaUudbBRmW6Yy*O)os|l-wq)gDFCy6EZR%eft`z z09-I4yF_=YfT^AAkjOtFa?xL=T=NTm-RDH-rh=r^lSlE6-psIKs})S->d_wn&6W}% z=kG;VaBzybs9Xw8iUP~k*FCst?zY%svk0@ao@Mn?epeCaqN)oHKlp8OB6=16xep|} ziaA#)7AvPeQY1p`r^fDMhjt z7y-`sw0Hu^3u5>&s3jH}{5S2nXp*5z@Mjad75J!lxLPVG=$sxp|FJ%b>?%X)#qoyW zEe-^Jmt*-Us-Pe%EBA`Gdl;bDQFSz{nLGlT!>7+5VLPz7RXi}gLs+x$8Snc|Y;5B9 z9|3mzG-pL%F3dIa8xb62<0ORi!Q#ybIklZ;(|-lmGJ$$nPK^Lx&m;IAF`h3M7<-DbGt7O z=ED+gVc~yE*P24g(J$rN8I`IbZ;?f_?*_~HEnCIjm@2eP>9RH4LYI=5LGcYOpGOt+ z-A#;CCpIOWmu@nB~=rk)nE^h-dPl87{5hqYXM{t00nUPR(;HOhM z|C+0vxrZWc)BU!E2%5#(u2jURG`CECKRoo`5tJhFtcVW zt>NIMa91c48?EslZUDWf*0hvpUdRKdE;O3JuI7V4-Yfv4DQBxw27%mf{EM1V>L{f4 zbpl^fO4V{LJbF$18bSmAG@Ml`4}C&&8y?RK$!p7GBh^K}SLaan2an2(A6o+~Go^HG zgk%H^U;nMRCn3lPKC{Bl64u@X4>`;H)^w;`;c=$$pwrMMgZ^;K>T?kgMP}z^Op*w? zArvkht6jzO`JBPB=jpY?D-#R~2(|FYZpLYlpjKT{#)b7{d-StXXz}F`w0R+>aT+6v z4}^Oecq=pCdDh7GWM%*O9bm{^8=dRYgCQ{5ZW^2RrK;i6);3@+EUk!FQ`%80IU@u` zJq;XsT8H8n4My_MtA}wvGcEU@W4RqTFPFlTytx|EVwYMKq_`s)_SW~mdN+V2GziIt ztyH3o6H(x!UWvpCGU6Jwx#scXStx>$%sBPk36TqVWy%c%iExUH`Rs`j1fPNFnTe1R znnCG>FcpDq*>n#g3zZ>eQKDoz!ZZe$NHt7DJI=Mu?%5~+G6K2x6m@t{Z7?%L$?2mHtk z(Hb|{dl7Pd&FwR`R9>6ZEi}DdEubq|SR~dL;Q!T0n3&=vUYQm7d>~1}m77K3R}U(T zCC+ma<;Nn%Nv6meDKaeaNFDP@G11Xc$YePFYGeno)3OYPc_GpEQkhySTod8-hGVx8 z^)gT-on9`M00!q_EBj}Ibb#zwr={`EKn>lDJ?;3bOj6UAASSBh2^Spq;=<;R1p;9C z-xymn6Aal*?utG^(Mc~XG|TVYrc7C0K04W=(87FPUon9t4muDafi8qGxA7^2!T~R;S`S5T`*4aI1@B4;Nz-tjMrdLbInslT%gd z^|20~^J9M{^DQ|KKA?b@R0Ys{vWBkRp7xW5||98@*;xhB-xD9w+5Yopo7 zk6CfSEk3A552nJ5qRW8)6EmR6=|4hxsNO)gP7YOYUp;ZQFhq1e3zt@|%*waliEt=> zH`~DvlQ{#|KdZxQEK;DWrZ1@fNWwtSPhw=R3+)|e`B~XLwNkIlJx>o3ne(kGsFTTW zfQD+=>s_kht-m=Veq=+xyr?Nu6OV5(uOzwd;J^0Ql_8@p-lol(-?+JrewZceS^w$v ziUJU9yE-j|de2Cx@e0Sfm_i?!e<~!S9eNKn>o(PklDobqz3w{2hL8Ua$}l0BStEy) z%p`4D9a!u7cExGam^?b5Kv!8`dwBGIdmnKyv=_> z?TPGS6^zNtAW^+EHm*<08S0#Sgz9T@Z`Foik9)kM_4u`%2rMaOFMtMTu3}gG45l{t zZ)BvX zOh&ul6)@+AxcsYkelC}^taB@P7!)s7jOMpZmt$e0+X4z0iRRsUHkpES;c5#v@jE8J z;x}yk=lK1AUu8TYz$F1KeJ;>IXYt6t970-I7@8M^L?Vkn=a)E;| zLfL}jNwLB+Qk^s0-{z5i6hHHKq~-4f2+oy?jzRUAk#-@Vx0bJK8#13mYXu}r{mvk} zs!r>RxY^72fr@_12?@R{ZqWJjBhstN;+1A@91)+H;HT5HEnLfUfOj~Va4))YS$za4Bxfh_}BUh^>X>BD@+z!<7hp)Ct3V@ z%Ck$Z4bzAnlOGoj2%GZ@@_Rz_Z@w3BRBT@byqr^gb^abu&?$^7mb=Ozyd27>wfQ~; zeLXl47!WQ%9Sr#6CUKP`TqWrKfRfwBS^WhiZxQ+rxk5T>EPJi^{f~`K9teB)g#7QB z|2*;EKMa6Un;fHot-nXvz)>MPcpPLrPj$2q@*Nnk0q^G*QRz;8u*lm#=tX zAxl#6^bHJ&h)IY*6*9K9WDIUGCa;qi?(rC|R0&ow+M42zV4l0uaB+e z2Ph&>B!^Jw;*~lo+Bvy-`GsO=KbcrX_^MOifRPC8d^`BC_FW!rCp~Jkrv|V&_IM{3 z?rHRYOBCn=)H6=>_>iCKDqm<_D2HMqfq3?wpHdM~=FExT+;_FUDj_1%$9>=j9I~O5 zeMxmL^X;jG@xHl|^zQU3%BGa`^O=A0g0;xg0>n!0NZ}Hd``3yNVS(zx z{*$|Y#8~l*>d*pK5ntJ)pwKuOO}uy}FGreW**-FTQ3}$T#7pP>CEGq*HbglX3iQ=R znP58$_nKnMXXj!9vd6U&ZxL89C(&sLCW{L|ulF#aZXK|9umC8f&m4;6bR$C6u_1^; zusEC?N47R1Ely>$-2Fy3fM4z3UJ=2pR4cIB zfdbD4k6NoB;xlcKw3SzLlabKBXfIM#*p5`akj|{9NI53X<-TB#idiE+8!SM9Z(d=q zt`>nx9Tb%K5N)FHp{ZI3LGV|3DWJb%){aaT0=e`$q+yhOj@6YTStX!QplXo9KvfCZ>vM{cpnxwoLKdSSN0D!#4b@L-uYlCzq=2(o_ZtyCs%_K& zfihu72RWan$H-IQ&=-k(xVGMybQt`-FH5QWfeuBhQ>dqn)UskRu<^QRqlku>;N;wY zvu9L9{gtweZTR`NRUmiG@QS8CwnSE*OOysi6-O?5!A^T0^7dxNH_~|E>d7uK8i@C zPT~H*qVSGb8Te%BY(I)?2qo&TqLRD}d>K$77&xg8fH9@1KpTWT!;V|-junM3+Q9dq z3+l4D^EB@?KpB*Jl{sG0;=}7FfVlKAyHCE_GA}`|&}CkI zm`bO)d!m&HLCqZsFlygOL|uYue%=-Jg+}3tZ&1E^D9Xisk7GllQ#m1-OIKg}i$Y1+ zhtxV?u8J7O(WfiiCOM_%K{7I`eOyGlFy4$Shm!Oz$T4{+e+mLe_$)IjwcQx9lDZ{u zHO$q=?4CaecPKbERy&fWk|>ToaF%=quM#p&k34Ap7Zo@kv5X<6yJjvxESpr?j+;TQ zyn(P#A*+UZZTHHwh+AAJCqqo*ejpF}792AVQE)4~y*wD){4*f}jX}3>95|p(=a((5 zoJ(YiLzMubMxo+)I7n5m5jn2RD=L;S7hcXw7`3&)qR_lZx*2nA(P;?uL+n5&ZAH(OTdu7-I=FE?$w*FTzp z<-Uxl>H7j;wKRxh(3#c>&+T!(YapX?rmkgwR9o+bDkXB;6xiQW5{TZb@rYha-vj20 z$txB<^rj8{HH=jq9W2X~I5M#LOHKqRv$~a90#YqJ7(2E#^QO8g9%J|-P6$*>`77aq zs)UshIj|^n{CLecyjU4ic^Cyijp!J!3Zp^>%beoX>zE8^Y;zQws>wl26fB=zo%zj} zr?zfu#B=JQMySu!>H09R6f%@b^-9ujT;gc?`>ET>nt}m&9*m2nOv!KwU_8LoN~>IG zo8_PK4X4N@vdfRZ{j!rG;<&!rGz_;Iv5~ct9MXm-`OOtIl4pw?&8KyQ1=R~7Zl>=3 zIiA?iD4F!ag5Fxm<@<#TyHtoprv>jMZ|Fgao3(ytc1?jw)JX)tkfmmX$LD6_KLDCr zOB>r))2}suTxoQUD=4@|R0C)%28fPScd?Th*?U23blM$48FSS^cl5OK7JUc;L}`{6 zrJ@`|U7iBj2D!0L5~Q0gv^-(v|6L#8yq<`Z=v1XZ_vP))6y&~#l%;ZgW3IuK(<%{O zuOroDEYx#IE$5k96^?81)6G?;i}M=FzrD!nt6r~G&7MOf--Dr(HgWi=Jmp&XSZgE| zjG3)AGmc&*8aZa2e+P6|OK0dxdRz0cT8GFD@zRS`pG_EAb(fRfV$#_Pg%IjDx*}rK z-%!e#4=^mGAA173Fut=lC6Ctfs}9!^nXyLRZg3B8ami!ISRN3!L3o%uf1CVqZ52B0 z4eS0?T&a$Xx(Q_ zMlid8Y47r9fqwy_p-yUORtDhyM(aZFJaYi;aI4n|hg!+!cd@KfI*ZY2|MnAIS6;A+ z%ip7LNjJ8#nTK*E!S1Y{O+DWKWN>CYn}64c?{C2k@ z1E?=4{4*u<*IS)y=VJgX)Es+Z=<_S2sEX$s2lE&C^BoL^JwoW>fXU-ZsPXabCytQ6 z?LWol^ZP*=_bdh1a|N^fB(uUHb11-;?l1qjEDmjLz1pn6=#mRo82Z&4^3v;FwdWlu z{1_R_1DbCmWbd}^X*_^{1CJA(?FKM5a8SvI0;S4Tl=WTbO7hA@t=}KhU38MBq`cJj z-Jbeg3?OJePMz~^3aU{6FFV$LL@Ft|g2=IpO=d!o7xBj#=LbptX+>{dB?*oDk`_i1 zem2D!1}IN-;gn)=Y_9M$z!1pO2ip%K&NfDhSw_Gz+^g2l8`|y*h9%1<#NN&)&EGA= z&c?*q78fD=mqd;W%pa+i#ReAr*^?nq+^-@{{4YQoZ#j=z_6x$eA&r1hh5`sL$`rvB z?%7~RDq8Q8uHkF&2If5lgKFNt!@^gGJ@L#v$kGs2w18e|WM&YKi58a~9WuD%{%vVC6GNvx2{G@9(t0K$nYm5nF#E~q9 zny~w@l-e7-kGj0aub9WMe2`J9CczA(EhX7hfaUBlY!jvYHVgzN9I$Eb@gk>Lvw%d% z@aERGg(=O4AM<;b2AMSmiENFrt~2@avp72rBs_Id*+tkAw8^ajEViUyuMfWJ9?s=a zURoHkWFLZ}VNj8ac~uWsd(@Q#it&PqXD|v5i4H}N4|7U;El=0SdWpzUvz702Ri6lH zJ!4kV4pq<1xd#__$5ND$i`c#u(cOR1R0ZXf0JOjcfXt9ViZyx9P#$3&@rXT-S&Kj& z4I_I*y`pU;^dsi$Wo2hl=mJ6xqa&OsX0dSt5==>nk)mPtV5vsgPSdL?nna*wTUJ8qOjwugJ?npaXbz_GVxl73N5@A+KvQ^+ z^}?Fl&+xKyf0z192(;~Ji@II1y@7jVJ=AQ5xu3;!xKVWt6UhCCPmBp9zP^>j7-)Oi z(*4xj2Ob|g;aIrY!U?gK1g}$sCTzQL(pm86?~0yEWS2{CPK3JBy@gXnty)Ipn|VdV zTfCVHnp&9}lI%Q^LZfXf_~*+*aNt}qC6GE!WBX4NY=02;lm#_p66ca4trGkKp3&EB zSx6oQY=7)>rDPVJB?=vm zSJ0W3o#n(t$i5W??NjHjS1JQ4m}>wm+cpI;l7Nb0TgTqyHyhCOM*4V>P)!Ah^Zeez z7|)+Ris!uKIy3N}E}TAYsV$?hPC@?MSy>3U&>;ez2%sp0p1^Ec0cOlb4x&*PK?EpZ zvYaB;*j8V!5)@Ly%J(8n?zpm~R>Lx7GmAsMi6B&*`f-TV2TFdBsDudRX6K9u#(*lI zaii`xF?s>$-WP4Yp%{ZAZOL{WwgX6;B5g5{j{b}3RgumPyRLPJ zeIBH9`J(&&f^br#=iILM>7uv6t{2fBW3spRiKz`}-?lB%&&d2c+isv=1fx!5@E(E! zu1$(MItl(5R_R+=XTX>G85{kNbflFd>Io0b9Lu-&;pnVE$HIoj!U|3F;z8M9|A{%;Z2px}`ICy49m+4=tuh$~Qme0e7b z9u^OszLQM?w%Ps;K{?U0H@MT~qPtoz2nOc2&(W2z9=U@FV({Kvz(ntj0Sq!0wWXKl z)!OLK|9BjQ__s^}?tgLkZpk@ek?DbWr}B>1yLiagWkHuBjps{ML){v3>o; z%>2*1E3w2R%Fe4T@JpGopHH6FoTJBk#3 zOJ)|jY56*5sU1Ew*`gn{DQsyN^K)rMD~g)+k8W6#$w;0jZbv4_o_07&J_PObMa#F8 zRKzH3{BL@%3G9otyhk>^wYl%;f)(5F2ui@#5bgZY^CIb$bHZwjg>{7 zIg74b@nkr^MI;nPx+06BIJhqhP*FxCiFgnxv%wd$kYrE zuh+RrF#B{l8tVoJn064(liS9&{-!(9wfedVhi&d(I_SdsPB7lpWp!YR*!m&h~5VINnB z74!ZC(G`%!^|}*h)2%#oV8jjBr0BJ54b_cTuY3IY>$!-V&tJDYD4pvCj{2hZWEKC# z&15A>uEqg1ZNl5(IM?g?^`tP8_3gAI!}0B`qP*tq|69b>PL<@}Ex9JMnH zMujn4u;74>zFR+VIMH{V69h&{56G8F7lF7>-&1;EjVVm+#ZZ@MsA$jOFEI0onSAv;fo~7`q6Z%(Y1x zfu!9DZUP*PeG&kikg+0<<$UVAd>?b{ngUyh8ru5iK3v#Ki5kmW_P5PBfgyLoMdV=H>i|4q|w3yY*rY1)F39L z5E=&KMK*GcIy-7wW8CpDPoR2Dj`|4#)`r@ddA;F&37wJ#V9h$>V-#>zsk}fwQfbec zIsZ?Io~as% zn<)0j7ZXp%1cl7pdk7DD@c%k``_3_3P}#>9V)l6l^-_bX7@2Wr6D1MeX)fKA7=lj~ zz0;6i&O*a&H1?MthHAEg?AJVTH7RyGX*ESd+-wK)T2|X5rfA?)Wpv;QUn=fM=(HH# zjxzAb`+Gdf{rG{(Fo|u02+cP^&8GkqsCS)qnQf+*jA<;4F)ijUC$hZ%g3twjVL_aO z{)zqI5e{Lw`mswMl~(;GRWwcW zGvsV7`*RZ5k)x$?Rz<#5dt2AMj{AriN1(%RHrw;Ap}E~D(93(bSd&BRhu`^6q{Zb& zbr@&Cc^T0!dQHd$d&3ZgYil{z6&{D$5ha_WjO46C_nOvjH+eJ9$TrwdCu}{?iA%s2 zfdU(n){Nf{SgO1fQ~mkv7#DF{shoe2=iS|7(@3Ff)rfhssyt2No4OwVOaTYqGCYU8 zSfwAz@>2GX8JbvfCsxu8PPLGtT4v@CI-k`>a5GB2{Qaigq$Zk2O#TkEAoC8Y72dMx z>Gh?@Ikrjg-ZT_)Z3(w=O-JK^E6RtBE3fvx1(FSFaKDW4IwW<6T27QYnIR5-GjIE8 zQ0!Dd)ylvG1B1I+=@rF2}F? zz7nXvkCtmeTRuwv4g9D3LW%KvS0nbdqTz`$%?RhotU7>}Q#XPA6U*+;8}B_ooxiSw zRy$r!J}d5ibU{~A{_Ppkc~Su()IQ?nYNv=kP)O5H)^blJt)FBnKHHH#xf(&z%FYWT zo((Iu8qO-y<&MHDHe5r2$~3yOk=TBkZfq}F2IUguR&MD-A-NgB3?4tF%=Ovm#i=6Q z6cOCvUgXH5JS3!aP^|++xqsdesM1FHULA)DWjL*;|D+r7CghVBkP04Y3Q;IjKqe0# zYgGq%g;bU~|7f$O#iby}%;5CuDw`9kPiX^Pw)+k~+`H|-uNbzKq%HVJJR9+Vj4-^?1l>&Elc)r3n)uAqI1Yv+ zm6Jq9l(@AO&z{xdTpHHeD=&Wol4i%C~vwsMDq)(H1_2*x93;z=ic6f)n~@%& z6OeEQWG?fjVnFz=m8r(}i?#9>rFK^6hn~AWJh9Sxdo=^|B%9YFrzk2%vm|XH)4a^%Af`kX^fyRzMtYMI2O-m0cB<+rgE-P8SW#QsR#aY+FtD%JhD>PWR4|R&jRe zc}XnwOzh#u{YY`9zpRhMGj4{?>Z67-1>CqFql}eoG}DU*%WO&NK#n`@+sf(&^Y35vOgaqXZDpu!i)#;yOZb&7 zZOy8I8bPSAFyWEV91XAsuzW5N@cSuy;}y}|tH_qI6c)dTQdYWo+^ZF}jJrLMP$s>` zw?rb-hq24k6=(oNJkzRBehcI)ft>E$+zg{6YDHm$Z2CvR0~ zGTF-v6-(!GpBQxrZL7;#OJ!t<2tq6yj!pi6Kc?z=xt96Wx-oSz6s_lKQ#K#xn5;|G zppIemF$TL#>S{u?1`H+JFVN*i~xSV zQ0c!ki-!Y<(_Lw~5h77KIQ%qt^y+GJT4rp;x`1xD*_C<7FfJ45V#u`(nl=d&L3JA@ z!GiG4&#h-xolFt!WU@7)+6~$pl_Gi?R>M`l*_;1?Q!QcZHJ)k)^^8#Dx-%wn8h{}# zF%=lT<;A{5$|zxa$Xx^towk)7z*+rva1OV-kL!Pp!2&(Uw$cIPIRfiVbYZ`*Z0a9! zl%PtM-CKV7Kcas96|Bz5sb__>@kq8cbxKWywO=!};S+bg=~PTUw;?%qi2WDms;68! z+UhLeu@uv+Fy0eA*y4rgdo|uTpVKKT+jGQZ|8K0^69U8S&%5~WV@$Ap$fIWs0?@W8 zz)&9S=xCePE7OY0`X1M#ur?U#KHw>>CQVfJF^`}Fh#OaR6!3Z_0?V~Fsu~{a?cbWh zBD>+@y5h%mNQCn2GH<)Y=eC)0@s}HWx z_pMp9n^^Q)Zc4@dS6r*p9uS))BOgBN-rL4d#~9syK0eA7H~Js((5JNz1DMPobp+@~ zqcxTpd?JZ}InfvT*5}lj<7Yp@r(aW~m+p?%@ma@y8PJIL-hVhYCdxda((Ir5o;jUk z7}z)%3yJ~=Ko5z93AJz06bZPGiVJ2Y}C8KrwqKvTn8T+45)<)W#)D&!NhjSPu> znEqFXml1}Dg@1KrRN=cgWRpDX%+Wb7;=(*n3- zDy$C%CvP(BZhR_i#OHE=AV7lZYJyQ{$Z@^4EwLf`aI^@$MNMJJI(F(a+8nfoV{*9! zmZM}6!feZ&HgQR^*uyl%r?8m$z{6cFhn>4%pF35}l-H=|tH?5~_je=$d0C2O?j5Do zoh4D;Zg6=C0A!gU`OB^QS9Ze=LD3#&0@C}|vYKh`UH#s=9i zv_SiLHV)?}jP>u#>ejubPWEa*%j7R-mR0P4C7hFu_5MWz2}m7D2Z8YKe`t+~@zWFr zD}n}VXgPV8@7Z5@hH)>}#HHsWw<^w2T+=B*weJsDCsZNTSmap zUEw*?%wDAcV(#~#@U((4jF5(awPsR_GyfG&T^N`5&8tCM-HV})l7VCO)rjiKD1Rg6 zt1a1pGMvBymjH1;gdN0xKI607quAC6WQP(PD}r)AxQKEkmR9jFc%tlewB=j8Nz~b| zeUR4DK-T6tQc{18$0g%d@TD@VjQ){9=8Hp;*n2o z1=x88=e6)RX)NaH0$Nj8y%T#5*nuTX;Ip*<#ojq}*8z45ckd)Sw%yn^8{4*RHcq-@ z+iZ*-+cq0Cwyid4(4;wizwuq2G0ye5IX~gKeAZfX&V);vvHsKiGj4}N-h|wmaaTPuB8A zb_XiOX4KMX^1iNouXa*v!xsJ9{vFHy)ccJt>SFZ9O-4CN&R=`Ifibhw{vF2Y&Gjh0 zZza2VEtJvIe~q0|=C;ujpdua5+w$4E`cTYJXQ6j%!$_B|SlsDG%0IFa5_-+nb%o7@ z9PbPAu8GiGldtcWUmC`X&TZp<@z+QGV*Zt1yS>MEI#Q=;5w<1gpZA7JcrIMc;tR$C zkBIcI!VYxx3LRbdn#ly+{Qj}2s&Z(OsIz&Kqy1Ifa9gnh=SEVc!hdxs-Q=h9(T#`8 z0i)v+3ZcA0`z37j#5+n&l`{cF+nSjE4I^5=4Bx8e_c7z&=O>~^JFOs-Zs5aJk1pskoriJnqvVG6^m|yjnaV17{tOC+Um7y{1Tudrk-4@ z$&mJ~zOlKro!7Tl3d`bKNhk{b?~G^y-US|X%mhOBW;(2GaPv+wMFOyMW&lU6X)cw^ z9rmxAMn{s_um&)j`BiJ)lnn<>Ki!N63{2ItWkJS##)u`Q47}4CY(T=E@|~c82XrLE z2Sedms@1GHhj2%V1jFJWhMcsg_R)B4_?G2_WY^~<_k3`~;RQ?6w_YL44;+@cQ=DR3 zz}Zrhv!Y`WSEhP0b-JT;A^!()Z7w#&cItrq+JojN%zcd2#8p#Pm}rrHB&^C9Kydm( z%@>OcoO4sq8cj3I^sxC}H$T_e8Nz&ITZ65cV(#g%nyCeY!yb_yBRkzf;v-@DFRjyI zLI&YxT4PSf!J7-z?#ts}m=}j1VQ|u4gfLXm~Tmj4uPOSkt)Iy7;&g(g@{4+QU&7Q;S~1wD7{u6r zaEW7q!KE~!R=>jS0eg@kTx7OOMc2NtRzB{$+T{%g-+YZ^O@GSj;LE(Fcuk9DbMU4J z1YZK8?<%Ybg3`CLmibbKgI;IfIE%N*|Dk}Krq&J<-A)t45ND^vm)9W90F%a-rC^!j zpOL-rH~yzYAp2OBx+bGG`@ujZ<-_POCQl*|j)|E&k+LX#Z_>|u@c5tp!uY#zE^KJ`Go_XpTHlKs1o^QC8W^# zyMzW`sTS;-0OU!y6Y%s9=uFnK^jo_+yV|8 z3+IED|=4eu$ob8dc{Gz`@CV>m)h1H}Y^Pg&$g&@Q6DRnz^kQxTODflFXYLt@-S zN&jV4sW;G;@QrjI*IxFT(@fQrMsu|?hRxY`Mk3{k2fNo4UYyZ_qJY6Y6#g-q&F5A% zfgI6QOwm&^^r1-lawe0|m08Bif!-9!X`lPj>cp8Rd-k1$H)^hso|&U(1oIVd6qO7O z3KV4s$W1LWAB0NEvj-@Q5QrkO`=e zk$fX_TawepV-L6ICq~f!HrkS9!K~P3L{6ZbC-^JMO3;mt;76!aD$5_SmaKKGo~yE? z?SsYVT_gM(oG1vvTWeEiKY*S_ulNO9teI<_^rcq~9%>_Nc`94PFLDS5_9Jvtjb36R0%_%`T#U&WoOgZGXah!3+Ej+#= zoYagkFagV0%Twc8&iTY&txYZp#su0Cf0~Ts1 z>G;39sw1dP=SFR?WOMOYqXsAmDD=v9Ch6VfhTTD(aEi1pxFM33QZl2%bRf566#P`K zDl$F#pcw_-OmJvmDBA0MJt5#92LQiCjT10ZCo`gV8M5*R@jP%hh}dCy{>`>0 z;b05i<*`FOWlU!LOxI%9b+&M=FY=)0g0v%R%7mYrwv%83`6DQ8rjxk6$mYpJ&^6;S zY*1xt{3Tv(RbDvvwf$y{rhhOWiXhQ{4@E}R?(zM~gmSCyBcG>&BtyPLSB~7h$zIz%Z4w|p6~9(V?x$H%b1}&=XP^e?@yPk z-RB?2J>({MCuF})&9@^Ss|%7CP}5F7t1`+!RDK`QxAVm(_C3nd=L_qOn=Os@#n)+| zevH^tcyHjDKNd9IxY0_{Z{;I@**?Q>cNzcF)Zn1iEb)9R^uu52mH2oFn))Op(qg5v z+XubYXd>V{*pJ$zYhZkNWOycEIfCVue$fsAV_&bt zKyo#f8}#mgy)tHcoLc;sP5-pr;_tOx3L<|}jQ8B=NdHcX)cKpI?vzmCywQh$yb)Ch zNhoh~-MYxDp!%u)vHS4x|Kh(ZJ^A=Wg6`vV+>b*f^i#cm4M6(DChVzSWSnnT`2CU< zI_q}C^K2!?^rI!Qs^$9m$2B7H4Ic$y4mrsLef}*6@rt1qSW-F(uLv@aH=}W_V)#(~ zjy+#f$_SlU`y?dVy}`OD-Oy^zGzp{7h3}eMS+{a7wk%=7!BS2u25a%l{F$yPvXw>t;cql^JubL*Py-szKi_y_*uhJFHO^ajiXLn;#!* zK(4z5QZRn#x}YvLWMR)CFFC#vGNGbT!fhrY?xF+kR7>7!uk-HO|EkjSfZz4+?)Dnc zmw=N@-%)uJFg%V2L$2Vhs?qoNJ7emOkCgYQ*l)&M=HpZ`WY`e6l8-}@PCqwR_Efz{ z-rrd}KVyphz)iX$cE!o1#Kx&Z`vT)lb&HPee0+z@IggH)I#Oipc1_`Yss2HU|A(p8 zksUwIP22vu!pjZ&j{|`W3sVLPVadW$IeQQX3K6qgBeAk8?(AbIl1DvQ81P)E@&s6_h3fAAY+~=_6N;h$9%A(w9?a8-P4kf zqqNIY0QNUFDoi%!E{x}W9Nn&3szYzaF5?_%S5vySf)Ov9C~xmxM#xV5u3qiYkkjp* zkwc&pr_ixYu}TzgG|}jZVh4MY8oD@0JVJ+zc^w=>70n^1r4y473KU0D6hY?<+Aw!&KK*Nk3Z9 zkxKE!@ywPm-!I528U+*~mH=#~>p1zB!M3*t9QBn4 zQm1wuJ!shv9xV6t`yeyZTd;e7ikC#HT0vU$bE2g6s8emGJ<7d7R>aqp72jTIclKao zJ}<1Wc3I|(FT(o{kx#$#GPH@Ke2MTZJS0igsI6zcPvm*&7H7ZqhA^O~)iSmFsstyB zAHHOXnGpV4_C1P@r$xX&V~P(2mEvXNKDu*%6gizX+Y&50_~Q{neWOX)0ZTd$@=>Te50gs5xU@hu613SN=zYv#c1jVTG->hVD|)K>X^eFSBTr zNk?pO`xlIB{6|W)YrYPgnP1jfe(Hv# z@?qGlBcQ%`28;Rn9);|ZNxweDlZbu7F4RsWcb(^JwB-DX!tQ$ckYg3&HvNkLfSV=v z;_X}SBtnoUNDZYwoIPD=XO@*m@92Q`EL{FOGBG%Dc&&gv*umfT^HC;u69R|TniyD( zjMv9|We=dLnjle;z0j$FTo^|GTY#P4d3`YVWQC5-PfCzaD0J0cX$^@Amzn-RbOt?qa#{ z@I;69{`qhzST(JkyM-pn9VOYhx;hK~>FUmp8%d;v4!z!@C4A{RT13H5DG4$YFmJ2fF&EI|W#a zS~P^Pta-@#9!>!!y|Uzubj?~W%+;wKLOZrQv`ggUeJYZ+q8y3V^>@()62+0_z)7tI6G8(*&UuNUGkzlv{)gMP_B){6(8v^?3Pb z)9Tk|*7df^|B&qWng;{~PBR;fE*n&{1J6yis$I5|YPZhExw6Z4E~R#IX$==C z3$Pq1puxiDOCP+bw112D{noaHu_m&PIt3LS4K_5obX{f<^o^$QH#X?s_mTLvtS)-c zwmNHrzN3}UW*K;-POTlj?+P0gOciWE_am(NPF4vuP6*Gv=N`smv$+|^rQ-_F6EC%9 zVxf|pIiNISIqYo)E{FkAHAsnwHvdIAq%SY-nR_>Vv(xgj=0{0x)dI(E3s!hd5VN-R zQ2CFylZ4^^-oEEnrJAIpXfURykVUji^#_>=ht@r{n-oHH6Xmo zB@HcmCAfRpq;7QNCWRLrB5$WFn=l{aCf7-k0s7z5_xMAE)JSw1`F zMG}@`Vv#Huj+L1s?mvjD05lBO9`pkRpYFe0y1lj{IY)e17oTqM;(T}oNwlsRRTZNM z{YSL;+@X&WaJ0-IW+^i#}gIW9H!hClj_H3%RgzS~@Mg?TW zhC2-UZ7JsD_bnEW2qDtgctyYYSQhO>mbC%Kd}Bt6vA1F)oR8<#;U+o!nkT6#q39zz zw7zdDFzC|`9#~*eII2MBV^D`Ud(jpGFyeroD+_cH73%fV?D&ORr-;*U;_N%zT7oKOc5V+M~} z*-HG_lKcA_cQiDTA)d7-!e28$k=9OCgoYnfSCZ`EyPlz~K~14}X*=elT46-5IyldR z1OHo=&|>3JF}iqkC1K2B_9s{7Im;gnRS^62MpRHzNLFhTxVjw!Wk9K--aO}=zbQdp zt6t=9a+2fqoNgtyT(UfzdE>>ty~BOqm@P$s<6Z3l+O=#AA>})wBOq>w@8iS_^t)Pm zaLP+8H-lSU0o1%e>YmXB9-LxOLG|Hlm>dm!s*8U63wIOqDxRX@UHp@fwCL1X&!d$E zvVSse4B^Ixqs59R=*8B_ONK%;sZp9jz16N`is(qY$2R5KwvX0~;{8RQ*7WQ;G>B{T zyO#7R+ZI~gh5>s+WRu9fnRO0tX%XYJ`w<)0MrkZLsmE-M!&p?+z6kc4zIi3zp?f_{o$?j<*d z%%3ixziyS-RsFf^&dthy(2R&G`Bh%3m-)|?hd76mYZ(noy<94u*@x&*5;1l5El;~} z&vQYe*6v_Q9LZnRGTwg)-P}m|$7`Js77lo)znslMcI@>&i%!uq=mgg1jUtu7-3Dt2|jJu7_tyVuDOBI>VOGxP>y#R`pXiMf6* zt)BxwCSo1}kk?Dc2w%vqu$n`{KO)UPKx^bJVCY1yDUq z|7X;e#L{WUT2l%~i`)!`r6l{5M7VlLeM%T zY(wfb-r0ZGEN&i;N3Ene5=V5EX{l@JY9@LbH}UB;63RN-+ z?3uGaN}i|~mNWb+64JK}Y-sN>+WVGc+|#aX2^?hqV8b>EztTWeG0aqQ|3k? zoG7JXFVB6i*6>FfI~CAw6ZE8|T}O-#DqevfW4K2D+h#PSgoDK^d~2=4rk!(r)ixsWM7lkSMDc+C44Zx>?=&+9vV?tZqOH&fKL&D-sQ;fb0ifo4>eUAC*-JcEE@s`5J9w4cI zX9E`PBRYerC9#NMIZeB_*{99D_~9*rh2t~ODr70JyK^_A*T<1QXfUuqPJn%vPX%m_hsc-M^07Hp)*$J$rS2K zY`d|$Du}-deUGv?nAFoU_n(?2pZCMOIp|4F=4{vYcV`y#S3O5tff?W1+U3VTAlJx0 z)6RH9{zQEa0rhDcRSPVgcp|GKr)>`T#tOx10X`L2q%aJ!Ol<>KQANHxV;yoW<4$~j zGloHn)p&v&-|B3Z1tb9y+OoCgXa|X|#$A+Zc?~pZA?dX34Rxy?-i=>YKV$DclO^QO ze}6I_kheOCDabr|zYNG36ON1916;M%?`f3#zUdeVhG2X$6VTcH>6vIbvW&EJ)ol_I zuKt#8wErdB+-c{puh^@u#Le-FV56!@)EMlVJb)o<`rZgJn7Fo9>fd;Xuc2T?Y3HWV z@VPMrQL_* z>qXA^;&?Zp^%I(YCUn=H2niXApZ?EvB-Fn~8wg^(_jy=DTY!|PKys2c(f#FnTrJ;1 z+&Qvm-~9vfki~O?*LbtLUgRpH!*&#c-Z#Zc*QeW^-tN z?$yYy5vJ&D(wobe9Z-iUVBZjvc2O)hN;w~4f0E82wJu;gAYebpVgG$F?=&nIMe&XS zIwRP(o+M|b(2(q$V`j1VxUy3q7RucfmK+b)U&4XAHX>JdI;15Pg()>nM!-=kHQPuw zef5QbkRT_PQKDHZWKaHxi(YwsCX;c?;5jI6m0P7lHT!(B&020M@J@+Ieu%+v$gW&) zOSW% zreIqp_jn-`u!dI1$oHQ$Q-bUPvs1(hR!Q_Nr~{5PS}D~0_9dhbSC@-7l&GlLbc5IP zc*LyKGN^c>C}n@|QePdZgZ5Ru%5=QQ8y1Y$XOHSZyD`f;9GI5+0_Msbim+|?O3sLI zl2ofkWkxJi@oZ=xWU%J@^oo+A2V6IL-v2gOT?hGU<`@xap986b&M98fp`}EvZL}p0 zXRUtsSV}&me;-A!_O-Sz78h+=bv7!mo3x@rG{<^Vz=E7O6=-Rfr>l$S*ioCT12vrv zPF!jBS3qkHxGOF9dnsn743 zEwKvc+HKW_@`7X=f9-h_3K|ph(AqBr{u?&b>clQoC$Dei`0J-%7Zt5Bf&7y;i%Owz zLWp37v!0f+9I?G~sgXKY1wj_uaGp)yF`HoH;XHCWMD4Rkdz1iDTKAM=G9|jGV!Gp( z9bY|~=wi|j#2l5F^0UXXgY0sg<$O+GJvr@LZ+#l4t0Q`!ArFDAL8l- zNJJH_PQZ0&c6P`q2B6?qH;b>eCsZ`HK{}`GYV0pu&jDCO!pipzm1+x81c1BGJ?u44_U<8VkNf)Eq(UiC-_T{RTrSn(O$ z7NDURFmBD%JO>$waSRUvcMO4%*{&v)nc9XNXQr-Z79D4Y9REL~3i=PDY5_zBTmWDG z8>8wd@NFLSe~jw?lwobFS#P#of*4J=)o!-C9!}*ewAXES`~14to^G$-?FU06kt%jH z><>p_F&fWwG#-v8Q7RNDb~YVPXK_00%yc%NelL`WB~|KbIbW*Os5YMMYQ0=-u$V4T z>h_`n(K~L+CyPGS01#Yh(f5e7T|oeNY*R9@&%M@AB&Ue$UMB>I)KEb;Z}{SVSq`TB zWv~kn#pYmL%lYwk?_S`}Xr81rg$^MZy{RgaP6MLZ>AK5oX7B5`UL$KA8Kn z>tWEMk)Et4>V?iu657?XRV0sB6ww!J)M64>7r!Xd%;|W&(i}c_9UHPk`T^n;In1-; zq6laDisV26-ZN6Y&*!@Z`V8%5sc0v>^kvWaPvm}-CsiiU?vP2^tj<6`nGB7edeq;F zVi3=>ZaVGZa<&L^s1hBDW46jI8Io-3H7F`BiHU;jYM@J`Ur+K*qs0AXj1FKk^-@i_uz~y}RA2>qm;2Wf zji;~H#eAjkzs^IqxvU+8Yfioe9Ffe|<=pvJu=iUw`PDXCYR@ot5v)$L`N4QpvX4RI zG3HHP)=dy?c-?hdQp|V4IrvAUP7}+nwmk4m!BNrs+2M?oZJFFu^-l7(pet z(Ebd;+lJlGh7BtQtd3kwOKovp)34@=UL+gB2)~zkd7j;tTy6#2n>b|h03{kH`7%R! z+O_s;qlk5IGxqx3M&IMm3i&>{P1kq~q^O`mM!;}2ou9Uq^Dbt-L341ehG($A?*~>p zR~$Nb|LyVzPB?$aUbX!%WmsWL+;3xv{pd`CksSx18C8Q5XKZ-Ul?tI?p9>Mi;fHWL z?m%pDfFXMwfh;kya3b^}M4dZvyn(yO&&UTzRBRG)1PgXfoW*^preHi$V3aBh1<0=% z_MYlKhRZV@vwe++hJifBv_>=*{cWYtz08h$MF7G*jsEII!BQ%g+FImP!4nBFDB`vkjeQG5_aTgrT8DC=9m7R1ee4Q{tWc zrQ{*71a;0eEC2+{c>i_}ySOR`Y}u;N8Jou0>`~#;&W8kzVL&fe%?fCk0%;66qu{qK zdAU_p9X>xqVgYPFry?kY4zU&6CY=DY>=t6X3W4`&vqFOU>U=S5r5~3+%4EnPa^Z-Y zLTHt?3bzPL&c>n@DqQDCOrkQ*Ud=!%sSwq#1ge2F+?6!(0K(+#8LJS^7$)jr0i?a) z>bjo>(Fow74YEbAIn5*`?qiBx2FWB+X#ke48RL3`mP*rO2|Y?E7o6xq_Lyo(Xz(TC zy}VAK_COKddxcP{9JucF5d@!QZ%P6NO7o~k9E?y%VEj>SPuMSalDIH3>wt;}WdP}6 zN?>Dhv<1ueVDfs)ZAKgBA`-L{z}M5e3~Xx-)~&5j;i8WDFN++qsgdpBqSbF4c^!zY zE!o@V(2( z*r|DQ`O&ty*Mh@VG%9agXX~_A<+|}72JK=fX0V=j%<|v9rpAwWbIV@`wH@MGm0Po{ zMArfu$VaV622LTWPIB5?1ZABBKEP0;oYn#w_iq@m6tGY;AiIr~dJiTF*93LSLSsJ2 zr*dX8UZTUqvG%d@FjseKqFD~q@OYK?dw#i|wOqvZi6^aFDlETEWZvvlF@nmd;mct- zrqw~O8Tt&J22yf3j~NXXcCtVURp60o_Y=xbJW)Zwue$6iQ#PgyGx+aAKM4SW>}87g zd1`nb3y`;EMwaxeRfMm;1%6(W;?w+RWPW7l~?V5Dnx^ybB z`F<9dRGDhjr+f+%lJu{h{ z;k&`Q&IstJ*(NSokF)K)jPp=(Fc4f?-i_eF=pn&Uqy_i+NZWPc*f|qSzakRX@?tj% z-@5JK(`J=FSgfO5h+Yt-oy`q3q1_B4@exh>2i7J=nx1%BNj4kNZ|5*~zfaEIX_2^n7Q*P( z@4d~9OH=zm5#|jos?*VyP3J*n3btQQ@G)ua{s0Dq5XTxn@HM9^U4p*9Wmm0ySq^0o zC;SGpM0@+Yx6Iha;+s)I^Ulu^-&uM4Ty`i4-cuOGY0QiduEV~#SL_I(-#S=2#|mFL zhqd;+SQ~_Hezy!%sEIrJNoU{o^7u8nKj zwK^0SXv)61E-$|tX{idOOr#+yq)&{rzb`qJU8fD!5l$7Kn?pOF_MTEUJ6SD=puhP! zmJ7YK*7iLHPP;JE5x%lK`W>0{{NZLSK)h*dnEs~sTKGxeDu1rD^l|QvG1cggm$&zR zM&L0h;LuyH`O%A!+Pz)N)>jAo4(EpcZ1W*_s&pn}t+#@yPa7mDYHc*`_W|d%Km*34 zvo6(fw*vVqM+Waa1(7uBWJOv$!hQ7$`|4=r^~@vZW>cP+vGD01A zvTCn$=5t#XLBHUO&-)b<5F+0p&26JPFXgR37x7yfY+z{GD~s=CyW+s(~pEqH&~Q(M&;dDV@7LQZ&Gd!;q1-qPQPN752M z(&`b$1wO)*HnvwXyhztRJ_}4ICmsod(Puw~xb#PJx&Dq!Xgr78_7$V$=~|di-@jJ#=P)VWuKHOp zgJ}t`vL0{v_B7GpRatZ&C|<46RN-~m%8Xd6(jc2i4^>_1tJc`H_J~N?nQ;k87!H#s?fhnmCp8X-8N;T`C?Z36b0lLhC4gsA)eLAEpyy8ktT; z7NFQE-HMyyi=VK;8!67GDd3GBv1s5l&LoqbC|Bhc5zRj7;|gt;n%ZJZ3Kwb1Z--_I zPF>g5vP16<*YdBju+xikj7aIv%!J@&#XMx_t%qXr2S-OM8@_0maizhxWw+?%_NAxF ztA=h&c+2YLu}UXi@JX3YdW_4(|LH*A#0$j6GLpm2M~eAFE`}$%y*NKh*@KJ%IbSX@}{f8sJWSb!rP|3+X@_R&h=8E`0rSRv39T)hFgb+NY zH?2oD=p|SX#OE9XK2UOUl=k#D5Hi)dQjieSP+lW%Ui@%hJbv-pU33;SY2|$Kl|hO5 zLa(0^cAjI9o_Cxbft*a-GZ|7U#f_vFtf3c&(_VB01g(xF;1C)fMHlhgr^oSvNV8bE zyJT?@q_B!}@~KMm!;7W#V;lH^f;lOv5Bcm~rrVun)P!+p4Cv5giZn4LC^C5>c2f2$ zMN;kG20m# zt(jkna_lQ{*S`>6gqlCr4^`E9LKKe>B`+a)(IeHbxV2AfX%kv;pN?~(7u=DiLl{l# z=$^}d`!%QwG@!=D5&1hc>Q@lV7tZ7~9CXyf+h)Q8iG??c=3^TBA|bT?jcSw9K?n_L zoiJ~BDJb0#znq%WhZ4j=zC63;ChF#Ncpq88XexzzCrVf2@Cxc`e{%ogml%>c`$kg1 zZz~(fAM-EGPmpwXxd!RALZj7Yr^8x`SOa ziU?gEjFZ}!2JJk4O}(@&8>`O@>$4 zr=$J4aK^Iz%kC@BPCeU}ug%SAjC~Um?OW0PulD_LU%vGt^e*f?mvX;trT z{vaJFt8mEvO;l&#AbEPJ6$9Tb*OJUq0rktk$_fDmo> z)vdZdzm>D&c@Ya}b(}(bm z;)<-J*VEnmqrOkj2+48oEmyL}uwbaC2X=LQ?rPfmasiiVC`J*0nY47Mx~L@hz3??% zZEMKyB*T}!hc$i)52e!%d1eT1p}1NF`@VeqBabr-N)CZn^!R*!# z^Rh8a?I?SkrBwbUSQ0n*0R!526!PuCyUUhLt@&0VKct@isjHEMiLPhl+}`d~562O_ z*xq%bMUW_vWEK^PSyv}%Hg0w@@nl6d#^4i8dV}JmsYAbc%=$e2GClI*jW%FcYh-_Z z`19;CYM_JEWfPaf#$L=q2>n`8y88CUcaAHi=-Rbu`Q>;eM*h ziSA~2tH?m#rXomjL*5Uv^Myw3Xf&SHoLbcTyn>n9wg8mn7rDN|_|}isHsr1!7IqPB z?~ol5L)9*{`@BKP>p=3j9R|VOSdu-?-H*{)l^v^w`}yI{ zSP+w~>`3jNA=eLc=DmHCh7zM~TE@Wo$-PhSc@flOzvhRhb#`vUp?npV46)aV{12jG zHuqZe|EU)<8B7j@qJEd}mE<-b3f}4n_X% z(Dh83{Mpu>onZWfDjc6BMryo_Sf6Tnv`N?e=G*B>m9RZ?2&LRZo3A@{x$Ca9qX&@x zsX8Q!vz4p#y*Y5n%*bUKvR@*aBqUAVtdZFntFR10rVFdoAI_J<1EUp4}t{~z3aDIs4>Xr zlG{0en#OWt4a0~1h#dEGC+E)v*Pbj_ApPaU6-hAZS)(u7A?l9@;~K!s6>V&VF4aEV zW=daBXLaPoSBpE(tv$AXYtFy70R?FATWzy{qfcuul~MLqTBZNag<2AKyUpD(?<`l7 zE?~V}qp@1ZkbXr~DRjr~@bsYS>#I*a8HBjz-iXduJRyjk=}pbZ1S&;k}i+hfB=z3 z{eBcA+*-~1x_MK$*<;1~@XGOR@j)ytD`MW@&KQHOf3V=@(s@(TN;1dUx%Io%h+Hf5J6!g1naa$>?pl+7His z+?>>ncLZdO3WE%a(q)2zl`Y*{$b^R1`XJ1)WAROVVsu z=>56lfah)~*j0sz9jp;M2dfQDToWZDB?|>Ve#g{YDFZbnHN^yv&NK4^00p}GLbx^y z9RUwV0*mu1I|u~sv7nYob54iiu<$c9e_+kP_adksgHsA6Eq>sgUHArKXsGCTKoGA& zb+ye0^24+AGzBu9^LQC^2(*&woN3EDxlEl}mdMhC;Q-r|Vc3m2@KWqi`Gpnt>sGo4 zZ=;fP!!7O4N565H1%ROmQAr6IEg2|4Fji{daAgHDZKK5#qO1_UVjpb2%#`{8;W~%u zDi;#`dA3bc2(+e5g#pn?XgYEkoO!J>)s->+m}Z&d07n)(qSr74vzhsp9w$5P^jYTm*Kz4O&`~zG{m%WQAJ9AR$bXCMCeysKC{{vl7jXeIrkx~tiM@NdLm*E}ryzK?m#mI;A_Hqp5 z!!T%EVZm8ZEri@;ZKfbL^&z)l8NH=V(F$28vOs;NFFF(0I7&?l=HYEgWip~V2h|8Q zzZ_1Wh*aCMipixPvCxD3IP0N-TgoEjlT?x&ZunYQ6Z#-IkJ52?+uJt0pZgCf930Qs zKTg=_s(x5SBO+))WoL`7Yv=Z$(Hc>wJ_KcA}vPT#Yp^ zxkdFowEn~b;Cam1;*sR-V+RcD8*Z#xRcc*e8vl+F<>3}$TW|)A=>AFk0$X?lvwg)V>QjMUYBBiJqvUS@X;I%0t2J5D$ezL ztDddm*4m%UUzKB9%ln}&9d`d(C`3L(*`et~wHot-`?yiaoSssl0$GB2$AoK$@;M8y z;#Ml(TF=m*1Q37HU~uO8#QWOPFF*^cv6-`pdgNk7sr0}MeOE*D-z`}!Vu=!yWurEN z>IumbT_cMC)`!C60B$uqTK#%v$ypvWjLq>;%5`fZcczNk#s?2;*-%)?FQzjV_>(6KGqrC>m7 zJ+Hm@9*7SgVB%15nU2Ep*kra(M_J=C7*J%O;?z&QK2j5BzEM!^5|$J=cCp(uvJTDTa^@FX4*-41dDUytbeR5dat)e_j8)@NvOCOonyVgHM`bL_5ziyG}Yv29z8 z8}o#XZ8f%<#%NA#+qP}nw%HgB8b0Uk`|19GJI1}gVUP7??KS80YJUy?9C1p=AkIvQ zOrDjqj_2X6AVUB4ubuWom8Iz_S7_lbSy}Cda};Hs88{h!ZG1zAz+mj2nZY5L`7?N3 zs8kBNRFL9X>T8K?xx0WjZ;({J34+?O2&zWp1_ zsF@=0RF!1{g0{4zrRF?x9o@FL9G;ZMPr;VAXtBeyC0eTrT&YD(0cmjP4d1R@y2cHT z{&^&-ijC&<@;I@(#_G}@3w15_2iqx!;j`T5jL9bCY;iXKmTHW3ugHZRFjtk&$`R+3 zE$b2s6pq(`PA-@ScUTIETsp-W40Fmt}>%|Fo|5HgLj>r95G%hZNg!`s{ z{)+=vfTcgoTX1!|^qJHe_R9XBVghN9M`AjKUReb}?MA6Bca^1ImlU*kUl+>&YB+6DMa#nsvstpkBKKEAFH@qae>O@~>gX0O91I}Uhk#g(M3+q-|ji7cT zlFHy(sUKW3t@jN0IX6rT9zaL6|FalJ2iHB~;f7(5pS6=j8I}N?Nk$mxO2I%Xp`+LX zK4LV#A7MikDDSx#>5`)cjtCeQaFC}iaWtGjmJjWKQXNLu@f-PsKnsy#=t(H>Z4muG zPpd;(b;|G^&hiIsOe4W0s`S^iBVSq$eEvbt*(N39!HvB)+!_DX;v|*>%UmLXZrRKv zwJM)gLG1(NXrfC)vNd+{djj}xGg;|1whD zP79xLpV;Pve_v*OIV#)BgKPy2hBp*=lj0XVygpx$O+4D>tRA#fLq3soe11pAUhjGo zmfBguWB=Xbcs{4U(03MY>Y%GqY#LOjQ)&nK>Mr7XRwpR@_>d(zAPQS^Vq?CD_W3|0 z*<+tz4AtX(z#nA@8yrAK6HZgMZ`=#M8&Y-r6Gh5t_DH%lExNWgZTP&$?%|-ktD%XY zGoKIIGq-zA%wp8epS)S^NcOB{%IEacP;w$CD*Dgi;8)t>1CPMLvurEW*$CwF`|q(P zMTKWP+4l<*K~npj_2>L0#@$hs;`&PwPNO4XWbZ!mZTMOsTHMlEmWWRxg-}2VIqTK( zS0T>Vo1=e_$32Nv^Td)-D}k2CZJHI{VMX=Jh~4?Ujk6G`MBj7K6`##Ihw$2>$qpb- zXH^$nXcEwOFfK3usD}3Q+=;DxTiLJo(a`S_zR+>pPT@~s-sinZ#z!^_WO@kJ6ho=&Mf_|(B(*-D0ucilyCFN zauD;%&$rvLL-chh4EyFe*OxIzXJp{zKX~=9TECK zzMW6yKQd<{1$NreOHWs1n5pOiBICcAb3kDgPa_qq3#mV=wa=FGcac=k>T|d5DpB6^ zUkgL-2$T@BXH665%Tnjt!KE*`^>;E#yruQ7mCjs}>WoSp$g=-V`R-@mq2N_ z2Kzm@eUt?ZoMn|EuFyY?7^2HHb9(HA7tVHk#+suT1C2E%Zx}ECskn=qc*v+s$6qrI zv(*mPtTK%Wz^M+)Ido)JEJj8G$nB3OXNcwC#&}SHuJhrUQ${Kj9nXh)bQ~`iBUllr zh<~n7|Ip_!!CP0}ddke<2q4Zd{ zjmd0HBa~Efv{2=f#yR-3t3uJmk=;9yc9>cwPdA<28OGP5zAw~H4m1Jw3jhr+k!5d_ zr^Go4>yaiOy(l!?3b?5Cb>>QSjgx)xv2O^A#QbU`RzFg?68@vR`btGleXmmS!O{R4 z-EVe;Cf_$YZ6H&Qp<_QZJDz=lLm>su)5)I5md6p`BN6)`$5XMMd)Cm_+)|h&GGdvZ zNxDp+nJlWDFh-3LcewDmpixsh**B}92sVD96c@BFV=RKGjxaUcB8)M6++(E`x8+A6 zHYBcbsXbGvvG#BpiKtN=+G7$@x9i-PLeb){+`M2=bV2=QPE@kjNhFkSWFWQUww_>} zS(rC4PF7)&kc@>lyF#*<12%pE+RA#5o?B5cf59{+L&xTln2h2K8n+;`yV-||Fh>-K$cL%A zwp>QuKb*_s6xgiHYvLkw|D|Htn*J;nst{Ws7MvQ3g8LLJbl!w|N)>a+@Yb%Vbo%u@ z()h&k8qdlRRA$Gu7+{rYhTf!(JOX4S#{qFGiIYRVe3uJq_Y5>{cF=z@A;-f$Wl$2B zU;>#Vi-kp;4Oc=fC*Z9V3Y^OvfLsaGV4_)F{{@Yz#Sa!9?_fT`lIV`R23%4#!ETcc zlqY2r)23(&cFW8@ zrE$nx7KkKGo}X#RZ{cwk03yE4Sete7v`TBc>?dl9qZs0_D(XgyP0CAL6p0pMTgwT% z8kE9u3o=tq^%tTR$wX(r&>5)8bsVI4uLv!VOk7j%0u;B^80${qL0}W_51|==SJ_+kN(1KB`@u!7gt*nh7qg8*AOya5u zF{~-ImfQAMD;7MvI2XEu6uX#ZSuu#I!6y#Pe()Yy5jVmUX%SFwsTK73u(ti|aQ&?A z(eiT^R{>+l9zKW=tH|3EKvnxTl)0*HSNO=;A-_V$N*$nC8H5xc+pl7zR0uVgP#Ka&_NcIaqqSi=> z);vsrSa4du)S-}H3jC18)b2gJr+69iar}y&jT;8or=9(020;DVE~rt`#Z%54WM8RH_Y@M5|mu z+yvBk?IDCFfx5%L=JrG9lYy)6_O7Vo52rgxBF;=^{sf3GaMp*7QCTFUnuV zOvw2W_uZ2g01m_*qVKETbMC&kLkZBYz(g$XDO_EACNwU>5ZHh)AUNi0EHrq4%YK8^ z<<Y)BW2dbRsZ#V>AS1Ykt490G(oFpb(ByS&)x z(gS0_B$#ROvf3GGgs#dNu^w7R&~3<%)N*xe08;KFt$@TzFU-i~ArD(S6t z`1g*mv<`-gw#XuP0*?p1CN2M=4osn%gJhftdT8v-KLK`g;sYxk%OU$>50()yn3p7u|KcIO9>?VWR_TE3PX5-kx$Sa z2iAt*i#Zx}N@G zTtQrc;ijJcYz86|%nHrS0!7UqE1j57fYP?jQvXa4@ON|sA4X)w0S|HdSWq#? zMllCv;kWcoXfazuZ$!T>3`&d|3-`LCkPiQh73O?daVrHclP`C2T}2cfDWC=qud;x* zFE-DCGr)T2Ef`+t?kP2T0=I6HcC1o?7TAGaZr4`EPJczp&YescyVv&bvjg0Zt+#L4 zUSfV>kS(a6Y(puXe6<}zsM(rf8?tG{y#@JITgFAi2Q?DE#c($W?sSvWH2<3QYu~5p{z9@`sza#5WLyD!+_7>Gs?khjVY2$*a7dW^i+-B_Qiyp%K__ z`G~~qH!$k;woqiH8AycqrfKhE;TKGl8Dz@~z7FFETexA>?ibim1pz*~zh%tCP$ZKM zxa2KNOttspg5&VtPafZT{|1a{8h9rcSBJBQNo?njWp?YX4QH&k52-eFS;hWDw0)O3 zhj8|h_spSVoCu`M9%&^C3hGf)&V=zfGKjpPkBK+8x{%0)Z0Jn?J^k+BI^k)ES)fVC>$~Z}!(@sYfM*|1%Mp3>?b(gHlJ~Rbd zTZ0g;XY1r=VI888v-HPcjPG7g{yMAxELD3{!!6==_FTeN`PycYlkX68CY{pa4(CDG zkWX{ag;WoNr@Ziha*p41>RQTs^W^=A=VOZ+ooZs|Vmfw{_8<$T>R2t^3 z9FZKg99u`_fKaa$%e-Re65X$}CcY6nkuTZsTP@J5ze#rleNLuOt7XS#Nxi#@Ax4uy zWKL0=VU$8g{=Ep#*@f~h`44>aPPy$d{MDqn;0Ej6@}98;;T+0c-h`fx+q5qy{8nzc z*}CsH$h{F9gA0Ax$49U&pKrAPv;&^YCsOYo77G>gxWoR2-Y;3JL)%KkBuir8)2jav zxgha~`j;i2&5DpcDM&s?MkKN1}ZC|k~o$-08#Q#md?`>rr3?1|l;VZ_%-P}O_ zzl`dSbxwA*Fsi118P=jj#unQiJ=o0Esg+Ofq4h$f3@DWO3of4;GIe+eEOh$~Q58{y zJF!69cP~DeI}S|e6+>BuJ0KSY14i9#r?ts^MgIyE!5u+$V)QpQ_t z(8~nHv=fu3k`op|qkH$?m-~i*c*`$uLkFCFypn2wo}vMs$f6) zQd-(WZ>oE^68c(W1~MjrPb?|oR|#G6FG%Y=!qA#0;$6H-NWRctM+bo(b1^X;qstERHISN9zL_eI+xUihuort!3#~~s{PPNOGK+n((GR!To)dF%4RcK)Nq0nA)5EDK zgf8Kbo15>wrOH|A7!AwJ4%&MrG2oc`H0$C#M7{Hp6#3nzt!3EhhTn|``a#7^ zD?r(zSXNS8Fu(JkN3xIG!k?P~DD7~CpJoc~OjD!tWCp z2Zi>Ouj)xIgb>TANrfLp{~cg}^V%%6=& zVxEtfu$xX0RT_cOX~0@mCH)IVF*TlJxX!>V%pz$Sit;i9){=u3y8;h=T&~eh>y)Ge zLhA@sn)&MrCN*}dPSC&0NkfuqjM@R*osK|QS(tZ7MUL6w(_Y4pY@E8>r9thY2G#cY zn?Cr1W+z;t^mp^0bRi!|@bFFcvp{S<&_ze(DJ(AE!-T>E4s`UyR*zGJP)P9Pp>*{~ z91kKozYAz91?fv0NlWp6v-X_ouSPbMxbjLLj;mVf{B=RoyJuI?ir>Cm+nrn$){&~n zlk&Q03SMc9w9#od&I*#(*J868e_(BB_#)EbRC9H5jO`niq-5rmQ?wob!PV` zQM&2Shh6=)=bE3AUqmZ_>+$yacivAR_s>$&P%Yw)mSBmL8rItHjutVWiQi)i`Q={O z72ZlV7bPCoE_!uiyB|zHGgqIlKTf-mx{Is6L0Xi$(IHJZ!oCt`p zI-5w8=!!IC=LoVIxw1spFQIwNu1d_Du9P{oU>eHjvyi?^N?i4?Bbie50qP6}5FvVY z#0%NTRCQ$q_oNaOxdE+jl7|RYXVR^zb^^-Xgq8J$5jfj-!95aYKPIjF_PA_tQPz$5 z%KQ0VdpHsMK`MiMcdq^Ap}>4f0@swzW#TXI?1&zgs>q? z`4XOX`-d9s=~!$P^*B&nC7@#zG-)O$2A(jW)Fnxq=s-*Wx@ZhTU?V~A1|ke8POgv=Mkxj8Kk~=p$8QPB%n{R^C~XVY`rN8f=bdZe2ljg`K)IT_z3nIv+0g zhzOHXDjzjT+7^&xhO2YF+pXJY3qiuw(WxhuDahd3K;KFrtv#ZL0NiRfu0}i^WjsW=A&F zi8P$EqhGFpCoOWMgjk%un@;~_WX$})Q8Xy%toSk6RIl!BN1I*2w}P2a+LKc&wECcT zPdTMtsiIA<&0ZBNeo$eJdZnib)W~I`50EQj^_kFNZb%HMYs|^>97FE@CZ3x4Y!T>S zUp0Sum>f0jz~(eprLCLb4rx;k(A4B$U;6md+!q=|F>E=(x>K9hzl59g^NB(I*#X~_ zl;m8g3MsH8*A?Z-uhdz#+GOn4P0xa{y-mf>joHZCq~~C9yubP|p(vh7vrj1D-|hA4 z9mnf0aKoSu%|;Oe)9PQR9h0|$^d&CXhooEWOapulR!^x~M9>%w6<3T&<=1{@YqE~@ z>YuVCJ!BdE=WH=Dup{d2F_Fnv6($^Ipt${-p+Ux)9kqD`-NxUkr!;buTO9{)J7^u7 zTOHLi@tY&*k{g@BReLUDQNh-OWPga`j?5quw+pLN%<{6VPY4CkH)@Gh6D%mzwW1!{ zkuryyXIym!|M~32=?_WGDSkMI!r_HlZOnBu*Jsh-dM83ISK4`(HRjarOtUw# z@5g60)2#qP?e}_!3hy`^hh&oQ-Z;YS`tm6uJ+3~u9S##;#d&|-E|mFI7g7{?Aocq& ze^k?Bz{B0f78-pMiRWcttNJef9UBXmt_8EY$JVjhYq6lIJ;Q7F!7Yz!{tNp4;E&#E z%dO7sQ!@Bvj-5cGZ(V27@BtLzyLo6s+viQvZM|ce`&?Oro$~bJWbw78#_)puowVOp z+E|}mPT%(o$Xy{h8_$30u>-1yMgtdtqA;tizPL-V?>kbtQ;qN{PFFPfyLC#N8p}I( zT2J0I9ITI{M_s$C+59ItI&3YRN3UC8HaOFe)ncQn9{zMFWuE`NmT{Q;k z8I@3Q{V;~un&T2!_rnM8n_&*hzHHo^3_~@J6^VThKQ~0YA+SEcL@k^{71&3UCXv3{ z#a@oX$L`QDPUfAk^dO3vgp8JOyjAoIZ;y7 zYD$ikss1(X^BiSm&q52*j6q{NCbG04b$F~ICKT;3pi@G^b9H!igU(7BE`g`>RQ=7P$Xp)p}KY3XUN1M&z(6V%`L<{`r1jRK7W8-sYG8YzPq7} z+qe(;%4EX82@7zfLMTt-#DfQzMp3(%an$aenD3|S=JOWH-jodE zV-d%Fanoa&LN!sm05L7eQ`%$76>8beW8nmHY-zJQ{yhxqBFmnCjlb zY!!GUNeV#H0Ki3;>Q_n|*k&vLp$3}(V7o2tPyZb+D3ctTOUXQJjDbJ%&34 z1*_}_-fvc}e)HBNJ%&w}#ys87qMxTHtQeQCPbPG)+8~ozEATHFKkqV{vn4q2q5Qxk(sDjI(pk{O zAXIlWuTT(+BlS*&6&&a+^bih6(GMfDE8ub#e)CN?;Vgn^f~D{*l4s<&;S3V>4?&$g zi(a&j**uFmw2r+vi~VCA_jVQsWfPBd9*<>{Ky;o!Ws}Hsp2%sFBygT2Zj&r`o~&k* zqIaHRYLjYvp6X(g=6#+PXpoap4n)V)p?#ZXp=p8p1o+3vw5C# zXp?(!p8Mw?qgs(b2*BR%&-=%yR>mQ+i=h%+=nR62cq&m~E()<|k%qxVJWQxEOsb6l zR2?RiaR8EerP3y-M2`uT#In4z7{&FXtnflUv9e^hAElW|_8-SO3a*%ClAi6a(yJ^y zy^xBntQiELeb`F;>PJPeL&30XK%yz3tE%R-1FeE9H<^m1FNIw|;;46(MU(v%MwefI z^|!iIwf*|S3RhMCX4@fB)QVJvQf?>Ecv;!|rF+x1bM^~sV}G++Rm<)d-b^s+JP0-3 z&Ikthf6}L>Km@=g5FQ!;2LZ)9%PI)!+7b9;CH=i%|``R~i?+xy4oe-HpP5{XQG z{y-1{Hj}}4eZf!|2DMzaOhe&F6v0>9?eT`9u{a8eND|q`;)x^%^-6<@#*(QtcC*QB z*{0H&EWV!?+Y?P?bC5hx5E7|ebNND%OcImfWOK#R{|BtJ^?IxQ=jHB9SKIAge-JXc zQg{3P(Rk9A@3Y+<55MP&FPmNEk4j`~L&N!R-H=Mn)V8kRKF-2{@hU3nAx(6}j|yo#pt{ zbo>_CX6_e^dC>8M{U!Rw?ft1gED0g4t#1&P zcGmyOj7z*CBblpnYNu{u(LNZ;6Gvyea(kw+=0Uw2i+|~=&he1hyI^Gi0lo0r=eIb> z5IM0SRE0>VJUFE*hY=L&eFi9fOQF1?-*Q5LaV`6Q%Y*9#UzZYkZv&bs&1RYU@n<*0 zg3-s&$e*+L`Snc$bVKWaK5n!fmj!fu`@>*afA6Lx6<-zLD9xV0QMZIaj2q5#gaK$2 zU16hP+5l{w&Uwbx>fD#|4sT-h_I%U=%F7=1+;(sAx16?i%(EL@XX{{ANZHW7rhrwn{4;v z6*Cg=*(jFv;_@oSP$4Da z_=Ry2IA*b^@CXvLuJitY$^*3PBViN;3Nrx`D(HW6PRNsQW1~X}69y3d=OeImr=G<~ z!5yOOy^XMoH!c6y7o{%Gw{|5~LLm1Xgi%sP)hFo(YUKxi6@eH#3`CeAZkWJ19KgLxQ+Pv|ani*5V0W4Xv;SZRDILLaw`S%zBYfW!a_=Q0DYFmu+ec80 z7ya-N_6gCvKvLfKuuOmj6C@2FNrg+2M0Y>qmKB(mQ#lfTzU0gIbNT-DvQ(UDDppxf zAU=wE=&^n&>OVBoP-}txodbmYrZdeM{=xzw{k5bAFBp`TY2SAg7teS$YhqOW;{ExYU2ngAgz5i25_m>re-i%PvnN-V! zbp=TzsVoG0|BSgz0Dnb)>qB^xG6vLG)7?h2Q*th6LWDocsVOg1*k#F5#j#Iyp7Vx6Us;WbNMD9Z*F4-!o1 zS4a79tzvDqRm@7)41rn#7+&x5-52)V7`FIfw$tiW2`shYsUiXJSf3>> zL`(?P+iE#rgJLeeJT;UAuL4N6$`G8Dm|Ba>$$YCaN9M319m1XDEEzB z*;T>Fl?T&GsRMQc^&$^hN{a$2xs=b=LE3!A^wvCRr?^O=_jZOoaH+%Wqz%ZB2~+&$ zzo^e&CIcqAlqWm!18LD5uq~!ToJQLaaQ&!-exf8pL${4p3SXo|fR(njbo*;i8xVK$ z#b|$j9iY3(myIG?Myuxw`5sRN#btaX<^D28NHZBbrZ5uO`#fRV`!!AY!$cgJa!Q7$ zGWMwb(2okR08qIM{XV}cw3I$*YxzJ4p?5f;>Y{*Vm<_}#^4;u%+6;(nvHU3;VWOto zK4&4#1w3n?`r+jrLeWY`K-^(Y{@Z-4z15-ezEwhN3cqEvHxO&-aCmbjDqy>8sEGBA53d!9Oh2b2izd>j3%M%FQYFa6s{-@b`aDQ&V&IW^=~X$~MkR zzq`kgodnUBroa6`6rmj<{WOu##Yu`}KZDI~Ts@3~{RmpJ1#SU*YhFJUm#g?_FUV)OSBPAlx!W^Z##{ds&p zwqo}mc%n*pKL{oLX|42E(!3$8G^&s>b?Lw8F2#QOr{Zt)_89Fju`up5E8s;umaBv zo=~N(2%=2YIG}r4fv&;MJ}ygE?ta23s$!FDPH$rlMaJ$>i8$axmA1Gl9Z!EVXK5#1pR|pj6H#Z<1or=5tuI#?Vh4A z|CVx^V(#T)xh0`?*6NMz=>I(mTi}AH!bQ{1qJqlA22N$?!eNYF0+-fByUtukPGZ!w zluy^uu}XsF*3{h?!Xs#7;&>wC7y@aEJ#KVj{<;O!w#KkohIqh=e(4XE8Fv(-6}4Fk z$kB{CZ;QR9joBZMcMgonI*sgq@m4wW)5QzC?^l9OOArnTfzs7RLv*=KhdB+6W3B)> zlqY3-Mq=oS|6}0o$Iu6swK;Xw@;qYA+Y@ukK|sc^-%UO=Pf2PR;*9(L(&2zqok$uQ zXWm!2+_2!dXL|@_J+coWBK}+agG>a2EQ}yyu#OFkiB003j2QE}p$cINwuUomLo$qZ zv}>z$ie=RIh4xRrW*r*vh;apW^}O z6baG4lS(o&pRv8FH=qn;QdSXs(wnnN36q@(vWbGBG*n{k&e3{1bZA$yxA}cl*~P32 zBQ{>at6nNx9Zu+c+1(zwFy<*k;W@9yN#_}6fUf=(`q`txCk1RTOo=5&$*zrmQ zyh3LTBZ@+-!h8KDv$ zMyA_Racdj!G$YX?yjV^4bW!GEcv9b65gbiAs(N<`%nVI-xYZ3{Q>b8py)uc+4y*2PM(_;R)aPHhUxof163XynnE^JE@nF@-ys`qSb*^r9VFUos1 zb?NJCV8*JNz4NMwLLfmkAi_kai}E`9+Ckj3Cs1`OCuDPwVd2gWN>(tBjJC2r+Iq%l;ND_2!c8optnT-_#ZU66O0=VW>M z8U|ZcIfq@wWP3G6=6A)7rmB$!YedPX)g0(ZJs9N1ewgx7_Y7(I1_bx|YPpE_vwTRd zThnA^izaQ0`Xy8-Ld%(T!vRhC#-zlxPMzx|23uE({Z_+GaUK~Gz2iiAgKJTqKx(aA z<0WQoUPqYQ7xH3TL&6sfEa+Q!JRJ!Z;!+pqwT=qah=jJPG<=*`}e;0Q83pUMO8ghy9%Qi5msTc*;Olkgyr+OKvnfg z3xN{4v~FoKH#38Zs#@8EMjCDUgw`r{>xYPj3yG_<9( z%pltZ*%c;!OgMELq&;`|PJg@47)UmlaP+Bz8Ii!2uU3#ACAb_Y?jD8^tMm_6wMSM`XPi&;CT2nNRL`h@2Iz za#-y$h}d%Wn9fehwrL5T3(bzSY01NpH`DGXgFOxtqRd^B+3x&>olI4g)b=8CxZP@ z7?a+70evk4I)=I8s0u{org+h9@;>A6;IP)pKDC@BGR>;UXwx5`iy{U|@sV|}u5ITe z%PUzX13s&|C|2}blO5Jo|8APXg(G*~+U0pvDW?}>NLBD_blZK~XS{1@^ntdd>hL|K z>S={2Bwee_8S#4E9)8B6J7cUJOUG5(=#TTf8Eu3u^RCw;E_z!HXQsB@l%BE$MwV`X z8G}ukMck={^-NLyZt!SM(H7IJHEC;(VvHn##>521aHmzvPJbiu#*W{BjkZifOUu>k7yaYJ<+zKHKW93+}-bQiX*u zhWzt#lFo3oLLOs#)T80g+KmJZd5c-z5mJ_gS%vKy;%L2m*Z7&)ZJ`zXr+k28ztGh5 z6Y~=FR>~sDhG&oB2C*xJ(&*RR0dAfRy_2Q^T*Fk{Zh5=(g6V>S4DFML$Diq9%nJLp zCK;Bk*9boTb1z*Cl?}H8v43WCqWVj3lfUpOLx!owucqE2;m*Q^-zX>|Yu5 z%MaZp*SxVm{0FaFR$i;LZ&AICJAEDecI~G&X}8I>lX2w!Umm0It~4#{Fv-Ol4$AzE zCXusb;xarzFD#k@1^DSwa{FFo@?PGc+>BBFm&jS3@Lh81-Dz%IS1$6ckrsR0iCcUn z#{3Oa?u8QS4A1ugiK-xge>G}lWNmH)W7IB0+VJj%`m7ry$&O_7N96HSI6hm+`{5&h zx(2jRDBA5i^`GSU{_&G}U21rxr!)k%b>xo>Z8`-$(8d*h{rTBAZk6uKoP@#NAQqiS zULeI`F0^AjZC%ef%gfpDZ#gz)n?4zj=2KUYO{eh4YxfKYrFwKM4=rLb18zcQj)%@* z2fMo$ocH+N(>XA|7P?pRip8Ql=kV<|O%unrTYg-bW}`u`9cdo0pDjD>`bdqqnL^Ln zOuqW%7CDvpgENb3q|VdJuZf{%p=R!BVeyqKbF7%GbW~xzr!RQjDF&V$xRp2i28)7& z4#QSpC&NsZAbWVR$XAR7oKMzkF=~M5I^bfQ{em|Hjx=%Wr!WPJ3&29Fr8liI*wSbm|#udSX1 zQz&C5Mm3;D!)~D&aZ}DPgrO&SiDL8sy1XG0kE8L0CsGPY%B0MxfmUPYH-FVhI&L2t z8T*Sxg4eU;W@s`2Yr{xB*`7j`zinG28n+6Fi=l|t<&jjR^@C`rs;D?(b?d=0O;eYl zMF2hUIbyM`LruTY!K#@H9o^yA>U0_?V1Ut40#$<%Ubc8)pn^bOW32BiF3iQDZe;@b zjX{T!ajaYn*d56>bQ$^rWKR%dpm|nl50RzfU2~aoY9bob;h3fhCK3kRVzH!g5VG2y z)-0mjgk^n{YKXb<{EhARKBxOajgbIbnLaVE#US~q0K;ImOr2pw-9N{uu)V|Q0$1Se z4#NvmobF1*y}q({JsINklz&FqcdFX%jCms~y00A2X zAbpPjHVrA^om;2fqK2ejJ^L3e?8N^95=Zj6&E33^KkrJR&&WM-t-f^q29FEZ$Q8f8 z+s^**Tn*IhH-=h&{uvII$05E7IM`Pi=$OcqK&9hzw5iK~In6|e-X0#9;y!;w<|rz- zn3|OoXC;_tkM1t27d?VpIL8bi!B5Ur!>EBr2Vq;{Zv#-jHlj;nM!1fZmi!0JE(Nu- zV9P>^O(KugN;W++x{JpJCk@tWE*z1C2?v)mjqxX7Aciul%{W6@Uom}MxvvRC$hBVV z7c%0i!-b+L_%ZV})C62T)~>K0ImZlal>Dk$ex55znPLF|Vx)r>N)si;mEd#hBeMkA zb`}wkjcnM}Vgm&mg^>;qO=~5iIFV*i=6xTR^(7{*0PxJ${cL#BfA zyt)iU|MIwO{M}v*-3nb?(nXnX@o_^O^Oh`X<8gMx5mA1Gq=x9f3_v8P{b zS>4LPjR$g5T6J0I^UW_Ra4XH2?pGSY8S);a7 z00e|mBUm|mhRa~hIC}3o? z2FDygv|qEOwh&|_%7@3%x1xwpQgFm5bJ>CwaiFWkAKOponOsGirGdLG!+n^=gnU>_ zpU-sZ*Ud^%cTJS%rChBH-e=Zso7!-3I-@L$G{oOg3d%Y4tw9RxON6*)%|#}XuO8YBraoCmgg(ZI*h2`fp<$Gz zXN?6UU!+i2l?3oNC^0O`(~^QV$kdtcQ`;nqQ1v$eE+>u2XvBCd^lnW?g@=kYlz5w| zgflIwE^1vwrJ1JuKzbB8Tjrp!=6?&KzEyM8Qy1d4{AT)c(29%k z;In*WE!D6zDqMLUiD$UPrur7L&+S-{Wn3z2W2K-ZrY_0&39CREqGHn6T#`0a@c^N_ z0PL#57YV+eS43v29yoBRedA-o)56TZ|2O|g%>C+4DH@$0(!P=ip zwdJpKez}@C3<*rX=-lTj6XR<3sJ>Kp>uKv2&yvqU}ACg6E0LtV6h&M3`s5(IwZUwptrgGfYb{xiLLa6S*{fW#fO2wIGg{P6d5!OCCWB ze*LR~Cj>j@sSgFr{C5CLo4?9BbR# za6#Th^1utr{hqs+I(K2MJ+QY&Ns_P~eXHzN3m<;}<kXx)QkCXh*i7XJ@ad*H7l#EI;XtYgp!+SJYK}^6 z9S*#)bBt>66^N~Q=Dhn$Pq`~s3hYjQpls9}+!UMF7^z{ubk2zIG^X^}*;Ng#!Sy(V zl;v1U-M(yYIl8yH+1!)^xbg*IS;IW+?cLIdm(E6yx))X)Tmn;fUv4}wuWFe6(X)4+ zj{o*USVq7@$OosVTX52ZEaz(Mh2b)uLk&&NH747hD>W^!r^PeyX9{f{ERUH#H5Nvl zg${_~=%+|eiNlFOhg9^h5sLr80Lx#y0+zl&AEW+sYWH1%31geFBLgDv?Vr-l@z1>y zA9WfS97u){691$8LY4B{6uyC$@^)uudI+O5tU^{Qma?j;KOxM9z;6(dqNF~-yyVP z0K-GV_T~;lSX1v)+k-F_+NjNKLH(qC6{fVX_}#*<$&aC?JvXt}&%d9-tMsaY-a$&A z&vBo}DEDu5t=lCp0LKaUD+#Lj$H{5M{nN8#r}y^TTQ~>{^rvzy0RX_JJedj(W0wi& zML83IfvhV*h@5}tJHk-LcT6KYwSU{4tTrpEL}Hvra79IcwM4d=8=J32 znYlyZ_<}<){>OD-7b~80o_+L!9Ya-~WDo|nPUT48^ln^k;Hn;m6ceBWQ^(12hjq`q zACDX+kHMWlgCWlzW1%-cMO$CRW~??#7Xg@ z+=uSIK^j_3lJSq_Jx<>wUdX+c%RROf2hQuMq%`E8z`m}%-WIzipdI1&mE;!?jx;)d z0bw3uePl_Y{gg-S0v_DQ5A6Vks8EgTXdY1ssXi19ZHaGngXd#)E<2d~>*6nPiHsg6ydeUe9h`0` zntFVZixD7~$N0fJAb>24_WXE-0gZwF8-rpn!(VYtlJHzDW8}Xfj2>$7p4P3y`{X5! zBzG|636i03V5TOl+}2T^=0QCMmjy{0AV0)LO{jnwwhkVj({1n@omfM@kg-sWX}#>~XMVd>v^kf?OcT_%A=p2TwwLu&}bt9U`B&rStf z$E!@w4sK%9QN_1>mo0V`Axs3-&Jw{+ntwZ>IWwgu3m9RmM!H=7h@hj z@#{cKc2Yu-yirSqaQ?5P>fY{ zQcs~I%YqUgm}E+2;=Ye)a>^38QS`U)PXgV4Mj<<s6(-Cr>4tef8Q?(3%{dkGRa(W;|wi* zc7>7sr>3`pCCBlQm@N7uCTNGu8s|%3f0qsV`2oc*4VqUsnn{;~yUHY@7Wwfs{l)=( zpER5^HC3et+A^>vM2hjpq5d!^qE3uoui2jSM$b)wlVO0C#RK_ok_k4hdLxd+@)0>a z*XKMsExfwIriNlEHnBZdm7v;k&xGRQ5^1KWA~lGOF3{|Ikoq>vU_21JLIXS1)Ew93 zn@tQ;RGV2$lA#vYS)|6MyM|>>i#*9Q$MfeG2#=XZQ!PgGH5pG?F;P=?jTar)#7#n{ z-oqkJL%aE8-nm5UN&}I#h&u;jd9OUMQsu$B!HxqHP7~v4+0kYtziw~cWvkUzu33klhc$Ln+cAX1KtTiZ<#8pcuy zSCKh5n(+yh9^Xy^WJ|kjH|vSaY^Evp?9@)>3`_Yn3mfJXnlOUX6NuWgwKm-*u4mvz z)qHzG&~~pihI|~ZZ0T6J zMZRG{1lBPW!!PKJEWdz&Gi6Wo1#Xn8KvT*Wf0pMT)++(~>!xz4Pq~NMeqQ8`ON4-D zyIE0{`(!&VO07XJa#4uZPrn26ATRPZcN-BkAFEU&4^9dWN_FUTcX)ix#|FH@iP?=?IQ2K5`!kwJ*D!gH%2eQB5aT><_MS`sM0lzY|{lD=BL&oIb%R{>H@9PTf z-L$Yhy$yqs{qx#QV>&?gcrJS0x~06>1E;G+ym9k@5T}=4EWBiWsZM5@NG@9HMo?yd zai9LAMslp6C-7<=g8~b*hsr3_b~jL5J?z>u(cMku%pcqu2@=A%tZ84J$=4EY?^U36 zD&!k2r?e7;Hh6a_5;(lX)+FLRG6ZpE*_~`s_iWKruM-@$})l9u#4*W=! z9>oj9<+ft#NF#;}C2@J9t$BO*jvS(7B}+)%XFrQ1w{jjP;v{-zO$W>5=_HAPY*Sv7 z>WyJBZVjX}GRt3-Tbl9B20fS8^e_RzbWb#z@YrUcxK5vt+YWr?Hv-Pi#K}%WW!0?W znk=zQo!w2}qxF+NT#n7uaLCj-4?0o_Zz%5`NR@?g9^THxfobQ)orOLHgg%{Z6!u;& zIPAVD&9jk?wbrZ{1s0UB%6xet>snmdNQEYuzYERDgUk6$J9%{@G(M$Yk}>eQUKtPW z8cfp6n;z(oT>7je_8^Lk4PCcvq?*?<>L4$Cz7h+37VL87w3_bu}}CauF$_4dREsxXv=F}echTU(QUBYDv3mL ztm=|Tu+}&=MYmiCi}O62`jbVVqKFU~{5j3fp{3Y_-s!mM8)O#bXz{N0mnWOAT?qZV zl#*WY_Im?9s2M2G&=?qn=x2dL*dE3m&|Fl>q)V#TLi{zms<*2i2%FyxHpuw)iuYfnM@z_X(t?%UNwma}u+`sa&@@y6BYz%xdtM4vZ*DW`C!#>94c<}8QCW2|p zs>qY%YwPUgGcBFna7fVWn1&JyN$N3Miuis2mEZVBG^ZN7s}FMOTfE(Dq|F#gJunVm z$pY!lec_MXeQq`RAn^3*Int#*d#h$4K%4cIm+0;iQ!`@upt&XPXQSw0A*g0^qnXo< zn%5lP@9weK=?9jMp#QC78zK+DNbh|`lFKP+rRa6rDx7bt!4-9v6@(W^HD1hizwVkm zKp}AMv9ogenQodZ{WmV-z1FObOka-8l2X)I}q96yuayct9V@( z!-g`?L&w-ey3&tpCY_wc(g*$R|4lm69LwbHT@*9L^8T@h4+>@L#oyT7{4F|OKzP6h z1!d8>3#wA)5X6_C}k>E08tCj2R zO_O5j;;k+k)XM%hRZ~9kFYmwqipI6bP=y6SKY~0Lce^Dr4?sgDl2 zt2^@t;8~hLYSZ^v#o@v@(qsq2K$o@gSul1`Jp4gDwKMZfvi00R^&d-f!k@c?I2hNfIv!(P^W8z}yX9T21nKh9WM@Fw^ zk)gi-{r>X1?blBvn!Yift-H6ttL6Xx=m?*R1O?u zKLb&9b7*RcxNL6r?NzHD!?$z%heAc-xA6cieWh{C(<0GmguG;M2EQ?iJBW#tf2s7p z(x;Ma0Fsnp+U7}l1kT!w7~5LYJYBleMA0((ZMIH(;o{{Bu5Oaoz7)trXOAL$%flSd zB&^r4RR?2a7q&1As9MW5uxRu2PouO`dE>wa6-P$5wh{qH_#y~H-I^i>+X3{1oX^&pz<(J$|CrR0h8 z897b|Wz%`vWy)^lP=2M`?74l)y84O&<%E*`ghx{ubS5CyI62G%vU2Wf`NkM}7pfe6 zyx+<+&2c6Ws#_UVXU^xtOCX^xQ;UZP;+ zM&y!Q6hHo_Xiog)a4SD3${0H=&ev_!mePPBqkJ~z)L4Z>t6&EvlDT2?sny$~`4VJy z_j5aX0&_CUsi3jVpDL7KLqeeGN`|))ZpEHU%gng0;G0RNQAo2!#qO_%k#Z?u1Q1RQ zZlE;0FqjB&f-Imn3AnF^BUgxLM|hZdWJ>B7j_Naa zV}Jopco*8GX*h_9Sz5wN!^p7T;v0j5Tsm9;zLv3*>x9T`He(c$cx!;D{|t1>^O_~! zOcR1YZIsk%@h@c27QvmcP_hhf#-^-@aCBO#D_#eADXI)ug;w0Mnq=Uww&WVvymIO} zS5a+c`Lsp%mKBIk_%@~WL($+;)_1rndmnS13Ot4qzJuW6_@HeIt1CGBOvO2EWSm=y zGVz-Eq3k@B@ze}GGL)H3T|y070V$S>Y|J2+`COukoLvtAWOBUJZ&64jqQtj(OO~I` zm!%fA0huoD#^Bm@CbQyBHg0K@lF!a{Zhg1tJ%pC$=Ol6CC&lX%3p}fnW9)9Z*|Ljf z4$_0;JVz>_9SZ(WCSLry4yt~H#jL}={MUwOcB`*(%-2Dh;*tkEe4JdVY7)1_f!QNx zq(~fAj<^D-8DDFvNWyZfKLg{c0h;cdoLw z1TCj~?s=8Q-pFk+K9|~}wu3}IeHWsjmp3+Igqe%;POqa`7HnUY{HRrZ zuU$F;|B681Rz!+0PEM=FX{K!si(Fa_1@Y&$g|S<+r`#4VRr!Mw)5$Y2fsFt+`sXQyfBidB>wGrS022rRwCoeGFGOR-Lj}!p%p#M%RNwL) zM1ux!0TC-5bVZAFK1He+2XGQPxrx!bi35e+L4AugcP^WUB>0V)VTiYio9ePkaz1jxh>I4oC6doy$|&?vm?L9n4d#x%|Ms^5q-QN~wV zknqS!En(Zl`^#hIC0A+SS|b(I5jEj|Tv9^vOG)O1pfY0{dE+W}zhN3m;OdE}vLUk< zKw^XpyOTpI+bKiuQQ;fNb;c?CHme;48?NhZTGt;d`-gGapFbx&9%w-83fYOVRC*ZP zcg);(!59EW=M-%Vm`CXGfYDw@l2Q~a2N|pUt28gS=4=h9#qCJ=+ZGJQR8vBg#8&bZ zB9x&Ey1A?UP*lF;JgIPU5uU-h62n4JEQ4#|iOi`?)_~&S;P;5F>xueUg@h%LmAylz#2l?FpehMq>6%FxNI!^`<(OGc_^;? z1K(85_T8ShhWrIf(Dt7bLaQnTgi)DPE*s()rR4YB+)whMmFuaoo)f*7D`7E}a{0DBuQ1wSD>qEj8q9b>i8x8skzz^;yk?uTS?8 z^yRXk?zWq3A=*@(VQY!WIuET=b4GgsYns|7k3yJQ3&};Wt`=2Ny%|L5O{d?Qvla<}Ru13#e#VuCOQ0O_;p-v<8?v#W<>>A3QT+%Ys}kpI znE7MdX^;D5tv8oYXaLoTMDr&rLPrRUtkQb|YC3)Bpr0bQ+uN*!aZ&ECjqT|yH0NQL`ji755UUp5}O4NSQnzKXhfPQj6P`98wU|4-<#D50Z8&QPslI^9Xp zSoAuqb{e7>-7Dg_D~Kn@++G=FFYvtvVCwtpa)bCGFw*f~KGxXe|jJkiaG^W%w;0@|`;{zFv)^TzyC^1wJ$LsGy$r=RC_(7u{uCo7|hhYxB+t zP0avL;`=VOky&AX`PuZr^Z3@x-7g}8Kh*_MLDLv_+8JSOYy#GoAqBs|j@P$YG48y2 zf`2c5%R=`~%X!hYURg1{zh5fZUqP@7MtJ(MqHa7spuvMrB;9HIqo`!rS4IE^W5yPv z%iev61?Dj&#TAn=EY>1m4|^nPdx=&z{X7#kxG>|^`}dOh^Rt zWds5&!$GMlL|WQ0Bh{;|j77;`dR_&ix1~b6>QSl?PR@csKocw^phBL!>mr!`4!rtS zh!qY#Vk-Dgfs#o(e*y&`SJfm-5a2Jq=8;f)nWYp?N%9B(Kl2d6K2Z#;8l5FUA zV!Diy!~Mi5qYb2~Ge$xHK&c;=lB`mk0w0cz@LjZE0!>l-2I=Jjfp_5~cofs$L3po5 zq!XsCy{1^vMbL$Wh3BT-viq$Bl!So@URd(dK$S}S9)v+@B6*yP+;t@MM~PQHkZvrGZ(^KNnE1e45Moc~yffJA~S|4eybLigB?B=$bw=)0@AhxUM!r@4$K zJaVMDZ1%Bik-1#ev0Rh+kFMh%L+0{R$MQ?&3R}kthvteG$BKW(!!t#(k3|hGP7ME8=W&qZ8^9zeh z%PXsE>l>R}+dI2^`{0AaqvMm)-)H9+msi*SpKJWzxkhrOzMi*-v*l`|`M%zdm%F3s z0;T@Ge;=<8m;3Ym{SXKMj{Z}1j%N)HLYVs_8f@WgEDDXq$}0trj>if_!U`S?2EuB4 zLjXW!n#2Pv9Cm;S5-A>dAX1mt+5{S&;tmjtgg_w*WYlaN`Wzus9*9E|G^S4EQ$3)9 z5h>#>i6X~)8;KX2vIfC?U6~k20P>!PhTvC42E%HzXANXh*;c}2$V;&X0g$|9MdOgn zZ7i{@eLKGZ;bj5`paAMRr@7Lp1V_*YP;Zo3u28lkNxoG!#hKp!Ra#@xRv}WxLe0FM zf>Pk32TM7q5>0_-Tbb7766!=J5s7_K7e$1U7$pfMRBvAjlKYT`;&Egss-Z=wbZm3G zuns6d17&BTX-Rl?HL%q`322%%_;YM)e7{5u<(upJIb=*VWdU;bkW_xxpxi}4%B%NO z2?o;!llkikPF&waJ62A08SBr{h^&x~)4MOrYc2=}ddhXH8DNIm_`*K3j(!!D7`M8> zzAR1T`$i5`3TCKT^{b+OAWBxl5IzsZMFaHN{7iH*bAD85Lt{<0`rJ0^q)U_O*R<*5apVsufuAkQRVu_C`%*$%kCmD7qo<0nXJf&o(@aV$neae!h2b z%!fhKk(^|m53C@v_1kYJy#<)#l77*k>HH8!K5(&}V+U*nd9bDdz>FSww zJJWUDK70eW@9-e(SI{bA$bW;>vgqeAA`S8SleO>Ydu2}2|KQ$Bz5o7aU7%hFKngdL zwE=a;+%b+Y;Y-y@w9C&xA^iCic2hH) z0b6CLVq*G>hEl;+X24vADMhA90HA(t1S3x%vtDCE5g^kIGLS)(qAgm;;O3PFP@7zw zS%-D-)xd$MJE<@$tq(n|DNJKXW2>RY)}|1eGwyN zITYN8MF5I3kd12`V4Mz$XdF3)wI=L;dUJ@H7R-fRdclJb8fPbMe?br1{Bakjmg<#y zj5F9y*B*Ntbx?A|Z?ZXu?8|LTf7u>)f8%W?Uw6oyVae*O7j@;vh9kugc`xg8<{&rOj#JfU?)$>s@|&2Ca(Sz_-4D=j#IIUP}o!U?3}7Kbkh_j z|F7!wEPBm}!81LW)JA?)HbYn#&lTRmzTiK(%6utJ4|w`gwPg+bj=s1;9wt(CrFXtL zEMTm|$>r7En+k3RF0~(y*!#s#?X2W+uMO<|0eg(8q3t?gt>zZvwt97f%WcrXjW&WDMK^Yh*HtZS_&Gh< z;AjmO8Mt?^7Z3vuzEDO>r*85w+Bs;L)f^2|YY4}W0y0`*b?q?atKwZ)470V30$#7# zb$TpTzrGAnaUc91W1RU?jPIqfHk6iz0?tnN>Any!RJ}PrBCl@&vbDMHuL#O=dr=m$ z(pF-J$(xoOr;i<>9wm#Fo4NDrE>`6L${;}GZR!xM1!*>>uMiXtPV|<+@F!O5`AP%U zhmB}>(FzsAtrOjxY^3H^j-Nn6JLT@{**zw1LF7yToPMAL4BkY~DeH;3Q&(&8P0cBL z;T59{cR^|ZZ5{fKlz{||(sZz^zYbGS=#7^PIz}5vP5tx4Cuw4Mu&X=9DSk$|2N{=XgI*kfZdQw4|rBAL8IC#}NKHujggX zI_^DBCr9Ny;#}SFuTK}_zqR{u+roo^n=1eNyx)4oxr*>~2w?s4U{ zd2GG4fZg*vSo)hA+`u)ft?CxF2FT}sdcYA*!rNlffJ+!lt~+Mvdn59-d%9cG5T22^ zHu8`Mhxi@H_*ReGr_Wt6N2rS%jXgQxw{$YU_on8!FZPOnrxyuIjHk4I5hl41G9+s; z#OQGjlKGtUf_l0(`nS?*_faYPgWN;2I0sr!91LeL(=3;gF2 z6#Ot){oiK#U$Qv_UAA-zR=znh3%Are+!VB4Xa|UZ+v6VSX?EWJ{f6l^1D@df>BDMC z;KTAs8ogkcSkd{vym&gP=|e!}o}E^12+B@04L5C11ac*5M@G;2_zpV02p4u*P9<{!AAU z@Dku6tzusR!zvSQdG<@_*@`UCx|lBP{Uy+{1Ue=2W&vQ&V}F|xk-MQK^=c)C zPi37M>d+o~JLc|>pb7z<{Y+lkty~^&_E}wlI;gAwOLKEqm`DxcyZHSCw2@AuA;~SQV zZLf&*s)$vYh&@nOn3r)ol!*pN$1SQw9<2Z5k_38KMYLCupC>H)_Xq@WvNpCP@d{J$okvT85dAB_u^ez;76?zxuUV`{PaqpRWQCWZht2 z4IRP*zh!AfVynhmeRrVJ-JOs>3Qd+36_b-y#q>@|AC9k4cfZ}xBGC>-#t5r>NyM=6 ziXcGOY~h&XjE2Aw3bsbN?|Q`jSCO=mmSW;#t#i%|h?4zN9yfZH$oe&%s5rrbP*)QW zl+2qL`;hnu6V8H=98H@Xv&jR$7GoCWcfggZuC4kyVBbg0qk$1s`{F&=VHze28=@@LsWP$6P^s($-RSbTufB9u!BPxv;hVDc+!duqQs znl<}i+miFt42QFnmCkTCxuE40n{P6{FVWx$9{HUFCMVm5tdLWL=e=h!T@iRsSXeip#kw3S~f+o7Hz2E(1tay^)1nZqoFLRX09$NR2fuQvnNQ zaa!-%TbBf1kQ#Zs{Z)O-X)tEW0Lx9xT92xy6<|UrqzdWv4`I z9L-hrivXZ`JJU)o8z%}Du4@Q_+%h}a%#0DSTn!)~?!Ai{AScPDy!xB~&XJcj7SZnk z7XzUMv6)at6jlKE45QTY?G;adh*z~{w;4X!!SF&Jf((5$Ulv6 zhmz$Ao$Q=tqx;3HN7+!YB^k#R@tkFC8y==PEKx>%YPxCvmaEcEx}l5-yJ$uF2g}Hp zaLmY+Uyd+%jTLUQS6dDUF^*YVPe$oa=+{g-plC+dG*|wRuQ(q(9!`RYNEYED4b|yS zHu`6q$ir3sMQxm+v9pc137)E3Zo=Jmn#Q^?Y6chbh(OnfT zOzCAfWz(C^r`!z?QgGF05|{L%lkD{~t%Y54Tjr}-3LQ0d%)1b|z^1Ry0e;XdCS}AeJUs=VSy+;bf>rd$G+j@IC zuCy>~*g*f*%ws~;P`mZhx3cY`jsGp$=%N@f`A_x$y^7$o9Ja|sJ%R$(`o9hxZ)dbZ zXZZ>CseFWzf&$Vf9adAg{`gMMBE2L{mTVHrM*SeJ1d2tR! z>!3c0`y}HJx6D(A;~E&gBoL6sVw08p%`t?)$~yKoMQ&}iWqrkKkeezT89+WBG!r2~ z0-swQm%2q4%@qG&m}4G0jZ__ww^LQ!+b5b!^h%|Bgx+hTFf{xb(N^R*oYujECdmeu zb@P$WvUl83wUJEqJ30Qy6Ria$@nmseSG42Y0p<)MLADv9c=lT1VQsyz1GQ9PSfb`2 zpG0;ck64&AWzUxU`zH#@+H7(R0#mN*&We8x`{ahNNhZ4U`8oJ^UkTmCOgKxh}_7Nepl4Y3Yt9%jhwq zatPcPD@3;BoZz61GOV(53wSsUKRTSJ{RsG3GEMf~*8IaFw7u6j<0=*|zh0LGlJHgJ zCXnV$sRm?+_4j63vqtFV+rpWY-|M#K;jxfZ0D4M|AaZTjhdIV8Bk?Bh->P^byNJgyIZXRCux&hP1Y+K%~XbuT6n#@E)o(9OFHVzz&wJ3mxKIi5Fbri|C znK}7V?#F$jGfb%Sh>$!Kvkr&752# z64r&dj3??zauK(xNbvR)YnNVjMzSd$yk)X3U^5v%Y7<{Gyuh_)I|6tcW$my5ZpZJ6 zcqzpLMUqm8i@iD#38f8QRAz8#5PpvdmTG@h3}aE|3X%FPtgjU|cfrhZ0zl`|Xt%J? zB3_ZN;#sQIVJJ)uy??Xa9QKpH)(hKax6{o01ZIJ{kgm^F#0eP0|HNFx&>~6=YJBN{ zZwQ3PH_zhyYvF2R7^p_J!C!uP_6v>*#k?gGb!Z%yCHuegp`p}i=Qw)zkS%mLTsnh? z)n0w9i-7?o(T=Yk^@2zU$EToOUbj0K1a8*$l$4-ggiKP)of?bt)h^m)tf^@uHv2<)?fV#{$M009b)KzTtzAh+0# z3%z3*SpuCEgTA{nou5Li0}}swEdk2!m=m8`Nof!|qsnCN!?wV39HTr(VCzTvu`}ME z%V=Flg@M>YF}drQH9$wD);Y?&&1rT!fte(5KZw-u18JIrk7Ft6W#NOZ69-w_r30^& zQ#l?Lf%*?Donz_<$!2Iy%9`!^z)m_-Hw35dO3*sEss>S+I8n#0# zlC#aNv|+T-u|~FB4ccICQFrlq!yXK6WsJNvJq^NEQ%OA#QQWpk&H#g+NWa1@vZ$EF z*A^oKWY=EL`#i247>HoE-HHV&bqY>)rgFxP|M^==141U2BoA*+actsTzMwkV5@+FQel)eVW9rEVI|b+rxbm^N6oEe`jKS z+jd}iIngSppVjbPg`N2Mv4$dhBO%ul|2z+s{KPD{+woDmb#P&h1iiI`5smk)<>3{}F zF-$NT(1{zPl9;TK3^+%GgI0}~phXE8J-E^hf^qccso*cE#cgQRiGI6D3HbtRL?4l2 zX4YrwL7Wit>%P}^iF}M;6TM^VQkj+!Qk3N6X*0@iS+XYwX0(dSCA9y5ElTn1ak>74 zU(XvdklbqwNX1Xu#U)#{xDS%mD3X)(`F?0u-CLw`nu}zQ4p!19TEi{U4k@c;a0@N* z6Vt%49fcR@lVKZ;a!OQi8cTEgo*?{~HsKun#3_~4EP|W%*%vcKj>1y%7FsqqC;8ay zrWDj&Q>AN8&*waw+;ZjC)90fioVkG(~m>_sLq_L=v%HA-3ug3>t&U>Lp=Jm9pqD zs-tc0r7RxjW>!QxlY6O6e6@^9Y(G{C9Jwp9;|5g3rlaiH(^@JpjI30qH)k21nrpt> zYVu)j*SX@>w9?w?x^%B~v}x4!_FftWRcrM|S4Na_F;f$W>z|0*cFtPdxFxvgpKk$y zG_E%ujmQSqmR=akPj$q}-3Irr89hf#D_)Bq;TP%aJy#C5)=R|u`l0K+PXR3cCpnP) z!kYEIe;Rc^f%@eCy|4EJxf{xmjCViUUItLh2%zuejO*>E266KVLhps4tSDfY3aMv&;UZKpw-b2mGAM29Iv(^YO zxbh!*thR>m7J`{=K^(+a(+t^*qv2Pk3PgE;cdQ^;Gf^)6MO(_6k&T4!&nAe~w&VYv zDsfBC+E>LWb;_`zVMe8^AI=>-%5!$FMl4+x&#r=8jwdhMcslNP7Y>N1;z>OKGPO3x z{_TF?7ehnn+@b?fUx3~29%dY>p>tF*oMgQe9F1OKa2D?l{?{+wBVuzmhRWC9vaZI! z@fwGT^*f$-na82BQTWRCA3MbPuj4Lr5qd=Ey!U$OWRnGxkq2N=Q;iWjy)S7+!j^DlC1mq-#-Zb3>bru3QIe|)=ND6 zmHE^X+6c@%`DwJw=G`<17M;8wfXkqrE(4@j)ooG{OzGWxwfblDpJV1mcQ0pX z%|AgWh3hS8usx@_x$VY5V=T z#tB#h2FQz@7fo|++`ce=0k9oBHQlPn&;ig`(GDYcLKT6JO8?12h9PJSuLy;}2c$3W zMY=e5^`gPhC*#n|1BdBO|A-U|$P#{&+(GF{Tx!z6$}+;Sh@RC@5CkSdV(ZWUQwq|Z zMVOCaK#EjMbsR@2gw+r?jApUK2tin_*jsRdx5MBw9cNIyL(qxjNmoX|L(q%IK&*87 z*t#yVo}u=Q2XqHNuN}jJK6`4csNP`!0@i;+cPedn+Qz`cy5GZHrXMs7^k9c@vd|Ch zT80V*^zU~XSKpHvDMmL+P*-nhdJZ-_7VuTUPF;49-e$LeLSw@T?2Nfr6p9;rsu8?1 zYM4bdUY*5}Z#R%ApIksKF{BpZW+7vX z00v5KJ4Y4>3PNyE*%1DB`XDv}7Bjj8s>mfJwV4DqO;`GQDpKn|lCG>T ziR{7?_ir+;L^{bpH4F`P0LJYhW_2=sYe;~85_|%r=BK<1wSu?=3_I)205yLg0~ZL% zV1#_Jgb4t^f=T%-g)%>ZzYVfayuuaIl&An!iDd z5jtT?$lJ3&sIug#62337q#X+4aS+cPAo*f`^D^Z`O<^N_;LK}a?{~QdC~=K1ItJFu zSi5lu9dNfU(fn%SA)}-ZTjJ6B&eo^gT^N6Hp$hvQTKo$JZCNtkQz2977>+TkJEzH> zH;0f4NS8zmKUj_T1R18@r1N!B1IH-pWsVx4RjBy9PTh$fN{ zBcATijU+)sCn@pbB$@L7d1S>HnxeZ0;J9L=cVUVla$?}AbKg>`yK?enBC)qFlNCAR z8(>M}-p~s^V&ymUUxI%HKBC2gg*#W!!W-N*Inlw(oOxn970a>-QASOTorXm@L~O#X z5*&7Jg6@ZvWREiY6sFub3Od1@YBsm(smicvM`vPRf3UMlBf?mz_mrp?JwI@MJjkor zC^>{n>{1}PFDZ=|V!;3;p8ycX6AV{Mg<6%@LL6;QS?Ep2o>LqsZtEw;Co(ZEHH}3M zJ}z~5DkxtM6ikkHFgAf~t<3WD>1qP8`5KY#RTS@g>s;WahpZ61PPP1Nn zi{LI7kb**IKai+HO@I6eveK%wsi7n7f(sGfIaDX(1t$hma*^VaDYGcX(%{1t8a=e2 zk(IElE|~oApd%AC$r|8`X~pYmWLQ};qU6?l5u>JcNQ!l5+SlBU~)xEo(T(yZMW-bz~00i^sijlSVpyQFPe%R;Af zeKifT(8FWWT+`nLb4%cxgBqnw?-CErluoeN|x3HX@YU2tyYnhX@S z;jvRVR0r#hKcZp{A|b8W2DDO>D5Ima9967g+nAh6xn?qiuArRT>~dOxXMhb{5=zj5 zZBIrqo(QM0jxj-ZB!LcT023Av6ka=`yB9@@IB24QdqZGVd_idKo zm7K$}OIo0pOS>=V+QB0gO`Qucwd#6_XHZQ+SF7dw#OJ`gO~rcCLjQ zf*1G?-a(RE1s@7w9@367w?suKcJ!=iYNG-W#P@K*08nNgOQi>!WoZ3}uOD#WdGPFN zb7K8q?3%@;T!rV~$z!vKKQf0I*+~ga1&|nTBcs|t6=(@wT@8c@{}XpW;h>O-HOq=lqU{{F;dPn$>$byTJ4xtuBRVR>+PV?w zeZY?TMx+0l+&%!?#bqGbmJpZbMr{0xgCI0a)P?UYm2`u&`87t!#0~qE7?C21Uqb{W z%OKb3<=}(U`sww@B}_PROpo(H=z4KcAoN>5&~bgsvcpg8UtE;x@ZQCby9Q;_btqFm z6M1CiW<8~i`{;j2Ay#>NkFWYH<7Q+fvwsndg(eK~k-#aAXK2I8$r^w@&Wgz@jHK(d z$l1(#;mN+lFYFGCK-6W(X-PkzNbuVnjQ?#suXOR3(6!tL3+^4O%~(An3-Nd}52&m5 zn=g>##kM#(|2u)~txir{?0<8aWl^092Ymk1d|9i6=~{s%5d-1BGn30T5&t8!DPZ8B zdlyQ2;Ae_;Pop?GyeW(5C?@odrd=QnagE6Etx)UAOB*QkB1(B8C|l2zq~y0FW`v3c zMs3fZeSsVmi1=1vZlDt%_)Ys_J)@Q4>(=b*M6~j!OafT*HWJo}s7dYB>3~#6W1MG1 z>7ci|dEbN|zKC<62r*F?1KpC4^npDW|?#{g8krR&5F^WK#6w)%2+cbv~yD zHp`~oWgE9)Zg-s<3t#ekVH4M*qQG=NnR%E6Wq%Zo<3cHRC#7^!cKfyPY=<;=H;Dxr zlfU(ycVmVMl>Odj#K+3bl;{;<8<@;NDaz=g6Bu;KN$Ui+w}0R*x|eWSrLVF55*Mi8r?*LVqmYze9^LDp$h;MgnR1 zME&i7b#y~*AH>}{{yO*C4LT&Ss{UhsJLCHTMT?4^qaouF#8aET=w;m!%gUpWuHkEf zLUNk$(UdWz9)gl|4JbxIFToM6zaZJa-6wh&CCj5pzM}$!6SRaC+uB{TBq0Ueb1?$q zG3OFBg0+o*528cU=X(ZOb|xP5n=RU_&vyTJtC%RJW(S6wdxSH$nWOX+e*Cq& z>_Q^-N5Jc8zRqob$r-iSkwfH&=ka^m_ibEWsrw}q0MfbRexAVv=$7 zf@wD6t^Ra2e-79X0Jt>GLz&+-Au zR-Ry~+3rS&@RG)Vqw{$PO*lJ7hQY(#$V&mFfQNI)pVMZOw2D2nP_5b|$lgIc{^6jZ zWj~JcggRrAyIfmNHc2lVePI26UUv3f{u^I<(`U`o~@63LAFnJtY7G9B(zY^x&{2(6& z8MS`|a6cP9Mo~!dH@$tme*^A}mx^HQ{apEFw3_Ch^pG!PNepJlB}YKO z#BY3M#}b?R#JOiFIO|9ox2T+qP}n?5Jbg$%#5i$F^;!JL*i&(@ag> zs$27PtL~rhJ^kw2d#|05TXf6JBKRHKa3VeMEV0zbThyRv%+|kXeyxr= zR@5KA8@Pa$2;m;uQ1OV!C}|m4Ie7&+p?(0N@V<%4K!G$kX!Vx}yOocwx69x{aqIc5 zFA$$FTZ@p0$S68bo4OE3VN$AL>ii>@=?x(JZ|e5rA5Z#)dT!Jp~%MTwupV#cSPc; zT}+wHk&Kw>_TtmX!NC_%ZAtevY1C|?t9`@blE(u7Vqic5=tBUA6LV!Hm2UsI#`}}~ zsj6Rq{_G@h;kyO7Jjr0ntVr`?^+ZT_`2E_~I=w5-t=IFh~ff_A<|+)6|_1_g099o#79ub(b8`Y;0l^OOL) zm3}*@FeJk4I|;sMW|BbQgs4fE*WYsibX>Eg5m(bL_R%gk<%yCYh@?tk!*g+b)hz!d z*59}=%yjtSc4_xVuyYK={BRukn`?f{FXe>({63A;x$--;P%ET=ERYzB4X5j7jOitqkpnCFq=P>~ z|6zbWu({MhowCPsoDcPk0gG1$3#==v#lgUGI zx=NMWqcvAXz>w?wG51{-&?*xIZ;Vuf773*}aNfZ5In)_49zW7Yyn`uqXPw~)NwWe1 zi1Hgqy@_-6eI+4DOu%(_lFi>RW1*QGF{S`FeN;bvquJGW@9(X39 z1)=dSoXlR&Gl%~z~iqViwdE^j;l%iDl z6O=8e@4QXJUe2)FWNd0vkJG+LmK9Z2AWwriJs2I<;z*Ak#tOWsr^*pNA(fDhHg@?( ztj(*RZCgh^3hvT)IDL-pyAOw~D<6O9Tb3QQ_&o;b5f%T`-~Zz4I2>FyVEzTCCV)O1 z@sQ#*)l||K4r6;*I}Yg}wLJoDUi;a3VJN})x}95?Ltd)2I>oIUBU~VE7D@iuT3c3e z?Y38gKA?8FZv)}CHGFjGg`?oa=zS{d|NYH4pcLV&ur&dDS773%TM>54)bHc!iKMf$ z_o-EGf=?=5`^_R8#aP=gYBDH7&o-{08IBV z0iZeS*M^Glo(hx2yk6mtR1Kj&2C|qRa%hlp+JXxvb8h7P1i8AIeI0O4x}9?QU;;SZ z71!3HOfu@DEhLC)Yc0q#bWzZDg>NVuk~w#C-HVlq}B-3j()tWSm+&8n0`9c4# zmH20S-d*iO5swZ_-bl4Z9&D=wm~yW0jlwn1t(HI=QfI=UJvF$2o}9N}J*qm`fidEP zQXtP6;6juTF{(Y!!;v%F7mOUN+D#cAIH)AOBCq&WOC^@kC{Nj0oO8skL~~CeuT@=D zfUXcuI9ma>>C#aA{GlxV2uBxvhn5BPY{V`grObVu)Cu_V`1JS0`KSncZ7v2GyljOd;~>wMnL{jFG$C`M=2W~IGDp&mWHdrMJ2v0qX7 zjA6NF=eu%ASE+-o%_S`~IJWm!n<`nb^XKIrEEY>d?*WAmRgqD&>tj^(Xs!qGm5Ilh zJP5O;s-Z}FeQCv|9rlwsE}~_ojg!qZmMt3+MItCSwwaOa9w!L|oBX zbCgf6-(hXa)sxK8sMClgQES|V@DwhG|5T_2avF!f#D%WcY*D7QK}VCe2)_>!ZpwYM z``Iz()8Cj8#>`XtPB@D2`rPd3Vkk+omREZ5MEv*ixWL;#`MYs{Z9Tvvg0rKH@l;76*r_)kf0+WE9I9~87o$*V9 zn4X=U8n4tHzlVJS7#Pq!ce740xQGSEh(Kv`Ace=fs)b>t0#u5v=19zeWUNA2amo zZAAa*91sh1NKNy%#{5l?inZyKjPAM5yxT=^VQ)pLFI?j9Ksre1;qslF5E7xNz0uLO6G8gs2Q6R?taajqtpK8vx-t-rD24WhVai;BrRz(m}U(ftH=f zj~g>kKdZkl6~y@G45m-J0wrM60K$PzKm2|LN zh^+U}IVM2vQ2$aX$3|%$1-i>CoT@-hyNgBz?G`u%@Rqs0j7L>s9Q^e%F%bH|Vf%Z3 z%rJc$C-fQmYBNa~3-&x5^f@OU@Nr3;z3aB~_w8%)Lx5xJ6T;Z~X%`v?&<(W*78>b{ zNdn_84ABe#7d19!HilF+hSJ@GGBt*_-Gg>DhVk8l2{nd|-GfavhRfZ9D=~(z-h*#8 zM(Ex{7&86>{@MdB7$a`%As!ebUF;z}7$d*!A%mNs!0)4=nV{nBqmr4R(e9(MnxOOU zql=ng$nImPnqcbgW15;^+3sVxnqd3xV>9j}2Jhpf79T$8;+7YJ742{C2cyq{@FERh z%)#J6q|5W9=pYdO%0AJ93Gv%LaeFo%_yGypf%lOx>4QE#*#Q}=sTO|`))oktv!p?$ z1U-76!qk)!J`B;?ba+{qD%6xZ_JBIol;*qfx7>q@d63T!vYJ6*;9M{wtSQ~!b-E2Q z`V9d56o7WYG->^SY3BfO3BdGH5(ak2vQYxe7G`P2VdXufVm%DwDP=P>Wk+}ywP3{XLm%!vfdex^Phk|m z|I7papD?=r7kR)Qxc?hQr=)iMzs&=tzy>G&|C|T>-(Ylw_5T^2&o)`t~zZa{~Rl5)?vhkT4`{C(a=l8bJ{` z6x3d}Fg!R4vv4d6*<5f6Ji#0=627;%eeG`RAdhNpL9ms6djstoaJT(OSo%yu zf{A>0U16Nj&fus_{4T?Bj#5^m4y`rzVBl<5KRgx4n8BcF&8L2jQpoi-AyD<)quPeb zI*YU-;@d}#cd{x!{50z?uC)d{T8Fej;1}KDF(V7O%#&_z>J-xQ@wp+8)POzJAxaA{ zmoo*`;ev@+f*w~GrGuT;zakmf<~hUO8-AoX&_GU#H-3gLYCsT%tew8;|6GO3li@In zv`h%!RU2~P>I|C|xZhMZk_SM|X5!tM;%M#Fq5-qy22Tyi`N8&2@C1L30x*QHTd7Dg zziI(1w)~IKEERumFEYpCx^7>}NiI+^mk4lr_+XS8FO5kI!7gWC-dj#u$Xy0=2roH& z=GN0@+VgX;oxq;)go!_YcS!AlqvLSrW4|m76ot->bkLPP9+?_{?xPF`kFcVE_0C5G zbR7_UO=*BW))}DQ7Y!DdPN5)GZvt4=1|id_u-90Gp%AVLC+lI@!5HTNUw+%GNXCFB z2M{=cKf-}~1Q?L9*quObcvPNRBp_ur#M3Rf^-sm%_^3rB8jdOQEC<+9%AMYHi6N9K z4)jPdHr-6`bz1rcsP<<0BejNz3>{62+(`++P$E=J@6j7k_ImTh7P=a_RoN_ znv|#?Aav(SaF{hHPfYJD!rM+sMv~g(SpOYd0-j)GNwmy#$RF5J)X=<%u9k?&W=v%j zzZ6-g(!H8YA+>aV=@30+;j@`iUTXvch26|_`M)hj==(#<*5bMKs?6Mw3Y($Qtd_)q}%Skcccqv)qVl6-1T2DJ{(2TQ?P z{Ha%oNkXaYHtHM@)oaC_Cpl;Sub_w0R!DsLT9@M3s{dBIw@P%U?30-Y{#7?+ffE8V z=8m^u$WubZs9`%Bn;Yj9D3Xs7kUJ_9Xi_G=ZG#;SFX~9Ek$2TXLEt94;3q&*wfLcl z5VJ8gpkM2%+I!v{AGI8siBZg0u#OxS+vxfIu1ZIlP{qs_N(v8@Z^Myetm!TIMA{NN z%14Cy4G)SD?b(T@pb#pGR>GuPHI2RP5dKUzBJP?coTzBkFhou zh%;}pCy)ByJ|}*srXj5Eq8TGvXWEg|(R=z5(qfW+ZDT&D7fM@AEPA8dm_FMLw#do{ zL8K6TwQbk+%tYuloe~%1=9)}|Vfbsy;`@_RIzyd+n;&F*8-1@()0g9^y&e0O>vE-@ zF)^5Mwca8RXT8HWC!da!_KQGghcZ$_?u`JYso;0_R<9C@wRKp_wrPwMXwrk~PVM0Ms! z2Kud>-vEC#NqS}=lQ`s{0?+y-*rrv3?F)`IjzH7Nqz;N@WnV7dQV{T628y1H{y9_i zv!d?#-hX!rxdQ4Dv+<%~&By(pf#9la&U3(i!h|a9qnMK1m04Gonz1*n3zgNyjBpN- z@442RthsZ7lALtQ@hlE>n`_DhoCHqWXR^FCix7j`USsrK7T+|d9&|k{lCBp`)r#v> z_8NW=Z~j#85#IO$Z6n;tGzFLySBU>?m6E-ggF2$uEXN{UCzOKu>FTxSx~;SyfoN7HMd*~tCt|LCOx#6G z~aNb~eJ`lw=n3s1g1Nsk0rin-bq_Ppub7mG_o=wNWWxC%p4n zVDA0lp~~gM8_xijn1Zt#8G-5WcHT4IQ;Hd~RlwExneA5R!lfdR z&rr<$MZALd{J5XKqgn9*z;KQ)#na~tx|wStCSC~J)*C78eZ{QvKa_BKf6KIcO4IsW z6lnW!Z&d*lHuzMf32rVAZ${}C{_q-)ds`y;^PamjVKQ?J&5Y9%S_O=$8Fa zz8VzvTkWMhu+!ByycDdrg5FHZd>xz1>)HJvJ@D&zPO@W2G?a_spRj5$1AsavbhhHr zq2>Ws7Cej1NBl?c_NN2vixC<(bD6oOnNM%Dqd&7m-! z{;)+6+8D+U!eQM9p^DL#3|8ST<4gvyrs0QrUD)CaT*0xKVcL~)Ot9uw6+uZ)#+Q~6 zZm^uT-l{HKPPe>;_;XbS5 zF@a%V`>-*WT2byDvF@5G#?P^i;t2+r@gmkx1)bnAL&%Y^ejaP=+hYmy9^uiP%w!!= zC(-s=5-IH^E||~J7uhP1a2{N%$f|3)xfRxkHt`&1aXHc{7n&-rhe=tO0ob?+*wN83 zl}x1P$d1v$2r+?#F?5_~{PF5B&p0U2;#!I>RSe6Ids_rPmXPyF9-(VUyHp!Xa0|yVrbVs#2XgAe%L#@~INX))N0l zX|vO{70*s+7D6^k_y|aJf*wn$SOI`Qf_e$e@JV;j^gy*ViCHh-s+aGe8zanE* z<}2H{Rd?p%or@;=6u4#O30Y?r!(~mM6_lw7m;H%(%ZjXr^XX|Rpr^6LqA?UX`aV^u z@qQk4+LgQAm7greiDVK2()s?ykeoXM2cX9+e1m0XI~N`D@!Dmz!_h6?#Yhw22@!~l zWY;P|r_I2nwRhDif)h)X6W4h`OZQAK8qVQHIgdggj>I$xxp9N~RS{kyl|YaUNi1bY z04Oz9L;k`H#y0(JA)o3`U!|GGL85P}NV=KuC_h}* z6hbxxyVgr);WAP@BT=}^)pYGHaZ#OkE6wqk{7ak-rHWE)V_e2_uGWo5yR!7X%Vi)K zVr(tsCoD6}OBdTJGqf|l221lQE+UfPGabi@UfP10B?}vM&^~`=a!7pBtFG#6*K?1_ z10SuexhO%v%~PN$*WR;3w?R8usVg%p$5_`X$BTB?ts8iY9N`V@kO??=D-eqQXUb7% z>1N{Qt^0iz{{5jw^&4jmX7pTEUfWxC14SwAMJ56WZ9ld)HaZoUTrSWpS%Fjg2G4lT z6GP}*A?DdI#vbRW+i-7dLN6P4!x?!x;zKpr;Nx4zvQf`Ol1&-sMYLHe_khNp9mz3S zwcq8exm-Uw)-*QWjO`Z^XlsHWmvtvzf<~)46Wb!o)l9Hl?w!*lz^;4N{i8K9K$Nc$ zYrO?pPN7rRjRzO~tJOS?PcB#;zg=##-srqVtfvhep`^>k84R*6@1oTXp*_HQ4=f3p;D+|nYvYT!}c!dd&5Sm(#Dyea6q?<18xrVV9&KF>w$ta%2xZZVR- zGfnWCXnA_5xncvB+P-L&=>V0Cb{b0OjoCikm6JR~DBr%(^=_PYd}5ZL%i6sy`AyN8 z=unl-^X7otD*OGCit|Lqv35gOrZV1i{Fhl;;Y&B9?ZU_Gx96+<(Cznp?7ir!LpAQY zvF`nODu@M5@wK4~!xkQ*s^>gb(|^yZ`)S$_!QUbnIe701CLkx}ywM8ONACG)1dB50 z4q&rY8~hZjH$bR8?HTMctw6)*I~cF&+o&QD9=gcu0Qe&#wS~~d_mSn&JD)XL&~=Br z4@f?@e8kGNUdFld4qu~>gzMUU_#vY}da!I!`jAvI1Ko_fy8ec@fqjg0m;H3UY@3T4 zCfc%ooFNj%Sx~D7t#)7L z4HjP(f7Nc(Q+71i&`b4o{K}flx{R%}*y8DZjp0+9I5ZnT`|#Dh>JFmo9zhs&o*eEj zjZ9M;8ay0u0_NuRmJ3cHMT|_*V^Pim8!UkS{%?6Z6Dj@v3cA`&BfmUL@N0C1Yrarg zO3N2W6tBs`TKBjrx)x~!77aY+D~L(CGBO+zJvb) zBLHmia{&lu#Y$Dk&FUQdvqp!@nC%#MH;_MJvztED>bQ*Adj=jfyCQSI;MG9OwbG~+ z6C<>y+VSoCS7CnmC~Ti`_O^?rlk>8i!@ZZ`|Kc)0ye0Cpf(G6(Jlgq=DMv5nnKsbR zFIIs?qXlX(#2VQYOiAd+1Tab1WTL>WdK)+b0QJM*tiI6(9j*B(ud=v8n(-*0M70JNAd+;ew%N8RhBAr|yAHs7>6rc4vEE zw)U#jlCl!0a8BO$dBv{t)y1GtyyXy`F^x!e>niOuqyJU=uo2LUVFM z+WS~s=wBK%Y0s21Uo&38#57vp>8~NyB!nn|EWv+pWMRC*NoM0C@F(y0Yksu#0dMom z`tlIdbZg;6W&MRN1SH9RvNrp_Jm7Kay1QVp3XKb((y;DJ=ZaI9TbNm`=~99-Yu+lO zSR~oDB{b$wWjhKQ3`BvE{roZ{cr`4A=HEBrnHdVmw@#8aSUg%zZhbU14lW+P^F3&C z@&O=bbAcKSmI{eYYf>L#MAVE_4Tq9hecZjYtfDGS zJWT|OTA&&;O2bGO0qwgfGA-vdC093}8Wh-3XT%`kR(WFv0*GCH^9v06$PH0vkb6qq z9in3nA`!5XM`EgozY z(*@*ZY8x!K!EVH4nzB! zcLW5F7v5x5Mwz$a&&VtfL}1H#lIy8xOHSQFtHnh?MDi9#LkQ9BDx=Y=O;~TUEUfGh zzQ${8gWej0@;oWwtrs0OXXK9-$eV=NBuiPPIgJ1987-TB7$Mi|F?V&k3ALi@=CuES zOA@aqU-stlbo0;A#C9bb(yXY)4G75?r<*N%N6D8I;9h%#uQ>3=1Hm#z%FYog+U6wk zhGL)u(gTBrh0?leYI0)m`42x{^Yb#ArX(61Y5d-S@Q6VuKZ)skteS~_x0n{v! z6GK$Sj_3#MLyed5&{5A|PMBI!_g4f0Xt;2zN!nSJzAaUbejiCIquJd$&(QV}u$&G( z8q5%S6`e2D>Iz+`)$Dxomr>U|kT>Z!tBUxh;UJ7qr^NZAtt1$=Cc%_ZSb}E^O_{@> zRoZCCp`(gn_5MN5S#z!^n=ip_HKy^)P$7~h`@2KPlH)VO+6Gi@3xaNWawl%pVK-tTdyF+SGI_@fJH!ph1tesxs$rWDO))8 z#*#Wcrt`NJCDdh7==8t3H)%*7!oT9?i*PNWBLlhZAR2A`2xj!a^;h$P6ZrHIL%x)vPof%l%@oOX% zfzQ3gghDu<9#O8Rc_WVXD25p0nP-dA;`c{%fzv~!#VkCnQ zNap~!x+r0|?8fEXPf*AUw>&Sgd9XDqvB5sU(Gv8<@X6WYa@Hge^7^EQlqjRH-2X-c z#U{`kogxb#$a;S+O~O-QMjT;XqAl1DP?b8xF?sJ}l-)^zR@S373nbsXiEqOp=6ulGqJ1Qetq zuQDpQ56Sq>k!08tqFh7HvB)?&PzcOY^s006qijp0;G8J(CW>mg%NUe*peH=j^_aY>i*hv_0I#*`V(t;-3D5K^;${M5 z7R}=c-vHcf4vBDnpS%^%ZH|(EIhc2!*mwRzT;M-r}AL2B*3$+;TuHb9Ml3Lg~Vni(|#0jO+ zQnYeu-!aNC1u)LOkdjrhUzC)rp927Kqi)B70>PjMi_cRcNf zPmRWiXF6lVytM;d(WF?9t1W3+5%_-ANG5mEL)D2E%I}R$NzYd~xvRw$D=L<(HKdAk z((5qVoUz%c-N(>ZVE@-X4DzL-@ReP z7M@;aaGJFHGJHb9PP@h2_dmur25j22z849%i;vGm?5O5HVcvxi671hXTU)HjpM|pU zS3@J?3=y6*GVw0~HEPuczs=lDaMJH1`(=;rSL7ZsP!yAThoAAsV zXmaVvVzhTeb8xc$biCSaYm5nJZnu~k@)LPb&5F3dWKEgXHWwh&F_7(#m3lFm)zF@W znop(04rJSSf2adHb+{&Lh})*OYWrz*&nho`1<0&o3;0169g0?DNu%W1?bQB|-!`?! zM`eX;?*8y`l_4Qb0y7eN<6sCxte5aQWRS3gRrw6hy|Q;kky^Mf=V6Glc6^;D))$+j zOt78!IyUjHdoBIG5`n1W);NC+6({+4cxrdmZ9d7(Eb8E}Y`lB9G~$R|S1@>?G@wCX z=jz#DF480*1k->BR$AZiNj)jkv+V!e-fW5HNIy~HgyVK~@G}(6Ba2$tM~5TBvZpiX zug^}YrXI`js5exeALFZBNNvMW@=*iU=5lzL|o2hrC`VKHTZq7Gy!S2J{oFB zcA?Xw-XT0Z3kXp?Bhs2P_?kAX1qDLnIsF5Jz-lEg)BIQ5UX{HsIev8T$xQ8BuOdc$ z_!!|Tp9K#kCPCa}bO@2tG0G>RlEhL;v}^RL^_=F%6;2oSeX8{D)^&9&`6$~2x8UWt zuXW8iyG6NnS94@B@^0S8x#{|HB67kLPZ%i3=rfPp6!Q>cuCNv&QBP;Jf(f_X`3yLkOIm9{odBX2`?0SGdl14Xagw(?6$FLJSMKp6fp@o*!96lpXEmY`Q83&)J53{? z3#J3i9m08|cpcOqi=s_rS`n6?Qfg{u$O%6G<68Ax9}J&8^CVkAN^vdid;}OvLJXgwfsETu{9<@9 zZ}|HL3)w`L#IEF_TLexpvt$T-(*fTw$z zVfH?E_}2#9N4S=}%Lfm={-L;&Oak>J4|oUlRgXg8flXH$Z>1`brr#Ar!tYZ6j{PSf zxol1>hv9D>Uc-x9(!(kIokioX5d&(OM?~M3%!2+(A6y|8EZzNm2!VqSIan~+MEmj1 z3ib>vfiI-ovqbsDd#D#Ye$uY+Sq{!ZbO3=pi-&}Y@EZJ)ek=IH0X?t*iIfGrQwf@w zLXrRe7KJV#y!;Rn6)Zsptga4@SqbADL`K_q{1^N;J1HhHDu&Md{RlEu$v=#+9`u3) zJ3@Ak_1uUX@`GSw3>=*l6ITu)$!vVj8DEMC0f-9q(f~Oo&HINLX)Yv)c|L!u6owBO z-)Rd(5>pIAiB8u1?~ z(YYUReC7dO$+$@evi&eqQ!E8|tXPvb-?SP~-=UOT7eskQ!DN{z-a#7PtYo676vHXF zvvYnwR9-7n@M5b!ujA%4Ik+6=0~4{42@zU^GlPuP6?FoWZJK(95UX_#{+&pS_D^!w0%?6)NGR1QU0l!E**9Ki>0ppn{J(l0-7`^PrTI zJy3~_;#r_$a2F%grp=l+UpJHRo`ZA0jIkMMnVc3k}g%?hTd(AXLN#G_ay6PvTm+8T2j17 z;Z8m_4-Y_*EF^Jwa)*yj2J>_$i$j6DQI(AYhsbY2S4LxEX$zWZX8jf{t0XQ0uOu@D zQcqZvgyG;m7E`!?gmq5S8gQ4E;2@XrU^kmbzd)qN{6Y$WB_YqghtvR)SYWc^wrPH$ zO2W7B74IQIlZuQQg9DBmUfhg88VHdjbnotbNzYRCkpkN)^{^5|`!rpU90pCcR2{+a zAXi}Ys2&doLbC>6jxp5Djee<`u}kYWa#-1G%5UUpfd^ouDlT^AcLF?hhGT8i!Q~bG z%4{{ua3#&~9~$};d$`zc@Ha`YhU{80nkHo&*mxA_)v|s?DOj%axTp7~B2SX1swQy& zE!0d_lwf_y6~0LhB33rDJOCG!vIUpAUK}__pECB`tOpT{DFPdU#|)2KJE0^dLm>zv zo70G|U3(c*BJj}+h7&xQwDM{hdF37psuXq=xq50neXK5Jw^#=IL;~a`b0kV5^DxW5Qzcf!N%Hc94@hX~nq- z6ZzJKFs#X?#$BU>4Pqc!m+HyM=p`|q>IEe}5UEHjCR*fhf<3nlB9p~7=gulE(;~0P zJYY#K4qUk~RB}|}jPgh-#Y>S;_`bKDQ}`C`twN{i*QRs39j=3;4<|#xsz_3>*14y# z-h=n5mNlZN`z{yUOvh5W7VhM#Zxffm5EB8naPSSJ?ax#@vkYq3U|l~CxbP+YuE_xO zHCS0LpDiyk^55{D*tU59h=Z5FRdvd!uXcGg2QfEnQ#cT@@2~P?|0^2DuKyPf5p{BHqH`JQ=2?8kFCJJQ;N!{uzs72v= zb2_7i4PzNqtPJ2iDS(xxNc}d%=79^%O2hmUcF!HV$Su?XCs~^=r{E=e^gBa=C%H|o z2x%t7&zn~X7mYAUid-kP!8^(9O9vu`1%Brta+6!p1vhc*CC%$KPnukUxZNsp_k8xLWyhQgNb=?oI4cD(( zDo&nA71FpSGQ~3Ea_mf4l$xb;c1D{GvZvPN`OPRd3$w)w4UJ9y;e*Q+C(I4{;k0>gyIu6~|&1`LST&cSEZsMgZ zD7^%M--zkUd82;4c6pK0J+MVN-c`PR8Q$b6&7S*yBv>8;#On$wSmGR>k&C}mivd3n z398LD`${+ARCyY*zS=>^AE=4G{V<%p5CjE5>wHkHBURXPas-jYo%Y)6^@#VGa(q<+ z9YaF=WJoWamqpHO|8!=$`2w4;ngpX(n*)V>@c#O7jj8@+xva3=MQ$HL3pzcRq`w~Z zCIntaF^dELZ5FTA$JO3?B|cz*#-(MTQM)ZEXHfuP>zVYTsVF1R6n`zGC= zHa%18Thlxn!ppdrs{A#(`Vgqz(=nib$5=jtNT4x&7ZJT#IfDEs-0q}aDonqoq+p0% zg1HKU1_PCbCV78|K3DRq8eJE}E^LcIabaiEzZ9h~>P|BwN z#7kgB;jc7N(f$PH;hS-HUf^KFSd*6L?(@e_m#zNI_a6!9aZG>hhY6=lSX)o|r)~7N z8@AlAzo>894ZrKP?D&^@2m1eC4j@4WUt+vSZs6aHRS{X^_V@~WXL{qxa1_fON;dd!lVTp=86cXNu6 z2{zHpvkrFwF|6jxL|2GWK5-c}}aY}sh4D-k-(m0Kc_v7b+}obzBDTQXf~JLE>I zwuXu(Y8JuF^`D0(;>x(`4;IRQH(d&6>u^tE7tlmIw@#4P8nM7E) z(sI^*<6mc$gy_;~ z!;R=CEh55BxmuM6pv0aP#r`rVDUvkR2P_62WoM~)_Y|jZW8?olE)MS8&i;yk0S};# z4VtOTrf{X!Ws{7DTgo71{|OZn0neH!2JK8}I2No>?ypvckG+jWMgPF6W3^hB zf5xkRmp_FVfxwP#EYX#bTg&#=yQ!q*;p|VliV-d!BPSacs6x&OuPOat;idb zDik05Qmu+C&$Ty2O4rTCmb(MLEKM#yuEL;A_NgG9=IMc=EBQ;i?y0%siz|f2KN`|} ziT12l72u7+5U`lLdQ#7;^W(5RwSS#1Xu$H$3hVDrUq)Km%E|g6;;x#nQ$9NHW9z}W zk@Cwv!G1}}>=ir{;e4-XiYtv!$wLJygwm^d>$?rk+mX37gvhaPJ5Bd^M*KRpB;dWB zRMX9t$<1?wZI7_+BQtqQ9ca)@Br+&)pA z_$0i+gPsyOmB4B#wNog-WvzF3H+!PjAygvMO598Up_-O8@xdV1Thb{; zs348aTwJ1repW3t{p8#<;lq3sp8XHG5g#B(;ki>1LYZMHxR`$+0dnh5RZ zrG`vktY*Q`)*UQI99%{bi5oRK&4z?pC`WxprMBX=wrnIXM6sm6t{^h*RQt*j4plOp ziByw(5LPji#j^$t-Z@mFVhcW2<)sH1GfFE-O=Ir0K1XS61d*i%#@z5Xqb^NyhJz_q zIN3Ezy_%_cO7^A!beeJP(ZRb2Pp?J}8SH4>ys2)^PLhQKZFIYk4%Mk9^2!xNND4;)4aDZsOpZ1;*q;?4i1Anp$|E_1 z4$K%)Wh>BH9_5%s_hFqqMr7*c18Q%VZgE8>1m89LD84s+Ge=i1s8++nbGRggxQZwA z%KG`cO)GA`D`XuU*^=;PNamjR+bNdL_=!QTcixMpi=^cQ&L;Eoke&t2p;yeQe^_jY zr()I#cdd0UWA?qA7OtL8g{&Y;Y@RwFm$e1OG5|?Y zxRfn6F+D>oN)h6rO_*Q3kOb%m>#RAz{(U_c$klUN3;<^i<^gm+l*!E7{ZT-i2zBHd zP#^`+>2u6IxBt#M&b$sJ-@+gSM$%zl9r?F*BP4%%4$(0}!=Z#uSwwbP$>FQSg>3<8 zsDs;Je4YKXvtv4;Jje9}iy+SO4koTUQH3wfvJQI@5+9_W;b;1#Px;Syxjg>)SQcg( zJ@-V7x=~85jr>>rE9DE{Z0hA~(%f<`bYaS8V}hUmI0{@@nB6azF}}1Qj1CTcJS#y3 zzjOqd4@nWDFR0$#!s&zE_!9eltwu2u_wWht_!0XHI{G}rD3d6J8~N`)YwQ0M>yKtn z;y?av0u}CJx0tcpi}{rRfK>+p2#iHwxSie>O9h{+jRY?BZr@gi1z(yA1+ML!-Zu{g ze|PT+-1^JM9 z(2T(hmw-6N;It$e7crXyd1Z_bW#Sshj zKQTHI^k2*9s-!?r5yr~`a48t*FM=uf52+(%R|&@UCPm!=!Gx1alA7T9k|GwF;PGN2 z?toBdNC+49kgFw$PE7tgg|-Yv3g!!T4+en#5(WuN12K}s%+MzEdGnMl+-d7n8EYaIi2@Q7o)z zY(g?avvRT}Jm~YBbBhW~OUix(LSi#9*3{KU$NUEXQ$Vc0i;9dF2$iR%p}2yby1u)= z!N9{#0tT$eugS}<6Su_B!oI!I(bl=w*-{6`%FN!a&f4SH<#cw{>E!F`(ghpe;Nary z_3c8`_WJkcNtF9U7{H51@D+r901+yTlP{q|eoPh|a4`uv>T5^KN(5p!T?-p7-pxb5vuWOW%{?t?^_UF3T>y zoEh%v;N1it9-DUe+rGJq+6wjVHfO{rXh~^fefG-9-cG1SmpJd|1p!pL<=T z(qAho2w+c3_aTE6f|_Wx$_f@?X5fL^n799+2mjS0L1XKwz}9b_U^k#s8*)gPeb-%J zkA?kZCsb{ZWk}!_ExH(uf*)?s+c=Y5XX8Er;#irEJ8}{og+6}ez=tu#rb>h_2=<$G z1uX)>kWdQOW0T>*xSj>|oED>lxw#aY0bi0iCYcZEMrCt^nf4(CY|hx7mtZ#pp5`lu&_ zc9v?5ctQgqmM1P6>Vn4ls)woBqNxAthsO@K?tLcKlj(ZV+KR2Rm@0YQcZ3mJqN3)~ zF>Zt!1lr~u_&Ud^s@4)Sux%Is99aR(8aJW62^Z$?eeFVXCBeOFvn|6Tp__3v3{dNz zuw|)foMrXR8sWtl2W&HoGM{%r!vXiysKI$XTq4VYCYx?p)gcP>DI=e^;x!bj?1IFl z8h!K8D632}FbnU?v(0u=t3i_{V{K0gD%T24tNl69Em#>L3SwrrUM(`w`+U6M(iF~% zn%jtl9i*IAo9%>F;Xdc#f?MAcH@J9Xg@C^OQ4Lbr(7C&YPyzqZ?`_?45|v&>jHzI$0_Hn~@*?EE_pOdh1wfx#@)sElP^nzQ z*h`E;myUO7Pbt%)OA3IsoLV?%e%;|9FTiIU2AXbv4@6*@E?BbXrEee8@)Xw$$d~Ai z0*1%K*}bwQKR1==X$f?K1DBUPC+^FLo0y>2j+Vlv2mpzZij!=Fwj2(~&=-E=O5@Ha zyxklrU0r-%kxm#zBs~91h>jy-QIH258q!LKCF9|9(&$D$wxw(Q!^H!tR}{`s4^diD zq8z2>iVUbP8*>!Z8T9~0m^gA6TC5=;1Boy?WlwG(WX4#D*0j-D5-gfV@VOKLvM#7)H61_! z!`98t4gxakq(|6lw)j~{t3GvCD^Msfp}LU;~*(@w#YuepG%PSI)!y)w?QFTx>uwlPyvGPR6qBZlTkCJfa^HXV9`q-3w50Ev17 zfC;dyQf3=c4;a*D5y+`06&nhN(sj3eNSWN8$y*a{u&t#e4{@cYg8ISDv%wO^YY7tD zU!0C$s4f3X6O$O+)?U^UO%oe)+i_kuk`@c&g`PW<8ycw&#;-pVt`duzCF=SjxrqI0 zf*89Ie*Gc7FH5iFGU`b_3D_xw6=qp7yG1{wba)c}6@T}ru%5OpYUfmgH+3sp(T?^H zrUkJuN=nNT=eHmbI#p7|=`chY7!DjhkAK5JNzNYfuElaM)(Y5FG&W$qv=hpW!jlw0{N=8~(DOpsrAULjW*s)Qp z{F*mAMn>D2b8+JwmJCy71ANBpjlWS(F!-4utNH_*mF8t5khRI1BXn3mO37NH6wEp` za}xhR{gPcy!?szDpPoh48xy%EaE9`&Zy}iYtOu?2 zn?U=77~AH@OyIYE^CavNq2MA6Z#Y&798WQI+#9zpg2gH0Z!Mhsw+Hv|mOnV5kc<4% z>uj_hs2oE@;~5YdU+s(Lib|^4T;wl*i5M~QVIKD*;iz%<6K4M6)Dk!~mOHx0D{%ky z#Cp3A)?Ut&sa}wjdxqZO{Sl|H{(@1>PU{WNc40TcbCx57=x~X2p6|Wq!Sp($T{$ih z;2w9htIX4Tr~|d29SBsTreISI=MzPZ?xfSzyLN1K!=tP0QpcPPVUN_;rTE!6;N8~I z05IUY@>Rmq2j`Szc7<9Rh=MbE^hbF3%-SONht9$E+O<4E1RwduOPKG<&^ag`?fI+e ze)TOVITU~&eB{5x>*keqV~-CliYFoH%$RRUP|*41C|`jmqe5=iS!Z3q{yMu>yfNFL z{pLfYI<{A;DX72sUds2uh;jnBcK`v$d2M!oOvZM};BWkA1U%7l3DI=EcNhQbhhEsQ za)1GWjz>>YCm$OaQc~A|z*1Kqm49*3fm5e4i3V_cvj)=TW8Md4h6jC!hX)N9Dv|<$ zzHtI3sC2kzQ~_vMP!}30H-kUqE55aQfF&Q)<^;Oub}?8F+a)!`2X+$oXQRh%EogwW zcM8JSNL6TqO{fG@$RIGoM9ddPQMd$Om?)vuZdM3!ymoq3r3us*Wh(M{lht(?R}4Xj z1!>3(830``m|$y21?d)2I~5ARSBBr90TZBueI;m+B#8llHXkHelz3YOVuVg(cBKG* z&vl4{H--c7d`1z8l-Cw(cX%i`1a#OXR(6G@HhOheWw?chIj4u{7YhH5SZWf$i+1yV zu+|TSXi@6dgUE1xgSUxi@`JCDgvAwxIWdN{t`^ zrzs3Tl8PjG6W9gPNRe+aX%Qkmy;o2=`FFmi0?fD&DCPz?S&9FkXlKe8Z?{%a%k%|b zI7-BbSBck#4XKk}pmm-LiyX9^!!brBJe-~dQn`E1#@mi=~=qEMDl#+Vv~ zmomqPxHp9T6+H}z3@V^QMJY9YiCqf#Yw<`0kQs*?xe*WqjbCPxpf!>H$TJlvDms*y z4K`&wDOM11ntX7Usi~4y*Hv$H1$zlgO^^aqIc!FRj{hT-y(O7&(Ty8MXa}iTrAZus ziFLWaoXbHxC>fhIDK}#o1$L=)FA`@Mn40kboZfP>~~w&0vScDL4PuX@K5no1ILup4g`VANogJ2n;N5Ps|WQv2grPbMK5dfxEd8fP~Vg(2QpSgvckbqTr zWkuSh4k>1I$_WjynKYQEK>BUaxok_*j|ti?acKp**mLFJpcU4U8M&x|)u@w7a})Xn zZ~BLl@qa{Msa?_>u6n6p7n31{q%W1Faxf83`J4X^pr-<}p#~8>K8lqC(4>dPGMfq* z*p~+caFtZ(s~#q*=ZK(2+IBIOJdO$u?NNxFMs;XiEQE4vyDpXA1 ztd46TrGa3+sjY`jVXBlHiF>)WR>xO02l%uADd> z9lM(#TdjFV0euN2+t^i5v;bc?8n8)X_yDtg%8w08CDMlx(h78hs-B-Jr=T#8t4E^{ zdwmR)o{n)MzL|I8M}~8$l$4oQOABRaVYB~MD*!ho4T-pW+-iIYAe6?T9ScCT%aF9i zP@bts6EoXA8SAv6@ugwwsrcvw;|dctvbFMX5s2GZt(UEhS!q|Ww?l`p2@9=)D;lr! zwaWS`=6W8Lu%@Z;OKV$+IFX_l;kY^Ht1auK4!5JVn5k8}Tph)y_IDGKyN7-YhUr?d zhtgyNVzFk*rOU7afC{?F2Qd!?ptX7xnj1#hIyPu3s7Fw^h~;2C z)Du2KAoQBMh;XHSW|^%kHr*N+2|&B`^hHj)tskMQjnNb93b{+LLhGxsOXrO!TdzR@ zzhbi|)vK(XW1(}0zZqAvk1@8qcC`Pwivi{fpERf_1?;!N8<;~dzL^-d!N8&$keuPG zz%{YD@5*{!Je4sKy%_ z=o+bsM-i^;!uLB9^lP?V0w-oyrCxKvP`sr1i?`Z3u*ne>`->kAoEN$p#Eo^W1(LyC zG6u9u#vJ;6Xnc7doD;gb#J`2BB)q_19F}H`h&lXQ6o9&HjJe3sw{uiBo6uUW z?OMb}vB-h*vHwfHVp+;ju(jTw%Ps5} z4Fa(53S9E27@};XHXJ1xl+3ww%b}C1&OFMj5D9NgW}vEm*4)PsBg>F$r#)OF!T2?! zE6$f3yNz1eewRq9`z$KG+8kDV(I>5l zU5jojebb`R&mXbMCw;`QqQyKd(j?ey5WvkHZOk9-wU&Isak>=uYSUD`crZ%KRZTEH zO&|+k!hRdo=mf|tP0#=1snBl`(_OmNcRZi=9MKpsun3&ha;>`vfx~ND)tyq1Ezd zLOdZtoGmKxdf7J|0gPSQkzLV%3(}!Y%yKQkW?&Mg%|)20+PF=|J3Oj?%+aI0B(q%! zx4YL?0NSaY+sJ)rlFZvFf!0}l0TB?~I;z)+{lQ}3+sU2X_p!15FcH1&++;i|(LGJ3 zTir~9)xW*kk!{Gu>dD}3(;Hv`k$_giP25rN&)S{e(3=1&gaQnm-n2vkQbL-J|m3NNfbpA?knJo=bEnQc_+cG%mt?Voyolj20-b8-j{SvUsTNLi*B=W@#+2P2|>H* zm0ap@F5UlilZz=-sUE6#0N9KU3yHAhU5@Lj{^YE_?5ViS`;ao8;ML4-#Ica& zXb$M7KI6LJ%e&s~W9_9azSicZ%e>BN);b=+R=(+)8Z5bods?Euis-u~Ow zj_$O;|L$R#?-;P}Ma~#@?(VVu0yMZ{}I9 z@Ere$6o2TaU~XdF@e)t+20Z~IS@F~92~S<}E}!v?Ug{}->AYobe*W?}Z}KvE0yDpP z^p4#ypYuW=+t6JGAU_V8Eb2qQ^g6G{W1#ZaGO z1MUCG+x1*u^%hO)j&9y_pvjqC_GC}?IjHSwuVQxa*l%z4Zm-qY?&V+p>m$MT8L$Y| z&f|Aq_%Uzmx8C=Jj`i3B={f=967a_SF#VBV{noGi=nvq; zZtczQ{BJAb=OX^YkG2KC0L6d%M1KC+zyH_|1g_UmNGy7gE7fw7F<2;_&HzBQRB9~BK+ zSi&j;EHTF}H8VT4%+S)-*ccif;^yjF93fj-U14KiWoc_|6EUPXcRhP~e|@<^)kq86 z;N&h0nvia1ouQwlqp7E-B`JZmgEzUoyTN@yM~jb9Q<<%+*V)zG+u!f7x9Pv_>+vhg zh>c54BO)YIrlDCpcn1w8L1fjIG|U-T zu=Q)P95k!$oRce4*R~f*Akd9~QWO&=%>Mld_i5eFt@f@BochxV!#fr4hfLLSBe{2n zM~a}rWbfy#tq^WeL4x+f{Grm&Qm+#5;_*u)&_M2V^#8|N@1*xGGEP4FVrq$`{1{|U z00=Jdt-1+E+W-Oq$|6t=?cx(iLd;m8DzygjJ0OB(%mYwGgD{8yL*4(z*>Dtd&`I%; zyhwx&i{g^|kis9AQ{sUab^K(XVP@=bHrnzS$+;XyjA*|enFMl0r&cgvNGSC~k_}R5 ztZ~62krIFbIefg*%CJ<>l1MHAJ8}(do+LBMa4?F{KQ-5!FiQupgR@K=?K~;ZH2dUp z%{CDTRM4|hXs*sXp-aJ-9u>`0C>1Jb)ICZc6-J8tLZydCIjT&wk90I;vr|V4)#iXv zCykYiQ*!}O2`Dn!v(=zDWdK%NtwMm-QiIuwKY~;pWQht~G&9#`sXfHP0){1)3Xa!0A^42PQ7dsMyUW=H|7l8@@C$HW_~MSK<1*Ewibem3C4okV|zB0KZ$2< z@l8yo&RLfEY*P>FdgTQg$_J-yn%oOU?j;JZYmvZ#w0&xK>{1O5QSZ7;{21g{k=`Y5 zxZP2qf&Fj>%5E|RV3yviEG-Oc*8~pSlg1e)oDmJ)O?T54Ro1O#s&k6@Uz1y`Im!b3 z)?69`EKUGz+b}pBMq|ycNm|o%z2L&Fw?TJlwL7{X(AocA^F8zi{ngvsq#WQW^JXn@ zfQ`G^li+mMW1%2)6 z=@FwZ)%C0Z7Jwi3VzIa^py5OSgopUd@-v_XO%wZp5Z##OFyK|>Ob(2nM>t0Y>5wK^ z*aOVeocFR#n5irAdqM+Zw;9jg)rC}0+ zfk)!+06frqTa?>J0S^z+fC{06v;`(U|rN1p<8@FB9aV zrG_+}5|su;Wg3rV0L21PbZIM8kVB-l)F~NgXh)q&!7#egBW}_o-h$Z12Usoz7<2^` z@CgX3`T=%f+^e<3Y7a5e4w0(dX#c#xt%cwZlttoWP!|zGhcF->BXq?Q+;P+@81ohv z$f+*|n>DxzP$H2pK zREKO0Clwn@Hq?d$r!h5_EpljFNYqZc(Xj59GZndmcE-j~_ zT_Zj8u4PatDj&!vfNx zMFoVx-mhsEC!I9saHZ*m$HIb9!b+~T@=HUEcA=qdg->QJ!+9GzC%dL>*8;<{u_p^dMlYws`DbxBluPwN(14cVw z|Gt+au*HOH8T=_Qw_=b9J~9{P77Z^$iab@Wg?-YBSRJC62v-KCmcL-eb@Wz^;&nv~ zT|A4q4uF#C5GNS47Y#n^uFYSeahwYlU%o=?&QS{`S=)%!jM}vod`18`HTfw?ClJO~ zz^+Pze2@M3m_=}&GL^sc!b<<+S%-M)#nDTOvD zGpEKG)*-WGjci(LVa4mH-7m&`RWvXAJ7*;-ryYTTDrVc*-tNpSIr8WlXNN!NhHQ=ZYd^a?=CJ}a zst3o3U+tN{$M28t?S78#+>avsj1lHf0Br6E9&Rv-ZNj8YfAWu93{ID5s`j8`^GGTJ z1IiuxsuHk{5&HiPBI=5a?62h{j|0!GfL4Kb_^<{0QODbZFOxK-1uE0pnuwg6ZkR z&;Kfn2a$>FyrKQT3hcz-0T*G-)=LU?4-5C80afE*l2C z3%U;$iqIj*5cFJ6JVxgQolOkW$q)VF5P!k=W?=Z@y@8yl!#Z)a)L|&;su;9j!nQF(V%Bp%yu@8#ikRjX)qTVI3Kv z9H$8(0f7$h;vCV@7l-H>YcLvtA^sqc7huj1w@@A2O&ml~{!~!af`}SVF$R^0q)G=F zyXO`ofD1=3DD11t9~xkg`M)*Cql7*RSk;5-2Sa3ji|RG;$jhtK3L( z*FOKSV7k%;2Jst=axqBp`Bd@(*A63N!3uW{7_;y%qcS25av`xWtR&(9V{$y!k}YYC z7@c7+7GLb6K6svJ%k`lViG9Ny28X!{}BE=f44;Y3Huqxs$lME#u3po3$HB}8PNv${q z3npPf7^9;rQGh#-^BL%I7#DMMo^m3T$T|gcz;ZDF$wx9puraBPCVSKOfKejl(mUbM zx4vsNl@Jxt5*G90?!+-Q3UmmoXvuGc*PCI<@80Fe4kUB0dp80!S19I`kQy5=I9BJip-@-+`OHA^$G)J)@@D z0+J}}fk&lb1&nk65;3yYGd;VIIwdg;xzp56-~+7kLP4w~U#v<&g)nn;Mj_7WDs&S< zFbB^9N9*$>86ZG|G&n=0gJ2>{8uTGpGzIZtN-?fXP0v4BK}YccOd}yKtMg5T6g%?_ zN=q&<1oaPOG#>~uE{Jj)7b8L~p)c>M9B0r_or+*u(%JwOh$itNZ1WqMv=J~-Of7CF zz4CJ0G)w!jwazrkTr`6Gv;ZT53k8Wb`&1D_>QoOb6GVwq4;4;`wCeKnE{6Xz5|-4f z64W9THTEoZh_n+`pK#lVRYe~~I^|7ODP=*MvN=^vSFhC*fYoUZQz4Sm_g*zy)rv$K z^%dMOq5OhZxgZ>awH`FE@oFMo3xT2BXIN7dRx=PWbF^6_(_m}$2C+~fm+3+GlrqUN zu>j9qVQ@EY3^t9GOI?nGbah%2U^jJ9h78sS4AZX$mibg83Sr_r5j6lXwGq_t9?BCE zKvqK&A@rnCSLYCE+SOv;^+ok``<|o3>=7qKcANMVD%C+VA%$aIA@oubXsp>UhWNHqVMcMoZDzl(YzrZ7E231V?mw#{ zX2b1q`<6lS7O=duGw3t2l9d~DHB@`ybi;Kj^HL-#6KLVYU-`;mnND&S_bAFTB}P{d zx(arUZFW;umvqB(3({K!H+I*xX9%ESOP9dJ_7BVASUnDOA(u-Qz;z8_0zfuSbeD?) zSHpU@BDl8@#FY{MHV@Pdds!1QkTeIumd9%L5^?u2Oez-YGz@IF&Xl(o{Iz}E7f$Jd zTdQy+@rG>$fpzJDEcI95I9Kx&xCI9|bRk3U)N_0{qek&maEbpGX&A=p?b5@D z>(W|?_i^iGaQ~oU{?{=mHNBKL<-R6{KcRjdAyrAFijAg;i&uw*hJ(9JgLlJ>!D@dy zp>a+2iVyO^&L$8AIEM-NY+w&y{SP;N^(AEiGz|rb6DWEg0$+z>j5#${j#ZB_Mvawr zH&z#o(Tpw;)%fbzj_+7#66a)zWjRf(D%2r;je@h15l#w`31Bsq5g88=b)+y?TO`01 zgjkYN;OhuE?2eW*8mWXa8S`T0XLNRtrQj29nG+28*NXp{5Gk26>~NJ6IrHE+0S7bG3yn!od9FClNlxPsdfnpt%`uL61hz=uhOj9`RloOz7>ah(ybnlF+T$av-`9q8S$t_p+w= zF|Kr~2sl}i3>uj^v|>5BSX;WB z6_!D;FXQy*R#iBoxkjaPnxS`E>f)D`4zw#zR6mHgi1CB0j=H0hx+rFt2wZj|XEEVw zfiz=`s;gR+ubO##<(gTu7dlos`zWk;ERs3>XrZ^WLk<}j?tb>P zF*LUmws0UDu#q#Z$6$i>FNT@vwyE2;-`Am0aku3axR=;3g9!-5GzH$;xPddZbHueL z7k=H?e+!srhdZFGySla1ybE}wDT%=+e z4=%ekj~Q3%Vxkv;5&>Mp-E+mmVzL;Ju52uKPf= z1&6XrG{B}Ng#vfAvJ1E7)e36hm7=E`8n7nkRITj||E}R_A?*`qh z+)%N6GvRi&?G$Pa!N8mLx+uv7<$KIiw#?&2$^ij2>B49+T9?1Po3Cchv$f7^;;iEW z&+Synt<02xajyDC(5srzD;uPpJ9wa5rt!NmTDa35zypZu))-Ms)1AW?cos5(H7wnr4 zC^z{koL+APr;q)auieQo-M=|Qvhi6^JiN}pz1pcA*|8gAKGpr&+#X_kO+T86!yS9a zeGCo#1@1CbGFBQYI$5X?Y}`HJ`H|Ou(Gf;`K9e|9X0^!o-H92#qU@;m7>CB2vQ&T$ zl`9^_FMdaPd^ArzJNZpV>a)bO ziezsoUguw)=k=#U&Hej?niG+Q1;6>-6@Jj;z3R7X_bi>3R~O#YBI=D^++iNS5LicI z98Ht&1ae;L)qd)4JM4Aa>Sh0Uu+N=JzMi9zKI{$Ke!rMJ(w^=8o~+^C?VH>~rS3EO zzV3VZ?iIg8VWHrK0ey`9?{0)ngPsvC;9J5a_g~+aWnb}ozY%I!IfH-r zA$|8H{mh9Vn1yxunZMPGpU}&Gq9TKZIDhS{-}|rI`SZ}e)QExfTp|Er(=ce+5{06COnZBRu2^*?C&-}tp- z)oWY$!5{p=AN*;L{`3EEMoysumca=?9@1$*254Xg0vrfXHJYplqS+OQS;xKt^E~C%tbb--EI2w=>rGCK}GWZPVBW3-y01gHc8Wtk5pv1s5 z#wZCUMjld5T2>C?&@ei7HquaFUP_9x?46>fs_Lz_y1uf)%Er>p+TP;2ZtV8;lKuh* z|ABbQ_zELGQEYlPJJO&eOHWgmR*za|V{dDBUweapH_0^Dh=&8(a5}TYn4@!_%g@u- z+u!3a5jRKYOYOI72f~lPf(GFsjF)hs!iEeVKB=*;6C{V?Yyb?{&KSgw2S0)gDRPjz=8iGJ;Hn`GbT-o@YFe@Q4^C&jWTG|sFBgxyO~ChB29XaS-FBH+104X z1SdNjN^N4@d3CE+m_41@=o*P>GZ0b@9bxBEEZ4Sf-zKBlEUZ1bo{Ih<>j*?YxLN(O z1$}9ncl_!}XSk=I zAc-C=dv?l|iq8>-f%2E#7@cXy1|EEPFdViWEhY`9GK|aUR{j<)eY#%?#~Vct)*A+E zVXnDT4=sG4c#+&<^KBvIFfMzB?rt5-*pGi zde{XhpM(Dn4%iNQ!YmkrbHN-~On&_R_h5sOWk?`8-|ZF-3W+7y;fEfwI1>oWJ#$td zC<>#AZ4+|1qKZ4}*yA)6YKBOJ$c3|=Be3zo!_ z*`*;N3Upy5^gXGK0X7g3W|nKRDG!jI9DxKuPT*i=AUF&`%ykU5$)%rO=2$07&tODI zZ%`V#rzZve*{7p#y}1z*C=k{iBp}!@grYI#_^781&XC)n&X^QK5u5H+gP5PP+NzK+ zjvDKEtGe1Kptj0aM<(eDsTYOcyU#IZOi!XV-F`KWy|K9l> zmH_KZu#4Y;fUUv?Gdxm-4Hq2o!jKI$@Wc{B4Df<77?3f>9$zd7na_Y+a=v=Wu%XEx zvmCN$htApZ$}^usqRKSmEc0QunWb~iKPQtLqCmS$^l;`mVzJRnPiN${_ZICl)50+K zwA51@J+db;^ZjE$ zO833@-H=5JL(hRDPB^keCf+z)g0izL*MmFmFVddGz*ps)Z}}oi%f3sG3oVRZy6OL? zckrU>tFzv^>#xHeyX>>K-Y&Z{m}NWdvg_f;2O9Vee9VIk&v_I=p$d&yr@z4b>AOQ8 zz4X&lU%mC$V;?*2XA9oFB8#6_s65S+U%vUxvyi>|>$Bg!`|n4Od+~jy%MMT|Odf>+ zIAn@uR7^PUeB?_X{0eBm10pbiv!fhOz&EI$Ai*r_>Hwu^kgkdZFn|i&AO}0>!R*cN zL4}hQBTmHByF zmRYe}7f!e3Dqq#<>g!bsDFrAL7b+{|6{z3fTLK#7<+lCU2^>gp$h!vFFx2~}CCuSt^mC07`+9&0_jYWYn)X6}!U9otq3xz_KS1O+f2M>o~W!yv-dPRjt0Zc=KY2YYn0Su8JNLo(whImI9D( z9YB}X@_>?wZ~diAnq}Pui~!r}mKEZP%qZW%s)@%}efkW;fMEEYS62h6g*P68pJ4#oT{k5Mfd`{(*8iY` zV{Nx!XK!q9;YcL)gUALGc=+LQ$yr#S3w!xSQiT59B437vEfbRviC`dsLoe1=*91R? zhtzYOAdqB^iVVkNlO`g;T9KqBcZi4#2K5^h45?s8Yqtqdff6cIupnnx%5|Cw+c|Kc z8a+k;=06jXX_y1-q1j>r0JKThZ3aBKL|%!s$fPW?K`9=2B&KMnOhURS=vNxzcqpP8 zK3@1MI;j#TvDmAxrX^FsvPmEcAhBvO5Nmji;+l-E7uE!Av`wPw=mwa1d;b}=M}%o- zsqwMfE=XdIOD?F}hIi$s`b2l`tk^=AZ+Ix$@*06?WGZir99tNS2uradD?)L}mW7(xVk?J3 z06p7@x3kP`47H-A)zu1H1Z?sQYHlcNoQ8V*<*ehJNH;M60xF0WAiTImF;UEPW_vMn z1P0u*rVZnnZr4#HfaE_lehkh7a5F16zupF9%7o;z?Av$jdeBjYSHFJDT^^grH!yIsT^I#QDfsi1ORNM*100QmDexrem4a%qsPy^z0(*!>--T16iUSO zE@TWjzFNojJvfXXKfLVRx35?8&ZDySN4(d&{#s|!ngzHf2DOw=fDdCG&g_T0@fkrG zr>Yk3Fz~tLd7^I;EQbLqSU{XePIb3CgI|`%69VGyfN}dz0)vJHZFP@+SpeJRGFL7V zHp^oU1c3q=V7}Vv#cDK+h0ijxI@`3)TqzVz5EC?-8F9yibR$3mI#M(xCJQ&4J6~P~ zNW2T?%!)8vi<4})8~o8tcQ3G?=N`wxuOTseUFjkgjQ7Q(8UHawWYkOuK^H?~A?^iB zBHIU{Z!AUPn+BUdIPC+g4%UK}h*vC9J zB!@x(6$LN|#}ZPgk@6Ga)X3;NS%R`#wHs0nzjXmeJ~B+=(`4na*Gi+=QVWAD<|RET zl_Q!meK_Q!mWY|e<}mY)``DlAj@d$L&I=`B++-!)g-Xwek(C)_-X0YQz&u{ynor1< zH(dt1aO&=v8h|3w)H4f){Sj*LTx7p|38YaOatoA%Od${Yh9=4im8mqRIQ;2D51e9A zmzgI$pD`vfn2Mt5T#+5aAT5xFR5a_9=9{K4y#`tkh5tlk=p1S3J!}TfkHX3mL?fCj zg7S}aij*k?-Ko!b#)qb)+{!Z%2~qthhYHgx;`{dI)4w6Cp|qUeRi{#=_N8p6R&Xj) z5ho{MCbO7eB&pD}nZkQ;GYg@#9|QubIDVoIs`Rp1;o{oKt$HE@WYncl-8fFgm@z|O zQIF_Ynpa`Qu9}DS8cr;iGt3Dzn$$Zc)IW#Hs)<3sb;UPq+c#lYC+OKZ(L4 zy*?4^8+|y}aK0TsFBwt@>6MoYb9EHD+^Vh>hTd&s$7U{6cc z4TG3$x7?kWc)Sk95?9Aom1BjOV_EeUS+$R~GG@mc+~4JDl|(>SCVx`jdqVjnqqJ!N z_zD;UusC!e`!PU9YE;XB*_60Nvf3Et0t$k+6a92BN|>A;rHq%*Iy9VfOBZB$o_T4e zBg8Da$~pD|rM_kgt!SSsWpo->XK&6O{Qn#pnhmCSy~X`>l!|Ik0$(S*Rp=bkh&;6I z3RcU|dvV++A+f!{(w_jIR^e zdg&v1`lQ@_E1i?Ang8Ylr*VT?qx<#f`+2#f4U(vK+l`2_s#yR9E=PHNond7Evfg8+ z_F6`qLfd7#XF2{*a)v11C*GUX?PW5^{QXm%t$T0uzO|l_N%7L?XUZ7sHLev1nl!wyD1P);ubU zj&B;^JYV#CMV%8(D?8Lo|9B6N&i~w48<^S3uyk8bE|#F%kc$y!BE9!5b1_m841lE! ztOczIF%#Lp%z-dZxq$9gPP@>PwfciMzUBxJ&Fj`4)T^BS?~&0u-+II@VQr{!fhT|; zYsWg+4R~j-i^t>M_PoQQn|LTifb3KsrgQBrc?b%A^upY87@k2JtbyTW;sU#~PYN`F zCsbq|ZT(pxi|E#a>H%@T{acJQLeXnx=tzj1&SU<-INNpw<4!&FRNhz87M<~&!;^8Q zsc8@#C73PW2jo}H?*TMdVi~CEfUlg#uX^8uJ*Rt+V5Dt&b2$Crz-`53V}MsSXE$}v zvsU^iC2e;N;^lm_$A2sXf&cCXbf~p{2EuO(Ab=soYXEqGF9&@imt|Tz{v1AO~ajhfJNPf9Bu{+VUqDQ6^i*Wo$Qp-~fIn;euty zajS=V)pt(qhIZ`qD*5Mw&cK0WkZI`y0Xx?VJ(YAy*Jm@>epgs(k>z7gXnDhzMDj;; z`#@u}hdx~>AbfKR=#ql;g+nXKF|| zdE1p{M5Yww*LaAcKCUn=s3;yxxQ7!+f%!CYGIV`!D2@7{gtickQ79Bz$a`6~h;TJl z4L4`S7f%o}j{L|9$&gz5M}?M0aIF+$^O$Q;c7vVRT8+3-ks*TD7z=G!H1UXlVsJoo zxJBp}Y0{;9OX!SeMt}<$gG_;msdtg~NJ?H5j4g#p&q0U)`4$vVhB6iaIS3mc31`I< zk-y|;J~>4;W{p`VZ2!5qk89MAZSaX5sX?rFGl$fbV+cr47*=aBis?o`)>nwP7z=4>dTa@n zO7VbM2@*p12QCC|EoA_l*hcdvbe0#GaO8)nXLKZ_Q#2@KWx18@mt7mujo!#ndZ-7R zLzRnglgRjs4A+9JMwXfRm9%JELOGPVMvecrWZTGtbXjo6^$LKnj(?;WiJ6l-85}st zm75rIIH8x7*=w+wRl6BOl!=iAlbme8X2XeQa-xX$x0nU_g?|}#4yKZcb~?TJOD5@# z@N;;J_L$?zNE(2fb$JWNSP8!POt{w#gZYPWrC}7flwkRZ{-KR~hmuuci<=3NbSIz% z*py^oN&g#Aj(-q|hbf^g0-O{QJr@d&<9S~2cQoO^lExL6>`9c)*D0&{kR-u^7pg(< z2{E-bhXAPoUf7>Z2>{30W-(fWP)4Csk)9RTlgdJOCYqzlc#8dVlb8Sp^vRf{;{f7` zQRhaZBg10h;G$JwnJhY^64Q>+d4LxuM11n368Vkh`3H1#22`mkdbgVZ3W199p+dT8 zX33&jniv%nZO-MPBbWulV5Vm(HxyYi1<*KXK$RJaWY36YcbQR}xR6D-6Y;m8Pvv|D ziKIIucJ!8!=I8*0BAWF{oKt##hIwXwN_DN7l3g;Jg=L^60)ajGpmErD`h3YopV;2xixGTS~HQ zenGa(cnkaq3_%M@+A_BjOPb#4pJ6Ae&5~t5X}Ia)21!|g2kM+Dl&j~tR`%MkKs5=} zfMDOZ2HZ-a!eyaU`-YIJV^)*^l0a?0UA_8KR=IZ}DQIaLw@IqHXJfaKhG_&!t&JI@ z#wVQNN*{uYwqMY(%fouqYeR5xxe~>zBx@GH3b~OhMi;BRK3kl$_IuAdkIDO-r#nVE z)+_Pid<^)nsK&EBOQ;qRzS7zN)%l|TVZLBDtq`bg?CHF_q7w-9q>!Pgk4 z>HCmYyen6s1!U`~x9eaqE4;#hnG?JlHtZ@e3_<-Hi?D;86`8~cbCPaow4Zf=aQrDGm)>pEi1}H+I4GYMTE`I*I0X zy=P_&(Xg~@JBeS}FsDF&g9~DgF~jg$!;4I2PMpD@jG=h&heUjsY0F=9JXAKDV8RN< zoGUa2ti(2{wY3+%G;_yl)B+lS0OtIljl9R_xvD$yP9*1GTkL+bjArTjx`({P3U|R~ z5;n{{vE8bnnW$^AnP7!yrgi595SJKU0I*pJvuLT#w9LHc?7H=;!HtUxttf&9#JE9; z8G#eJ>2nszx3-d?08#88QdKN}{4(yvbujG51wE=Y_PxRjTFT3}fU3|?yBF#lkCTAI zBvhNxiUPCz(XnC6=n>7CEX8jzuH z)tY@_?Xq!G$H6zulWb-VcDN0d)A!pIeS2EP478D(X}XNayV$iAooGnAQJiYbZYz5G z;%F*6XnQ@TEmRHByvF2Q&RD9hRtmQC9K`sH)eUoDjMUV1$+9_#OcspRNS&ztv&pfX z#UC07;s1p-gzc@5N}7+sg~7ulLh5`zrGyGqheDI`!RwAj2u-IzwA_tgpN5TyLi zV&mJN=~R6^gh3mqd$7D@=VFvQF$mfRiC})a-LopnjbqId?|iaORuHO9#?y?ZL@Ku* zEF=MB37WfV$lblad2ob$&lU04{EOGL?82v8TAR(oz;LBZ2-^9jvPRt$VlzEK&!!3ZP*Vbt&= z0k*1twS3~yn&JmQ;iu~23`P{CT9>F4!-po)Z z*}^UAI-a^`^l?N{>6Q+o6YYA0!Ojl;;HKQm6VAWHT_o1M=BPg1Tma=PG41+w<_IQ5 z;9ggsmFt1s>RbHH2QzqWaNwa1<6vc}D9h}FDkffV*y!O(@g(m~wX0-a?|uuKey7um2#IOM?-|~%~=sV8Z};t+0O&G|>{cvwvU< zKu@uy8qE+e4@S=l;%5XyaRC=F0TR#vkWkH>d>a3`tn;nJ=mif-v_78^-|2OC1Z9c~ zByRv(&-JEI0APP#k_N>vFY}&G3Gb~9Rd4kY>h|{9KXG5-643ST90^c;;Sd3;WZ&#H zwi)H#=iKfKMEiM0AdaXB_j7>w4^a1v@8fM0I1>=~5Owlmj}U;r_e)-*N6<@|Pltz3 z0TBQJ2$1`uPx|}XFRQfn_~Gmf4L?B+0aot%ub=talmHme`Lkbl8Zh^Y|Mgvf&|o-Y zA}=#AI{fbN5|lm-&i@RKU<8a4{^s8-q(BF_&j8fl(q;WE$Bs%$na>1Z?8^@Pd5)SH zU;vK*1Om{I2s&(BFJ*GsbUv9->2$f;7%cyjNCQzg2*9aCqF6Sc(djfGz;+K3g$Yt! zx8L!3{hnWJZXm=23J@d=R$TfN7m27GJyftD7zoJH7*rlLqc}G`ud*NRbb?HX2wI)R&=ABDBJN>3HWe9hq6v{M=m zvBAT^Zz(7=62*I;mq15R_2%-J*XifyIod}_tFL=k;RHaSla64)JxL7GT4%+;mUn$9 zw3t6?Lge&v{y6%ykombz~Q^U{!>;@RPzBm;6 z>OWC%_wcR)k@o=%(6r62m_(}a`a?v(1sUvW6Zgd1ts4m@u;2m>kRYzX4LMW@8vR1M zjukKn;etX7F;GFl4q0qb4NdX2aPkyK?(q(mR3jkbqZ8ln+7QnRCS<8f#*!3V8#=xVLomSe*&Kp>3gc%A=i&aphSj&FWjfE3?FGUuuH)Edo)*RJ~Q(S%+X;-BJPd@7+wVfpFD zKTC=2(w8uJb5d*HJK5ytDu8OU-=uy%(mQUuiudP_(lO2x0aPFDvQs<*GGa6hr~m?| z2fziYK?9`Q9K{kCzX_Is01Ox&`1H3y{;j|QthpY^oJ2s**k^mG6G(=dA;MHZA_7NI z)!KxoDG+8bJ&wCyKpqIe5X$f*U@4n6h`^1S(Wz@fTw(aEHwYc_ZiqzeMIiqNRkWfn$N`*HppJ`N`yv>VbDn=qv4>|Y2sv0oBbId0i|WE49Hp?7 z;xv##DWdeBKMSO!%)^`F-$zsg~+6Vtqee7n4Bj4w&^o> ztbzb2fMEJOP{PWw;WXYOB~Z$TO&$WqO5LJN7O6FX9o8?Ov|QuYmh`=MA`&xC!vaFN zbb#|A#DKU^7(d^2OZZVFo&{p&mfV5~Cx{ROf3j4gp6S7JRHUR1p$baf!k9x^@d6mF zCHeoJ8Kzg&W1Cjc3!#cI8Vhv7jt%{2TUhj#21;+B1ceN?C?n1{W#b5(@S6n3Apx!a zR6re3fGZ{%!-B5nsiHwcHx~M~C6q)3Mj2FD2Uyj{Wo83My(yQ}5RfOxwO#8Q$t@W0 z*Q=~&s=L%?WU|^;N1|aTDg^7hIJMH3IQ6B@A!Ii7T2c2L5l&X|22&3g3e+ZKmUp#e zD+HR>I^HFXW7X9i2%yl_epRgA)T}|mNh-|fbf}^A%O?rfEInwnxQ4}CU90tgneO$D z%9Jc*1`v^$JO+z&V;JIm8wK076d;XZ25SxAQ?k}283R2og!WllKGai)*tqP18VdhC zs#4cDt#xf(vJytSAorwMQ$^{TYgJlwvPJnERR=f9UvUIixLrv>gtccDV}WO5iZzu- z!Yf{NaE?mQy-HqLXq<-F_Mu!cFE8r?Ibzx>7M8=nd9OHu_Byx06|50jacmsQkXA8V zK>%n)tl`f{fNGSY1$_tW3qa%+d{lCQ0hk#V4<`7&3-&8ug+iJrJ19mD_1G+wT1GUc zHx5HRQwu7~lk9i^$0M1g8`Q`{HD~Ta_Cvd^T z;`JH?01r5&P%NsS0y~*3P$qN{C%~2h@J>(0Lcm{>2;?A7c*sI4NmfuJVAs8s=EBGL8X0I8uv0aTm8(NZvoiJ`6R zbOhkY>2P*f06nRZuyZ)?2K5nfJ=g1CA<2wrK?80|*?#+*AlH_!IAD!N8LOAZwiI)< zt$k`52>{=Va9hU>Az?*$KrD;Z_FxxT?H_o}suY6LsXqTf% z*Y>}=kj+@Az}u7^bhr&J*4ti{!Y&hv<+zN-8m@6C+@3iHj`@=oNFe_K*_MR`7NF-d z3}7w_6bHa71rAKOysu`CR+x2rbeF4l&Kpg|k?Vbsv@0UcI+Zvq0wMQoIG*DM_i?nJ zd;vc6o!s==N&zs;=cyN1%QD}?1-jbwJ6-$v-Q#l1jpJD&lVGj{+RQZM>Gs6gqs1$|nNy>rPgA{l9*p;&1Bd;0}m z_?vHJi!Il3#=9H#d5F36@j(2uR=L|5zXLl%yxVb%yVi^dc_Tif!vap|@Wm`hqt33# z?@~?bX08Q}!tMH?5EAe7#HsEc&*g~k4RT`R9L~Os$W#gd7MTBy9G0o`a-~16ukzk* z(~5w~CXf%<4gdmg<_Lk_T2JKwzy;xN^&TKxHW0xqf*`O+vMxszK!C}Tt6oq^AaV`f z#*XJws<`-$Eh<2frZ4$k@GKV14PI{t^I!uKtH^%vfnaR^3{6lbV2{ENRZN2eD=y{Y zZrECo+MZ4edCdwp?WW_-PEt4-maC@@#ItfG`MI4U~3I7Eb?AHy94dE^vl+Z4fDs7hmK8 zrefZr(ftJBd}dDHwjrk?3>NTC;Mi!(m?s?iuHcxF(i2%^s#?cnl?u@4H-5ZCNN(CouR#1YF+4>)W4<}4U7@TMS;4{Xr_>#z<4vIr25 z7Uco;ppYOVz_J>$D~9emJZ;saQR_mo3_21Z(cl(3@d(wg7Tw_LoKFMeqTxJJ3y+8; ziVf>9!>!824SVt+rV%0w&)9~~=BjWT9fg^w?Hj3L4tL7pi18zUlJ-=xm+oWQO0kF( zPz@&W4JlA34d5uzKm(YGCxx*HG{7>-03M-o^>F_XiE7LNLeCYchy5NA17oocx-cU( z^7+DX2>!4Suq+&3k_L5>2=b2{Suhri@-KY{82|7SXNV=`a1A7K=CBbj-GUO&vLm98 zD*Levn9wW_A~ZYGBS-@p`O%d484jz;f25ZF(7_c-SbO=tfDWNnjoRdfg6iAt|6?$z%W2H8+ z)E;pv4@%TY?*KQUGyu#F9!4cf+s{#clw8Vy;D+=>TQVt9(jcQ~NZYeZO9({~=P6zE z4iNE7i68|6)jiEI{pvCxe{${)^h1+m;EplF7^NFzlTUe2(jrhrm(>0iFjLi_2h9@% z;?ptLv{Nm#P^Xl%MCnTJVNafsPS5|YJDKxRXY(&~byq!cRMkK~IVeEY^f2cxN68aJ zrL75isx&%rwNEEg+E7d;^h8b} z6)-Jzz9cm#e>J<-^-WncrSjGLs?Jn1(@mSAUB$3i^G7+(WE9IV6*Pb|3)Hlp)eidb zF_X&h@{nZR;va*pJhuo1rpe-95l%Y|9oZpcSG8Q170?b0$$V8?6SYkB00YKUJmGa> zt2Cz;RAS4(OJ#Oum#3Pjq!soORvofZ^Hd}!RW%Y&kVajzuWj(jS!Xan;6;1+A| z)={WbTG@1O(ExGL^*0UI4bF)+EuPIc5=p$){;tX97^)fTr7SeD<&b#9Ln zbHO%im)2t!wt0#!U_q1ID3cDkv=PdaQxg><)zb)&li%($Y@1?it%4+x@1v?mRFQFp zNT{vyGGsURUW1h&eN%5Mmm^;@u>KZL8#Q)37iW96X*Y0D%NI$1R&$p&Z{G^E`rrg+ z6h6bQ^*Hx3_w;ickP|D+K;0H^yLWw!7cSlR462cJkylg8Xl|Dw&L)dC)m2$Rv40N_ zerIlL4Y;{BZ+?H5efj^*b%FJN?a+LIC*ma7`~q$kM3jMDU;>Iy<2<+sHr0Diw_0r# z4}?^N`}9almqe$QYI#pyNjP1@boGdpY->0TVsLf|RagTtf#GvbomgMr(}%9^c?Fh& zQ=x46Ct4jhQ6qSFdG&^~!7YQA>OeS&fLDwg;ZS?{WSsYehc$GQVvU3M78DC)2bg<* z)pTRnAIbRsk``v4%7?ds3}Qrf^SrX_n&+%$3Q~jIp+YGuI#RDV-ri)_$FF+H^#I13@T^q@1C098 zVpYjsZOijuwF^A6Cl$_&oF*+CxiNdC5iq3xp#oea0nUxf|Es&3{JVJ=qxJN*%Q?u= zRD%!V#Orv0S(vE7uFiiuzLV{*Mahm4c)p1(zdISrL!7zs8q@XEv7Ij)H-JiJQ40s! z&-p?&@m!%zdc2oGz8MeDtM|T_Yic*qFz4+|_O45dJkJ+S#e>(cp-K@BSYl~z&DsC_ zp3nBom)WijRV=KdN{mF;*O{kPb-{y{z_)lojhMs10iz+!Gs$sye! zyqncO8_I=Uleb;gtD4=9@Q9Pb*9AP(8D*)+6xb>K(49OD;xdo7*sLAJUgf=^VV!~| z+!t1O#XmW~08nyW8YpsfcU|D3MUZDd^55+$EZAt^a1zSFS}cOHG|7w(F;*I4fNqse(`NzeZ{-X@J*H!1(x>5)|- znd0HqvxTi*1e-eEsh#HYTjrHr5sq5G8HKo=DL!W#jlq2pa!bnHoevPU%^Tj<+}XnG zbm++p^ZW`RBw-e-A30*a82|0o%fdpVJvXu|Gegh~JjXSm$Xw_A9vPr5^_C`wJ((wSnFP z>0wI&iWpX1J0H9I;vud@bCdBRQYE?a>VlR1_H4e+mmLWBjs^kA&fyJoe$n*L= zzwiG8A`w(@8SSk^B#2D~GSQ)R(VDh)8KY@il1H#;-u%0|kmI1G>BVrG;|dK2}a9kH~HNe?+Fk!oKPaX|i*YICS3Kshjx1}HC!j>;vkw@{Y%`kkk zeI?`V8@8ohLwnJnRVL=vuFb%W3s^8SzlNNuRrMD26)?141IMgcHaV4~NjI}S&SvGv zziy+9c|26`>Vyw$q{oRa>tdOBS6QJL99Ih3ap$(Kerf`%K#M<4-^wLkun?!SD*HZf z{LkzEgOor4Ce&W_9<@@3 zJ3?8Eegx`aT#dyv1PprqS%Mvj6J8mmm}CjC*_Za^_>4wIt|5Vm)NxfLXJoiQ!J86| zndcuR-B<<${XMCsgkU}J8&^dQ>O~7G+^MIddwiAJ@Um#%Ud}V?=t5yUsZ~@HS zE(<}CPF;L2j})KUAi)VDT=5mg9Uy@UM;F{<$1Q9aGCadtZG{2$KCN=S4Pe0a(aTx@ z7oFDn3tGS+@XBq1o!;HH+io9YKrFpI`wc?!W@~oSI43CS$A3c}PXh{DaC1UgLRUsg zK2sfZlV~eqly1=g3}TkeegLk+^{>}nhY%S6YcCh^brv= zwtE4)$a^C`LUM=t_b*I zJL=Jof;6Ne9VtmmYSNRUG^HxtW(QX4(wD+CrZSx=O>1gXQG5Ug6tLw@9W?_b$N&aH zjR6XJ3bUcc;HO3{*idV*RE;MIl?G2`Dh!-D)npA-saI_a4vHaE8FY24wn708OdwV$ z-5>{f2m$~h`2+<803ZM?)d3*^)&e&M00;koAcBL0g@%WSiHeJijgF6yk&=^?jsOFf zm71HJot~edp`xRtrKYE-sj922t*)V%v6lb`2n+%#ue!Uuy}rM|!NSAD#m1Ae$q_0m z%@`FC2nQ(%0LRzZ+1lIO-QM4+0RjaD3ca(*02eKUE`$aaCk@jH;P&_U`TG0({ezd| zCS1Uv!oq=b=+J3U~zl#_%YTU>XV}cX~8c-Ox!Gl8=DheP>h-t;6 z7Y&_hxBwwn$D25F>fFh*Q%HdXO~PzA)WHB==>pJl>1e3a7ZV8doJzH-)vMqZ1gt>P z-5{b*CD_!(@)83NO`j62iM6fUw{ZXCeo{~?!pM?|)WW%ahGpkI@xwGfb-;$=l07+sKnEU;bz{00>MW>#cA+xYA?-&<1`=ow@h#;B5;pK)iTn z4F^@1J!?Mfg7EO;%a@B=fPvDzS2Q4-)B(HgP9Xr?d;}I~U`NhffM0JB47dtzmbC}g zGzV5_;f45I$C3ovNvD&7P=OO=hJO1e8lTcP7Tm>-(C?a+xn)snPQFiI&mxnkvfs#1( z)*UM@lF1u`T!QK5n@_HWKzRV}g#W(NxhY?0 zrjs6_P`!F3OBB*7?6AKiMc$@{K1ixro4#PwF3u%D9t8pfKlPLJ~CF zC#)68J!mLeLR zOM;c~w+S6vhz8yYZ1Mlai3o};jjAr2B(e|VSr!2lC?a5L7^f^SrQHGvY$Q3Zn=8SJ zY%oEvD(4JdHN_$+@1hh~i^_V$d3ze2OJ##t?zzB)Wa+9rhVG1x{!BEutQkIY{54~;D z4HFe|$3DZn*DX`;ExBSJJx~%@s8JmY$&QC*ICjw`UZ~7&XMJPCHN(N%w^}Q7 z>Zt-+Uv0|Boy(~D?LiJoq@fnEE_qqPzR>*yjTP z$wKAl8}b7X9ykBvRp(w5y$ZX?u;_qi?|whx7;u?sj7B~?W9Anc0r^U$@H6`dupj>x zQ>p50ph@pbU}&t?4*ID8fwQX^&;~e~W+?!DqY%yszGg76sGxQV3?V;ybFk}u4jsx9 z-2t0NK#m8``zH zf1x`B{ZN9l7Xsv7n*yOI*2Ah+vB_nBi6Z+v5IrZFu~-F=-x#e|!}Q6*e=;oK7B?hA zA0DxVN_+vX&d5jpSgwmZoMKdds1yVM(h!kpqm-}{u1ztKg{0DrBuH2&JNEICKyrW% z%ak7h{R;meV(cIl>$NSoEee7el+z|fxfT;*@|Ev0ODI`66buCLesUDueo~1JbGh)2 zSL7f=j04MJk`fasz|O3%q+e56vVkP9n`BH3S4Q-ZbHIiSj^*T78lL_ z9ST_j>;$k58A#6ob1Cd>r@URT;YtP;1j`PqQAES7;lcR7Lr~`2x|hCkSm-^E+JrrWdFE8|nXJ z_X}NQYF7|?AwW7MvDrQSl(2qf%C`QlH{dtpf4MQshohH7ZqpL9JrWQslI_)$QJ6ftc)9*|6nmzZXF&EdmJB0HvFr z$9?Q*DSY9LW_G(dysiI=lBU51h`^zY63}M+jdk4^4nvBGkAobXW+paR#4>V0&jK$V zKKNbDhaNv?o53si4KVx)R|&Y><^ijZ@093CY!9H|01`E|UCr`qN4l5ejpM|7irSK_ z9O~DitjS-Eo`YBV&GiMgAtJWo4$|=DvXF4$1V?km{HN|{#}-m65i|d*69C%Lp3uNe zhu4_9nC=ayZraux_?*={=Q?k&vzdX{htpOm;+BvE7k{{%6BB$M3w`A=hFv(bJSJ4` zwK|~fp2u%5)fbPwyRW`>0z;tZ8Pye$SAQ`GN1VYka&~IX7wgY^SJfy_Idj$h`d*>_ z-#{n6sXzPqBO#!VZ2IJ@n0#^}rZ zd`}kpk*9ft)E^`we`JFjP!&g>r+x!~XjQ@%KKCMxCwu0VU(IJlKErtiI5vY9fYyU| zpx1lr)=Zx_Wwd7{q=ybz_dDpuPr_#s8(1LzCp`p3cv1Fs;S>LV21R})cy?OSaw$kv zFgRKyh=JHte=#^8v{MtD)^VW2ez3z+r?x$S$8rm(2o?onxg!}t$Qqc}eoYvBFQ$P> zC?Cb+FEjXlbcTHTr*E=QfacSJ`}b}{CwGOA4*ubR4S-{#W-Ja^hVd}~=5kp)cMKx~ zY90t8vbTanrFG#~NK=P8e0YcAM}&6hY+V+1fEb8g#vOa;c2YKEUx;g6I47!gfmj#| zrpSC@n2IoGg9p`$x%PsaNFX^F8L0z&p9D`HXl&&tTI2V06z5YS7-vPnfC>0rlX!po z@`tquAAZL}OOrQC7e=sHLQ|*!TxW%{NC@~feirA3E7kvt)EJ6m_>8t_NR+g5kP~m` zn22e(Zx6_ak`|1=s9SoNhP&rHdWVkTAuZ>!j)Yi_;3Fj6mw1{ng#b5x!1hM=wIrzM zig3qZXEIPn*9n^Fk8eRxQ`COsR*lX>ebx6sx;S@VWsl;Rj1UQa|2JgUxJ2EEiA|@2 zyitW3NflE@CjvQ7pg3pARE$3;dFmI54I_t?m^?NqQ;s-{jK^R>7Fw0K3AJ>SanW39 z)sg!1kp&rCPU(M<7`G`ScZ&LY|aOwXR8M$4s6BRMZPbnlr2Q-;SnS-ju zg^1~ROX6PQ2#N4$j{L_7k6Ni|0qYyKm4S(v6&NG7RD$^9fh^gD zFn5sKwQ;D4li^r>u7a86^^nR~VTu_ePid0ohn5DTh@nY4u=y0lX?3ON2@W)zR-v3h z*^$qAKQuX)G2vFyr+V8#or77K>p5GX^O7I9mhr-uC{`%mIThB)W4)mPRX2e9DW4J9 zo=G{E$tRI*Nm30`os8I42$xgbIYkAUpBLet)$<|KriRa#Ul2H((rJZaiHKzxni3d* zOUaBd1e}oBJ`}1G++&(pi7reyfV6pOSBU=zuZUL?&~6$se4ONqI0{$bS!9}e12{DQi)N+{j2zra@6tan+_9;&X8l=8PQUltO0Z=!iXs2mfoy_$|ZYrJxsiql0 zJ8+n&ba`XagM_=4bnw|~o9S542>^AYS|^&BFB*9p5PiP6QhEAnGO~w^+B(V87)ZKq z%ygp)MuxlPpOaaS3Obl%>6~pOkC(Qf+G$RdTBot9kE_}ZZ-fBD>XuQO0fnfB3u&UH z>Wzcuspyk;<$0Ax`K6c|fPXrtwKe~t_bH=AdaU+fEE3Qfq7b7~+MBYM8^HNRh`Fon zk$%()uYm=mpbD5oN2TvdrjS~!=86-j)sM^?rA{ZO)oGA;=@giSm@4_B1NMfu#)EH{ zL-Kj2r7DOHu&f?fY;iiU1Pfst`=|lyKsSb**~qD{ z3$*?~b5rZFFsi5uJD3nEs^fXDCU}YuLt`yVY#o}J{Uog*Xi=Kpc zrsf$LCzD%Q+pw4AubJ7YD0%;sPntW~d9~Vzqz;FJ+u5_{A*+155q?Wm@`Ja58=LeH zTJ&mddwXaV8;(u8Q8TNyYipwVSazO!m8QWLWt+L)0Jin%5bGMHpU7BBD~YanQMsC# z+xSqqxv7Fkt9AIVm7}#=o3^&gs$d(9qtLA7pt3&4riObyx{7$ZL$ibrA=+P>}! zw(4oQ4!f<{*tnv4JzTmVA9R%U+d0qakgw{n(<+fU3JMacsR-;An@bD)%D^(>rS~Yj zFR7X|>%#5vOjDb!#OD96-}sVJxR3l>z;;r*BfJl|i3KPQEl8>vU z_iC_9vc$ba!)9tH3`m$m?0x$6!-i493P1o5911%LJmt2A5&U)+Ou;C!e);-HiIT)! zd$FABy!VNwKFq~mOR}#8#Rtnw9h|*hmc(}lsvr7Lt2V*rv8Rx`!;M&|Bl9AFTg42r zw|M*(UaYvgE07d(LH9SbN$dhS+*dA{uRkM%x5l1Vo4(s|yd?;xku19ntd*6F81GB9 zAl#7{fVr*A$hXyO<#URuF_9b9QFbf2nvq#JrL1&}sy#f*WkYiy;iG+=BdJrjqg#gq z(v+%e6RNn(X(j)K_}h5PC>rUS#R!Ruvh2*AQNjX%0@)|Vn*6i9wxPS_h~28X*E_?v zMk6?Dzgd--RBW7&qn7IY%zbylC|oE8VZ?x{%BxJJ<4DTMP`p}l$oh=KOr=34JI!H{ zp#=>ZdJGUE@ybM8O%dSH)k(nUhn@r6a5N+f${QHRyT{u*Iz9JkZ@ZdViM=1qH`99p zF`dvB(7WpQlVb}N)$v+|sUs)3QPd%9HLc5#3$V95yK&sppYgsH5YTI6Ggp1F^xS!4 zVajcM9lT6Uk{Qmdh?tvmxA2V4cZ}6nvAJL@wovMk>?_K5NvtWsC5SAusDTOB>>-~R z(V|Mp0R8{gKFc$5{f{AC02C0^cRf#zOulTZ*DQ>|vGBWEG8h`dFHtR)16;`bX%LNV zi!`Uqrhu}PEXOcxt%_B#Y#dktbkDU)PKW5tsQN(xeA=@S(t_x!s|_3NsGIMsTIRdg z+k6R^7@?9H3i_ldK zhDPd)ur1iIXaKD{%oik5=S^&@3#ev6+M%Yx3m%9e1;3?G#J6fuMO)D)qnWCu;rm<- znC$=3sgm279GMI~;@Zu0DA3)XTS-O*fMYw}R0xYE-Z=pj)?F&co*cgruH!v&&^`{C zw9D2G9wVqSJ+PRdU`3J(%&W+o03~YQgbL+xQsVB7!Y9DAE2W|y)F8=J;n&F*P`iZ? zghb&Tp0LNsX6__@3&wels=4e+Y8{Na)^H6=E!7R!27crWT;+WpC4DF1WDegbtqg&# zJBR0JFzNtb9>ZguiBnEV_#Nq80?m+o3QIMZHAt*cF{G;Q8yme*<2~Kx_c}Mu!31sU zl3wDr?BotRrPun`stW#;_?HjGl>pzm(l>XojtFb~J-TR{p4!i%o zAObI;n(IYE)W#q!(r(F5#pNfSBTR$5oc*I4&a8Dhs@0%2c5U4avC!p?Lgx+_z8>hW zRso*Z&wR}bcsr1pNDAI_(s?~lBHr)P`^fkH>^rTtXYC>Q064V`rV8(oGbgkVPao); zuBc$uYN^dOm=A|r?;Kn0@11mCErvuB@*?jdi$2*!F)qJ}6>A~jA3^fKK9JW3@-$!b z5^ead8L;t=Zn?s)FG2iTMc>8fOSGww9}E4zJApaWKme*O?t0tsb?e28 zF%C_9^>fWo6OZ$F!}3Nw6&i0g0ROq0+%;&wIpcr;5)`n72J;zS=N+N(>Q3ebk41ejE#2|c8fp+dfLos9N7q81pxyz{p0AafP+F4U67nfv!>0P z-9AQy$nzXU6&fr|a7ADpPDLvf=;G$%Fef_Q%C)Q4tro2H9J}); zPy<5?U^IHuDgzZ?<5nVv0b`}4Rb222jh^_Bu8Oiqs@>7A;9{Xxc2kt(<^-YsI`0N zJYUCdjFPQ4;M3r$PY5+LQt-A&GoEMJ?PuVD2x;5>;*=gL|E+y@y|1PIhZ zg5Vr;0Rz1u0$?q{IY3@$9Hyw^ikncd;U^Ei=bj3zOd!F8j%fp&PAp<$PIn577ytn! zPGA9FJtnE-l8X#LijOhE2bzTR6_wI3(cH!$lbh^j<%OIv@PLs7#f8dpT&AgJCn2&U zW0bzEGT#9d(h}K|YhvP|I!OgLAWU-Ygh8H!7AlDVPr?6LScDPa_$4R*glIPy(ub$6x>*)m6&8%4XBHlqX7azc0}iZNcy$fpsePqrUQX0N~)^?Ijzm@ME_0yO1`js5GV}ERo7U;!FX!A#2KI%bHkgWe?&y z?Yb+5Tb!>yrW5S2Y-Nces4lEv>-gkyQWrw8H^8f z7Pu1d#Rra}q`!;tsm#Z@Wbh)!HE}%DY$T_go;ZZU84P3f0g%FiBde^C#2!Xqm(4t* zhn=CM0Vhb2fKJ;Q+o0f#^(&~-t#{ktrLe3^C$by#-kCU8(Y$ICuDD=A;==8v z10B1#%7zP7Ww(=O9$4de`5heK6vVB0t~-_9!rc^BIQr^;{pR{+o*%$~m}HvAI+LSv z@G^C6-tN0xoWK6t-{X;4=I;eR*YVQGH~*FJ!H@X%?3h|0y7Q)un!)nbVekF((Sr%S z_|Ht=z?cNu{{5zhAxu>F>&L%&`1EH<{fWoRpQwy9TF$)w05nbg2B?f#q3;62iCO^V zVY)M+M+gZIK2RMj zjNy_>NJD_25PuXgg$xnl!gK^_hd|7e3Bdz56;f@1ociF&h!w;p7OI9d6cDD$6O$F* z?mcIbfOnk8#fy>ei<~Qx5ec@s_}onaT})%shS&@#W+f)0^T`I5xDqwmv1)7_5(?kQ z9J&ERi}Zrx9S7;fJc3M&9?+Zav;{`+5b}{2Gh_k5W<|=ysUnSu75yN|Np?Z8PfFRN z$hcO;EM^j9pG;gQSLvxnHZFF5QeV&HXiAT{@|LX3Wh?6!%4YeImJ$+{A$3ViAvRJx zkqZqO_jbuC$t!KQ6jCv#$)o`kF^B&mDWe>tlQ2}KvX0aYCwh9BKCzSod)u57G^0sF zak{g0$V{d=$uU8SRiIQ3;GHC$@y>qI=9(TDOB2t*C}0V5pU-H3KNtE9J<^UqWO<|< zsiaRfDwLrZCB`I8gusACl$hh*FS>5S1;Vjj3YmKX1ks72DWkpnT&8u8HB8_H^O|O7GYXJrF z5WEKVuuat?rh1yyU+7P(h>ia&I13HWGbR zY89O$!*iI3Jfv;lX(LNnF;OwLr46EMw*}A`&9vSH9k>?fD4o(fgVytzH%IOT?n9>v~f&l>OZK zjAUN}9~i-lbLfKiB3{`Bs=UDrqyQx2Sh;;@ovAV(20`oL7K3$Xt9F}g4QSszS z?bNSLw((ae2Gw=$2p=k2#gR1{%0HE-z-jhSnYrYTq*~Tj4`$RU9SH*4{P_j5RKWv) z3}78eG0ej)ap}~xXB8>qZ?HA+nhE;CK>j8Xl+}rvc?Jv+)pW8&6!WbrO+wF&=QEn# zG>X$g(#(t@8Ctpoq@*R36s4pQM5I9wlvYr>q&tS1 zqPx3>p}V_=?nVSuq+|~7`Mz(R^W&Vqd+ncluk}3Fy6@{IOAIhTP%U)SQ$3A(`ei9R zc6!8#trTU}%rF@5vW0$-4Cqq5?v`lce3-9>1v^AtQ|C^rRGzi|T&u=ZnW=qg1e<|( zLYP`tt2%%=E2m430OMyX>TSj@6O08zkDM>4yA&0K;yg^hZPI@!nh@Pb>fTbWXA};V z3X+q+k(p1%O^I%`eg=F?H4*pV%G*spzhhyXT#)QnGiCYR%C)}n8ZjUyE8C{cv%X=i zJQr)LY5l<&anx3UUIm=i22A@Fr6u8497vHEW%TW7^P?Ab(pt5uG!#A=Qy`BzCe>kB?|W~_4V zMX(>JH)rCz^M--y7q_9?Wbb9*6@SrKzx^$Kl`(=#PU~K}?)K13ziF2Bsv6R^UG#WZ z=QHQm<`9SdT>p8LNb=?C6LVY&i{E0&Yho9UR&y^2{N@|8sp%N7ECf1VaCs^p`V|}E zu*G}#5>=|7=TiNnqVrhEQYnNv*y3|0&+6V}+phNb{8l0Pmh1!B_&%DX52Xq?3$uT^ z<=0mQjHYEfDO9|%1mHVA&fDYg{A)+OuSPrt7XBlrbfz_7LH?sr&rKx=ne0>)&MYYG zrq?NaWf}Y;C;-+NH2uLJ2Kjta>mq7P40>atz2{xy?6>na09@mM#Iq->#`!5hvi{hA z%O(V!!<Of*|4asf&K3_({;E%~VnP19(vo(16)KV+SCZKKJ>6cBE8Y*}p z%eV+0LZNxE}tPR)yoL=X-{2cq_J*95Yx%$_WbprW($<17dNB2Qmu(>E!NKFBEhNew2 zsa7X^G%K_Olt?NJ;6Q-Mv%xK&k~6Y!CVqpmxl=y<<@4JM(XzAaq@n{`BzJ%~XxBeQ zQ6%@#gJbA8q3{!h^@PPifGhneB!D2V{rIFSrxg#l(0-up0Q@$LF7>T14KM5)ZDceGe67Hq%K+Z` z6zUy>!)gVyG{Od<*uWW~;Z3}$b_?IjBJa;E^!HP9ZX7_mCQ#S{7rg~n6g?cmmhR^T z=He9t6eswDt&`YDmBNvw^nrs-X)DgfE6XI|1K!wGJ@9-30Vwb89R>10O)7NB0^(RTbl2m#a*LH^2i1P8zN1` zn=(gcONb{Zuhp`D*TCQuiSov_8wdHxfUFa>G;xLB)!35wU^u_+nw~1jM}v@XZ*^ko7^SzuMmebirHt zyXk=$QB8zY4d?Jv&YGIXM-g(1)z%B8X6J=Z_yP5cAPXW=j7qf}7chHBn4c*-WDv~F zUnPGeBPvy~PhX#)4#umhUiGSD*98zAfz%oD2w{b6is`mK;4J$@rZZY{_4@avd6McS z5s{gd(qJf}Jb(vPB3ACS1oH6&WkyzOBSD1=VE)KDBmn+lsnNm#_JTOE16_OGPywyV z_m>ch9tPPH$D!;Svzy>q`lwRXhE8O5FdrJ(EDZsp_IWCUHPWgiv2n%CmD)>uzq{gn zeL#(f>d4bZDWV8XnLzV!&vJ>D#$j<*hi0~eZ-aD2ct(|YQH`OrrS2vzQA;hx(v2|_ zx%-|)38~h=;gZ>A@k-kd5eo%Wd?l%NZ936rqn_yKtip;L)K+t;>SX@GRqUist2t9U z-`g~{z1Dw=6>#DDyJnEy!gt(`hU-$$7p5krA#|-qXTM23>CHz)bO*`ttHj2}u%mLS zzm*Tc?Qr8PeACWEpL$7#$_XEbTjOH6c_R&E6R)FKF1lbu-Az)(y<;g#73hxWXwPxR z5szu11+*C(HoAJ(RXB9{F6Jnfb=C8C-|d&E`qIfpr)ZX8LF~6ZG9)-a=R&45P|A|6 z$aTesWtMLX&E^sy^5?zpZ;}D19>+wTeN#Yyrb%x<=%acS$-uy^0Q+2O!KX zYYC$d9Ghx82F;hp)M~~~O~Xitnf?(7gx)~cMidDELq#Ud8pCeOa-;qNGyNi*&XHLMcJ2D4-Rj2? zW6R^TvXiaH1D?pz40j%?qnVquF_TfB^u1ZdmHMhdIv144vG4P;0)+~4xbau9im^h7g#?MT)1i#0%mor zruW)Ka&gNpk(`VcjLu}Y&b^CSRSmUyL9+H>jL$%2^ zR_UDJtm_JbVhmO7G+tP{P~^Ayso_2G3fp37kRkg}vta+ZV*?aX3RqbcC!NNptIAlK zR*KuSbn1~V-R^eo@$(ZahJD^-Xihgn6c9%pCM_~Ym|H{h)R@eQ_F-7>z zDVm2m_WL}7+i_Yypan~Wf^b&Qu2)7?>@a-wEpJ zXe&B@_I!29l;R-6{%vo_fy>``Ul$||nKR?_UjBfyx|@^m<}6!ng%McB!V4qK*T49y7Och(LjE1wr2byVoUx=< z$$EY9`(l?WaoRAagISpsn%Goi$(`}r-4Q4@@&TV8|M~3~zlCZ|T0^=U%uI^xIT z9qGx7u2AjMB76|#6QO%^{C|jT1Rn^18y}q*O~e=)l7t8+0R!U`kl7Ku4`8sIBq3_v zOh^W9QFTpi-Mvp8)%1TNwoxp!cF#6|zBDQzcWKW-|7nZT{d_E@DUx_oSRUHr zXITM69$}8f0EwTOgGoGZOH2oAxIp+zw8eaok#*%HJiL@{y!ZlnGZqhTAAH`;F-WaG z$Z+?_s4f@9yqLFFbDyy_thL|i|IEk%)`*Py_-Tr_+gMOPb_M?jb$Q)~FIY&;Y zXo5U84_ZNVu?a5my?XOhpMaInQclN(W%aw6Sd^nCEo?!-9}%^r??H>_kmA8bVNv{~ zJW!mp)O-|O?_f@Z$G{{&+be}W$Q(t5cSO)m}jg1XruQSe%6JM8}Y?#HHkk=0ooz zwgDeznGi1O4ADsrodweYHbReK!7+?#h29+?o;^FtG>ZL#H1{Z-bOED9(m<}>{)M7% zZM?b}$Pv)tlTgOR45ExV`=jy>=ANmKnvA?a*H&j<2Oa`VH1T^Z>~-;qum{T@vWf|1 ze!+O9i^Xkxwd)UCwKW!{C1##qnWFXL?i8|Xrwd9?(3736rg^c@66+7U57j?LEKEe( zx4i2@Q=pFt1Wr5jpJjb%UH>7q|HPn+DN1DL#kG*G=$ulqFa>kVlTK!jV;5Pxj)4;H z-l5^iFWsMNf=YqEzw&hz1$;~u9>uvm8SAwXGN^~!5md-w=T@7p#wL<)Qy`_i6^_^b+>?e^yO}% zf}M3~4EJ=?r(=O$8$uye9VxM(8u0>9_UB@v>58c158*b|O{~(ww~CEmn~Ek_o@H^} zX6t2oS%z4to#5cl*(9B9_?MIGqifQDvN^RMqkpQYtkBL;0WpC;f7JvCLFJx7vCW_dyu;<+(@Tm;pJYSHbwM<-Vv)e!24fFq^=L5!DkDu_!tZ-6alv}WU!IgQ_Nx0kJL68{v{VVY+e5kw3D!9sJ z6WEu?35!Ui5%h%UX5p%+Dh!Oo1wV9UI;9VLTFEK!#+jHE6!KQiGEF0dYb2ZOokRo3 z9>-iO4MH1Bt!mFsNoojW_{{dblkLL; z5kqN+5nGg=W-g;cLTlj$`BPR$_2oWPL~q9g9odB8SO3Po7uPOa4<|AII4@Zr_nihs zR{>c0L*=-}gdM-fq;W6X5bH+_%Nd^wX3pdR_Y6m}1kP4L2dw_e`Yw>f^j&rQVj(z52dlm!oD-t@YGRZfG-}H!rKZDS zX(4kZCr2!UhJrz}!TxM$>M67`r?;r!QMaV7F>^J;tqiHG$r@-y{|QVD^B zcZOs7MZ=qE4cyI(`Li7kCvn`uC6*|C=2x_h1EUBm4k|fYe5I!Pl%&G)qeI2K!d%(l zsL-NrKmgoRui#(6y17UR`W5fEecNn>H+VOb@To+DCh38y<&oO16SQHa=7;y+<`o>* z!HUq^{z+OiW^azFaJ}@1vn|2=PFm6o&9xw2?LaP~{O$|&YNlK8wEE$T%Wl*VxO~@c zz4DMF<9BaWc+#SNc3TjDE$$5Mss!T_5^HOB%A;IcTx>fKYad!q!nfAkw(Bi;3YY!- z5+uBKwy8_cykh(@T64!vV1^R2&Iysg`m;T6ewzOU>vGW>@kFZm3u zcK?4&!o#W}|0VBD+2ZG9HT9u`%(p-E%AF!^ZIt zlz45u)@KYj08aFJyHU|TlGLJk`E=ov+4>>IXF2fU8!p(pe`kq5AqMzsA+%a! z=aka;?M0HF!!{>!FP;H#=xjZRp_jtg=;_-%Haa<=b4DNyh!ZZS?M?PCDM(Rg9p_nv zXLibKx2wRZUCM#XyOOa#1U2#6_;LYwJQIIvQvV&>YBw*=k6ko0|NG$_-@Lr{`Y(Fv z--+jV^XlKRzil`Feg=@YtP^Tqb}`+ZMrgNe(v4sC$=sbm;#;;KYhMkS+?~V6TXrSJ zuf}}ter1uj?yG2DPo>`dF4As2G#J00Yrgwa72kSnqkXfuba#OoZ$0rCzgfMx``ba@ zb{ejIyUB#T9MEn%hmGIv%3!Z1;@f@~YX3Vl!Cqs=+b$Z%|DE_?Z`R4%FZ;Fc&Qr0s z``Yc-^W%3H&DejZ@$I*J+SuzQEcWhly#4O)IQH%aiv`dJ;7A7G83qt|27urJM5q7~ zOaR$s00n&@rDPzrVIZw%AU!;g5f#Xc31qnpWTOvamki=G4C3|-;(-V8p@IZ3K|+^7 z!t}wSlEF_6gT+0ACE>x+sNmkR%K6!@O!o%!QVUC!v&zE7&^xa9>Qg|7G}nb~Z>dBE&Ev%rhba9ub9#h`~g}T}D9YBNHVflMN%Go{?~P zBoY;whKbC$jLf3PM&(FGYD&&uA1p8jXr> z!9=%RMt9K1bVH@#tgt?hEOphn3%E4meBrrB5FfSyqTqUqEB(h5-avCLa zdnNK968V}E1r`#8t`dbAl0>DFo*E^IdnHLClBAoGo-f>YW|HI>lJC{!N=C`bUdgJ6 zWc4O&vgSha>#JlPh7?_?6g{I9eXkTlM2c}!is?d%`BjPq1N4Iw)Y=I8$qQWvrO)#WSNu|#irO$b# zV-V?!P3g-E>8n@i>kJv2QW@Ju8TS{%eMH7#Q^xT^#>rL2Jq10N%KUAF&Ajl+yhLPP zH)Y-~WZqq60vNM!q_gmhvk1JiK*%g2bQZ~C7TLXiiZPo~I-A-!o7Ov<9+}OE&SqZB zX1VW2Fy^pJ=WrV5aC_(QAanT8IRcA0Lf1LMjJcxHxlfIA#l3SSk-5_7+~N#$O3zGf#YJq=j#Gz#=@`Cg|5bh?%su-$U<*)q3>d$|8-#iV^NTFQHXI- zn0HYGvM35&6th?qcU=TwEKZazPBt!vdKbfy#Yl8<+G26WHMTg5u_Q;jB+s~{z`LXf zSyF;7DO)V5xGt$;EUl3)turod@GeCmOVQ}kmc`Px>(UO!vM%Ye9^~6d`h}}#<+aWyBvcoUqqKLFP5)fm#;HcY)V&b8&~XlSL`Dz4$&3Iixnr= z6{n1q=hBtGjVmv_D=(3i*XYXI#mc+uN&r(8j!YGvNfm)l6)3fesJV({sfz5Tih`+{ zQl^^Pq?*>Jnm)CfvALRgshZ`cnvJQ3U8aW9q=wt4h9|X#uenBGsYd9gMwqEqRHpW+ zNv*g~tz>GgbaU!awQ@{#3Nm#{CUwd_b*ib@I`!r{&8526H+4Ep^|~_kdM5S$ zb~qf7xa?B6I24K89pFcixC4Mhh7KZSKqAisuB`A|8ZV#%1)dD#6ZHW|nF3F7J%PFk z_eE8M%zDCpcLLQ6k|d5lGR*WQU_b(WFe#MXbpz?{)e$ffs!oaLjbdC(b_XZcySyp`{sv` z<`!=ma(kcV&TVk^Qo|&Flk6OXx~e&87~6W{lOVa?*3RE_B$Kej-;!XWzJ7ypCT^@J zZj!S|Pzr9xH^l>ufU*3|B@WHEM;+5gL~Amgkd8*0mUhZPs|UWF509x>(^^Q=(DPLd zAQCb;KxdFf6Ofs6VF|);iV}|Lc)Z@4C)2j>)17}rBqh*DjA-2Sv3QtfWI~v*{ngNk z|LqKacUu98y++RiJDjHis2$=Sc>&rk4LcH}2A#5Y=8^WgvkqCg=CWvR#td(6jZg%SGW)Sq=SH?u?C3 z)Y(FNhe(M<=8)gc(K-N^o~4P$GcaExO($19UA_J=PZNjF0`NEJ%|sl%1?_YSaVLSQ zLZ^Jy$Nz2$S8y~F^Db7hNPu|M>4L(W6?oHSpc2;Y49%-^Y3GW!98#> zhgD6uPyqD5f?}kEIK4nC}QCW;JKD2+VBh zjB4Fk5U?l4i}(-5KyM~AKU|p87}-DG8!nG#)y}xy>>HF)IC+tX^W!(`qvTBO_B;D= zyzOX$!HlJYf25el>j8Lev!Iz zKfgI-+u)X(cPCk|OEl4bd{z|(V0g}uOwj(0cNeaAmpcrU^-jr-vlemI4`)r}-AfaN z7Int*)@+(Zzu0^RjBzF4vkerN#wf&I29IRbjv-O@V2T%mP{Fg&fyZ)L%1D60l*g;5D9LZxwfU2@{@eAdU zSJ;@-$gQQ?{uNL)$sO=9JPulesqAE4QL;6TBz#_ zY?MNk6IL>nx;tmCT<+^f-hJD?6%dNI>n-7>-g$#N^KGn(yi|kevm%b}a^7F_**EdH zG*Tm?V&xUQ^HZi8I|c;@Rs=jZLjSaC%(l>pYCfwCizVMa=rs@hbgITyCK)3C{oa2W zax)XX{*dd}G9GA^H%Md3WDim3)UGoToq2~P6^Z_}7|ve$kK^?znE2m75I6E;u#*52 z8?e3M3BY*b;S?Y1D!Y!%4>NZB@>Gi|T2+C?*m!xy=ZrXG9-Xw@98@5S_njBj3ZO-& zFzx7-9BbP|ymzDSgd_8JaRg%6rqhTt`&2xi%V(SEI>1L#Ed2n{at3p}h*uhx#;4&u zLN8oCDfX;V-Rw5DxSdi3bsKih1^4DIPw2=UX3*^wDb`3@e3O_0F#HNn5k6E5w6#jd zeK4THb^S)lRdbszzqk9yFVs@o(VD$YSyg8u6sSRMuEGN;ROk}MhQy`852)3Kc)10V zlJqth5+o9hH+13>A;@!myCE^B9SF0L2CqjGnr4&?RxFbCsJ2%@qe>(8qpLjTvp(M= zaY5_!?fj>&s&lHdb(8*5?S@r=o9JfGDH*e&gx_3L1Qm*%r!^llS_M;Ek5SmkQ3E8j z!&U8xDBq=&S((NB)g)K7NIoRlf9DydB6;#AlL+vUZ~SU>3qFxFhsQ0R!#feBn`33@ zvMcteNAt67M>_kqDw(1PW%~$a&K=*rj6}feX!KJk8ptZ_Hm6}`n`~d@i`R@Id_&cF zmigq~_2O5o!+jS41k~p}s z#tu@C91u*ZVlg{fX%p4ePW}y{2{{)2b*SI#?M}h34pZ_fTmaxbksUVKyXZ17*1V;J z3H&Q_eDJ`yyN#+kFy{T6RPUfMvScPc()=%isa1U?UmFGl@!rIyX7%r0u#({;s3J@C zk;PeM20t+PoWpahq~cBM`22R8-e#0J{HRCxN%lAU9UsgIE4EwNJ-dDCQLBBeKVt<( zjjv6jKvVM8mezT5Km4%||sZt$G_VVj*Up~ucS-#Tg{bOZ~C$C z7mm-qTr&$vEcWf^A9{RmvAP5pjzo2BBVgy7s?+y=yuR|J!N)7YCXuaETE9vI9oGgC z*F(dyzp|QdcZLQU+wa(GqjKdBJZR76P#MX=kFmtGLVXNW-!7JLtz(H*x>fv-1T_l4 zw+Xr&H!}qXZVSH5k@<1(<+@fg8sffvo1foi1lQLaXPNgEx#JcMWlCL}h)6$Q&V1p& zbZ!4PZHY;2V310eKz*Qc8Z(k=cOv6Z30#qboEi03to%@T4|DF8GT9(!!ql)Ho2dp% z2U}WmRFN}IEtfNf)}NpVUy^qg!CvLGnzKZ4_`-UIu)@i+`F=sjM!NR2_T;L3Udwp7ZsyzB7ZrlrDG%9e z?)1*r)x+hhbNR_3Oa85qnZ5v;J(q@84$jz+N}gkP^4A*ft9^x)56+_h6w$uB^ME=q zo>bQVoquG@J@B~gS%I}dn0!(boi`cPs`f5j<_OE|HNsN8h>952Zxxv?o zHdDi&2Y=Rl%jVBL^nK!Vo+|O8TE)DBZt=whidB1@MGUAhzxuShow;2*&OI{Kw8_!n zci+o%zl>Cq`F2{9f)W;WT zJKO?u{*@b|OY*=un*gRMF0?zZw7z@a`3r}~AErWGh}XY;v0{8W2>CpP)XbifML3I1 zfxEoQYeo-{g8Nr2P;?OXxuM7RCHt4demOmfuL_>@K*+sjD&$dj(7&ng&uMH{_PC@9 ze0?7)?BF}b{0^dB_wv@~le-Lg@5zc#34@*o5d4;3%Xaty4g6xOck}mM=C(l$;rpOZ zUOaBxlx%@Mst=v^!WAcdDBv_tJl_L&Kt`~y5RgBks&AUR0WL-lf57V#J2BcIayEe# z@A4TNFhV;dOm`;41Ns%e@E(wOwekeh6})r8DC0eTS7rOKIW&^sn{%L~5Lh+9dosd| zPT4!(_w7D?GAxkcZ;-&p@AMvAm2hkfWsn4geuOr4hz5Po-^Pg5{_nIHkBo488>msV zk|URDTxUY8)gMuk^_a#1f5A^-rXCSYun2vSCypKHPfx7neqeS_NCL=gt0;ad@P0Uj zp#k$I2p+X15i9KGnQiq=Do^8gHt0)$H%99bhYCZe?>)9TD$+6$ zjZpPU;IeyfaTd?NV7#zrpla(s@i(rG-h(pS6Ske8gL<`&O39~#&blN!*S#Bu1LzvR zpa)?3S2!TGD5Bz50i3}FHP~bYONXuB!IMR>w1oQ>4eY1uYY(rebJwI@j?lM#O!Na# zfG~9aTjG$7t1HUy%RBZnRYb=FigyTv7FgcG?sc`>*B1xUw`b61UIjS>lJ_dY#>jP# zFqO`T_G%ssFH%X3gb}g5?HNEu*daUYd~bP>7${PKA*IM8sxLe4o_09Gpcx&>k6rl9 z)!=Sdh}%X;XcJt2AYD}VtzY8;PVd+9Ov9oH~Bl~Garq+o17edj7@$(G9<2?zsZ(U zGGwF~|10l>$v-88ln)xv*uAD?2yhw<6QK5wYVso4&XNq(*`RyPs2=T6lIwMyZLk=r zbDr-rYuAC1y@VAxO6B69E>wD0x;<0|2fbuvEu&pDHhCtG|;rdc4b7mT=hiqkk`$xu{0{9y0C4#KClGo6%8KboNgrYrb2@ zbMt476P6c9N9R^2j6-Wh9D--VzAECCbum`d>6M7c)b{a4++!kZlyJXyomh45pnX*x zI8W%PfJ#G*^|7l%Nm5DStKPrmE0P7d5oNM6b*C3x5VZ!E&Z^S|?Hs!5C&L^jsr9en zSa)D_0ahJp`k^G=4h1}luqX|BO^hOTX!wn;E1|E{9g5Y_`2LEq4Bk+nlT@wPllArn zlDGufu(cXOCU~7SB2DOxOO!HF%enp*-l%`yFG6d7tu2s2Yj@QH9n!C1jm1U^IRP1s zmf?-V6~>3P2rz>~G~ATI8Y_|6R+64)_?ovzt$Ydo#s@ZwS3AzsfG5=&me7o&L1Zmi zM6D7j&t1QTZrxyPGxTICPX$Ey1(PUAkYN=xO#0MbGxS3^f@)?wm0=bA3mhB z{xJTgxHUw=YQO;ZbNSA*u6DrLns0&f~81zHL)GqH7+8n4_V~;9f(S zUY28a^@z@Y&Ek0dY4X*zqc;q^4n3n38)rR5Ol9JB-8skI z&1i>&kw(8^AFt=bCpJD%d!m!v;;-uUUkz%mmeRGD%jTMgEEOug+F4e7Kq5hOR?NU{5Y5FkmvEtc6CyK)KKJBy2#`+a zY&DI0?yIRahS=|Q9PSifn(}okR;D3&U_Yb%t&i%snEua*o>?<4$*dy0jkI)H1^!lO zznX+9%2H{ZL~98AX6Ema)#aNWEwixMk~vc=pGSUk_Do|5H`sw+=M%hnl5C3@qH5nr zALvTZEV&P5v>=9hbAHOIqR#a^-|1sq!KI#rX3P4)mgaZFz-%?s%%C&* zq~}I>r(^YJme(>~y{??IehZ>94I^5tA%Z?f4luR+$^|X$u7~L=62w1a`#p$TJ})M) zJ2AQWtUgK{8@L_luNhg^>19lvU%uufr&#}Sr5*6NMnr0Hxmb2s#jC1q* zt?KWQ&CSj1p7J4?^x?Oro0vS{lGz&b#;3N)*HM1rxZa3~(Lp2IS%nvzfV)+Po*|)s zT@%2KB7l~9MmfFQn@!IhnxWCamL0alF+bDYC&An9rCaPhRK4qZNw(X$3*+Rx)6`_u z&MzJd`4fR-Uoz}80bBRHwzhiH+r5z+V*eyQ8SRgDee!c$s*M0Th|sTU4)mOIJ@GFI z9SIE*DhDS@8pIsX`Fno2USxd}-g+D-B13Yxv4?5cb@Z?Nd~yg0+GxG2eWhWHmbF4v zko#9G^NbxBR&WlJ99y%S7r)rA=b^Q1OQ!4`-HgR9Dv#C3^Zm$B*v@B3fE=ubK2k4= z+rM2o+`J>p^Q&Q=>o|U0W7)d@^^vucXtRjP>`!y5-xC1*QvohbD#D^(*VW#I6WXbV zHGj;`zdOr_LYqjisw|n8e6gi9je7Q8l^jDaZYCJWD|0}{)wh&GX9xQ zHSs5b^kS&stoJzJ*%O*3z26_!eu@rn^r`kZk7GgU#H~@R6F68(5AvV%JM-k3j4b{a z7l>b(D;Lku9Zp{_qo4VGYrjMs3dWC<{i+~ZcuIp$dzmiTZ*KGlaeVch?sxY48#@;u zNPhA57Pe(3Y~A*Q{>{m<`#6ZPlwcHa!FKB`wALeZ-SG10f%Cz^L}KyjHhICd_qe0& z#dY8NjG6UkHRGUNnXYlx2I_dgJ+Wck#j-|MqVuh{^WI z?@f$Aw*OH(M&JVC6No7IW1+BcA^3j*+t?>Uxw(A!#M$t~GDt;vB0eb%J%0mB$^Vr* z>q+O~L+Aeo*kbd>8tJLYiom_4z)B)QI>Gt1^$q9<6&^UGeX;6rv4*;yk3|r<`QO2_ zPAXLUcp8{Q)fpj3I>n~f-5(c#YjVr3ZmlPb8!X>8XXpE>BR!Dx>`seWttRh2clMK1 z05z2rMM6*@Lcv*K8Tgs^n?Jwd*rJd-Q?1jlh*RiTu4)pWnKxMR1ysviTx;XWR#k1#bDtG&;g zX;#~VYWC%rW@K+{j1@SNZoxA%p9DCmVr?Rirs8x=hQIsrQKi0>Ho^RvPjAL>MxH}S|)?H0=86M0DtNa5mz@ntBS zd+8Vdl{d&LYRNIOCSq9;WsgKN>?2C?THfx9u_#%PRm4mY(0H}#mvVl^K;7m97(g=o zp`Lbo3%E^FC3ZPb<@u@5xdtYygh&zk{VFkO>G4L*F{;egJe{MHcFGd?4`thgrfqe= z+pzR@u!Lh#$7z>zGTzDrF^2|Od+!%90_)>yS6mh5Gouqn3z2HpJ=*+8-bRx20g7nl zbNCM0@!Mm5F(xXUqAa&x;|-w#Pe&A17zHL&>1sqY`oycY($rM`iB3}7V7=;QNcWaq z^D005aP!r}+CQ`6-nywr7@JTOmaeD&xbPK;elFfy-$J@Qm5<43m?pWl`Mbv1C+k`` zg0L4~Z+KO_vdUr}dATJ=L{%%N{ z7VqdNq9L>wu>%=!O=rBKxjs1lxVRYl(|qKBdGkfU>440!w~VT^iubu`ShKv%j3?p0 zKSIG|gCi%QA+nFBv@63j1XbBQAg`zOK#*S3Q2z zv;9uu5qF3-k$Mib3M!+n=j3(k6yh?iK=F^}Su{o_yd}UUItX(bV47@5-8rB<;1vD& zRTE6kl$$H$v^V0FeJ;y5VGkzRh3$P3p+etYIziWm_y|V>96S{CE%4ms7scAcS=#{> z&hx}ix&eUHtpSxWp~NY8-jT4{5RerAOQz_mFp)}h@>0-Jw?v%@d_kAlbL?@=5*#Aj(hs@H!PXu8Y6|9e4Pv#oZEEr zX%DVQk(WZ~kd?@lmdV$Enw;6$k4>~ABcK21EWCfpyN;ejnWRKqN8osp z&QeHlA;(uMvm4Sgxo7wESI#fegi`RDK#9G$Z>A`Q-`VnIBTe^Llxoo{PMbZC1EGi1 zCd+JP^<^mugXgvZ$v2wi|ZBh9EfJ>M$`s`)R@N;e+d{W_#5GPwRlG-rY*x&r& zGLE%}j+(}VBfLFR-vD4(*C!g~60Uj11=78gKGt8=rdX|SqyIurJ3mUjR*@@<$+S~R z?O%G8z`$tU&EBMQG5RFw&*tO>QOq-0GNCEVQq%;dzKQ?lYZ3J=PAKVFK+THC2kHO- zje)+sU=;uwex~)gbD`<0coKk~7S>{_KM=+o4G3udP+8p3<#eaaO5Q43#ciyN8&KTG zE=4MkYDnk1TLUYP0g5#@a?}5ivxW6dYj@iMI(|guYWSHyxd?(LSBS0~uLlr{<>@7* zWR%-juT7^7&$ix%e(bqL>DO|watQ_mC(2T|3(9EKiw_!H(XH5G+3|rn;@ikx4gai0 z>ss;NMytC0#0ZUN5b?k7=^<|pKe^1x*EC2gCt{uYmgm=gk)?U9_tZX-XD~NX)2|69 zJXJP8(hqQcZcx{)GbR(>XzWw5QIwq6ndR)AxeXi4%e8m*w9sZ79n`KT{YwArh7l+W zE&f9q_lm#-(@p=m-E9^ly=D6LszU0hYm`{mB($FVrC7s_uXENnS5@`6`)01!nI(OS z>Y<+Z-r>KA5bN6I6lT;5O2{X%56lOy;?k2l`MVpB{w;o>D|G{)QB?b?x(B{)N|&b9 z6}TK7`*Zxm(Xz2 zJfRqmq2?dEQJ07Ay5Sd9+15kv3~pz+wD+#CsI14)X(yTCkN1C}?;KqRl|+A~U1T3{ z>Ze5Usr<}n>zcN~FImVaV|mYhsC{?&M&sKV{L8oiD}L|6UCR@k7WSzDzZWw` zeXG`}Zq=5QyK_JL zMSJ*>19Z1G-02N`N%sSu>H9lB@}8RaqwMfrWMij+QT;3=$`5DeO*CiOce`vLW54fY zaMC#%c+z-!ih$@zXgKSrI0^TO4B35OV#qJ(0;MiRMhOA6+Z3V=M$GuW3YMUx3#-9X zV?Ghzk^n!-V9?Vd|D*l@++QIqwaQ7=SW-RxU^!cFp|B4YAfg28(2M)ewF*dB<;9Bw z{8=61V(V*<5q@OLSV#S7(=F691au1xbiV|cMv%v*kkEDTM(KpP(UV|cUljEtPBz2q z9`IB1M6?EI`gwjgw)KM!03bYMtq&re&_`PCfk*)Xm6ycAg%7eWpXf?5^R9D_1-KYS zgs4e+qqA^wMI!%B*uUr__O*?94D}z`ce@`SZoSlS{2O*iKq7A#9WLxt42vo0jB<|% zPj@C_g+@z$i(HQ|E1rv8nGeZ<$3`fHYV<|UM+hQRW1*g8inig3bVPJ-0tSm*AgAW( zgxcTEahNj~f}V)l||!2lpN2&T=7C~*!kiHLh|39#?6Qg4XlH;O@AB&u$Q zHO(h9I|CCv5+efwWh2E@B*8|J;0MkCLc-v(@TA(Jq>>^Ck4I3jD(&k9#aM}iF1aL; zMi3a1JP3~>I!#bAV&G+q&UPkR5=%6TfMu$}?j1o|dw$_FP4i80-YGf$5AAuEJTs_!-=htpFAPKbD%6EsBy6(9wY(q?D6E| zRP#Yz0tB&;j^ocFEClI^w3G~xEJE&12frDND>wWM?MP7vzc{1gAF%_Uct-mir0}VR z&w6=P)`5BSqk67jdPY9G;b{y#$gL|d!8tOiIGhpTr!WaPiUd)zDFg2x%E7CpQp|e5 zLs#(Yq9D77jAjnyBAckuD@Y8))2s;`$Zg$OK%|t2$f|Ptu?`!o3e@)kA4L&aY%C{HDtkBCu{P}UJms68csHdGlcmIMYA%h-^gKZ;Mof2%2 z7Mo3wEqNVqMV=|`^|pd360)DcF=eVS@&u}9%i;YVgc{eeV5SzL=C1CgLJiqMPU zBFp4l{D@*pk4!U#;>EW%zvfG5?la@bvod+JLJ(Q6*}=rQ)PMG|&clqZ*h-S0iPeL= zOUy#1*Nh!IB_Zj4FTG0gru4)_3I~D7(crvnwkX}!GOiW|(vj?@#R5A2qP#Q^om~2) zRbi%A9texPB;Bu%vJ@TxRJn&$4@Y%*f$%&*xh-Yvx}Z1UcNcm(C0gZ?2>VEIZe>yo zpeD!C!gDxX+?c%#aPC|&0^jl~RQ`}UN0|&438j-L(zh-e94ZX2j;p*c(JC$Tp)^{q zu6)y2j$x2kx0q;|?7dZ5C5ZJD@3$Z9CIW-Tmgq86v{pZ_c!F66?0!AJ$NCC3^QyTL z04KYZhdMwskxKr9;xD?;r?O{L7x0S({hAku$GR-;K!?g&T7M@9Ovy+{$48c1%SK$V z)9QNFISL$QM*GI%*7BOQ_0PS_Q2-gqVh&@^jMv}Mgl zt0W3|(P!s4BB~r`_!AggShj>iy9SobPtjm=faOHiwjJD#6$r4zZe1Iy!= z$mDylIc|mY9=;7PwJv&i5eoeJQL$=HzFsFhZZ;A$ZknX>kkU2+nptXoTh`g-mb&`T z@d@<@<5DMg1Rz_eS>v#AnAQ9*dB=%j<8HW34qSkhu3T85Y12QilA|{9PvheQ{|ZMg zKdcysl6Ew*j%2+(%>%Z7morn=LNL-IVN>A+LwMFke&y(q5AUSH;avih3UOuyu{X4+ zwL3&~g-axpiB`8@gLxks1c#%B_j=xlHNe0KVNP}p&R%Bho-XY6o;yV9>o%p#R(xv9 z?uCq0uMS)AQycMUOrBFIi+;bz(SQTBV?=Ae&BsdMLV0b|a}5DJ)&cOL#jX2@ZN z0Cj&3LFYNfV5djF<}$2sB)OBW?~5f++9!#Rv#Z<6On14xUa^bTpe|}p89Ley^|84> z?EWr>Ku9#ilnYQI3Z@qa+cM}l@8IT!y~H@xX$XX0CLv9GSIMJrw2z0?ee>IJYY(61 z=k}e9PoAt^U-BVV@>n15z6jjm=iFBXR3ip-7xc#n_R!0cmBh{*sO zbm)~>p9D3|D}!p|qwx#Ev7St5SowI@K>p2P{>?}!$#P-OVos}9cgI1aC$)DcPD{7i z2yWEVq{%BM(5s0CS)5Uy>io8dEF6?<1%$W36!5T+Kf(($vpo+8IhUSpdKjk?Q}q&eVE=JQ2zQ#rr(Vy;XpL@~TbaJQuhV5YgnA@07-Omi8ez}V{j7_9L*I<+of2UZ?@YCpE-Q_uV#u^!6I z@di&*XdfY?9(4D(-TR^0I;5CY|#7 zyLX#81q-aLUPbr6l~$WB+Y9j@S1$jq(U~O58>eHXWB<+ER4`_(e5}=?=plU0|KHL! z<(MDscfl_-^dWtux^K4qUc( zU*!P!Mr;cUUGuH^odAchS6PJ@vwW=jj^X+lzx%~EVh(1bCOGmjqm-<6hog3w3^sBA z3r;5+enMNd|2Dv@K$!7CaW>~B%|5r@%W9j=nxn;=@zLK#>y5~^W4Rfd&P*SXl-5-d zlZA4;{h0*r)mfuKG`4y>l^Xt$uQe)L(TH(Q`>aCR;|k(spA^c+CO0pmVJP<=(x=Pk z9}*h1f%9%u9H;el^oglGP>5d~)$sHRiV_k1`%m_M3D-%s%3iK<8>ZjW-qgvd;)zv0 zf#+k`z8>Lrj>_4benjBoaM;T5`-<~@U@3WJK8Y%;5Beyq^1y=oAOkRu&oi&(+mI#E zI+b~rE7r+ZdBG9God330&VC1B95OgQkcZf*(>v4$oq$w-EuCCqC?9?B<3h>hd0eF= z4j5d(yYvt_%@ExtdN31i_%t-)a<0pO1uVWFCb&Jy_^HnCj5j3NhnG#Cuatx0pAIyqy z9sPNWW=(?uUDmC>x^_Fv|m>pZ2m{a<15Uk zUuyJ0IfPTb;{7s)xv_{P4+)|#=kqNy;7iM&=V`|W&DgBdv#IH)H+EXC{MGw1YzxAeDSoVK?$#P_Mn;ca0MKUEg5y3*H-3=qb)GdM|22cK&4ijTv!>`S(SR4h4tals8-NHoe*6ciXnf$!Oku4Y2e3IgD zDir9uTC0%NepXmfdEdFZ?R)f3D-{X_WBe#${$n2_+m9p~VJ&eN&obmu&_^M(#0B<=`SWj??x^ zyymZ*%X*RE;+;85di0s}x=p*e$27(c5Q`Y>>rm~2gKSqZ<=HEa;Cofn^S93IR!Gj& znjX3^&W)xD^z^(cG*oYn*u9At<-HyE4^+iD5w@4(doUEs+SzFDDBeSB%5B#XYU=P0 zN)gVRgF=GGSE&=PJ0O@-{T9lFygIvw4rLcgHElFzS;xQ3Q^b?~K5;nDBZ7@Z&tE;T zy}4Y9?prZ>%NS;Jv+CpbwQ8D!0k&?@Ol`Gk>oe;3^d+$Z42wjEyYAKPaJuSMHTx^Ef* zML5dW?$3ufKp!IBXox8uFNyiLwHQR!emK&2x#~32&vN?rR@oZsZkj-%Yy2#tH|sk~ zb<8+qg)5Sl0F&C^;py-GD%^aBt;?XyQddj+*p^xc20-@<)(9byhdHTNWH=K2cYeD!m<=& zXoA)mg{pgP9aU2z_BL7LhQ~LHash1e+xH~FLoy7KvYY0S!s0Ar_N^MuU|nVqkB7V? z&RU|idEbD~A7)`~+l*5j%ikDhZD z#$Cy*J9VmLbs{cYcGZ+J-slPe!tc^~;uMauKWd}Qf-hMfHwI@ae;xv)oER$vtfgl4 zP6#Eo%UDdqm8F|=^Te*o42ek@R}fnHJyZv;Ecd{`2+QNF zv-GhwAdJ&!m%MHJ&0(=?{$*)0f&?uG9+H9>HOBbnTqj(PB_S%q&##BhbUc2F;`A_2 z9Z%BmGhlCfOYi+(N}=|>Lsrc^Q1rI_ybA^ESpW-EOd;Ysx@ceJ8v=kn*jqQ8-N(@) z;DJAy_O_Q5x17>Tss&e4 zS_jNGkNn5)?uOJz^&l?0?OuVehFjH45}Rxrz3(eq)m&?A@j-1H(=nr#zLb7JM?+YN z^Hiv*;J-U*J0ibvhHTy71^2tSV8$sAH@y0Blczw1wIt0ch`rgibbG)r=KE=fK8x%X z_HRX!_dg$!1YBGXzy14i|LaY?5-O{S|9fuM5<>`P3I>7FlB=d?qMW zp~tSzYC&$ITmX^BH3$3nk};Kc02=yR^gf~AW}-_S5X4bk$x6SJ#=|0VqOq}Q{Mg?6 zVQCGosd-TO#5v<(c~7OOb$0$M5qN($C{M7g1;Wq%k8G)&C z7D)BD22ySAA)7c06@7euPc-+jsGLU_JZ_LrHV+6+oJV^6R4&t(9(RN$TPEBmE}ya=9(N`1Tc^TQuJWn=?#ZdP{!E#;Di-~_ zuNKofQ=)QRX7Kkwcd~V^Y2v!l`|qI%ej9R7<>tRh;r}Lu|C<#4Z&LXGN>Z5r9?0(> z&g_rMW)jXk^+}8XEm@cN9RZrSS~v>=RTKaa=dFmhL_wJ<|8R!-lRcc@5g-Am6eXyb z0Ed^q0KAK>kcq930)z`WR(vEtLxL-h41`K$Ostx#^V-1;Now6vJ#F8S94TRNEpGLj$Wn?3> zO|`*8y`BNKj0pq}yVfkS;a|F05IGmoLlZf?X#W!muvDwFROO6q z;@+$!NYxl%P^rVwB6V1!%hAB|P!*C&5<=BV!`C9M2%%8Jk6LQU7i}b3YUn4d+oY>0 z_pb8c0OcDrnJYGmVMF%N8frz`q}LjoBI`SsDuJ;T?cS|D@TOMpDvD8a&%0LBwze{O zZLm;Pvw`UNP8hoX^Vb!*ydikrosYzgkM&{9{x}AsPwk|UEpBqa6q`mt4p68!#DSx8 z$gxAo0GzZ`mCDpCt_T2)c78hSTutgYitRc|uTCxw>u+ntYwrk!bfIx}gZR+isWlLr zQ~@&U|BZHDEOk^Iwoa*|QIt2_7=$qs2wpFB<{Q*+Kh$Cxc1cC{mT}ZOkV5zkMZ4gw zsD?dD97bnt=4@j1J~Hj4k$v24J>nU?pQ!6TuJtlKw&`m1UoEwZ+SvID^$i~OT^ZEd zYa+^P{8I;{+uMvX5zLW2Z;tvB#Q=teBelh0 zW8d1NkA}^Bj3f-ZJ>}?&4I6#R+cTlvZFQ&G&^fnfv=0R%ji#_Wc&T;# z_C7JSclQ_$hc#=ZxwL>41%gKVe%V5h?Y*YUVJTX}-$uLIshj4M>VD!NW*!Gi4I6MJ zMs*bXsFo)_D78uM#m5=Z56{W!llYJ7{#Y)$EUgS%G(ovh9j%fJ%Imz>RIjoKs`gT zurP7Z68^V--SuuQ=+ICi+M}+W*|kd(hwu9Wn;#q zzV<(n%qyHsN%YO>GzfaK1o^{)P|gqPr6qXE2h=8Po%V;@vsZAgX4<9TiOSrRTSxlN=gpSn zetpYGM|Yrk^-$5QF9F)#S`a}ciSEa17=b}x-(PKdR6@7C^{~CtqII_@tT1{vlK3H7 z2xsHohAXZ5l;jT{&FwT+MD-4~oov9)TJ#FT7zx&nNNNK9c-CzcM_OA6Zevq;+>TgC5qYX&99KL?GEeBC z-6`qHOcuVX@@gy$82W>|`Or?xmAo*eK?y5aA{}5*)VH$z4=6&stfnc#fKtobOu=ue z=q4sRCK-(f2mEYwCjQ{t>rhkAhU|z<)9dZagDM1rHUfT~NHK_61zYC;7uEiqPsvl=O|9bD0O3TBKl*3qc@%Wh zRb*VLfQU&Uo9@TR!x0w@Ec`L*dCqLK7c9^?F#ZJk3+v@yd6Fv4UIzHs< z<*$uvMM%KgZ;#Wp8gJn|ZhvV8`Bejktv}DIrF3MV^hS$1bnx8bxF2;9Qv%^b)YjbO zb19SDw@H*o|4y5BqgCYI72{WlOG$Kfe10pit77;x5zv+Ey4RMhQ!%S1Y)iPeGXP*Rg71A4O;>y#thJzDU~59XEZhr z`Gi$VfLkvRX)oTrM7I)c=Kn;`O%8iChCVdc%g!#v1-MK7`!)zTkT>~CQ97S2AhB~Z z7V4&>zrO7;@Rp-B&g-}1OYCC}Y0ipWpQ6~v^WdGHia%Dww^W-{n1A|WzN|&CSxh$8{&@Gek z-zU;*_ztsdH)TNw?E5HA$(?>OLMiYv{Oiwev^EP3OAW7`iXY`u`{Y$sN2ED~sp;M0 zg(p5wokf#C(cQFLvYiPpbAJB zRT{kMsbFYNOd?di{w9(|_MdQ74n-8rouq;XUvynprE2L51*z*zf+g90x9l z=Gh&rPsF9{C1QN;>h`8g@0kaFCTD=dX<8_fg;jgPPg8FK;Enmx6 z!m%|bCT@#v#*gJjZInkvTq^HMZJrn(DaVu)JnAAt?7t8%8_t>2<=oqre+xT|T12rx zO}cU*Af<GpHT+3=?pBic zakD0*E}lG`SlsYmY>#pus?eX_Xfbk#RMDcl!I?z$u=mnCMm0|LMNwwiT+e5CIUP)k z>^9p_1k1!Ci~KOX1;kMsI=($R*R(BdN5V3euZ!G0*?w3^k)|N$U+}89e=v1(&Y!wF z$v|OW@9kA_8!XiJ7et+3gz$(8q4PL(yh(HHq&R0B?_{v^uBd|o+N*|+nQ9*bG=c^w zXQ{d{Xhr`CkZS~^IFSmEu|xu;M4LwRusvUy2cl$7w9mOg*)y$`E(46-mf$#q`kFo; zg$i0$<~vVqFte|7at_x%T8qpO(Y-QM_)hWAV;k}=%GnK5B{3Fby}~KWMGe(%sB6Kgj&8N~8Rs+g#GO-pIJC%XgLD`x7lLZ!+yJsM;Gv7Q4JF(wm z?vG0{igZkrq%ei9ChmMG*Mbs*&x87lI;=8b{&+eTpD;fVmQw5Jn3r1sX9N}gH9A?C zS`NE;cfYaLO!hP^c`{|YW9BY#>2nG^R}Z)`0k9K$$bIuYZ?uz z%NAP%Q&way>wd<|2r6fT4GN-00wD0?*t zc5JFzj2oK7Bpc@A=Fg5HesjJ-vnPDYaIhmugeL|~cjxBC=w0=1|WT~Zh;cwk=o zBQP|ySNEk$TKc>7>UsWBAgVjl1mrg9Il8oh-sgvyD} z>!fITe`0kaZ}G6#mF{x_h-<|qOymFYhz_=-a@8@JOb*(5iwW_6q z($z|N^8K5dSTh2uLF-Y?cdQ3l{xu=u;XNO_rYRq7Na!Ng4X)`zKgC z?fp@3S{jTb<4e@62B)nOq9!q0iD=qk&5dAIL{8}iF zL!_t#E%CKy%B)4cH$_m$jJV-_VehR}X*hot+iRh)JbWjP#Qg+kvZ!Z_AULmxLZ2Fq z(rv*~&Lq5elP`lxAs2lSDBWDB((J8w5bbWAE=#P27>=H$D1pc&*j$$A(Q{a^mp1cd za4*0p^oq8c^>R{+`fiHY^>gUiq+^_dB&}7HXOam81^Y}(v%Qk#!wa5-p^Z+t8Cs!G zt+bD=(d>cm&-Fyz)5Pn)<}pdaSr#HI@30)>;mR#(pB9S^N#aV}vZ(|^%NL)@5I|Tu zM91@>bU31j^3GH(F(J=iVQ!Hu!%A^6LQ!x(wqNgE?QUxRfz4HFIZRmRDy{N)UvHYC z(!2*=RLy_RUS-V==}33)KzG(*E%(1GB}!*WP+&j<#hY3uP3ix*z2a-OjuKw1Ry@zk zqpVro^)5>H_%r-osicf6y*z>SW3g1Er`C6!#mK*9hO-g1c-|0|i0mZ6kJ!84fTI3X zY5q6+xyEF5h8{Wmk)I{f-h7*Mt>mJvN!d8Q@v3- zq~ELdJt@nYw%79r+-IADuvAYi&nC31T9u)MM-BJC{_b9wWXp5f)CNyFhMVQWT1__h zbrLpY(&TX zK)se-zL94TidR;X>8W@J{Ai@zq9Up+AOdw9ETl_JHXQY0WN-7WNfT^qC(dZ=H!%PH z;L-|bu(%C02ri#XtCHof9y%;2Ig7bHXitF`n;tez!GaoE;sp$-n9u|Qm;9ii9VcZO z$0^NkzJT}B8uvITE-8VthmcODn7%)qEjKPTHZ03vCArxeYfP2;CjG57^4D5)2C-;FWdx!G~GnKm4{Pe8) zP6iE7AM#&3#__kqUKV%5Q|mR4^1djB{9Mu3UAChuXoYIB541}f142M<&)*ky~Wf+bu<7i zr%qL@oJrSIYA*>`{Q9pq7vGxiD!w(iMoMHUNm>hTy$n?Ksc)O=E>RLw4dH)t1Wyo% zrpNAuhSPEG_KZspxa{G6$c&8;X>SA%$2~$`i;d+dJX6nNgRe{a1z86#t=O$J`@$6m zD1#YzMS>G>hII0)ZN+Ffh5A>QhwfhRTq`vy_G|wDPa-*+%!`Q=*gpC|lN68i9?IKK z!Ts9llN&Wn1Iv@2wmodEhkG+p|MheyaY{?*S8_eJxMt>&L%}cPIL1fV!r4}`i4CO|#KG*p z>8W^cCH3Wcf`dl4jrSp=21v6x{DQF*_91VJr=Lj#Wd_PKZhz_h7Mcoe@o&qs77az# zdb}y}h(#*i5+Jk#m5L+mau(aiS=8hz` zM&kD`=7FB;hKu@0<-a!5*onTC@CliF1@!8B_ybd~U z0gqTztG+SA*5=R(cx<8KT^SZ$SP7g&9#cn`FTs^sf{4d+3|?eEC_Ecc8jj`*U8;H- zSDGJIm0qVx*~MVWPu;XR4kO=t{uP!G_&u%lyRXK(bEOuWWEstOM$V|~%Wwtp<8ZQ0 zhg*cthCyQu~#9t%e*X~$VIJ)9;!!1UO#VgTY4>$B{ zCkw__J*6g;$A^PEz-9?udh!#<iPy&9?UO|;K33xR zM4XWNvCQ}asLSzo-1e`nk=Yic-#;2ibdFP=6%%(64C9`0{x)!&IEgeqz=*qyi?kE#@SD$ot zq<&xY-CgkUTsnC0t{6K5gl9QFEKpO=Yra?2og`qJT3{HtE@eDJ^W##e>%3NypZH6p z9)7Ek1+1RC!TNGjz<&F@4^8ly=iEMAnb~lqiEd{UupV=?RS<^^%pvgRSr6^vSJJp8 zqA=SyA)hC>Hhaa9`1_f=&rdl$$T+>&m?AW}I}?9@GZs5ki+{eccQW`!5FUdgjemB4 z6+VJ`jSVO9$?ndJx!L)bXSnbXboNVb^?pEdZoczqOr5y?_hR=L&e-t7#CuS24o=ta z5Th?ZT(uXJzB-a!Oi8Evr!#-q9{Ka8P0p zoL( zRn4)1$WNXCAJ6k0*9cl{Qft31X|HvoIa2L;Iucgr_eYZR8;j*CnZbF9U9m{s z|5LH<`we}1U{OtmNes;%b2p0gXOg-yqtQk?IEKWEuNU}&RJ;yPg_~E)wMebS8j~_G zq|PxA4Q1f1hsO=i+Fz0$+b%m_3YdXzv|J`saT=mIMbE&-a7##i!^iBLjv z12@Cg#;4;YvIg}Nif5H!$;|~3oMM=$%dMF|un^%d^t<{CaRL`MpWVeFvMxiTc}b%0 z@OzW9eeQEgtL)qGM0_eC!8TpN#AmxF(a3XscX`NSn@WF;lfrbn}@3*ijaS{ z5&a6$c4LZXq*e}NTLWO!yY9>LgeWyLK$h)Z8Aa>2J_oi3>J%^ENA8m+ddV!hc8m8m zJdxAoL=DLmB~{U{#YRK5tzo{tb3;*R@0Fz)JrMF*-T6t9tn^u0GT;x%ImQPE@E^W< z>nNDz?98Ms2>~N(ZLA4DHs-9k_#A8uQX|?gL7(A_9%f zr@Sp@u?2}SPI+`D8hCek)>nNKNl+N?C3`+lNHBChn9}JTm4$mf!#e~FW8oX&)UkHb zYU7%9?hNS(S{@U+WUF;@*XK2zm`Y}y9FZXF*d5g(1!SnoIOtve;$EJ;nt?Jr9r1+D zeNrx-LVQH;w!pRGa+@W62-_Vt!yITBXLNOAPPZDggAIvmunTIWi~mSjVo8H9!?pKp>+B6X6(X=t7=g6ooWw-b~oWAsf{VD{E;E2ue9j}NeBLwlUQY7Do3SVr@ z{%UENu;97LVdBBAo}1yvp1qi`a`0U~XN#QMrV4vMDYuow^Zuyr-=WomA*NQY@#Sq* z$L#q?LT58+UKL@lAL!`w_ai|>J1m#KvOpSzW$(Sh)P%;7OVUWJX0|}bQ*SQ21LhW>RgF8y-_yF69UiX-TUGL=s{krU*9YJ=q9B_It~Wus(%vU@RE40c|q z9o@7kuwzNIU{_Tqlp_zI*Udj2EPy2`U?Io3f?m5nrDH5WGr{@nN;sch!#$;^KHig3 zEF%>9!Ige$YK2HAFHJ1FB7NOY^+J_sOo5uN#Ig{Y+b*QahSI?07LdbMcmAuORRO3- zY)bM(fnU;a{LY2s_dnJM+LG2Xz-mDm?hleT{CPt>W3`E_=fnf{#wbAJ4iecuFn;a* zPbXoq;QXIubFEtzu9QO0M+9pa2`{u#ysS{~Wz&p2-DWk%_LGL5tGdoH<26cfgQhNQ zu;9CKObG9BWaJoDg{Kd0M##t!g{;;P9>sz5lvrs~xq@xKrefu8 zeN52j?|j(|GCfQI4S`4cv)chedXj_&nR#Lb-m6O#bG4Z^)bENYz$jN{Wxyo~@A7U4 zAhm+8;+SWL$g%FH<|j`FDOR?|IGmqEW2nRkStf?K)O!h`9-?F_fcbgqC?&!M^< z?Od*z?(WOj*E1G#q{2k8t}Tv!q&8-mN@cCf3$>yO=O-Fw=OA3GykYdJF?I5|@YbO7xF-lX0Le}v0)*8XQ>X?uUt_3OXD|ip$Yn-+EuQ5Ip zM!Zq?51QUF)Vti?d=_80A(o$BlR7I<^!vOm)Q%bgyoxNR4y)n&8dVHLqt<-sv3kV) zic44sR+oSK5z{oj&0JaokT6;uFE!F;@yTqoiPs4ZwepN6kpP64!VB}|y+&m#rDrbd z8)`})aJ(4V>R-(UixL6m_(!8Sa=u|OU$jm0&+9Kh6{^_96lt?0sAl=`hRX5|zgQqu zYQtB9g+6KhiVj>-KDrzFC*gf!G)ncVGx^jfgYRh}V1A$g4oOEf_m0(ai<}$o6pSH3 zn99Xw{0^dpDVF|S;UN~IT#;!;;QYhE*43YlJy6|? zb2W2Uia(*xYG3#*sE+L;Ds~-H@=X9Rj;AA}We`Yp&a0+#OIjc@ix=A=rK;*}&^mUY zokIN*I0*9s2h26|_o53YyUBdAH;wvBb7na>U>3hTWys?}G|SxL@QL`h8&AP-{4EIi z;N&^hg~MOu;LWdgii|##MaR_tReWr0RrS>5YaN^nb$3;9wKD9Pzg>zMW}5cspZs?` ze<7{xOP(M58$j@r^{OSR3}%;ukUcpV0o907@>uhYknT4Qj%|W@2)w>(=CmBWJf7q;eBRg28J$aP1p*fb7~o>Ds9(*(==9pYV<` ztbz7W&>kIvb+`Ss*xkcp(EqiEN?NFG%Uj?0DU)Z#M@h8^n;b4_GdK&wp9>UlvSWpl z61-M#|0Y%VuE`R&@yGj8a29jOj@px7d9{zAg(0Xps9p`I!lGm%r-YqL@|VoF_a->{ z%$JH4%z*&lAVRkh>z6U$xJa7Re+;gD4LuH8Bao9-q| zk{ru6EQZuQ=tXlZiux01*d6R38+ey>G56kl8@}&G+i($>j(kz+5r2~Ca-xfExE|{y7xkqdOhxw{c=LjUGur^)`Nb|n1m?FH3dwwr%PO&Ld=Gxo(g6X22jdDRT|A=n^PI}T(T%c zdo7HKKrsebPhhsS&})ze3c$}8E27gGLbL#?C{6cyV_&0}P8go?yuu#Xlo4n4qm$y< zCPGPaVUxB%LYoG%d$tmr3d1DgcB~@AhP3iyeSfe!X5&Q|elhw{~-`EwTz@qvg$WtcX)D7i^6Lqo_hN#}||~Q-bgSc^#V2 zl(p<4M1ltdhasKfr3e^BFBzxBe^)l|qf}6!e5498L6tdzBSQ2k>~qW?!p&yW=|6;} z%?zpJx!r7;icQXA1mE57;shf2&9Mq_!httJ1^-~lWoogJj@cSkSk&QQau5Wln*vuW z?tA+LJ|<6}JoBRzDdIFMAS=sxy_ln_9fc+WX1y0Y(<)?9kO`MCqG<*FfE5($l}1&g z;QgU(6$~wPN%mkX!LJK$3rU1gBy*4GmkX0wgR>`_OL857eZ?i9)?&4gVxx4qlBwbn zENrm0%bGk4&x~me1am9P5D1MN_Kb7t1C=4+6E*u7CL6&qOVK$+2iPGM?{NjO~L^&4BP%`yh5e&gYS+FZXeJ!j*OZaesieU&HXc3gm`!()BA2YOPZu z@??>@WmCncQ~96EvPshy-TKv~n{mu+RYyGqe_E>lzJ(W8KZT8o zfWumg2Z~akeIJ&8(#;PbxH6flJyj*KWv=Yu;|KA027KOc=wia6f|7}X7YjOqftYO| zvBfBov)CZ7km9q<01q>2NvxNoQ?&ydW%AyBIXXF|xm8#eX;Hjs8<1pq zFYq>22pM*So^>$`c8xtHOrhnQ$^$#rLe>?mh{YSeGLp}^)S!(OE38}Te)w$k_*^nn zDLPW|MKq*_y_mYXk-i`$4FpFF*Rm)E??;FhMpQLfCIplfa4=MAdlu?FxExy5%Y~)| zVW;8hc|#0zXVYr;g0nQ+DtseDuv+D;YxBPhG=&os((qSj$<-TRHwR!p1;p7nC2d); zo&ihX{4ocOI*Z;1AnZ!7hTD5kH+wZ@2FR=|u5qc!5S(_XQ1NvX7P$ll&p8hsGTOL* z?`e&4JZOfQG`i_!1eCV0l(j|rhn7~??>eOlq}7%C=d3@34rp|$Y;+OA{W%WXSiCbv zK&>%|%>6PTNm7I3egh$A2aRCU!AQ>iS*Z=ls=(C!F?>i`Jr*HYU=dW-)^NoHGH!IF}r z0ydgYqp&R}o?Aw9gv#@1{USz7w?XSF9P}5`&3X@Nis%y^c(P{A?8u|)Q8nzhm$aK= z@9`0?kbeYo5mj^|JIt35UfwM~%0W|3+A58z)g_jq=t$4@AgvSBOq# zg6&YmNDmuynA|XuM6@%nt45<^^(b zc5~b}ye=QGMwX7AC2+9xm6X$nDh;m4dDAiA;n~*3hBa8V=Sz!?+%a|WLYv~A&!4Sb z@1fPYwsrkbs6s*TcU>mx!LXM`rBJEa}(183H>f#rwt!F34yw!3XI)`=SSRW-hKxMmLUNoFd* zhc*Z&?S(|k1gwn4C575(^n47244r^7$Jf|Sr>^&JkB!u}%GEFfB>q%!;Fgm?2VRSH zf1px6r%$^9=|Z)l*pD^^5#!oGQ1q9#;|@E>`G%|0D9E0i0m-Q#9+7 z$`4Lrn%NS%y8aNW4XfGE^r0M+E}N+F^R|4x$8ycgHm5SXUg5EQ@42}1dFAo(%odub zmic+=s&771g^1DJ?!2YDi5!y#d#qoID@kjdNTq-zM;dH5!zsn_5X4?EmGvxF?$1;> z9h@znr(aFYV3OJ5VmVE8$k-OyDdn#oP@>Dv$Gc=GOh4wYY0d=~%8BtLQ|a%ozPB zclS$6&w}8lA0Dm5Kz{NXb|?MqDOf9_N}hYM0)ck?0yP6qvzD575)T!ZW^(f*#>;z@ z!Msf!j%aRESeL#6;wQ%qS)$uLlbQAt`+F# z@bMLHsl-M<%98MLN#Qz*R#PEH?@Bg$){VK zJ9brJttM(OTo%{5)!=rF)h-g!Z2Ppjtvg&wv7!BrM|W5`ifU>)tCbFSX~1qhe{J|d zZUz*!uBu%p?lp>-*KfFWmb?*&5dUC^?z5H`@xX%r7FPZq?Dz`!S8h93;_X@2 z{h&PU3Ewi{TFh*Z`tuJ9_3UYh>2UAKn3JUBef-f8=K6qy?nyW8TwnCrad~MS_eFo+ zgiW^Hi_e_u3nP$hstDSaFK_qCa`%kK&#oSiPw~dh7k^!;9CB2#NNf-Va`g2^F660A zzRy{aSze5|Po%7(+rok7SYLej&E#81NcM8QQ>c;tFD=X-{A<6ol;#Akb{1y4QG7x-PKoS$u-WDUX zQg%tZ>h)y&U8N)4;okq(Qxcs050CM!Pt?7L=%)O?vvc8-gpQlmDpSjtKbfoGht7LS z#3j)9Ch0RS-|t)M&PRW2jQ`(>g{rD+3b4>QxMP~Q zi^(ukQc){V*;}FuxY4oF(u$$Yh2(4_2sjwOaiWNWc=%^f?ek3K{}b5$5BA>bs|~1q z+e`==q!hQ}?i7l<6?eB%pg5FLC|U{>cPF@80>RyaySrO)DJ?BdGrYfVX1=v%&798B z`#0=^z4!Cn*L|IUP|;fwR&dt4s!*tZ7O{7xm!Xg>7YZ6B4UW>(TK#Hs(D}c`LQ09r z!B||#&ErvKIujv7%-6kyodU6`_Uz63 z-j0Tb2K_P9#*fs}LyaF((`PW4?-_BJHz26;eZxNeKh(2o(>lEu#yiMt*>({Om8>aD zmiGk{n+Zm&wwozF*MhSWR@y7I|A>X&gUaWZ^-{voUB04umuypyX;NSR5?kO*=L4C4 zpHOqEzu@UF*M0UQXS#!)%l5Q+eTWUJmUHv5F5Z5&QJsU69I7u9JDvWAdVb3(P_?Q< zf#QdY{$5zQ{EP0tD_j+tcLq71zD2=#AAUbm&oD0t!cu*A%X*M_D)Pd$g6vq;1Q~P| zU@&(7X;$0k^na*l5+a~;tVmO=&4D(^@_R0oE+xC}(?XIyZ|81q*r5HvyI{sNd#hlO z0B?-vl>C<+)9acDa+k7_-oO}QNuxc}<`GYG^MBd@F$>X?B7gxwM-Y#>NX6B7<$~Eg zuDqQenV(CgzhD80iH@KB$Vp7u@dXWto#+&V@k)BVrV#KPu`S)xGI5YpQ#8W=o z1z-quY_}7ZRk}w8N^)`*5Lf!K3bS>f^RkdmXDm!)HPF&Grj#V`j&hK?{PD?k56=Li zjH%WSEUL(!jn6NuRnx^AN7~O)zB>QARJjlPD5;{aYRM3VR7*_)&s$4cg_gFGH;1G4VFe}&xK}g(yDL%K zH>8Te1d)EKpS#&}7Lq)u2k?xb0HTj(sk&lM%-YBO)0aueZquU#YU{063OfDy46yx1ZS?`%} z|8<&ikWD6zYVy*?TCIfJ0W&buC11>|zvwi?dk~!cT3DY-;m?;5wdayA*%`kNFMWmv z`J-w-+Atopt}l*avBrdoh&!)6XC3XO(+U_ zc&*~BzhzU=*(RTP$;T1Lo2N7sx9F6?7qib?V>FxD^f8redgqbMN>hDQf<|x>!2}J_hbzrulLZg<)LfAeJF$NeS4je}(l%b=5qRurPZXVfExy3zn>FsA2j+`t`mw zDML=Hd?Q4fnR0FO%O^nfX(c0BTkEH@H_Zi1t&Ljb(t<|WtNqu~r_bwj^Tchco$+abAUDe{ zfWfZE&|xr;ScsL&|3dQ({uV&2rEvZShvHjs+#Y>%$}8`hu&-W*9@O4c`W=^HZ=EHa z^qTPB7F-IcshJbB3)j$b&o!T@2tRe*4le9DM%OFuZ8IA63ggwyXi(z6eckw8iliVR z-Ao9laH;x4DTxcB_Mv?M0%b?XKntry!G%|kT1rxE-j8&56k3n%;M8XhJO*O(l1al< zPcsiI$F6w+D6ZGPy;D>VC57tKG29So63E0^>W91O?#3fjDdsvx{YicM{KX)|!FZKLiKk|S5$p7^t|JRTF z|F<7`HHR4yM#Bpt3ab2qjUr2d;vgL zL4a+LTn$u_7y8b-g4hiTMnGkxQN?&+m2I$2cGOA}SRWYmS&=L;9m?zmWR(UeNW&)B zD-9E2Q_#>EUzDI7kQi^}1O)<@E6>1{q*j1J@C&SL3K*GeD&hYovfxok!InRjO4WR(GR~ z)~0o^lX~gP8Uqe`d$9(WtOo0chR(pMbY9d&(P~}OO6=&GchNO>;0B*HD2i%LfN9IN z3Y;*jVLK`mM9D^JT0eeY6O|QOAJp>T*lGrAkmhI(PH39dsuMZ|Nwv3rcVc~$)nbm_ zMrGP&vPMjK+NOE>@}9k|%Bl53R_HJH<`*2eFCVa5Ra({R+LhLti^f{it?M{oI5Mhr zDGyB;ey!=IRfA)=Hl|b((G9_9q4XT^ecxtJQ))%a4%vqe<4_0H7TiSa7Jt(gS0_FF z;ildPc;o}p{xG`r*J&qV7S=&jXx)8VlT&vZWqWUQYZ6_DaRdlS+0vC&Wy}h@HAR@T zx7TI?UZ^4RoT@M$yZ76A*qOT8dV46GyHp@Ry0iMWQ*4#77XGl7)zMDFnfmUrw$YQe z7cq?x;^!l6CKX3a`}GNDi&dERbojx!D_fb&lno;gqm;co>#c_>oPyDv5|!F|5TL4l zmy&a+C}X$IS^JCesveJ;^|8uz3UafUfpu7@$oIj0*r5G-Z=qml?nyVEUoTBqpUU_k z_ha*6RF^8pAZleOOMWd2T|dS85T)}lvc2kcOruA(zQ$M!3vXLs$1r_m$oI#g$npM& z7-VlFNB>vnzCfHV%k~f_&OzDnN=dE3A8Vs4*r9EoI^oWaiVzE5DsxTy0rtPcpEyH7 z?L+l3W9qkp$4)~@zZ%)8#w_qrGdr9kaQPuS zvr&e#X`1sceR1G>oZiluzI5~+oTmmwgD&FALH3-gaLy5A<+x_$jPLq%V(qkXN!;9s z<@|AFFZRSqs;#}Fv#T4?)B7JpI|-$pkhqzhV~UHL8wYFXf4Al( zgX%DG$3mxrd1g;vEOgaeg0`>z{Ez13>K7sU#8Kp8g&!T=K(!(8_6>f%bl(3GQbjtQ#7pz6IVwMPlE)Yi}i(P1s^8s>o z-d86Z4}Tc|SZ+n&;sXQQ;TW=`RfUn}+P$HKp0D!wMpe?J=ibKZ2;IvGa0o**wR)QX z2MkSczJa`Fo4cEAR?tLsy774J8PN{=qaEltb;9c5|1{I*m{s8QjA*a_vBgPpw#bLV zy#9<)UkGkZc8VDoRoTBjH+)Q?L`lV&fM13m=2L38VKfutu>*_`#)z0-Y z7@X+bXk^)jpCf%}ml)58wxaO34T!s3+jierKKDa<70XUIZ5SlV_>%XMG8{y#w_$wb zVv`l|AI%AKXHG;RHnF$xt|^zw_njDNbT&qMgO>?g{v=vuD#%3eYpY~YT)by7wTy`; zqg#s&*;E*+)e?THWf&V>q^&+ab=q}~?F_0!SAH(UZBRrT1p^Zhqfe-J#OQ9)Wo46v z@6Gh=Ik{j6gyKJjk1ibRXJaVBMz7OS88 zSqt3sa$F+5Gnx)JQ{J}Ii~CFtk#yNUtsb<{H}Gw&4(W-k65|jZJWcVY~D@e0+X2MXC5|S zs_FB#F)Q(gdP9n@SFNvKO84}u4PE_N_G7Z##fCvGU59tI{HK2nJ*i=K1GZ3xV;GH&=Ao+Id9P}T2=CNHx!Cto>iYY=iPKHZ3C9eOK`WT z9NaxsW2<6Z)K)+kgoSsBS@Dua*_uS}&u^Ute>47dpY)7OGCi_BrPqya0o8$2BhXFv zE*>Sav}8oC8QmY*igxj0fFX2lARtaKQX6(u3pAYSA}N{ zU1t1*@d=U9%K`t8OP8uZyk@8>?z!d<6Uqty63OKt9&=4&RBnF^1Q=}1Ptd+4$~)cF z%O>rU+Y{I;J(IFwejyFt+Z3Tlkiu@m4_%t0ZD%j*jq$1W|4T^>+-D)ZH|L@Y^yvo^ zDD;q0%=iY(X3r9pODHZRd>|DikrEj02|Z`@{?wz45kEXYBbz|5rIYwTFbl}9aV27E z0E|@Lb}h@l1#zAgQYGGk(a$bDV&~pD)`SlZ|1Fnv{*#=65SC}2{FQ*ssEfW9!cg$H zHr9Xq{q4mqzuQc$bxO*+B$J3?4INpeR~*5n=$N-wOJ*YR;&oy*fG!GfH^%k8)~{Ty zlqf3+C3RmXJxs4un0zN4y^Bq1jWszcA?`&pTmDBBTwpd;nIs30+S>7l z{httW&W|3{UKXKIcW3eO?v=e$+ zivET&r2!Sg09Q>o$yb{p-#b9Ql|U7B2pUR}FX8!oBbYJ}ZlCZcuo|25dN~IYjFxMA@OK*f^VIaAa>S zHWzybvk02jnEVmEj(Hj&Mk=^KCIaiyTgM51292mPuk=nL#$wK06v)RhF%WiZp72OC zn7Lw@SKnUj1%dIJDG}CK|HfH)7=wz*%(tmeo%J)Xl7k6h?a>dQfRSH+#uqV|4XA46lk~Snr<*pVwa|#6dMmIM{RCri zY?FYE2>v-`aMtRl-5Bsw3$SkzV9>D1qz#v5!hbF zmm;#g)y+d>)^yEytTs9ugtMPuMzJ(hJ6#Sdp*s09HL>lLxJwoJ$mqV<7l^D0MSKzW@EJzqIA99e@g9Cg0w%%ppI5a0V8rOD0UjU-*Y+r`j9=&n&GBE>2RI= z=JVMWyECsON*ywyh`i}r4)ffr_lcN;;?w$5{d_B%Ucx!Txj|k+3p;#9uQ;-{T-94S zCcjEOD{00)hCf)2TKKqp*ldtUe{77!wTp`WeaZa6y=vyp%JW_30Y3iM)1E(`7SWIM z(Ph?)@LY#~)GVJUk#Hxvc;~C#fLpf{@p7jDJy9q}apyI@v~gxoQ1*|m$jE?M+>=gHj%#Lc|i>Er`ierTd^J6oiAS6;i) zU^37(V~K_%U3gnu;tqZE(0rqYD5q@$C?l+1r@Vht&bGdYB_a%@w$svP4kk+DmA?r{ zZTP-3==1N;g}>huTI{hQJq>?CtqYw)~yNO_(hxV9Cz4`^N4i zE0?uW*xN+;rG7JaI@Qe^FIT1rPDqe!nfnZpjyOyBJNeJC%bb40;XE@u5)t2n43#|Q zt=ts@$d>5?OCvBmrN-%WJtwSMa?5p7lrFE>1EwJ0fo+#@Gnf?dr;y@7I`*rV+lgvP$$IbG3c*helf=g zY80|z?e%@BYcFmS@xv=FGc@@9cWyR-)J;VEmp;M@yV#{LO@U!=x#0*SNT}PbKgH6U zkECAXEzvj(p+p9s`yi5}B8i`q;1H%OVJ|7b{aZ*HbYndO954p&0U^yQL zk8xJQ=d9ontPJ~Tt@6MeNNR$yd=C>fo|bDAW1M11`uq|lIzvv$`?O2K9JAr{E;f!ynvFqh#IZ0V3#%Y0(S^4^ZX?daa)Ov#n`#QifRN$c%qJt{ z$2$c#&LvsQ-zhN_HdKe?lPnn?#<_2m1MpY4F4&4tO%hR{cCJbJT{mum_unK0(k)sg z@q7yNmg!q=qH{!K_(N%b_ZF|q=XfLP<^=uZ*HZ9F_Gs#XR%4T7Y=lWat6J)EpTBa5$ zn&&c-$|73KD(god7J)lz^^T1=am8VmnIk=_!e6Ec=$qd_rdlo3-T;=|E;9Dik4kkYKq_F++(DOj{5s4m;P{oKLH_);Hsr-z`|$W*&=)0 zPdvrp)UghRU3dHd#o`1NZctWr!0*b(d%7Xa@>lrazq8Od;j~~n$JI;#?V3at{W~zs z%CZeAkpcr?--ixys_3(h!M2Tj2GnH^$L&uAciDx~aokSf#pEtN(5i(9 zjnbiL6O)WTQCdWP@2xn9ZA_a0na#()nr^XPAdZ5;4N+S}{$KWE*eH=LtQ0wE?#%<> z8u!}fgrHKb_R=n4uK5!eZZHaFq27c@qrok|5J|}iTCHP=uWD;*RxQ7(B@KCn z_HvK`d3<==XKH$*x6D!lKJOa6D`Q}E4RT=nqc(q-lF(XOJ&RM&iDtoCBjbZQdrkX} zQfDu#P1aZ_PejUa@XG+FCwC`C*8$C@WkkP zu2V)4bf>jT5@^AR$$jCB0o*0iK-E(NFbbjRE ze2RCmhS0$fU*_m+h=_9|kH60x`8kqJdN#5~Cq2f2Aen|IQ8mdA93!eU~7In`{)RJ)`|60&b;r(&1B`W?!oZ%lFO>TqC$ zXuizE!eg7cHN88h3Onyagk6^uWu>;vATD-4R}0g{anNw)>(WbK`Ub$y_39(6aSn1v z3o}pJaT#|p3Hgwzv`;m=O$}^<(T3F?rJZk$61#j6os51pYnsCDA@3WYi^ z)WgQE*5l8p#%#@B5dl>ko;16zW}BjYx8$)6){#mkV^!4YCRS9@LF-GTjBlv3#As&J zgF0p8-ppM0%cgYD?mMapWdw4IFFJE-7t=3V=V*N3S}8@i;4F@%s=r{soybhjW(|y7 zXorz@cE#%iRtv@*mktaRt-{VFP)rBmF5vT4`_DmuHRl)kYRQ6X^0Xp(QRu@bXBKS! zuTGm6Ojkzw)_ThriIJiS946GpgFjz7Mz$tZDyJ@9jxwqTEn^a@#l` z5<9Foip3p#^mXSWW#U^~b(_HHObT~4bZ&)`YW20{<5eXN-6*%0G{vi#(}E?py8{Cp zSYBavku^w=zwLnI2-jwx2m5qFaW5NwLXk}^y*T@^yw^CpE7R)?U7MxoKozPisrg); z4PnphAYwdrQ7osX$VB-2TiWyZc`60mkVaju#@TwpcC2k1LkjLa zTnC(MC}s}z4z7KBzm9S*u%lp0pZ@J(TAo~!OliV*g*x1o>0Ev-^Fu96X3dV8U2!-i zf(zqBrMk$<;tCSE&w6HvXE6znOpyo=0wB@9W$n$g4c_?@;`1|ef-j$ho|zbnvDyO=2zXsNn6$X@!Ppz?4c!#Z!Fj}*H$!ttEXcw;UwHUt{NYQ z(QmKUYtENwudOu(W6(~D_>lOl_@joJZz4`_u4-H1V)l&O;p#85H?w`09 zIA(Ew#eU*oQD-4?DFL7MzENK0yucg2_~pFylb-Kh7hK*e9p} zNdQLk;6%YuIxHR=C`YB;HOH#UHhw;J1%^ZX)Z=NH?L)^_Tj^Zob19ArZyWAr{c z2t**ZKPDmftXF}IwC5K3V6xH+ASxCSC)s6LP0>(1tz2-n@F%mNXv!B+&YmuL;BN$E ztk#ReYd|oE!AZyh!FN=kK!pP1oy#WBjKtGnyr!^kvP`Q;C5JtMwZ(^oqqx}7@m)>8 zu#F^Y5Su~>E_*BVgS?tTQ+{3Lb1anT7!;$L1^=H;O^?r2X>(E69~rB^TWGjx0kl!n zF}aK1bX=Lpq12){b;$=Jv@^W0ip~{U|D!p1tGs@OvxMqbtjpk9K-PmC*AV(#daX2G z7HHru6nph3B5=0xpTyr}n?Y1^AxoaC$QcuA?cU^|1^gm&4F#n2hDY>~AGF8r@%i0U zSLfC?sKA;m*1u`(lm)we%FdXQ?bgFnQ3H6`DY*6JfvJ2uSSyw#+h1KdoWe8I%reLV z=eIzNCY#6Jwsj?wtSvJRsxfB_Ra|AG(dlT&s%;rZD^`A zsPt%~F18z=vkpCP>fFPdJ_wrCfxQ_OHN6cq+UY#^8p=Gg*Dm?86$_2zTdPxqv-Z0ZbO)_S0ncyIdPGNvX9?t#@AA36wkXgT00_~hF$30yHUXG-|ns7 zA?3>$BR<43mF)nKSp&YF!-zz!_EAEzX zIk3d9m%j+#z0NMq;PCxKvd@MWN$({;{Z*St#hK1&a(IwRCNcoaChFx_M8BYk+=n0h z=A`FjviOloDw2f^p0}*g0%=pB5ZWK-kGF3zEVU9Wv~5IVWZGAQK--F$mdY!u{VNKVP?F9OYUahVGZr8W6M^>0h~;z>u> zcl>|%97NO`U|epZQ#SVHy1Zmv@B^SrmWgtE@-lau?TJY-0f=#ebLX=10H`)9>p1n0 z7Sl370a13)1v`bW)y^aSOD&Th2c9>3wo|soNti}|OwfCDRtawS%lY`;;V;{P_%r){ zoF&*r)&Fp0cGHn8Ayi_!$~Pie)e3rT1w`YsSAS@DL0;m_$4ESc=G(@C72_;bZnAdk zyjK@TPvDt=GA~13B3~ldD2Z&qRX8r>h7OJZsf^;KV(I3KJQT|mb5O4u>hS%}~k6_0sE_VSPfG{$2o&KsrvsFPFtuV{-1Aj-~;4y&WRuvFmyO7t} zpj1gaTzPO;L9(utOqey{D!6U@(LJ`|#tarm{}6RH>`@7KRMP(WM`>m8x`h^U>Tgi0 z)nVYFj-tfwB%la&VM1N3cNSR^fhx85=wGv%7RtkJl72!sxgSh8iG}+q z3%tX!&^uO8q+)VWp?o2_S{N}kqI!IO zkTHt=1Eqg+vI8HetJJH&YCDja_^ZXQ;DRNlfT*nUWPo^|U$2L>_CV1N7E*I$QAb)O z8J6TJy8x4j!_X&4Ffz;?0}Z>8j?lpHU3t#cCk7zuqIPWzLZ~?C zNbFqJX~2~zaPjj#LcP{WA+{!u=$dclaDd8ryHojhxkzb1 z_1aatWAVh&Fm<(Z-7fONtB+EZz-$@-*0S&`+7q*O7@(zi{F#24?wecC@);zovjDEy9ScbzMlo<*lk$vq#kQuR z*`nRcyC0XpiKfml(3gcB@gJOdirCym4tB|6a+H^ibyt&w^@le@i(#=pPjXuYNBCbg z__UvsyeG*oW1UO|+^LlW0r_4@GM+LK?@`D}s|lyJG5LksXVvoLU~(M&YF$rcSG60}77 z`U!B$ElSctub6;4;oVme3)LzfuY@Y;BiANG_7#^5P+>Pmc3G-E?MAvVt0S< zkSys)^kN_W-~cPu@Pt{l9Q#1vEg%9Di;@=5DvVWKV$Zn~6}264uoP|1_pKT;`sj+v zn>1#t?1Ky|*kV|-;^-}A3)n3UFiVDoeyR9s80=ab6n7h1I2@b45HlGerhXH=o%Zd1 z3CF(7Uzp^3h<$v~Hqff>V}+$>>hxE!qi5lh8w**a_Cj36oL^;#Zy3hs#o@?fVelX( zfVLDF6Pu4BT^muc4fJ#;EP)6R28yF8hm$FT0m6~sJE5sSr-RU7JldeL1Qbl~q$Pm_;e{L!ANOtD2_wq&ClicycNMs%Q&*F$#&(Y0d}d$ z+a?+L$#UdaAo-Xd_A%tP2|VQ3#~6v~4*brxzFI!6M6_YMGXA=^U!rM4p*1MEq)~+A zSo4@sd&9Bc$P-7(Q-jF@QCiX%3C(Bhlg)d))QrKjcgelW-z#stkhh7DNN|#n>sJx1 z9s9Vfa?QiC6js_G-3rK)tcBH52VP={7w9n!zhA7;Su$5NT|q4#`T)PcQ4kOlE^v?#GwoXMX)03vb2bkWPTU zk9_BV+v^!VHo}c_oZV&%pdiaBLD&Y3fX *8*^He)`M&=ir*#v<98_Q1?V9NQpS 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 Jyto0-{{x7eOp5>j literal 0 HcmV?d00001 diff --git a/protocol-designer/src/assets/images/onboarding_animation_ot2_4.gif b/protocol-designer/src/assets/images/onboarding_animation_ot2_4.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef437881ae906e811e5283c3cb79773df022db2a GIT binary patch literal 619803 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 z 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

jUE4i$^p<%H=#vB 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 OBm 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 { diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx index b3c4e691746..57f2ec6b4b5 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx @@ -170,6 +170,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { ) : null} = { + 2: new URL( + '../../assets/images/onboarding_animation_ot2_2.gif', + import.meta.url + ).href, + 3: new URL( + '../../assets/images/onboarding_animation_ot2_3.gif', + import.meta.url + ).href, + 4: new URL( + '../../assets/images/onboarding_animation_ot2_4.gif', + import.meta.url + ).href, +} + const ONBOARDING_ANIMATIONS: Record = { 1: one, 2: two, @@ -56,6 +74,7 @@ export function WizardBody(props: WizardBodyProps): JSX.Element { proceed, disabled = false, tooltipOnDisabled, + robotType, } = props const { t } = useTranslation('shared') const [targetProps, tooltipProps] = useHoverTooltip({ @@ -153,21 +172,33 @@ export function WizardBody(props: WizardBodyProps): JSX.Element { transition: opacity 0.5s ease-in-out; `} > - + {robotType === FLEX_ROBOT_TYPE || stepNumber === 1 ? ( + + ) : ( + + )} ) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx index f0493707774..fe33c8266c9 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/WizardBody.test.tsx @@ -2,6 +2,7 @@ import type * as React from 'react' import { describe, it, expect, vi, beforeEach } from 'vitest' import '@testing-library/jest-dom/vitest' import { fireEvent, screen } from '@testing-library/react' +import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' import { i18n } from '../../../assets/localization' import { renderWithProviders } from '../../../__testing-utils__' import { WizardBody } from '../WizardBody' @@ -24,6 +25,7 @@ describe('WizardBody', () => { disabled: false, goBack: vi.fn(), subHeader: 'mockSubheader', + robotType: FLEX_ROBOT_TYPE, } }) From 453cd4776074263bb990f28afdb194e9928bdbf4 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Fri, 22 Nov 2024 15:59:37 -0500 Subject: [PATCH 094/220] fix(shared-data): Fix migrating mutable pipette configs (#16962) --- .../pipette/mutable_configurations.py | 5 +- .../pipette/test_mutable_configurations.py | 162 +++++++++++++++++- 2 files changed, 163 insertions(+), 4 deletions(-) diff --git a/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py b/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py index 06b31215b65..7e1beb5dd35 100644 --- a/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py +++ b/shared-data/python/opentrons_shared_data/pipette/mutable_configurations.py @@ -41,7 +41,7 @@ LIQUID_CLASS = LiquidClasses.default -def _edit_non_quirk( +def _edit_non_quirk( # noqa: C901 mutable_config_key: str, new_mutable_value: MutableConfig, base_dict: Dict[str, Any] ) -> None: def _do_edit_non_quirk( @@ -58,6 +58,9 @@ def _do_edit_non_quirk( elif thiskey == "##EACHTIPTYPE##": for key in existing.keys(): _do_edit_non_quirk(new_value, existing[key], restkeys) + elif thiskey == "##EACHTIP##": + for key in existing.keys(): + _do_edit_non_quirk(new_value, existing[key], restkeys) else: _do_edit_non_quirk(new_value, existing[thiskey], restkeys) else: diff --git a/shared-data/python/tests/pipette/test_mutable_configurations.py b/shared-data/python/tests/pipette/test_mutable_configurations.py index 40059f6bfe6..38920c473e8 100644 --- a/shared-data/python/tests/pipette/test_mutable_configurations.py +++ b/shared-data/python/tests/pipette/test_mutable_configurations.py @@ -1,4 +1,5 @@ import json +import logging import os from pathlib import Path from typing import Dict, Any, cast, Union, Generator @@ -68,9 +69,8 @@ def test_load_old_overrides_regression( "type": "float", "default": 0.1, } - json.dump( - TMPFILE_DATA, open(override_configuration_path / "P20SV222021040709.json", "w") - ) + with open(override_configuration_path / "P20SV222021040709.json", "w") as f: + json.dump(TMPFILE_DATA, f) configs = mutable_configurations.load_with_mutable_configurations( pipette_definition.PipetteModelVersionType( pipette_type=types.PipetteModelType.p20, @@ -305,3 +305,159 @@ def test_build_mutable_config_using_old_units() -> None: assert ( types.MutableConfig.build(**old_units_config, name="dropTipSpeed") is not None # type: ignore ) + + +@pytest.mark.parametrize( + ("filename", "type", "channels", "version", "file_contents"), + # From https://opentrons.atlassian.net/browse/RQA-3676. + # These could probably be pared down. + [ + ( + "P20MV202020121412.json", + types.PipetteModelType.p20, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 0), + '{"model": "p20_multi_v2.0"}', + ), + ( + "P3HSV1318071638.json", + types.PipetteModelType.p300, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(1, 3), + '{"dropTipShake": true, "model": "p300_single_v1.3", "quirks": {"dropTipShake": true}, "top": {"value": 30.0, "default": 19.5, "units": "mm", "type": "float", "min": -20, "max": 30}, "pickUpPresses": {"value": 3.0, "default": 3, "units": "presses", "type": "int", "min": 0, "max": 15}}', + ), + ( + "P3HMV212021040004.json", + types.PipetteModelType.p300, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 1), + '{"needsUnstick": true, "model": "p300_multi_v2.1"}', + ), + ( + "P20SV202020032604.json", + types.PipetteModelType.p20, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 0), + '{"model": "p20_single_v2.0"}', + ), + ( + "P1KSV202019072441.json", + types.PipetteModelType.p1000, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 0), + '{"pickupTipShake": true, "model": "p1000_single_v2.0", "quirks": {"pickupTipShake": true}}', + ), + ( + "P3HMV202021011105.json", + types.PipetteModelType.p300, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 0), + '{"needsUnstick": true, "model": "p300_multi_v2.0"}', + ), + ( + "P20SV202019072527.json", + types.PipetteModelType.p20, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 0), + '{"model": "p20_single_v2.0"}', + ), + ( + "P3HSV202021042602.json", + types.PipetteModelType.p300, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 0), + '{"model": "p300_single_v2.0"}', + ), + ( + "P20SV222021030914.json", + types.PipetteModelType.p20, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 2), + '{"model": "p20_single_v2.2", "quirks": {}, "pickUpPresses": {"value": 3.0, "default": 1, "units": "presses", "type": "int", "min": 0, "max": 15}}', + ), + ( + "P3HMV202020040801.json", + types.PipetteModelType.p300, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 0), + '{"needsUnstick": true, "model": "p300_multi_v2.0", "quirks": {"needsUnstick": true}, "top": {"value": 20.0, "default": 19.5, "units": "mm", "type": "float", "min": -20, "max": 30}, "bottom": {"value": -14.0, "default": -14.5, "units": "mm", "type": "float", "min": -20, "max": 30}, "blowout": {"value": -18.5, "default": -19.0, "units": "mm", "type": "float", "min": -20, "max": 30}, "dropTip": {"value": -20.0, "default": -33.4, "units": "mm", "type": "float", "min": -20, "max": 30}, "pickUpCurrent": {"value": 0.9, "default": 0.8, "units": "amps", "type": "float", "min": 0.1, "max": 2.0}, "pickUpDistance": {"value": 10.0, "default": 11.0, "units": "mm", "type": "float", "min": 0, "max": 10}, "pickUpIncrement": {"value": 0.1, "default": 0.0, "units": "mm", "type": "int", "min": 0, "max": 10}, "pickUpPresses": {"value": 4.0, "default": 1, "units": "presses", "type": "int", "min": 0, "max": 15}, "pickUpSpeed": {"value": 11.0, "default": 10.0, "units": "mm/s", "type": "float", "min": 0.01, "max": 30}, "plungerCurrent": {"value": 1.1, "default": 1.0, "units": "amps", "type": "float", "min": 0.1, "max": 2.0}, "dropTipCurrent": {"value": 1.22, "default": 1.25, "units": "amps", "type": "float", "min": 0.1, "max": 2.0}, "dropTipSpeed": {"value": 8.0, "default": 7.5, "units": "mm/s", "type": "float", "min": 0.01, "max": 30}, "tipLength": {"value": 52.0, "default": 51.0, "units": "mm", "type": "float", "min": 0, "max": 100}}', + ), + ( + "P3HMV212021040002.json", + types.PipetteModelType.p300, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 1), + '{"needsUnstick": true, "model": "p300_multi_v2.1"}', + ), + ( + "P3HMV1318072625.json", + types.PipetteModelType.p300, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(1, 3), + '{"dropTipShake": true, "model": "p300_multi_v1.3", "quirks": {"dropTipShake": true}, "pickUpPresses": {"value": 4.0, "default": 3, "units": "presses", "type": "int", "min": 0, "max": 15}}', + ), + ( + "P50MV1519091757.json", + types.PipetteModelType.p50, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(1, 5), + '{"dropTipShake": true, "doubleDropTip": true, "model": "p50_multi_v1.5", "quirks": {"doubleDropTip": true, "dropTipShake": true}}', + ), + ( + "P3HSV202019072224.json", + types.PipetteModelType.p300, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 0), + '{"model": "p300_single_v2.0", "quirks": {}}', + ), + ( + "P20MV202019112708.json", + types.PipetteModelType.p20, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 0), + '{"model": "p20_multi_v2.0", "quirks": {}}', + ), + ( + "P3HSV202021031503.json", + types.PipetteModelType.p300, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 1), + '{"model": "p300_single_v2.1"}', + ), + ( + "P1KSV202020060206.json", + types.PipetteModelType.p1000, + types.PipetteChannelType.SINGLE_CHANNEL, + types.PipetteVersionType(2, 0), + '{"pickupTipShake": true, "model": "p1000_single_v2.0"}', + ), + ( + "P3HMV202021010906.json", + types.PipetteModelType.p300, + types.PipetteChannelType.EIGHT_CHANNEL, + types.PipetteVersionType(2, 0), + '{"needsUnstick": true, "model": "p300_multi_v2.0"}', + ), + ], +) +def test_loading_does_not_log_warnings( + filename: str, + type: types.PipetteModelType, + channels: types.PipetteChannelType, + version: types.PipetteVersionType, + file_contents: str, + caplog: pytest.LogCaptureFixture, + override_configuration_path: Path, +) -> None: + """Make sure load_with_mutable_configurations() doesn't log any exceptions. + + load_with_mutable_configurations() suppresses and logs internal exceptions to + protect its caller, but those are still bugs, and we still want tests to catch them. + """ + model = pipette_definition.PipetteModelVersionType(type, channels, version) + (override_configuration_path / filename).write_text(file_contents) + with caplog.at_level(logging.WARNING): + mutable_configurations.load_with_mutable_configurations( + model, override_configuration_path, Path(filename).stem + ) + assert len(caplog.records) == 0 From d5b7e613e642aa0a8542fe85ca9d748c2cc7c68c Mon Sep 17 00:00:00 2001 From: Shlok Amin Date: Fri, 22 Nov 2024 16:14:52 -0500 Subject: [PATCH 095/220] feat(protocol-designer): add ability to clear staging slots directly (#16930) closes RQA-3626 --- .../Designer/DeckSetup/DeckSetupTools.tsx | 37 ++++++++++++------- .../Designer/DeckSetup/SlotOverflowMenu.tsx | 29 ++++++++++++++- .../__tests__/DeckSetupTools.test.tsx | 13 ++++++- .../__tests__/SlotOverflowMenu.test.tsx | 35 +++++++++++++++++- shared-data/js/helpers/index.ts | 26 +++++++++++++ 5 files changed, 123 insertions(+), 17 deletions(-) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx index 62a5f92d46e..44732c1e0ed 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx @@ -18,6 +18,7 @@ import { } from '@opentrons/components' import { FLEX_ROBOT_TYPE, + FLEX_STAGING_AREA_SLOT_ADDRESSABLE_AREAS, getModuleDisplayName, getModuleType, MAGNETIC_MODULE_TYPE, @@ -58,7 +59,7 @@ import { LabwareTools } from './LabwareTools' import { MagnetModuleChangeContent } from './MagnetModuleChangeContent' import { getModuleModelsBySlot, getDeckErrors } from './utils' -import type { ModuleModel } from '@opentrons/shared-data' +import type { AddressableAreaName, ModuleModel } from '@opentrons/shared-data' import type { ThunkDispatch } from '../../../types' import type { Fixture } from './constants' @@ -242,7 +243,7 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { handleResetSearchTerm() } - const handleClear = (): void => { + const handleClear = (keepExistingLabware = false): void => { onDeckProps?.setHoveredModule(null) onDeckProps?.setHoveredFixture(null) if (slot !== 'offDeck') { @@ -250,31 +251,41 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { if (createdModuleForSlot != null) { dispatch(deleteModule(createdModuleForSlot.id)) } - // clear fixture(s) from slot - if (createFixtureForSlots != null && createFixtureForSlots.length > 0) { - createFixtureForSlots.forEach(fixture => - dispatch(deleteDeckFixture(fixture.id)) - ) - } // clear labware from slot if ( createdLabwareForSlot != null && - createdLabwareForSlot.labwareDefURI !== selectedLabwareDefUri + (!keepExistingLabware || + createdLabwareForSlot.labwareDefURI !== selectedLabwareDefUri) ) { dispatch(deleteContainer({ labwareId: createdLabwareForSlot.id })) } // clear nested labware from slot if ( createdNestedLabwareForSlot != null && - createdNestedLabwareForSlot.labwareDefURI !== - selectedNestedLabwareDefUri + (!keepExistingLabware || + createdNestedLabwareForSlot.labwareDefURI !== + selectedNestedLabwareDefUri) ) { dispatch(deleteContainer({ labwareId: createdNestedLabwareForSlot.id })) } // clear labware on staging area 4th column slot - if (matchingLabwareFor4thColumn != null) { + if (matchingLabwareFor4thColumn != null && !keepExistingLabware) { dispatch(deleteContainer({ labwareId: matchingLabwareFor4thColumn.id })) } + // clear fixture(s) from slot + if (createFixtureForSlots != null && createFixtureForSlots.length > 0) { + createFixtureForSlots.forEach(fixture => + dispatch(deleteDeckFixture(fixture.id)) + ) + // zoom out if you're clearing a staging area slot directly from a 4th column + if ( + FLEX_STAGING_AREA_SLOT_ADDRESSABLE_AREAS.includes( + slot as AddressableAreaName + ) + ) { + dispatch(selectZoomedIntoSlot({ slot: null, cutout: null })) + } + } } handleResetToolbox() handleResetLabwareTools() @@ -285,7 +296,7 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { } const handleConfirm = (): void => { // clear entities first before recreating them - handleClear() + handleClear(true) if (selectedFixture != null && cutout != null) { // create fixture(s) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx index 8cc15363ea6..c6c37c5be31 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/SlotOverflowMenu.tsx @@ -15,6 +15,12 @@ import { StyledText, useOnClickOutside, } from '@opentrons/components' +import { + FLEX_ROBOT_TYPE, + FLEX_STAGING_AREA_SLOT_ADDRESSABLE_AREAS, + getCutoutIdFromAddressableArea, + getDeckDefFromRobotType, +} from '@opentrons/shared-data' import { getDeckSetupForActiveItem } from '../../../top-selectors/labware-locations' import { deleteModule } from '../../../step-forms/actions' @@ -32,10 +38,12 @@ import { getStagingAreaAddressableAreas } from '../../../utils' import { selectors as labwareIngredSelectors } from '../../../labware-ingred/selectors' import type { MouseEvent, SetStateAction } from 'react' import type { + AddressableAreaName, CoordinateTuple, CutoutId, DeckSlotId, } from '@opentrons/shared-data' + import type { LabwareOnDeck } from '../../../step-forms' import type { ThunkDispatch } from '../../../types' @@ -146,6 +154,10 @@ export function SlotOverflowMenu( const hasNoItems = moduleOnSlot == null && labwareOnSlot == null && fixturesOnSlot.length === 0 + const isStagingSlot = FLEX_STAGING_AREA_SLOT_ADDRESSABLE_AREAS.includes( + location as AddressableAreaName + ) + const handleClear = (): void => { // clear module from slot if (moduleOnSlot != null) { @@ -167,6 +179,21 @@ export function SlotOverflowMenu( if (matchingLabware != null) { dispatch(deleteContainer({ labwareId: matchingLabware.id })) } + // delete staging slot if addressable area is on staging slot + if (isStagingSlot) { + const deckDef = getDeckDefFromRobotType(FLEX_ROBOT_TYPE) + const cutoutId = getCutoutIdFromAddressableArea(location, deckDef) + const stagingAreaEquipmentId = Object.values( + additionalEquipmentOnDeck + ).find(({ location }) => location === cutoutId)?.id + if (stagingAreaEquipmentId != null) { + dispatch(deleteDeckFixture(stagingAreaEquipmentId)) + } else { + console.error( + `could not find equipment id for entity in ${location} with cutout id ${cutoutId}` + ) + } + } } const showDuplicateBtn = @@ -303,7 +330,7 @@ export function SlotOverflowMenu( ) : null} { if (matchingLabware != null) { setShowDeleteLabwareModal(true) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx index 5371faed57c..5eab480710e 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/DeckSetupTools.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, vi, beforeEach } from 'vitest' +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import '@testing-library/jest-dom/vitest' import { fireEvent, screen } from '@testing-library/react' import { @@ -67,6 +67,9 @@ describe('DeckSetupTools', () => { }) vi.mocked(getDismissedHints).mockReturnValue([]) }) + afterEach(() => { + vi.resetAllMocks() + }) it('should render the relevant modules and fixtures for slot D3 on Flex with tabs', () => { render(props) screen.getByText('Add a module') @@ -92,6 +95,14 @@ describe('DeckSetupTools', () => { screen.getByText('mock labware tools') }) it('should clear the slot from all items when the clear cta is called', () => { + vi.mocked(selectors.getZoomedInSlotInfo).mockReturnValue({ + selectedLabwareDefUri: 'mockUri', + selectedNestedLabwareDefUri: 'mockUri', + selectedFixture: null, + selectedModuleModel: null, + selectedSlot: { slot: 'D3', cutout: 'cutoutD3' }, + }) + vi.mocked(getDeckSetupForActiveItem).mockReturnValue({ labware: { labId: { diff --git a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx index 2ba0d4df60f..56d5af2f806 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/__tests__/SlotOverflowMenu.test.tsx @@ -1,5 +1,5 @@ import type * as React from 'react' -import { describe, it, expect, vi, beforeEach } from 'vitest' +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' import '@testing-library/jest-dom/vitest' import { fireEvent, screen } from '@testing-library/react' import { fixture96Plate } from '@opentrons/shared-data' @@ -42,6 +42,8 @@ const render = (props: React.ComponentProps) => { })[0] } +const MOCK_STAGING_AREA_ID = 'MOCK_STAGING_AREA_ID' + describe('SlotOverflowMenu', () => { let props: React.ComponentProps @@ -78,7 +80,11 @@ describe('SlotOverflowMenu', () => { }, }, additionalEquipmentOnDeck: { - fixture: { name: 'stagingArea', id: 'mockId', location: 'cutoutD3' }, + fixture: { + name: 'stagingArea', + id: MOCK_STAGING_AREA_ID, + location: 'cutoutD3', + }, }, }) vi.mocked(EditNickNameModal).mockReturnValue( @@ -87,6 +93,10 @@ describe('SlotOverflowMenu', () => { vi.mocked(labwareIngredSelectors.getLiquidsByLabwareId).mockReturnValue({}) }) + afterEach(() => { + vi.restoreAllMocks() + }) + it('should renders all buttons as enabled and clicking on them calls ctas', () => { render(props) fireEvent.click( @@ -134,4 +144,25 @@ describe('SlotOverflowMenu', () => { expect(mockNavigate).toHaveBeenCalled() expect(vi.mocked(openIngredientSelector)).toHaveBeenCalled() }) + it('deletes the staging area slot and all labware and modules on top of it', () => { + vi.mocked(labwareIngredSelectors.getLiquidsByLabwareId).mockReturnValue({ + labId2: { well1: { '0': { volume: 10 } } }, + }) + render(props) + fireEvent.click(screen.getByRole('button', { name: 'Clear slot' })) + + expect(vi.mocked(deleteDeckFixture)).toHaveBeenCalledOnce() + expect(vi.mocked(deleteDeckFixture)).toHaveBeenCalledWith( + MOCK_STAGING_AREA_ID + ) + expect(vi.mocked(deleteContainer)).toHaveBeenCalledTimes(2) + expect(vi.mocked(deleteContainer)).toHaveBeenNthCalledWith(1, { + labwareId: 'labId', + }) + expect(vi.mocked(deleteContainer)).toHaveBeenNthCalledWith(2, { + labwareId: 'labId2', + }) + expect(vi.mocked(deleteModule)).toHaveBeenCalledOnce() + expect(vi.mocked(deleteModule)).toHaveBeenCalledWith('modId') + }) }) diff --git a/shared-data/js/helpers/index.ts b/shared-data/js/helpers/index.ts index 4c3fde2c91e..57cb24e31ee 100644 --- a/shared-data/js/helpers/index.ts +++ b/shared-data/js/helpers/index.ts @@ -10,6 +10,7 @@ import type { RobotType, ThermalAdapterName, } from '../types' +import type { AddressableAreaName, CutoutId } from '../../deck/types/schemaV5' export { getWellNamePerMultiTip } from './getWellNamePerMultiTip' export { getWellTotalVolume } from './getWellTotalVolume' @@ -373,3 +374,28 @@ export const getDeckDefFromRobotType = ( ? standardFlexDeckDef : standardOt2DeckDef } + +export const getCutoutIdFromAddressableArea = ( + addressableAreaName: string, + deckDefinition: DeckDefinition +): CutoutId | null => { + /** + * Given an addressable area name, returns the cutout ID associated with it, or null if there is none + */ + + for (const cutoutFixture of deckDefinition.cutoutFixtures) { + for (const [cutoutId, providedAreas] of Object.entries( + cutoutFixture.providesAddressableAreas + ) as Array<[CutoutId, AddressableAreaName[]]>) { + if (providedAreas.includes(addressableAreaName as AddressableAreaName)) { + return cutoutId + } + } + } + + console.error( + `${addressableAreaName} is not provided by any cutout fixtures in deck definition ${deckDefinition.otId}` + ) + + return null +} From 9b9ed165774123460c35e0caaf4f2432af903c1d Mon Sep 17 00:00:00 2001 From: Alise Au <20424172+ahiuchingau@users.noreply.github.com> Date: Fri, 22 Nov 2024 16:26:41 -0500 Subject: [PATCH 096/220] fix(hardware-testing): flex-stacker QC script improvements (#16961) --- .../modules/flex_stacker_evt_qc/__main__.py | 24 +++++++++- .../modules/flex_stacker_evt_qc/config.py | 24 +++++----- .../modules/flex_stacker_evt_qc/driver.py | 48 +++++++++++++++---- .../modules/flex_stacker_evt_qc/test_estop.py | 3 -- .../flex_stacker_evt_qc/test_l_axis.py | 10 +--- 5 files changed, 77 insertions(+), 32 deletions(-) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/__main__.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/__main__.py index 2c4890023d4..cc38ee2ffad 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/__main__.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/__main__.py @@ -14,7 +14,7 @@ from hardware_testing.data.csv_report import CSVReport from .config import TestSection, TestConfig, build_report, TESTS -from .driver import FlexStacker +from .driver import FlexStacker, PlatformStatus def build_stacker_report(is_simulating: bool) -> Tuple[CSVReport, FlexStacker]: @@ -42,6 +42,28 @@ async def _main(cfg: TestConfig) -> None: # BUILD REPORT report, stacker = build_stacker_report(cfg.simulate) + if not cfg.simulate: + # Perform initial checks before starting tests + # 1. estop should not be pressed + # 2. platform should be removed + if stacker.get_estop(): + ui.print_error("ESTOP is pressed, please release it before starting") + ui.get_user_ready("Release ESTOP") + if stacker.get_estop(): + ui.print_error("ESTOP is still pressed, cannot start tests") + return + + platform_state = stacker.get_platform_status() + if platform_state is PlatformStatus.ERROR: + ui.print_error("Platform sensors are not working properly, aborting") + return + if platform_state is not PlatformStatus.REMOVED: + ui.print_error("Platform must be removed from the carrier before starting") + ui.get_user_ready("Remove platform from {platform_state.value}") + if stacker.get_platform_status() is not PlatformStatus.REMOVED: + ui.print_error("Platform is still detected, cannot start tests") + return + # RUN TESTS for section, test_run in cfg.tests.items(): ui.print_title(section.value) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py index 5b94e014f0f..7a339eddde2 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/config.py @@ -43,22 +43,22 @@ class TestConfig: TestSection.Z_AXIS, test_z_axis.run, ), - ( - TestSection.L_AXIS, - test_l_axis.run, - ), ( TestSection.X_AXIS, test_x_axis.run, ), ( - TestSection.DOOR_SWITCH, - test_door_switch.run, + TestSection.L_AXIS, + test_l_axis.run, ), ( TestSection.ESTOP, test_estop.run, ), + ( + TestSection.DOOR_SWITCH, + test_door_switch.run, + ), ] @@ -75,21 +75,21 @@ def build_report(test_name: str) -> CSVReport: title=TestSection.Z_AXIS.value, lines=test_z_axis.build_csv_lines(), ), - CSVSection( - title=TestSection.L_AXIS.value, - lines=test_l_axis.build_csv_lines(), - ), CSVSection( title=TestSection.X_AXIS.value, lines=test_x_axis.build_csv_lines(), ), CSVSection( - title=TestSection.DOOR_SWITCH.value, - lines=test_door_switch.build_csv_lines(), + title=TestSection.L_AXIS.value, + lines=test_l_axis.build_csv_lines(), ), CSVSection( title=TestSection.ESTOP.value, lines=test_estop.build_csv_lines(), ), + CSVSection( + title=TestSection.DOOR_SWITCH.value, + lines=test_door_switch.build_csv_lines(), + ), ], ) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py index e219b68dae3..443140573bd 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py @@ -1,4 +1,5 @@ """FLEX Stacker Driver.""" +from typing import Tuple from dataclasses import dataclass import serial # type: ignore[import] from serial.tools.list_ports import comports # type: ignore[import] @@ -38,6 +39,26 @@ def __str__(self) -> str: return self.name +class PlatformStatus(Enum): + """Platform Status.""" + + REMOVED = 0 + EXTENTED = 1 + RETRACTED = 2 + ERROR = 4 + + @classmethod + def from_tuple(cls, status: Tuple[int, int]) -> "PlatformStatus": + """Get platform status from tuple.""" + if status == (0, 0): + return PlatformStatus.REMOVED + if status == (1, 0): + return PlatformStatus.EXTENTED + if status == (0, 1): + return PlatformStatus.RETRACTED + return PlatformStatus.ERROR + + class Direction(Enum): """Direction.""" @@ -67,9 +88,9 @@ class MoveParams: def __str__(self) -> str: """Convert to string.""" - v = "V:" + str(self.max_speed) if self.max_speed else "" - a = "A:" + str(self.acceleration) if self.acceleration else "" - d = "D:" + str(self.max_speed_discont) if self.max_speed_discont else "" + v = "V" + str(self.max_speed) if self.max_speed else "" + a = "A" + str(self.acceleration) if self.acceleration else "" + d = "D" + str(self.max_speed_discont) if self.max_speed_discont else "" return f"{v} {a} {d}".strip() @@ -100,7 +121,7 @@ def __init__(self, port: str, simulating: bool = False) -> None: def _send_and_recv(self, msg: str, guard_ret: str = "") -> str: """Internal utility to send a command and receive the response.""" - assert self._simulating + assert not self._simulating self._serial.write(msg.encode()) ret = self._serial.readline() if guard_ret: @@ -142,7 +163,7 @@ def get_limit_switch(self, axis: StackerAxis, direction: Direction) -> bool: if self._simulating: return True - _LS_RE = re.compile(rf"^M119 .*{axis.name}{direction.name[0]}:(\d) .* OK\n") + _LS_RE = re.compile(rf"^M119 .*{axis.name}{direction.name[0]}:(\d).* OK\n") res = self._send_and_recv("M119\n", "M119 XE:") match = _LS_RE.match(res) assert match, f"Incorrect Response for limit switch: {res}" @@ -156,12 +177,23 @@ def get_platform_sensor(self, direction: Direction) -> bool: if self._simulating: return True - _LS_RE = re.compile(rf"^M121 .*{direction.name[0]}:(\d) .* OK\n") - res = self._send_and_recv("M121\n", "M119 E:") + _LS_RE = re.compile(rf"^M121 .*{direction.name[0]}:(\d).* OK\n") + res = self._send_and_recv("M121\n", "M121 E:") match = _LS_RE.match(res) assert match, f"Incorrect Response for platform sensor: {res}" return bool(int(match.group(1))) + def get_platform_status(self) -> PlatformStatus: + """Get platform status.""" + if self._simulating: + return PlatformStatus.REMOVED + + _LS_RE = re.compile(r"^M121 E:(\d) R:(\d) OK\n") + res = self._send_and_recv("M121\n", "M121 ") + match = _LS_RE.match(res) + assert match, f"Incorrect Response for platform status: {res}" + return PlatformStatus.from_tuple((int(match.group(1)), int(match.group(2)))) + def get_hopper_door_closed(self) -> bool: """Get whether or not door is closed. @@ -205,7 +237,7 @@ def move_to_limit_switch( if self._simulating: return self._send_and_recv( - f"G5 {axis.name}{direction.value} {params or ''}\n", "G0 OK" + f"G5 {axis.name}{direction.value} {params or ''}\n", "G5 OK" ) def __del__(self) -> None: diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py index c0ee8b4150b..2a2f24161b7 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py @@ -41,9 +41,6 @@ def axis_at_limit(driver: FlexStacker, axis: StackerAxis) -> Direction: def run(driver: FlexStacker, report: CSVReport, section: str) -> None: """Run.""" - if not driver._simulating and driver.get_estop(): - raise RuntimeError("E-Stop is either triggered/not attached.") - x_limit = axis_at_limit(driver, StackerAxis.X) z_limit = axis_at_limit(driver, StackerAxis.Z) l_limit = axis_at_limit(driver, StackerAxis.L) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py index d892bdc1fd7..4b3856e92e6 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_l_axis.py @@ -11,12 +11,6 @@ from .driver import FlexStacker, StackerAxis, Direction -class LimitSwitchError(Exception): - """Limit Switch Error.""" - - pass - - def build_csv_lines() -> List[Union[CSVLine, CSVLineRepeating]]: """Build CSV Lines.""" return [ @@ -35,12 +29,12 @@ def get_latch_held_switch(driver: FlexStacker) -> bool: def close_latch(driver: FlexStacker) -> None: """Close latch.""" - driver.move_to_limit_switch(StackerAxis.L, Direction.EXTENT) + driver.move_to_limit_switch(StackerAxis.L, Direction.RETRACT) def open_latch(driver: FlexStacker) -> None: """Open latch.""" - driver.move_in_mm(StackerAxis.L, -22) + driver.move_in_mm(StackerAxis.L, 22) def run(driver: FlexStacker, report: CSVReport, section: str) -> None: From 015e182a333b85d12a26ffb88f11d291dcbebe4d Mon Sep 17 00:00:00 2001 From: koji Date: Fri, 22 Nov 2024 16:55:20 -0500 Subject: [PATCH 097/220] fix(protocol-designer): remove DisabledModal from PD (#16964) * fix(protocol-designer): remove DisabledModal from PD --- protocol-designer/src/ProtocolEditor.tsx | 4 ---- protocol-designer/src/organisms/DisabledScreen/index.tsx | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/protocol-designer/src/ProtocolEditor.tsx b/protocol-designer/src/ProtocolEditor.tsx index df486e3eee4..7ca14592e86 100644 --- a/protocol-designer/src/ProtocolEditor.tsx +++ b/protocol-designer/src/ProtocolEditor.tsx @@ -4,11 +4,8 @@ import { HTML5Backend } from 'react-dnd-html5-backend' import { DIRECTION_COLUMN, Flex, OVERFLOW_AUTO } from '@opentrons/components' import { PortalRoot as TopPortalRoot } from './components/portals/TopPortal' import { ProtocolRoutes } from './ProtocolRoutes' -import { useScreenSizeCheck } from './resources/useScreenSizeCheck' -import { DisabledScreen } from './organisms/DisabledScreen' function ProtocolEditorComponent(): JSX.Element { - const isValidSize = useScreenSizeCheck() return (

- {!isValidSize && } diff --git a/protocol-designer/src/organisms/DisabledScreen/index.tsx b/protocol-designer/src/organisms/DisabledScreen/index.tsx index 779ba446f40..2815609b469 100644 --- a/protocol-designer/src/organisms/DisabledScreen/index.tsx +++ b/protocol-designer/src/organisms/DisabledScreen/index.tsx @@ -15,6 +15,9 @@ import { } from '@opentrons/components' import { getTopPortalEl } from '../../components/portals/TopPortal' +// Note: We decided not to use this component for the release. +// We will find out a better way to handle responsiveness with user's screen size issue. +// This component may be used in the future. If not, we will remove it. export function DisabledScreen(): JSX.Element { const { t } = useTranslation('shared') From 038833c207c01244030cac367cab3a6ea277abd8 Mon Sep 17 00:00:00 2001 From: Sarah Breen Date: Fri, 22 Nov 2024 16:59:20 -0500 Subject: [PATCH 098/220] feat(app): add support for pinyin layout candidates in ODD keyboard (#16873) fix EXEC-885 --- app/package.json | 1 + .../AlphanumericKeyboard/index.css | 9 +++++++++ .../AlphanumericKeyboard/index.tsx | 12 +++++++++++- .../SoftwareKeyboard/FullKeyboard/index.css | 9 +++++++++ .../SoftwareKeyboard/FullKeyboard/index.tsx | 12 +++++++++++- app/src/atoms/SoftwareKeyboard/constants.ts | 17 +++++++++++++++++ .../SystemLanguagePreferenceModal.test.tsx | 12 ++++++++++++ .../SystemLanguagePreferenceModal/index.tsx | 13 ++++++++----- yarn.lock | 6 ++++++ 9 files changed, 84 insertions(+), 7 deletions(-) diff --git a/app/package.json b/app/package.json index e68327af200..e87da02e4b0 100644 --- a/app/package.json +++ b/app/package.json @@ -63,6 +63,7 @@ "reselect": "4.0.0", "rxjs": "^6.5.1", "semver": "5.7.2", + "simple-keyboard-layouts": "3.4.41", "styled-components": "5.3.6", "typeface-open-sans": "0.0.75", "uuid": "3.2.1" diff --git a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.css b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.css index 1fa59e2230a..61e4f80d0ca 100644 --- a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.css +++ b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.css @@ -68,3 +68,12 @@ the rest is the same */ height: 44.75px; width: 330px !important; } + +.hg-candidate-box { + max-width: 400px; +} + +li.hg-candidate-box-list-item { + height: 60px; + width: 60px; +} diff --git a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx index dccad085c08..4ab8dab1274 100644 --- a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx +++ b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx @@ -1,6 +1,12 @@ import * as React from 'react' import Keyboard from 'react-simple-keyboard' -import { alphanumericKeyboardLayout, customDisplay } from '../constants' +import { useSelector } from 'react-redux' +import { getAppLanguage } from '/app/redux/config' +import { + alphanumericKeyboardLayout, + layoutCandidates, + customDisplay, +} from '../constants' import type { KeyboardReactInterface } from 'react-simple-keyboard' import '../index.css' @@ -19,6 +25,7 @@ export function AlphanumericKeyboard({ debug = false, // If true, will input a \n }: AlphanumericKeyboardProps): JSX.Element { const [layoutName, setLayoutName] = React.useState('default') + const appLanguage = useSelector(getAppLanguage) const onKeyPress = (button: string): void => { if (button === '{ABC}') handleShift() if (button === '{numbers}') handleNumber() @@ -47,6 +54,9 @@ export function AlphanumericKeyboard({ onKeyPress={onKeyPress} layoutName={layoutName} layout={alphanumericKeyboardLayout} + layoutCandidates={ + appLanguage != null ? layoutCandidates[appLanguage] : undefined + } display={customDisplay} mergeDisplay={true} useButtonTag={true} diff --git a/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.css b/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.css index b3ff8968da4..4fb38eb50db 100644 --- a/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.css +++ b/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.css @@ -103,3 +103,12 @@ color: #16212d; background-color: #e3e3e3; /* grey30 */ } + +.hg-candidate-box { + max-width: 400px; +} + +li.hg-candidate-box-list-item { + height: 60px; + width: 60px; +} diff --git a/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx b/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx index 663efdd9c24..eed2a0b5934 100644 --- a/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx +++ b/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx @@ -1,6 +1,12 @@ import * as React from 'react' import { KeyboardReact as Keyboard } from 'react-simple-keyboard' -import { customDisplay, fullKeyboardLayout } from '../constants' +import { useSelector } from 'react-redux' +import { getAppLanguage } from '/app/redux/config' +import { + customDisplay, + layoutCandidates, + fullKeyboardLayout, +} from '../constants' import type { KeyboardReactInterface } from 'react-simple-keyboard' import '../index.css' @@ -19,6 +25,7 @@ export function FullKeyboard({ debug = false, }: FullKeyboardProps): JSX.Element { const [layoutName, setLayoutName] = React.useState('default') + const appLanguage = useSelector(getAppLanguage) const handleShift = (button: string): void => { switch (button) { case '{shift}': @@ -56,6 +63,9 @@ export function FullKeyboard({ onKeyPress={onKeyPress} layoutName={layoutName} layout={fullKeyboardLayout} + layoutCandidates={ + appLanguage != null ? layoutCandidates[appLanguage] : undefined + } display={customDisplay} mergeDisplay={true} useButtonTag={true} diff --git a/app/src/atoms/SoftwareKeyboard/constants.ts b/app/src/atoms/SoftwareKeyboard/constants.ts index 1808f4bd2f3..6fccfd21b81 100644 --- a/app/src/atoms/SoftwareKeyboard/constants.ts +++ b/app/src/atoms/SoftwareKeyboard/constants.ts @@ -1,3 +1,11 @@ +import chineseLayout from 'simple-keyboard-layouts/build/layouts/chinese' + +type LayoutCandidates = + | { + [key: string]: string + } + | undefined + export const customDisplay = { '{numbers}': '123', '{shift}': 'ABC', @@ -69,3 +77,12 @@ export const numericalKeyboardLayout = { export const numericalCustom = { '{backspace}': 'del', } + +export const layoutCandidates: { + [key: string]: LayoutCandidates +} = { + // @ts-expect-error layout candidates exists but is not on the type + // in the simple-keyboard-layouts package + 'zh-CN': chineseLayout.layoutCandidates, + 'en-US': undefined, +} diff --git a/app/src/organisms/Desktop/SystemLanguagePreferenceModal/__tests__/SystemLanguagePreferenceModal.test.tsx b/app/src/organisms/Desktop/SystemLanguagePreferenceModal/__tests__/SystemLanguagePreferenceModal.test.tsx index a91d7389072..8ed93c1cb81 100644 --- a/app/src/organisms/Desktop/SystemLanguagePreferenceModal/__tests__/SystemLanguagePreferenceModal.test.tsx +++ b/app/src/organisms/Desktop/SystemLanguagePreferenceModal/__tests__/SystemLanguagePreferenceModal.test.tsx @@ -180,4 +180,16 @@ describe('SystemLanguagePreferenceModal', () => { 'zh-Hant' ) }) + + it('should not open update modal when system language changes to an unsuppported language', () => { + vi.mocked(getSystemLanguage).mockReturnValue('es-MX') + render() + + expect(screen.queryByRole('button', { name: 'Don’t change' })).toBeNull() + expect( + screen.queryByRole('button', { + name: 'Use system language', + }) + ).toBeNull() + }) }) diff --git a/app/src/organisms/Desktop/SystemLanguagePreferenceModal/index.tsx b/app/src/organisms/Desktop/SystemLanguagePreferenceModal/index.tsx index 1a3a0d7d9ba..b4bf54c0d17 100644 --- a/app/src/organisms/Desktop/SystemLanguagePreferenceModal/index.tsx +++ b/app/src/organisms/Desktop/SystemLanguagePreferenceModal/index.tsx @@ -46,11 +46,7 @@ export function SystemLanguagePreferenceModal(): JSX.Element | null { const storedSystemLanguage = useSelector(getStoredSystemLanguage) const showBootModal = appLanguage == null && systemLanguage != null - const showUpdateModal = - appLanguage != null && - systemLanguage != null && - storedSystemLanguage != null && - systemLanguage !== storedSystemLanguage + const [showUpdateModal, setShowUpdateModal] = useState(false) const title = showUpdateModal ? t('system_language_preferences_update') @@ -120,6 +116,13 @@ export function SystemLanguagePreferenceModal(): JSX.Element | null { void i18n.changeLanguage(systemLanguage) } } + // only show update modal if we support the language their system has updated to + setShowUpdateModal( + appLanguage != null && + matchedSystemLanguageOption != null && + storedSystemLanguage != null && + systemLanguage !== storedSystemLanguage + ) } }, [i18n, systemLanguage, showBootModal]) diff --git a/yarn.lock b/yarn.lock index 22621f5ebd4..22c961d6704 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3403,6 +3403,7 @@ reselect "4.0.0" rxjs "^6.5.1" semver "5.7.2" + simple-keyboard-layouts "3.4.41" styled-components "5.3.6" typeface-open-sans "0.0.75" uuid "3.2.1" @@ -20041,6 +20042,11 @@ simple-git@^3.15.1: "@kwsites/promise-deferred" "^1.1.1" debug "^4.3.4" +simple-keyboard-layouts@3.4.41: + version "3.4.41" + resolved "https://registry.yarnpkg.com/simple-keyboard-layouts/-/simple-keyboard-layouts-3.4.41.tgz#eb1504c36626f29b0d5590d419ab39c43d06969a" + integrity sha512-vVnPRgZmK9DqbqUxOgZesdAlWkzY1Cvxf8YaFW3SHJHQKuvCkR8VL6TjJyrpM8BkJa3W4ry1i3CsSydlPckAoQ== + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" From 6e407e40ae70ed110ecda7aaa76eb151adf3e50a Mon Sep 17 00:00:00 2001 From: koji Date: Fri, 22 Nov 2024 17:32:22 -0500 Subject: [PATCH 099/220] fix(protocol-designer): update Heater-shaker to Heater-Shaker (#16966) * fix(protocol-designer): update Heater-shaker to Heater-Shaker --- .../src/assets/localization/en/protocol_steps.json | 2 +- .../StepForm/StepTools/HeaterShakerTools/index.tsx | 2 +- .../ProtocolSteps/StepForm/__tests__/utils.test.ts | 5 +++++ .../pages/Designer/ProtocolSteps/StepForm/utils.ts | 13 +++++++++++-- .../ProtocolSteps/Timeline/__tests__/utils.test.tsx | 2 +- .../pages/Designer/ProtocolSteps/Timeline/utils.ts | 10 ++++++++-- 6 files changed, 27 insertions(+), 7 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/protocol_steps.json b/protocol-designer/src/assets/localization/en/protocol_steps.json index 50c6f7879f8..2f498904c61 100644 --- a/protocol-designer/src/assets/localization/en/protocol_steps.json +++ b/protocol-designer/src/assets/localization/en/protocol_steps.json @@ -44,7 +44,7 @@ "open": "open" } }, - "heater_shaker_settings": "Heater-shaker settings", + "heater_shaker_settings": "Heater-Shaker Settings", "in": "in", "into": "into", "magnetic_module": { diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/HeaterShakerTools/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/HeaterShakerTools/index.tsx index 5d2035620d3..3447de54069 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/HeaterShakerTools/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/HeaterShakerTools/index.tsx @@ -41,7 +41,7 @@ export function HeaterShakerTools(props: StepFormProps): JSX.Element { gridGap={SPACING.spacing4} paddingX={SPACING.spacing16} > - + {t('protocol_steps:heater_shaker_settings')} { 'Move labware to D3 on top of Magnetic Block' ) }) + + it('should capitalize the first letter of a step name and leave the rest unchanged', () => { + const moduleName = 'Heater-shaker' + expect(capitalizeFirstLetter(moduleName)).toBe('Heater-Shaker') + }) }) describe('getFormErrorsMappedToField', () => { diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/utils.ts b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/utils.ts index 3821d0ba49d..db336a0aba1 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/utils.ts +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/utils.ts @@ -337,8 +337,17 @@ export const getSaveStepSnackbarText = ( } } -export const capitalizeFirstLetter = (stepName: string): string => - `${stepName.charAt(0).toUpperCase()}${stepName.slice(1)}` +export const capitalizeFirstLetter = (stepName: string): string => { + // Note - check is for heater-shaker + if (stepName.includes('-')) { + return stepName + .split('-') + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join('-') + } else { + return `${stepName.charAt(0).toUpperCase()}${stepName.slice(1)}` + } +} type ErrorMappedToField = Record diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/utils.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/utils.test.tsx index 1d6c2149c95..2baccd90d6b 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/utils.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/utils.test.tsx @@ -4,7 +4,7 @@ import { capitalizeFirstLetterAfterNumber } from '../utils' describe('capitalizeFirstLetterAfterNumber', () => { it('should capitalize the first letter of a step type', () => { expect(capitalizeFirstLetterAfterNumber('1. heater-shaker')).toBe( - '1. Heater-shaker' + '1. Heater-Shaker' ) expect(capitalizeFirstLetterAfterNumber('22. thermocycler')).toBe( '22. Thermocycler' diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts index 56b78507a12..2d918b7790f 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/utils.ts @@ -5,8 +5,14 @@ import type { StepIdType } from '../../../../form-types' export const capitalizeFirstLetterAfterNumber = (title: string): string => title.replace( - /(^[\d\W]*)([a-zA-Z])/, - (match, prefix, firstLetter) => `${prefix}${firstLetter.toUpperCase()}` + /(^[\d\W]*)([a-zA-Z])|(-[a-zA-Z])/g, + (match, prefix, firstLetter) => { + if (prefix) { + return `${prefix}${firstLetter.toUpperCase()}` + } else { + return `${match.charAt(0)}${match.charAt(1).toUpperCase()}` + } + } ) const VOLUME_SIG_DIGITS_DEFAULT = 2 From 11f473e57667ab34fb75eff6ed7fa4f52152f007 Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Mon, 25 Nov 2024 09:56:46 -0500 Subject: [PATCH 100/220] docs(api): Python API 2.21 versioning page (#16951) # Overview List the new features of PAPI 2.21 on the Versioning page. Replaces #16935 ## Test Plan and Hands on Testing [Sandbox](http://sandbox.docs.opentrons.com/docs-versioning-2.21/v2/versioning.html#version-2-21) ## Changelog - New feature bullets (these are software-focused so they don't list all _docs_ changes) - Update version table - Bump `|apiLevel|` replacement ## Review requests Am I missing something? Feels light. But Thermocycler lids are not new API features (work in 2.16+). ## Risk assessment none, docs --- api/docs/v2/conf.py | 2 +- api/docs/v2/versioning.rst | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/api/docs/v2/conf.py b/api/docs/v2/conf.py index 708d800ce3e..c8d1e8e7f97 100644 --- a/api/docs/v2/conf.py +++ b/api/docs/v2/conf.py @@ -99,7 +99,7 @@ # use rst_prolog to hold the subsitution # update the apiLevel value whenever a new minor version is released rst_prolog = f""" -.. |apiLevel| replace:: 2.20 +.. |apiLevel| replace:: 2.21 .. |release| replace:: {release} """ diff --git a/api/docs/v2/versioning.rst b/api/docs/v2/versioning.rst index b808893dd53..935011f61dd 100644 --- a/api/docs/v2/versioning.rst +++ b/api/docs/v2/versioning.rst @@ -68,7 +68,7 @@ The maximum supported API version for your robot is listed in the Opentrons App If you upload a protocol that specifies a higher API level than the maximum supported, your robot won't be able to analyze or run your protocol. You can increase the maximum supported version by updating your robot software and Opentrons App. -Opentrons robots running the latest software (8.0.0) support the following version ranges: +Opentrons robots running the latest software (8.2.0) support the following version ranges: * **Flex:** version 2.15–|apiLevel|. * **OT-2:** versions 2.0–|apiLevel|. @@ -84,6 +84,8 @@ This table lists the correspondence between Protocol API versions and robot soft +-------------+------------------------------+ | API Version | Introduced in Robot Software | +=============+==============================+ +| 2.21 | 8.2.0 | ++-------------+------------------------------+ | 2.20 | 8.0.0 | +-------------+------------------------------+ | 2.19 | 7.3.1 | @@ -136,7 +138,9 @@ Changes in API Versions Version 2.21 ------------ -- :ref:`Liquid presence detection ` now only checks on the first aspiration of the :py:meth:`.mix` cycle. +- Adds :py:class:`.AbsorbanceReaderContext` to support the :ref:`Absorbance Plate Reader Module `. Use the load name ``absorbanceReaderV1`` with :py:meth:`.ProtocolContext.load_module` to add an Absorbance Plate Reader to a protocol. +- :ref:`Liquid presence detection ` now only checks on the first aspiration of the :py:meth:`.mix` cycle. +- Improved the run log output of :py:meth:`.ThermocyclerContext.execute_profile`. Version 2.20 ------------ From b6e29e97be87d972d79ca70b08395724389a3470 Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Mon, 25 Nov 2024 10:05:44 -0500 Subject: [PATCH 101/220] chore(app-shell-odd): push: proper deps ordering (#16968) Make does recipe dependences left to right. This fixes an issue where pushes would push a stale frontend. --- app-shell-odd/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app-shell-odd/Makefile b/app-shell-odd/Makefile index 5d2d7ac37bd..f94cab4a611 100644 --- a/app-shell-odd/Makefile +++ b/app-shell-odd/Makefile @@ -72,7 +72,7 @@ dist-ot3: clean lib NO_USB_DETECTION=true OT_APP_DEPLOY_BUCKET=opentrons-app OT_APP_DEPLOY_FOLDER=builds OPENTRONS_PROJECT=$(OPENTRONS_PROJECT) $(builder) --linux --arm64 .PHONY: push-ot3 -push-ot3: dist-ot3 deps +push-ot3: deps dist-ot3 tar -zcvf opentrons-robot-app.tar.gz -C ./dist/linux-arm64-unpacked/ ./ scp $(if $(ssh_key),-i $(ssh_key)) $(ssh_opts) -r ./opentrons-robot-app.tar.gz root@$(host): ssh $(if $(ssh_key),-i $(ssh_key)) $(ssh_opts) root@$(host) "mount -o remount,rw / && systemctl stop opentrons-robot-app && rm -rf /opt/opentrons-app && mkdir -p /opt/opentrons-app" From 378a1f2a4f92f53900a54a6a4fb990882a17a0b4 Mon Sep 17 00:00:00 2001 From: Elyor Kodirov Date: Mon, 25 Nov 2024 20:29:31 +0500 Subject: [PATCH 102/220] fix(openrons-ai-server, opentrons-ai-client): predict method (#16967) # Overview Two changed - **Backend**: Previously, two endpoints end up using the same model, therefore confused during message processing. Present, two endpoints use separate models. - **Frontend**: Flex gripper is concerned with only Flex robot - opentrons-ai-client/src/resources/utils/createProtocolUtils.tsx Closes AUTH-1076 ## Test Plan and Hands on Testing - Visit `opentrons.ai` - Click `Update an existing protocol` and follow instructions - Click `Create a new protocol` and follow instructions. Once you complete providing labware and other information. Click Submit then it will take you chat window where you need to see the generated protocol. It should not start like 'Simulation is successful'. ## Changelog ## Review requests All tests are passing ## Risk assessment Low --- .../resources/utils/createProtocolUtils.tsx | 3 +- .../api/domain/anthropic_predict.py | 76 ++- .../api/domain/config_anthropic.py | 36 +- opentrons-ai-server/api/handler/fast.py | 61 +- .../api/models/chat_request.py | 4 + .../api/storage/docs/standard-api-v0.0.1.md | 157 ----- .../storage/docs/standard-loadname-info.md | 599 ++++++++++++++++++ opentrons-ai-server/tests/helpers/client.py | 2 +- 8 files changed, 701 insertions(+), 237 deletions(-) delete mode 100644 opentrons-ai-server/api/storage/docs/standard-api-v0.0.1.md create mode 100644 opentrons-ai-server/api/storage/docs/standard-loadname-info.md diff --git a/opentrons-ai-client/src/resources/utils/createProtocolUtils.tsx b/opentrons-ai-client/src/resources/utils/createProtocolUtils.tsx index 06dd83061cb..b1510aaf89c 100644 --- a/opentrons-ai-client/src/resources/utils/createProtocolUtils.tsx +++ b/opentrons-ai-client/src/resources/utils/createProtocolUtils.tsx @@ -182,7 +182,8 @@ export function generateChatPrompt( .join('\n') : `- ${t(values.instruments.pipettes)}` const flexGripper = - values.instruments.flexGripper === FLEX_GRIPPER + values.instruments.flexGripper === FLEX_GRIPPER && + values.instruments.robot === OPENTRONS_FLEX ? `\n- ${t('with_flex_gripper')}` : '' const modules = values.modules diff --git a/opentrons-ai-server/api/domain/anthropic_predict.py b/opentrons-ai-server/api/domain/anthropic_predict.py index abd94b631ba..4ab71c99488 100644 --- a/opentrons-ai-server/api/domain/anthropic_predict.py +++ b/opentrons-ai-server/api/domain/anthropic_predict.py @@ -1,6 +1,6 @@ import uuid from pathlib import Path -from typing import Any, Dict, List +from typing import Any, Dict, List, Literal import requests import structlog @@ -23,7 +23,7 @@ def __init__(self, settings: Settings) -> None: self.model_name: str = settings.anthropic_model_name self.system_prompt: str = SYSTEM_PROMPT self.path_docs: Path = ROOT_PATH / "api" / "storage" / "docs" - self._messages: List[MessageParam] = [ + self.cached_docs: List[MessageParam] = [ { "role": "user", "content": [ @@ -77,19 +77,26 @@ def get_docs(self) -> str: return "\n".join(xml_output) @tracer.wrap() - def generate_message(self, max_tokens: int = 4096) -> Message: + def _process_message( + self, user_id: str, messages: List[MessageParam], message_type: Literal["create", "update"], max_tokens: int = 4096 + ) -> Message: + """ + Internal method to handle message processing with different system prompts. + For now, system prompt is the same. + """ - response = self.client.messages.create( + response: Message = self.client.messages.create( model=self.model_name, system=self.system_prompt, max_tokens=max_tokens, - messages=self._messages, + messages=messages, tools=self.tools, # type: ignore extra_headers={"anthropic-beta": "prompt-caching-2024-07-31"}, + metadata={"user_id": user_id}, ) logger.info( - "Token usage", + f"Token usage: {message_type.capitalize()}", extra={ "input_tokens": response.usage.input_tokens, "output_tokens": response.usage.output_tokens, @@ -100,15 +107,23 @@ def generate_message(self, max_tokens: int = 4096) -> Message: return response @tracer.wrap() - def predict(self, prompt: str) -> str | None: + def process_message( + self, user_id: str, prompt: str, history: List[MessageParam] | None = None, message_type: Literal["create", "update"] = "create" + ) -> str | None: + """Unified method for creating and updating messages""" try: - self._messages.append({"role": "user", "content": PROMPT.format(USER_PROMPT=prompt)}) - response = self.generate_message() + messages: List[MessageParam] = self.cached_docs.copy() + if history: + messages += history + + messages.append({"role": "user", "content": PROMPT.format(USER_PROMPT=prompt)}) + response = self._process_message(user_id=user_id, messages=messages, message_type=message_type) + if response.content[-1].type == "tool_use": tool_use = response.content[-1] - self._messages.append({"role": "assistant", "content": response.content}) + messages.append({"role": "assistant", "content": response.content}) result = self.handle_tool_use(tool_use.name, tool_use.input) # type: ignore - self._messages.append( + messages.append( { "role": "user", "content": [ @@ -120,25 +135,26 @@ def predict(self, prompt: str) -> str | None: ], } ) - follow_up = self.generate_message() - response_text = follow_up.content[0].text # type: ignore - self._messages.append({"role": "assistant", "content": response_text}) - return response_text + follow_up = self._process_message(user_id=user_id, messages=messages, message_type=message_type) + return follow_up.content[0].text # type: ignore elif response.content[0].type == "text": - response_text = response.content[0].text - self._messages.append({"role": "assistant", "content": response_text}) - return response_text + return response.content[0].text logger.error("Unexpected response type") return None - except IndexError as e: - logger.error("Invalid response format", extra={"error": str(e)}) - return None except Exception as e: - logger.error("Error in predict method", extra={"error": str(e)}) + logger.error(f"Error in {message_type} method", extra={"error": str(e)}) return None + @tracer.wrap() + def create(self, user_id: str, prompt: str, history: List[MessageParam] | None = None) -> str | None: + return self.process_message(user_id, prompt, history, "create") + + @tracer.wrap() + def update(self, user_id: str, prompt: str, history: List[MessageParam] | None = None) -> str | None: + return self.process_message(user_id, prompt, history, "update") + @tracer.wrap() def handle_tool_use(self, func_name: str, func_params: Dict[str, Any]) -> str: if func_name == "simulate_protocol": @@ -148,17 +164,6 @@ def handle_tool_use(self, func_name: str, func_params: Dict[str, Any]) -> str: logger.error("Unknown tool", extra={"tool": func_name}) raise ValueError(f"Unknown tool: {func_name}") - @tracer.wrap() - def reset(self) -> None: - self._messages = [ - { - "role": "user", - "content": [ - {"type": "text", "text": DOCUMENTS.format(doc_content=self.get_docs()), "cache_control": {"type": "ephemeral"}} # type: ignore - ], - } - ] - @tracer.wrap() def simulate_protocol(self, protocol: str) -> str: url = "https://Opentrons-simulator.hf.space/protocol" @@ -197,8 +202,9 @@ def main() -> None: settings = Settings() llm = AnthropicPredict(settings) - prompt = Prompt.ask("Type a prompt to send to the Anthropic API:") - completion = llm.predict(prompt) + Prompt.ask("Type a prompt to send to the Anthropic API:") + + completion = llm.create(user_id="1", prompt="hi", history=None) print(completion) diff --git a/opentrons-ai-server/api/domain/config_anthropic.py b/opentrons-ai-server/api/domain/config_anthropic.py index 9d511012592..beebc16d5ec 100644 --- a/opentrons-ai-server/api/domain/config_anthropic.py +++ b/opentrons-ai-server/api/domain/config_anthropic.py @@ -4,14 +4,11 @@ Your key responsibilities: 1. Welcome scientists warmly and understand their protocol needs -2. Generate accurate Python protocols using standard Opentrons labware +2. Generate accurate Python protocols using standard Opentrons labware (see standard-loadname-info.md in ) 3. Provide clear explanations and documentation 4. Flag potential safety or compatibility issues 5. Suggest protocol optimizations when appropriate -Call protocol simulation tool to validate the code - only when it is called explicitly by the user. -For all other queries, provide direct responses. - Important guidelines: - Always verify labware compatibility before generating protocols - Include appropriate error handling in generated code @@ -28,26 +25,25 @@ """ PROMPT = """ -Here are the inputs you will work with: - - -{USER_PROMPT} - - Follow these instructions to handle the user's prompt: -1. Analyze the user's prompt to determine if it's: +1. : a) A request to generate a protocol - b) A question about the Opentrons Python API v2 + b) A question about the Opentrons Python API v2 or about details of protocol c) A common task (e.g., value changes, OT-2 to Flex conversion, slot correction) d) An unrelated or unclear request + e) A tool calling. If a user calls simulate protocol explicity, then call. + f) A greeting. Respond kindly. -2. If the prompt is unrelated or unclear, ask the user for clarification. For example: - I apologize, but your prompt seems unclear. Could you please provide more details? + Note: when you respond you dont need mention the category or the type. +2. If the prompt is unrelated or unclear, ask the user for clarification. + I'm sorry, but your prompt seems unclear. Could you please provide more details? + You dont need to mention -3. If the prompt is a question about the API, answer it using only the information + +3. If the prompt is a question about the API or details, answer it using only the information provided in the section. Provide references and place them under the tag. Format your response like this: API answer: @@ -86,8 +82,8 @@ }} requirements = {{ - 'robotType': '[Robot type based on user prompt, OT-2 or Flex, default is OT-2]', - 'apiLevel': '[apiLevel, default is 2.19 ]' + 'robotType': '[Robot type: OT-2(default) for Opentrons OT-2, Flex for Opentrons Flex]', + 'apiLevel': '[apiLevel, default: 2.19]' }} def run(protocol: protocol_api.ProtocolContext): @@ -214,4 +210,10 @@ def run(protocol: protocol_api.ProtocolContext): as a reference to generate a basic protocol. Remember to use only the information provided in the . Do not introduce any external information or assumptions. + +Here are the inputs you will work with: + + +{USER_PROMPT} + """ diff --git a/opentrons-ai-server/api/handler/fast.py b/opentrons-ai-server/api/handler/fast.py index b93eb6580ce..a167693dc2c 100644 --- a/opentrons-ai-server/api/handler/fast.py +++ b/opentrons-ai-server/api/handler/fast.py @@ -199,10 +199,19 @@ async def create_chat_completion( return ChatResponse(reply="Default fake response. ", fake=body.fake) response: Optional[str] = None + + if body.history and body.history[0].get("content") and "Write a protocol using" in body.history[0]["content"]: # type: ignore + protocol_option = "create" + else: + protocol_option = "update" + if "openai" in settings.model.lower(): response = openai.predict(prompt=body.message, chat_completion_message_params=body.history) else: - response = claude.predict(prompt=body.message) + if protocol_option == "create": + response = claude.create(user_id=str(user.sub), prompt=body.message, history=body.history) # type: ignore + else: + response = claude.update(user_id=str(user.sub), prompt=body.message, history=body.history) # type: ignore if response is None or response == "": return ChatResponse(reply="No response was generated", fake=bool(body.fake)) @@ -218,35 +227,36 @@ async def create_chat_completion( @tracer.wrap() @app.post( - "/api/chat/updateProtocol", + "/api/chat/createProtocol", response_model=Union[ChatResponse, ErrorResponse], - summary="Updates protocol", - description="Generate a chat response based on the provided prompt that will update an existing protocol with the required changes.", + summary="Creates protocol", + description="Generate a chat response based on the provided prompt that will create a new protocol with the required changes.", ) -async def update_protocol( - body: UpdateProtocol, user: Annotated[User, Security(auth.verify)] +async def create_protocol( + body: CreateProtocol, user: Annotated[User, Security(auth.verify)] ) -> Union[ChatResponse, ErrorResponse]: # noqa: B008 """ Generate an updated protocol using LLM. - - **request**: The HTTP request containing the existing protocol and other relevant parameters. + - **request**: The HTTP request containing the chat message. - **returns**: A chat response or an error message. """ - logger.info("POST /api/chat/updateProtocol", extra={"body": body.model_dump(), "user": user}) + logger.info("POST /api/chat/createProtocol", extra={"body": body.model_dump(), "user": user}) try: - if not body.protocol_text or body.protocol_text == "": + + if not body.prompt or body.prompt == "": raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail=EmptyRequestError(message="Request body is empty").model_dump() ) if body.fake: - return ChatResponse(reply="Fake response", fake=bool(body.fake)) + return ChatResponse(reply="Fake response", fake=body.fake) response: Optional[str] = None if "openai" in settings.model.lower(): - response = openai.predict(prompt=body.prompt, chat_completion_message_params=None) + response = openai.predict(prompt=str(body.model_dump()), chat_completion_message_params=None) else: - response = claude.predict(prompt=body.prompt) + response = claude.create(user_id=str(user.sub), prompt=body.prompt, history=None) if response is None or response == "": return ChatResponse(reply="No response was generated", fake=bool(body.fake)) @@ -254,7 +264,7 @@ async def update_protocol( return ChatResponse(reply=response, fake=bool(body.fake)) except Exception as e: - logger.exception("Error processing protocol update") + logger.exception("Error processing protocol creation") raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=InternalServerError(exception_object=e).model_dump() ) from e @@ -262,36 +272,35 @@ async def update_protocol( @tracer.wrap() @app.post( - "/api/chat/createProtocol", + "/api/chat/updateProtocol", response_model=Union[ChatResponse, ErrorResponse], - summary="Creates protocol", - description="Generate a chat response based on the provided prompt that will create a new protocol with the required changes.", + summary="Updates protocol", + description="Generate a chat response based on the provided prompt that will update an existing protocol with the required changes.", ) -async def create_protocol( - body: CreateProtocol, user: Annotated[User, Security(auth.verify)] +async def update_protocol( + body: UpdateProtocol, user: Annotated[User, Security(auth.verify)] ) -> Union[ChatResponse, ErrorResponse]: # noqa: B008 """ Generate an updated protocol using LLM. - - **request**: The HTTP request containing the chat message. + - **request**: The HTTP request containing the existing protocol and other relevant parameters. - **returns**: A chat response or an error message. """ - logger.info("POST /api/chat/createProtocol", extra={"body": body.model_dump(), "user": user}) + logger.info("POST /api/chat/updateProtocol", extra={"body": body.model_dump(), "user": user}) try: - - if not body.prompt or body.prompt == "": + if not body.protocol_text or body.protocol_text == "": raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail=EmptyRequestError(message="Request body is empty").model_dump() ) if body.fake: - return ChatResponse(reply="Fake response", fake=body.fake) + return ChatResponse(reply="Fake response", fake=bool(body.fake)) response: Optional[str] = None if "openai" in settings.model.lower(): - response = openai.predict(prompt=str(body.model_dump()), chat_completion_message_params=None) + response = openai.predict(prompt=body.prompt, chat_completion_message_params=None) else: - response = claude.predict(prompt=str(body.model_dump())) + response = claude.update(user_id=str(user.sub), prompt=body.prompt, history=None) if response is None or response == "": return ChatResponse(reply="No response was generated", fake=bool(body.fake)) @@ -299,7 +308,7 @@ async def create_protocol( return ChatResponse(reply=response, fake=bool(body.fake)) except Exception as e: - logger.exception("Error processing protocol creation") + logger.exception("Error processing protocol update") raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=InternalServerError(exception_object=e).model_dump() ) from e diff --git a/opentrons-ai-server/api/models/chat_request.py b/opentrons-ai-server/api/models/chat_request.py index fb8c0942c9d..6135ba0618c 100644 --- a/opentrons-ai-server/api/models/chat_request.py +++ b/opentrons-ai-server/api/models/chat_request.py @@ -24,9 +24,13 @@ class Chat(BaseModel): Field(None, description="Chat history in the form of a list of messages. Type is from OpenAI's ChatCompletionMessageParam"), ] +ChatOptions = Literal["update", "create"] +ChatOptionType = Annotated[Optional[ChatOptions], Field("create", description="which chat pathway did the user enter: create or update")] + class ChatRequest(BaseModel): message: str = Field(..., description="The latest message to be processed.") history: HistoryType fake: bool = Field(True, description="When set to true, the response will be a fake. OpenAI API is not used.") fake_key: FakeKeyType + chat_options: ChatOptionType diff --git a/opentrons-ai-server/api/storage/docs/standard-api-v0.0.1.md b/opentrons-ai-server/api/storage/docs/standard-api-v0.0.1.md deleted file mode 100644 index f4b54d4308a..00000000000 --- a/opentrons-ai-server/api/storage/docs/standard-api-v0.0.1.md +++ /dev/null @@ -1,157 +0,0 @@ -Standard API - -### Approved Pipette Loadnames - -Note that the labware names are hard to differentiate sometimes, -since there are cases that they differ in terms of last digits only. - -#### OT-2 Approved Loadnames - -For OT-2 robots, use the following approved loadnames: - -- p20_single_gen2 -- p300_single_gen2 -- p1000_single_gen2 -- p300_multi_gen2 -- p20_multi_gen2 - -#### Flex Approved Loadnames - -For Flex robots, use these approved loadnames: - -- flex_1channel_50 -- flex_1channel_1000 -- flex_8channel_50 -- flex_8channel_1000 -- flex_96channel_1000 - -### Agilent Labware - -- Agilent 1 Well Reservoir 290 mL: agilent_1_reservoir_290ml - -### Applied Biosystems Labware - -- Applied Biosystems MicroAmp 384 Well Plate 40 uL: appliedbiosystemsmicroamp_384_wellplate_40ul - -### Axygen Labware - -- Axygen 1 Well Reservoir 90 mL: axygen_1_reservoir_90ml - -### Bio-Rad Labware - -- Bio-Rad 384 Well Plate 50 uL: biorad_384_wellplate_50ul -- Bio-Rad 96 Well Plate 200 uL PCR: biorad_96_wellplate_200ul_pcr - -### Corning Labware - -- Corning 12 Well Plate 6.9 mL Flat: corning_12_wellplate_6.9ml_flat -- Corning 24 Well Plate 3.4 mL Flat: corning_24_wellplate_3.4ml_flat -- Corning 384 Well Plate 112 uL Flat: corning_384_wellplate_112ul_flat -- Corning 48 Well Plate 1.6 mL Flat: corning_48_wellplate_1.6ml_flat -- Corning 6 Well Plate 16.8 mL Flat: corning_6_wellplate_16.8ml_flat -- Corning 96 Well Plate 360 uL Flat: corning_96_wellplate_360ul_flat - -### GEB Labware - -- GEB 96 Tip Rack 1000 uL: geb_96_tiprack_1000ul -- GEB 96 Tip Rack 10 uL: geb_96_tiprack_10ul - -### NEST Labware - -- NEST 12 Well Reservoir 15 mL: nest_12_reservoir_15ml -- NEST 1 Well Reservoir 195 mL: nest_1_reservoir_195ml -- NEST 1 Well Reservoir 290 mL: nest_1_reservoir_290ml -- NEST 96 Well Plate 100 uL PCR Full Skirt: nest_96_wellplate_100ul_pcr_full_skirt -- NEST 96 Well Plate 200 uL Flat: nest_96_wellplate_200ul_flat -- NEST 96 Deep Well Plate 2mL: nest_96_wellplate_2ml_deep - -### Opentrons Labware - -- Opentrons 10 Tube Rack with Falcon 4x50 mL, 6x15 mL Conical: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical -- Opentrons 10 Tube Rack with NEST 4x50 mL, 6x15 mL Conical: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical -- Opentrons 15 Tube Rack with Falcon 15 mL Conical: opentrons_15_tuberack_falcon_15ml_conical -- Opentrons 15 Tube Rack with NEST 15 mL Conical: opentrons_15_tuberack_nest_15ml_conical -- Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap: opentrons_24_aluminumblock_generic_2ml_screwcap -- Opentrons 24 Well Aluminum Block with NEST 0.5 mL Screwcap: opentrons_24_aluminumblock_nest_0.5ml_screwcap -- Opentrons 24 Well Aluminum Block with NEST 1.5 mL Screwcap: opentrons_24_aluminumblock_nest_1.5ml_screwcap -- Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap: opentrons_24_aluminumblock_nest_1.5ml_snapcap -- Opentrons 24 Well Aluminum Block with NEST 2 mL Screwcap: opentrons_24_aluminumblock_nest_2ml_screwcap -- Opentrons 24 Well Aluminum Block with NEST 2 mL Snapcap: opentrons_24_aluminumblock_nest_2ml_snapcap -- Opentrons 24 Tube Rack with Eppendorf 1.5 mL Safe-Lock Snapcap: opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap -- Opentrons 24 Tube Rack with Eppendorf 2 mL Safe-Lock Snapcap: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap -- Opentrons 24 Tube Rack with Generic 2 mL Screwcap: opentrons_24_tuberack_generic_2ml_screwcap -- Opentrons 24 Tube Rack with NEST 0.5 mL Screwcap: opentrons_24_tuberack_nest_0.5ml_screwcap # not opentrons_24_tuberack_nest_0_5ml_screwcap -- Opentrons 24 Tube Rack with NEST 1.5 mL Screwcap: opentrons_24_tuberack_nest_1.5ml_screwcap # not opentrons_24_tuberack_nest_1_5ml_screwcap -- Opentrons 24 Tube Rack with NEST 1.5 mL Snapcap: opentrons_24_tuberack_nest_1.5ml_snapcap # note the use of dot. (`.`); opentrons_24_tuberack_nest_1_5ml_snapcap is incorrect -- Opentrons 24 Tube Rack with NEST 2 mL Screwcap: opentrons_24_tuberack_nest_2ml_screwcap -- Opentrons 24 Tube Rack with NEST 2 mL Snapcap: opentrons_24_tuberack_nest_2ml_snapcap -- Opentrons 6 Tube Rack with Falcon 50 mL Conical: opentrons_6_tuberack_falcon_50ml_conical -- Opentrons 6 Tube Rack with NEST 50 mL Conical: opentrons_6_tuberack_nest_50ml_conical -- Opentrons 96 Well Aluminum Block with Bio-Rad Well Plate 200 uL: opentrons_96_aluminumblock_biorad_wellplate_200ul -- Opentrons 96 Well Aluminum Block with Generic PCR Strip 200 uL: opentrons_96_aluminumblock_generic_pcr_strip_200ul -- Opentrons 96 Well Aluminum Block with NEST Well Plate 100 uL: opentrons_96_aluminumblock_nest_wellplate_100ul -- Opentrons 96 Deep Well Heater-Shaker Adapter: opentrons_96_deep_well_adapter -- Opentrons 96 Deep Well Heater-Shaker Adapter with NEST Deep Well Plate 2 mL: opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep -- Opentrons OT-2 96 Filter Tip Rack 1000 uL: opentrons_96_filtertiprack_1000ul -- Opentrons OT-2 96 Filter Tip Rack 10 uL: opentrons_96_filtertiprack_10ul -- Opentrons OT-2 96 Filter Tip Rack 200 uL: opentrons_96_filtertiprack_200ul -- Opentrons OT-2 96 Filter Tip Rack 20 uL: opentrons_96_filtertiprack_20ul -- Opentrons 96 Flat Bottom Heater-Shaker Adapter: opentrons_96_flat_bottom_adapter -- Opentrons 96 Flat Bottom Heater-Shaker Adapter with NEST 96 Well Plate 200 uL Flat: opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat -- Opentrons 96 PCR Heater-Shaker Adapter: opentrons_96_pcr_adapter -- Opentrons 96 PCR Heater-Shaker Adapter with NEST Well Plate 100 ul: opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt -- Opentrons OT-2 96 Tip Rack 1000 uL: opentrons_96_tiprack_1000ul -- Opentrons OT-2 96 Tip Rack 10 uL: opentrons_96_tiprack_10ul -- Opentrons OT-2 96 Tip Rack 20 uL: opentrons_96_tiprack_20ul -- Opentrons OT-2 96 Tip Rack 300 uL: opentrons_96_tiprack_300ul -- Opentrons 96 Well Aluminum Block: opentrons_96_well_aluminum_block -- Opentrons 96 Well Aluminum Block adapter: opentrons_96_well_aluminum_block -- Opentrons Tough 96 Well Plate 200 uL PCR Full Skirt: opentrons_96_wellplate_200ul_pcr_full_skirt -- Opentrons Aluminum Flat Bottom Plate: opentrons_aluminum_flat_bottom_plate -- Opentrons Flex 96 Filter Tip Rack 1000 uL: opentrons_flex_96_filtertiprack_1000ul # note that 1000ul not 200ul -- Opentrons Flex 96 Filter Tip Rack 200 uL: opentrons_flex_96_filtertiprack_200ul # note that 200ul not 1000ul -- Opentrons Flex 96 Filter Tip Rack 50 uL: opentrons_flex_96_filtertiprack_50ul -- Opentrons Flex 96 Tip Rack 1000 uL: opentrons_flex_96_tiprack_1000ul -- Opentrons Flex 96 Tip Rack 200 uL: opentrons_flex_96_tiprack_200ul -- Opentrons Flex 96 Tip Rack 50 uL: opentrons_flex_96_tiprack_50ul -- Opentrons Flex 96 Tip Rack Adapter: opentrons_flex_96_tiprack_adapter -- Opentrons Universal Flat Heater-Shaker Adapter: opentrons_universal_flat_adapter -- Opentrons Universal Flat Heater-Shaker Adapter with Corning 384 Well Plate 112 ul Flat: opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat - -### Other Labware Brands - -- Thermo Scientific Nunc 96 Well Plate 1300 uL: thermoscientificnunc_96_wellplate_1300ul -- Thermo Scientific Nunc 96 Well Plate 2000 uL: thermoscientificnunc_96_wellplate_2000ul -- USA Scientific 12 Well Reservoir 22 mL: usascientific_12_reservoir_22ml -- USA Scientific 96 Deep Well Plate 2.4 mL: usascientific_96_wellplate_2.4ml_deep - -### Additional Opentrons Tube Racks - -- 4-in-1 Tube Rack Set 15: opentrons_15_tuberack_nest_15ml_conical -- 4-in-1 Tube Rack Set 50: opentrons_6_tuberack_nest_50ml_conical - -### Flex Pipettes - -- Flex 1-Channel 50 uL Pipette (single channel): flex_1channel_50 -- Flex 1-Channel 1000 uL Pipette (single channel): flex_1channel_1000 -- Flex 8-Channel 50 uL Pipette (multi-channel): flex_8channel_50 -- Flex 8-Channel 1000 uL Pipette (multi-channel): flex_8channel_1000 -- Flex 96-Channel 1000 uL Pipette (multi-channel): flex_96channel_1000 - -### Modules - -- temperature module: temperature module gen2 -- thermocycler module: thermocycler module -- thermocycler module gen2: thermocyclerModuleV2 - -### Single channel pipettes: - -- Flex 1-Channel 50 uL Pipette -- Flex 1-Channel 1000 uL Pipette -- flex_1channel_1000 - -### Multi channel pipettes: - -- Flex 8-Channel 50 uL Pipette -- Flex 8-Channel 1000 uL Pipette -- Flex 96-Channel 1000 uL Pipette diff --git a/opentrons-ai-server/api/storage/docs/standard-loadname-info.md b/opentrons-ai-server/api/storage/docs/standard-loadname-info.md new file mode 100644 index 00000000000..5ca402ec2f3 --- /dev/null +++ b/opentrons-ai-server/api/storage/docs/standard-loadname-info.md @@ -0,0 +1,599 @@ + +Total number of labware: 73 + + + +- Loadname: agilent_1_reservoir_290ml +- Dimensions: 1 row × 1 column +- Well count: 1 +- Max volume: 290 mL +- Well shape: V-bottom + + + +- Loadname: appliedbiosystemsmicroamp_384_wellplate_40ul +- Dimensions: 16 rows × 24 columns +- Well count: 384 +- Max volume: 40 µL +- Well shape: V-bottom +- Note: Requires Opentrons software v5.0 or later + + + +- Loadname: axygen_1_reservoir_90ml +- Dimensions: 1 row × 1 column +- Well count: 1 +- Max volume: 90 mL +- Well shape: Flat-bottom + + + +- Loadname: biorad_384_wellplate_50ul +- Dimensions: 16 rows × 24 columns +- Well count: 384 +- Max volume: 50 µL +- Well shape: V-bottom +- Note: Requires Opentrons software v5.0 or later + + + +- Loadname: biorad_96_wellplate_200ul_pcr +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 200 µL +- Well shape: V-bottom + + + +- Loadname: corning_12_wellplate_6.9ml_flat +- Dimensions: 3 rows × 4 columns +- Well count: 12 +- Max volume: 6.9 mL +- Well shape: Flat-bottom + + + +- Loadname: corning_24_wellplate_3.4ml_flat +- Dimensions: 4 rows × 6 columns +- Well count: 24 +- Max volume: 3.4 mL +- Well shape: Flat-bottom + + + +- Loadname: corning_384_wellplate_112ul_flat +- Dimensions: 16 rows × 24 columns +- Well count: 384 +- Max volume: 112 µL +- Well shape: Flat-bottom + + + +- Loadname: corning_48_wellplate_1.6ml_flat +- Dimensions: 6 rows × 8 columns +- Well count: 48 +- Max volume: 1.6 mL +- Well shape: Flat-bottom + + + +- Loadname: corning_6_wellplate_16.8ml_flat +- Dimensions: 2 rows × 3 columns +- Well count: 6 +- Max volume: 16.8 mL +- Well shape: Flat-bottom + + + +- Loadname: corning_96_wellplate_360ul_flat +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 360 µL +- Well shape: Flat-bottom + + + +- Loadname: geb_96_tiprack_1000ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 1000 µL + + + +- Loadname: geb_96_tiprack_10ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 10 µL + + + +- Loadname: nest_12_reservoir_15ml +- Dimensions: 1 row × 12 columns +- Well count: 12 +- Max volume: 15 mL +- Well shape: V-bottom + + + +- Loadname: nest_1_reservoir_195ml +- Dimensions: 1 row × 1 column +- Well count: 1 +- Max volume: 195 mL +- Well shape: V-bottom + + + +- Loadname: nest_1_reservoir_290ml +- Dimensions: 1 row × 1 column +- Well count: 1 +- Max volume: 290 mL +- Well shape: V-bottom + + + +- Loadname: nest_96_wellplate_100ul_pcr_full_skirt +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 100 µL +- Well shape: V-bottom + + + +- Loadname: nest_96_wellplate_200ul_flat +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 200 µL +- Well shape: Flat-bottom + + + +- Loadname: nest_96_wellplate_2ml_deep +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 2000 µL +- Well shape: V-bottom + + + +- Loadname: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical +- Tube count: 10 +- Configuration: + - 6 × 15 mL tubes (V-bottom) + - 4 × 50 mL tubes (V-bottom) + + + +- Loadname: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical +- Tube count: 10 +- Configuration: + - 6 × 15 mL tubes (V-bottom) + - 4 × 50 mL tubes (V-bottom) + + + +- Loadname: opentrons_15_tuberack_falcon_15ml_conical +- Dimensions: 3 rows × 5 columns +- Tube count: 15 +- Max volume: 15 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_15_tuberack_nest_15ml_conical +- Dimensions: 3 rows × 5 columns +- Tube count: 15 +- Max volume: 15 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_aluminumblock_generic_2ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_aluminumblock_nest_0.5ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 0.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_aluminumblock_nest_1.5ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 1.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_aluminumblock_nest_1.5ml_snapcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 1.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_aluminumblock_nest_2ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_aluminumblock_nest_2ml_snapcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: U-bottom + + + +- Loadname: opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 1.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: U-bottom + + + +- Loadname: opentrons_24_tuberack_generic_2ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_tuberack_nest_0.5ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 0.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_tuberack_nest_1.5ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 1.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_tuberack_nest_1.5ml_snapcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 1.5 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_tuberack_nest_2ml_screwcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_24_tuberack_nest_2ml_snapcap +- Dimensions: 4 rows × 6 columns +- Tube count: 24 +- Max volume: 2 mL per tube +- Tube shape: U-bottom + + + +- Loadname: opentrons_6_tuberack_falcon_50ml_conical +- Dimensions: 2 rows × 3 columns +- Tube count: 6 +- Max volume: 50 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_6_tuberack_nest_50ml_conical +- Dimensions: 2 rows × 3 columns +- Tube count: 6 +- Max volume: 50 mL per tube +- Tube shape: V-bottom + + + +- Loadname: opentrons_96_deep_well_temp_mod_adapter +- Dimensions: 8 rows × 12 columns +- Well count: 0 +- Max volume: Various +- Note: Adapter only + + + +- Loadname: opentrons_96_aluminumblock_biorad_wellplate_200ul +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 200 µL +- Well shape: V-bottom + + + +- Loadname: opentrons_96_aluminumblock_generic_pcr_strip_200ul +- Dimensions: 8 rows × 12 columns +- Tube count: 96 +- Max volume: 200 µL +- Tube shape: V-bottom + + + +- Loadname: opentrons_96_aluminumblock_nest_wellplate_100ul +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 100 µL +- Well shape: V-bottom + + + +- Loadname: opentrons_96_deep_well_adapter +- Dimensions: 8 rows × 12 columns +- Well count: 0 +- Max volume: Various +- Note: Adapter only + + + +- Loadname: opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 2000 µL +- Well shape: V-bottom + + + +- Loadname: opentrons_96_filtertiprack_1000ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 1000 µL + + + +- Loadname: opentrons_96_filtertiprack_10ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 10 µL + + + +- Loadname: opentrons_96_filtertiprack_200ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 200 µL + + + +- Loadname: opentrons_96_filtertiprack_20ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 20 µL + + + +- Loadname: opentrons_96_flat_bottom_adapter +- Dimensions: 8 rows × 12 columns +- Well count: 0 +- Max volume: Various +- Note: Adapter only + + + +- Loadname: opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 200 µL +- Well shape: Flat-bottom + + + +- Loadname: opentrons_96_pcr_adapter +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: Various +- Well shape: V-bottom + + + +- Loadname: opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 100 µL +- Well shape: V-bottom + + + +- Loadname: opentrons_96_tiprack_1000ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 1000 µL + + + +- Loadname: opentrons_96_tiprack_10ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 10 µL + + + +- Loadname: opentrons_96_tiprack_20ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 20 µL + + + +- Loadname: opentrons_96_tiprack_300ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 300 µL + + + +- Loadname: opentrons_96_well_aluminum_block +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: Various +- Well shape: V-bottom + + + +- Loadname: opentrons_96_wellplate_200ul_pcr_full_skirt +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 200 µL +- Well shape: V-bottom + + +- Loadname: opentrons_aluminum_flat_bottom_plate +- Dimensions: N/A (base plate) +- Well count: 0 +- Max volume: Various +- Note: Base plate only + + + +- Loadname: opentrons_flex_96_filtertiprack_1000ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 1000 µL + + + +- Loadname: opentrons_flex_96_filtertiprack_200ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 200 µL + + + +- Loadname: opentrons_flex_96_filtertiprack_50ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 50 µL + + + +- Loadname: opentrons_flex_96_tiprack_1000ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 1000 µL + + + +- Loadname: opentrons_flex_96_tiprack_200ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 200 µL + + + +- Loadname: opentrons_flex_96_tiprack_50ul +- Dimensions: 8 rows × 12 columns +- Tip count: 96 +- Max volume: 50 µL + + + +- Loadname: opentrons_flex_96_tiprack_adapter +- Dimensions: 8 rows × 12 columns +- Well count: 0 +- Max volume: Various +- Note: Adapter only + + +- Loadname: opentrons_universal_flat_adapter +- Dimensions: N/A (universal adapter) +- Well count: 0 +- Max volume: Various +- Note: Adapter only + + + +- Loadname: opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat +- Dimensions: 16 rows × 24 columns +- Well count: 384 +- Max volume: 112 µL +- Well shape: Flat-bottom + + + +- Loadname: thermoscientificnunc_96_wellplate_1300ul +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 1300 µL +- Well shape: U-bottom +- Note: Requires Opentrons software v5.0 or later + + + +- Loadname: thermoscientificnunc_96_wellplate_2000ul +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 2000 µL +- Well shape: U-bottom +- Note: Requires Opentrons software v5.0 or later + + + +- Loadname: usascientific_12_reservoir_22ml +- Dimensions: 1 row × 12 columns +- Well count: 12 +- Max volume: 22 mL +- Well shape: V-bottom + + + +- Loadname: usascientific_96_wellplate_2.4ml_deep +- Dimensions: 8 rows × 12 columns +- Well count: 96 +- Max volume: 2.4 mL +- Well shape: U-bottom + + + + - p20_single_gen2 + - volume: 1-20 µL + - p20_multi_gen2 + - volume: 1-20 µL + - p300_single_gen2 + - volume: 20-300 µL + - p300_multi_gen2 + - volume: 20-200 µL + - p1000_single_gen2 + - volume: 100-1000 µL + + + - flex_1channel_50 + - volume: 1–50 µL + - flex_1channel_1000 + - volume: 5–1000 µL + - flex_8channel_50 + - volume: 1–50 µL + - flex_8channel_1000 + - volume: 5–1000 µL + - flex_96channel_1000 + - volume: 5–1000 µL + + diff --git a/opentrons-ai-server/tests/helpers/client.py b/opentrons-ai-server/tests/helpers/client.py index bf5a7febb3c..3b3dcfa7511 100644 --- a/opentrons-ai-server/tests/helpers/client.py +++ b/opentrons-ai-server/tests/helpers/client.py @@ -65,7 +65,7 @@ def get_health(self) -> Response: @timeit def get_chat_completion(self, message: str, fake: bool = True, fake_key: Optional[FakeKeys] = None, bad_auth: bool = False) -> Response: """Call the /chat/completion endpoint and return the response.""" - request = ChatRequest(message=message, fake=fake, fake_key=fake_key, history=None) + request = ChatRequest(message=message, fake=fake, fake_key=fake_key, history=None, chat_options=None) headers = self.standard_headers if not bad_auth else self.invalid_auth_headers return self.httpx.post("/chat/completion", headers=headers, json=request.model_dump()) From dbe2afe3bf3a793ec4e8f9e4b0bb9f11ed4d72fb Mon Sep 17 00:00:00 2001 From: Rhyann Clarke <146747548+rclarke0@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:38:59 -0500 Subject: [PATCH 103/220] feat (abr-testing): Add labels to ABR Jira Tickets (#16805) # Overview Add labels to ABR JIRA Tickets ## Test Plan and Hands on Testing Tested script with different robots on different software changes ## Changelog - Adding label for if SW version is 8.2.0 - Added label if SW version is an internal release by searching for substring "alpha" - Added additional error handling for pulling data from ABR data sheets - Removed parent field - will revisit this later - ## Review requests ## Risk assessment --- .../abr_testing/automation/jira_tool.py | 15 +++- .../data_collection/abr_robot_error.py | 72 +++++++++++-------- 2 files changed, 54 insertions(+), 33 deletions(-) diff --git a/abr-testing/abr_testing/automation/jira_tool.py b/abr-testing/abr_testing/automation/jira_tool.py index d43db612561..a61c16c7f46 100644 --- a/abr-testing/abr_testing/automation/jira_tool.py +++ b/abr-testing/abr_testing/automation/jira_tool.py @@ -107,6 +107,12 @@ def open_issue(self, issue_key: str) -> str: webbrowser.open(url) return url + def get_labels(self) -> List[str]: + """Get list of available labels.""" + url = f"{self.url}/rest/api/3/label" + response = requests.request("GET", url, headers=self.headers, auth=self.auth) + return response.json() + def create_ticket( self, summary: str, @@ -118,10 +124,12 @@ def create_ticket( priority: str, components: list, affects_versions: str, - robot: str, + labels: list, + parent_name: str, ) -> Tuple[str, str]: """Create ticket.""" # Check if software version is a field on JIRA, if not replaces with existing version + # TODO: automate parent linking data = { "fields": { "project": {"id": "10273", "key": project_key}, @@ -129,7 +137,8 @@ def create_ticket( "summary": summary, "reporter": {"id": reporter_id}, "assignee": {"id": assignee_id}, - "parent": {"key": robot}, + # "parent": {"key": parent_name}, + "labels": labels, "priority": {"name": priority}, "components": [{"name": component} for component in components], "description": { @@ -194,6 +203,7 @@ def post_attachment_to_ticket(self, issue_id: str, attachment_path: str) -> None def get_project_issues(self, project_key: str) -> Dict[str, Any]: """Retrieve all issues for the given project key.""" + # TODO: add field for ticket type. headers = {"Accept": "application/json"} query = {"jql": f"project={project_key}"} response = requests.request( @@ -203,7 +213,6 @@ def get_project_issues(self, project_key: str) -> Dict[str, Any]: params=query, auth=self.auth, ) - response.raise_for_status() return response.json() def get_project_versions(self, project_key: str) -> List[str]: diff --git a/abr-testing/abr_testing/data_collection/abr_robot_error.py b/abr-testing/abr_testing/data_collection/abr_robot_error.py index f7a4237f52a..73cf12c6253 100644 --- a/abr-testing/abr_testing/data_collection/abr_robot_error.py +++ b/abr-testing/abr_testing/data_collection/abr_robot_error.py @@ -125,15 +125,20 @@ def compare_lpc_to_historical_data( & (df_lpc_data["Robot"] == robot) & (df_lpc_data["Module"] == labware_dict["Module"]) & (df_lpc_data["Adapter"] == labware_dict["Adapter"]) - & (df_lpc_data["Run Ending Error"] < 1) + & (df_lpc_data["Run Ending Error"]) + < 1 ] # Converts coordinates to floats and finds averages. - x_float = [float(value) for value in relevant_lpc["X"]] - y_float = [float(value) for value in relevant_lpc["Y"]] - z_float = [float(value) for value in relevant_lpc["Z"]] - current_x = round(labware_dict["X"], 2) - current_y = round(labware_dict["Y"], 2) - current_z = round(labware_dict["Z"], 2) + try: + x_float = [float(value) for value in relevant_lpc["X"]] + y_float = [float(value) for value in relevant_lpc["Y"]] + z_float = [float(value) for value in relevant_lpc["Z"]] + current_x = round(labware_dict["X"], 2) + current_y = round(labware_dict["Y"], 2) + current_z = round(labware_dict["Z"], 2) + except (ValueError): + x_float, y_float, z_float = [0.0], [0.0], [0.0] + current_x, current_y, current_z = 0.0, 0.0, 0.0 try: avg_x = round(mean(x_float), 2) avg_y = round(mean(y_float), 2) @@ -247,7 +252,7 @@ def get_error_runs_from_robot(ip: str) -> List[str]: f"http://{ip}:31950/runs", headers={"opentrons-version": "3"} ) run_data = response.json() - run_list = run_data["data"] + run_list = run_data.get("data", []) for run in run_list: run_id = run["id"] num_of_errors = len(run["errors"]) @@ -258,7 +263,7 @@ def get_error_runs_from_robot(ip: str) -> List[str]: def get_robot_state( ip: str, reported_string: str -) -> Tuple[Any, Any, Any, List[str], str]: +) -> Tuple[Any, Any, Any, List[str], List[str], str]: """Get robot status in case of non run error.""" description = dict() # Get instruments attached to robot @@ -274,10 +279,11 @@ def get_robot_state( f"http://{ip}:31950/health", headers={"opentrons-version": "3"} ) health_data = response.json() - parent = health_data.get("name", "") + print(f"health data {health_data}") + robot = health_data.get("name", "") # Create summary name - description["robot_name"] = parent - summary = parent + "_" + reported_string + description["robot_name"] = robot + summary = robot + "_" + reported_string affects_version = health_data.get("api_version", "") description["affects_version"] = affects_version # Instruments Attached @@ -297,6 +303,12 @@ def get_robot_state( description[module["moduleType"]] = module components = ["Flex-RABR"] components = match_error_to_component("RABR", reported_string, components) + if "alpha" in affects_version: + components.append("flex internal releases") + labels = [robot] + if "8.2" in affects_version: + labels.append("8_2_0") + parent = affects_version + " Bugs" print(components) end_time = datetime.now() print(end_time) @@ -317,13 +329,14 @@ def get_robot_state( parent, affects_version, components, + labels, whole_description_str, ) def get_run_error_info_from_robot( ip: str, one_run: str, storage_directory: str -) -> Tuple[str, str, str, List[str], str, str]: +) -> Tuple[str, str, str, List[str], List[str], str, str]: """Get error information from robot to fill out ticket.""" description = dict() # get run information @@ -339,16 +352,19 @@ def get_run_error_info_from_robot( error_code = error_dict["Error_Code"] error_instrument = error_dict["Error_Instrument"] # JIRA Ticket Fields - + robot = results.get("robot_name", "") failure_level = "Level " + str(error_level) + " Failure" components = [failure_level, "Flex-RABR"] components = match_error_to_component("RABR", str(error_type), components) - print(components) affects_version = results["API_Version"] - parent = results.get("robot_name", "") - print(parent) - summary = parent + "_" + str(one_run) + "_" + str(error_code) + "_" + error_type + if "alpha" in affects_version: + components.append("flex internal releases") + labels = [robot] + if "8.2" in affects_version: + labels.append("8_2_0") + parent = affects_version + " Bugs" + summary = robot + "_" + str(one_run) + "_" + str(error_code) + "_" + error_type # Description of error description["protocol_name"] = results["protocol"]["metadata"].get( "protocolName", "" @@ -430,6 +446,7 @@ def get_run_error_info_from_robot( parent, affects_version, components, + labels, whole_description_str, saved_file_path, ) @@ -503,18 +520,20 @@ def get_run_error_info_from_robot( one_run = error_runs[-1] # Most recent run with error. ( summary, - robot, + parent, affects_version, components, + labels, whole_description_str, run_log_file_path, ) = get_run_error_info_from_robot(ip, one_run, storage_directory) else: ( summary, - robot, + parent, affects_version, components, + labels, whole_description_str, ) = get_robot_state(ip, run_or_other) # Get Calibration Data @@ -525,16 +544,8 @@ def get_run_error_info_from_robot( print(f"Making ticket for {summary}.") # TODO: make argument or see if I can get rid of with using board_id. project_key = "RABR" - print(robot) - try: - parent_key = project_key + "-" + robot.split("ABR")[1] - except IndexError: - parent_key = "" - - # Grab all previous issues - all_issues = ticket.issues_on_board(project_key) - # TODO: read board to see if ticket for run id already exists. + all_issues = ticket.issues_on_board(project_key) # CREATE TICKET issue_key, raw_issue_url = ticket.create_ticket( summary, @@ -546,7 +557,8 @@ def get_run_error_info_from_robot( "Medium", components, affects_version, - parent_key, + labels, + parent, ) # Link Tickets to_link = ticket.match_issues(all_issues, summary) From bc0ce0974c4e97ee460c320f06a05eb764ac8b78 Mon Sep 17 00:00:00 2001 From: Josh McVey Date: Mon, 25 Nov 2024 09:50:21 -0600 Subject: [PATCH 104/220] chore(release): release notes for ot3@2.3.0-alpha.0 (#16970) --- api/release-notes-internal.md | 4 ++++ app-shell/build/release-notes-internal.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/api/release-notes-internal.md b/api/release-notes-internal.md index 1253f7e92fd..761f1f604f3 100644 --- a/api/release-notes-internal.md +++ b/api/release-notes-internal.md @@ -2,6 +2,10 @@ For more details about this release, please see the full [technical change log][ [technical change log]: https://github.com/Opentrons/opentrons/releases +## Internal Release 2.3.0-alpha.0 + +This internal release, pulled from the `edge` branch, contains features being developed for evo tip functionality. It's for internal testing only. + ## Internal Release 2.2.0-alpha.1 This internal release, pulled from the `edge` branch, contains features being developed for 8.2.0. It's for internal testing only. diff --git a/app-shell/build/release-notes-internal.md b/app-shell/build/release-notes-internal.md index be1008ec824..2a2b46ebb7c 100644 --- a/app-shell/build/release-notes-internal.md +++ b/app-shell/build/release-notes-internal.md @@ -1,6 +1,10 @@ For more details about this release, please see the full [technical changelog][]. [technical change log]: https://github.com/Opentrons/opentrons/releases +## Internal Release 2.3.0-alpha.0 + +This internal release, pulled from the `edge` branch, contains features being developed for evo tip functionality. It's for internal testing only. + ## Internal Release 2.2.0-alpha.1 This internal release, pulled from the `edge` branch, contains features being developed for 8.2.0. It's for internal testing only. From 2117a37baab182c3ebf9cf6d58c57c23bb9e5866 Mon Sep 17 00:00:00 2001 From: koji Date: Mon, 25 Nov 2024 11:29:12 -0500 Subject: [PATCH 105/220] fix(protocol-designer): remove unnecessary scroll bar from onboarding page (#16973) * fix(protocol-designer): remove unnecessary scroll bar from onboarding page --- .../src/pages/CreateNewProtocolWizard/WizardBody.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx index 828ca043176..58deec63717 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx @@ -12,7 +12,7 @@ import { Flex, JUSTIFY_SPACE_BETWEEN, LargeButton, - OVERFLOW_SCROLL, + OVERFLOW_AUTO, SPACING, StyledText, Tooltip, @@ -114,7 +114,7 @@ export function WizardBody(props: WizardBodyProps): JSX.Element { flexDirection={DIRECTION_COLUMN} gridGap={SPACING.spacing8} height="100%" - overflowY={OVERFLOW_SCROLL} + overflowY={OVERFLOW_AUTO} > Date: Mon, 25 Nov 2024 12:30:31 -0500 Subject: [PATCH 106/220] fix(abr-testing): Fix DVT1ABR3 plate type and liquid set up (#16971) # Overview Fixed DVT1ABR3 Protocol and Updated liquid setup. ## Test Plan and Hands on Testing ## Changelog - removed abr3 csv file since the protocol no longer uses it - updated liquid set up for abr3 - changed 96 well plate to flat bottom for better compatibility with the plate reader. ## Review requests ## Risk assessment --- .../active_protocols/3_Tartrazine Protocol.py | 59 ++++++++++++++----- .../protocols/csv_parameters/3_samplevols.csv | 25 -------- ... Setup.py => 3_Tartrazine Liquid Setup.py} | 15 +++-- 3 files changed, 56 insertions(+), 43 deletions(-) delete mode 100644 abr-testing/abr_testing/protocols/csv_parameters/3_samplevols.csv rename abr-testing/abr_testing/protocols/liquid_setups/{3_OT3 ABR Normalize with Tubes Liquid Setup.py => 3_Tartrazine Liquid Setup.py} (73%) diff --git a/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py b/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py index 05a6300e053..66db85468f4 100644 --- a/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py +++ b/abr-testing/abr_testing/protocols/active_protocols/3_Tartrazine Protocol.py @@ -19,55 +19,83 @@ def add_parameters(parameters: ParameterContext) -> None: - """Parameters.""" - helpers.create_single_pipette_mount_parameter(parameters) + """Add parameters.""" + parameters.add_int( + variable_name="number_of_plates", + display_name="Number of Plates", + default=4, + minimum=1, + maximum=4, + ) def run(ctx: ProtocolContext) -> None: """Protocol.""" - mount_pos_50ul = ctx.params.pipette_mount # type: ignore[attr-defined] + number_of_plates = ctx.params.number_of_plates # type: ignore [attr-defined] # Plate Reader plate_reader: AbsorbanceReaderContext = ctx.load_module( helpers.abs_mod_str, "A3" ) # type: ignore[assignment] hs: HeaterShakerContext = ctx.load_module(helpers.hs_str, "A1") # type: ignore[assignment] - hs_adapter = hs.load_adapter("opentrons_96_pcr_adapter") + hs_adapter = hs.load_adapter("opentrons_universal_flat_adapter") tube_rack = ctx.load_labware( "opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", "C2", "Reagent Tube" ) tartrazine_tube = tube_rack["A3"] - + water_tube_1 = tube_rack["A4"] + water_tube_2 = tube_rack["B3"] sample_plate_1 = ctx.load_labware( - "nest_96_wellplate_200ul_flat", "D1", "Sample Plate 1" + "corning_96_wellplate_360ul_flat", "D1", "Sample Plate 1" ) sample_plate_2 = ctx.load_labware( - "nest_96_wellplate_200ul_flat", "C1", "Sample Plate 2" + "corning_96_wellplate_360ul_flat", "D2", "Sample Plate 2" ) sample_plate_3 = ctx.load_labware( - "nest_96_wellplate_200ul_flat", "B1", "Sample Plate 3" + "corning_96_wellplate_360ul_flat", "C1", "Sample Plate 3" + ) + sample_plate_4 = ctx.load_labware( + "corning_96_wellplate_360ul_flat", "B1", "Sample Plate 4" ) - sample_plate_list = [sample_plate_1, sample_plate_2, sample_plate_3] + + sample_plate_list = [sample_plate_1, sample_plate_2, sample_plate_3, sample_plate_4] tiprack_50_1 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "D3") tiprack_50_2 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "C3") tiprack_50_3 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "B3") + tiprack_1000_1 = ctx.load_labware("opentrons_flex_96_tiprack_1000ul", "A2") tip_racks = [tiprack_50_1, tiprack_50_2, tiprack_50_3] # Pipette - p50 = ctx.load_instrument("flex_1channel_50", mount_pos_50ul, tip_racks=tip_racks) + p50 = ctx.load_instrument("flex_1channel_50", "left", tip_racks=tip_racks) + p1000 = ctx.load_instrument( + "flex_1channel_1000", "right", tip_racks=[tiprack_1000_1] + ) # Probe wells liquid_vols_and_wells: Dict[str, List[Dict[str, Well | List[Well] | float]]] = { - "Tartrazine": [{"well": tartrazine_tube, "volume": 45.0}] + "Tartrazine": [{"well": tartrazine_tube, "volume": 45.0}], + "Water": [{"well": [water_tube_1, water_tube_2], "volume": 45.0}], } helpers.find_liquid_height_of_loaded_liquids(ctx, liquid_vols_and_wells, p50) i = 0 all_percent_error_dict = {} cv_dict = {} - for sample_plate in sample_plate_list: - deck_locations = ["D1", "C1", "B1"] + vol = 0.0 + tip_count = 0 + for sample_plate in sample_plate_list[:number_of_plates]: + deck_locations = ["D1", "D2", "C1", "B1"] + p1000.pick_up_tip() for well in sample_plate.wells(): + if vol < 45000: + tube_of_choice = water_tube_1 + else: + tube_of_choice = water_tube_2 p50.pick_up_tip() + p1000.aspirate(190, tube_of_choice) + p1000.air_gap(5) + p1000.dispense(5, well.top()) + p1000.dispense(190, well) + vol += 190 height = helpers.find_liquid_height(p50, tartrazine_tube) p50.aspirate(10, tartrazine_tube.bottom(z=height)) p50.air_gap(5) @@ -75,6 +103,10 @@ def run(ctx: ProtocolContext) -> None: p50.dispense(10, well.bottom(z=0.5)) p50.blow_out() p50.return_tip() + tip_count += 1 + if tip_count >= (96 * 3): + p50.reset_tipracks() + p1000.return_tip() helpers.move_labware_to_hs(ctx, sample_plate, hs, hs_adapter) helpers.set_hs_speed(ctx, hs, 1500, 2.0, True) hs.open_labware_latch() @@ -117,7 +149,6 @@ def run(ctx: ProtocolContext) -> None: plate_reader.open_lid() ctx.move_labware(sample_plate, deck_locations[i], use_gripper=True) i += 1 - # Print percent error dictionary ctx.comment("Percent Error: " + str(all_percent_error_dict)) # Print cv dictionary diff --git a/abr-testing/abr_testing/protocols/csv_parameters/3_samplevols.csv b/abr-testing/abr_testing/protocols/csv_parameters/3_samplevols.csv deleted file mode 100644 index bc952b330a1..00000000000 --- a/abr-testing/abr_testing/protocols/csv_parameters/3_samplevols.csv +++ /dev/null @@ -1,25 +0,0 @@ -Sample_Plate, Sample_well,InitialVol,InitialConc,TargetConc -sample_plate,A2,10,3.94,1 -sample_plate,B2,10,3.5,1 -sample_plate,C2,10,3.46,1 -sample_plate,D2,10,3.1,1 -sample_plate,E2,10,2.64,1 -sample_plate,F2,10,3.16,1 -sample_plate,G2,10,2.9,1 -sample_plate,H2,10,2.8,1 -sample_plate,A3,10,2.82,1 -sample_plate,B3,10,2.84,1 -sample_plate,C3,10,2.72,1 -sample_plate,D3,10,2.9,1 -sample_plate,A5,10,3.94,1 -sample_plate,B5,10,3.5,1 -sample_plate,C5,10,3.46,1 -sample_plate,D5,10,3.1,1 -sample_plate,E5,10,2.64,1 -sample_plate,F5,10,3.16,1 -sample_plate,G5,10,2.9,1 -sample_plate,H5,10,2.8,1 -sample_plate,A6,10,2.82,1 -sample_plate,B6,10,2.84,1 -sample_plate,C6,10,2.72,1 -sample_plate,D6,10,2.9,1 diff --git a/abr-testing/abr_testing/protocols/liquid_setups/3_OT3 ABR Normalize with Tubes Liquid Setup.py b/abr-testing/abr_testing/protocols/liquid_setups/3_Tartrazine Liquid Setup.py similarity index 73% rename from abr-testing/abr_testing/protocols/liquid_setups/3_OT3 ABR Normalize with Tubes Liquid Setup.py rename to abr-testing/abr_testing/protocols/liquid_setups/3_Tartrazine Liquid Setup.py index 86e4de2aeed..9e0b29a03ed 100644 --- a/abr-testing/abr_testing/protocols/liquid_setups/3_OT3 ABR Normalize with Tubes Liquid Setup.py +++ b/abr-testing/abr_testing/protocols/liquid_setups/3_Tartrazine Liquid Setup.py @@ -1,11 +1,11 @@ -"""Plate Filler Protocol for Simple Normalize Long.""" +"""Plate Filler Protocol for Tartrazine Protocol.""" from opentrons import protocol_api from abr_testing.protocols.helpers import ( load_common_liquid_setup_labware_and_instruments, ) metadata = { - "protocolName": "DVT1ABR3 Liquids: Flex Normalize with Tubes", + "protocolName": "DVT1ABR3 Liquids: Tartrazine Protocol", "author": "Rhyann clarke ", "source": "Protocol Library", } @@ -32,9 +32,16 @@ def run(protocol: protocol_api.ProtocolContext) -> None: ) # Transfer Liquid p1000.transfer( - 4000, + 45000, source_reservoir["A1"], - reagent_tube["A1"].top(), + reagent_tube["B3"].top(), + blowout=True, + blowout_location="source well", + ) + p1000.transfer( + 45000, + source_reservoir["A1"], + reagent_tube["A4"].top(), blowout=True, blowout_location="source well", ) From 33100e7a0d5da74b298b7c1be833fa300c85643d Mon Sep 17 00:00:00 2001 From: TamarZanzouri Date: Mon, 25 Nov 2024 14:55:02 -0500 Subject: [PATCH 107/220] feat(api, robot-server): get historical and current command errors (#16697) --- .../protocol_engine/state/command_history.py | 12 + .../protocol_engine/state/commands.py | 12 +- .../state/test_command_state.py | 100 ++++- .../state/test_command_store_old.py | 11 - .../state/test_command_view_old.py | 42 +- .../data_files/data_files_store.py | 2 +- .../persistence/_migrations/v6_to_v7.py | 4 +- .../persistence/_migrations/v7_to_v8.py | 135 +++++++ .../persistence/file_and_directory_names.py | 2 +- .../persistence/persistence_directory.py | 5 +- .../persistence/tables/__init__.py | 4 +- .../persistence/tables/schema_8.py | 358 ++++++++++++++++++ .../robot_server/runs/router/base_router.py | 7 +- .../robot_server/runs/run_data_manager.py | 31 +- .../runs/run_orchestrator_store.py | 4 +- robot-server/robot_server/runs/run_store.py | 131 ++++++- robot-server/tests/persistence/test_tables.py | 132 ++++++- .../tests/runs/router/test_base_router.py | 15 +- .../tests/runs/test_run_data_manager.py | 20 +- robot-server/tests/runs/test_run_store.py | 102 ++++- 20 files changed, 1019 insertions(+), 110 deletions(-) create mode 100644 robot-server/robot_server/persistence/_migrations/v7_to_v8.py create mode 100644 robot-server/robot_server/persistence/tables/schema_8.py diff --git a/api/src/opentrons/protocol_engine/state/command_history.py b/api/src/opentrons/protocol_engine/state/command_history.py index d555764e54e..0879a7cd130 100644 --- a/api/src/opentrons/protocol_engine/state/command_history.py +++ b/api/src/opentrons/protocol_engine/state/command_history.py @@ -24,6 +24,9 @@ class CommandHistory: _all_command_ids: List[str] """All command IDs, in insertion order.""" + _all_failed_command_ids: List[str] + """All failed command IDs, in insertion order.""" + _all_command_ids_but_fixit_command_ids: List[str] """All command IDs besides fixit command intents, in insertion order.""" @@ -47,6 +50,7 @@ class CommandHistory: def __init__(self) -> None: self._all_command_ids = [] + self._all_failed_command_ids = [] self._all_command_ids_but_fixit_command_ids = [] self._queued_command_ids = OrderedSet() self._queued_setup_command_ids = OrderedSet() @@ -101,6 +105,13 @@ def get_all_commands(self) -> List[Command]: for command_id in self._all_command_ids ] + def get_all_failed_commands(self) -> List[Command]: + """Get all failed commands.""" + return [ + self._commands_by_id[command_id].command + for command_id in self._all_failed_command_ids + ] + def get_filtered_command_ids(self, include_fixit_commands: bool) -> List[str]: """Get all fixit command IDs.""" if include_fixit_commands: @@ -242,6 +253,7 @@ def set_command_failed(self, command: Command) -> None: self._remove_queue_id(command.id) self._remove_setup_queue_id(command.id) self._set_most_recently_completed_command_id(command.id) + self._all_failed_command_ids.append(command.id) def _add(self, command_id: str, command_entry: CommandEntry) -> None: """Create or update a command entry.""" diff --git a/api/src/opentrons/protocol_engine/state/commands.py b/api/src/opentrons/protocol_engine/state/commands.py index 4d2009aae80..da99c14ef3e 100644 --- a/api/src/opentrons/protocol_engine/state/commands.py +++ b/api/src/opentrons/protocol_engine/state/commands.py @@ -228,9 +228,6 @@ class CommandState: This value can be used to generate future hashes. """ - failed_command_errors: List[ErrorOccurrence] - """List of command errors that occurred during run execution.""" - has_entered_error_recovery: bool """Whether the run has entered error recovery.""" @@ -269,7 +266,6 @@ def __init__( run_started_at=None, latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=error_recovery_policy, has_entered_error_recovery=False, ) @@ -366,7 +362,6 @@ def _handle_fail_command_action(self, action: FailCommandAction) -> None: notes=action.notes, ) self._state.failed_command = self._state.command_history.get(action.command_id) - self._state.failed_command_errors.append(public_error_occurrence) if ( prev_entry.command.intent in (CommandIntent.PROTOCOL, None) @@ -706,7 +701,12 @@ def get_error(self) -> Optional[ErrorOccurrence]: def get_all_errors(self) -> List[ErrorOccurrence]: """Get the run's full error list, if there was none, returns an empty list.""" - return self._state.failed_command_errors + failed_commands = self._state.command_history.get_all_failed_commands() + return [ + command_error.error + for command_error in failed_commands + if command_error.error is not None + ] def get_has_entered_recovery_mode(self) -> bool: """Get whether the run has entered recovery mode.""" diff --git a/api/tests/opentrons/protocol_engine/state/test_command_state.py b/api/tests/opentrons/protocol_engine/state/test_command_state.py index fde0d66e654..c52cd8ca74d 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_state.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_state.py @@ -30,6 +30,7 @@ from opentrons.protocol_engine.state.commands import ( CommandStore, CommandView, + CommandErrorSlice, ) from opentrons.protocol_engine.state.config import Config from opentrons.protocol_engine.state.update_types import StateUpdate @@ -193,7 +194,7 @@ def test_command_failure(error_recovery_type: ErrorRecoveryType) -> None: ) assert subject_view.get("command-id") == expected_failed_command - assert subject.state.failed_command_errors == [expected_error_occurrence] + assert subject_view.get_all_errors() == [expected_error_occurrence] def test_command_failure_clears_queues() -> None: @@ -255,7 +256,7 @@ def test_command_failure_clears_queues() -> None: assert subject_view.get_running_command_id() is None assert subject_view.get_queue_ids() == OrderedSet() assert subject_view.get_next_to_execute() is None - assert subject.state.failed_command_errors == [expected_error_occurance] + assert subject_view.get_all_errors() == [expected_error_occurance] def test_setup_command_failure_only_clears_setup_command_queue() -> None: @@ -555,7 +556,7 @@ def test_door_during_error_recovery() -> None: subject.handle_action(play) assert subject_view.get_status() == EngineStatus.AWAITING_RECOVERY assert subject_view.get_next_to_execute() == "command-id-2" - assert subject.state.failed_command_errors == [expected_error_occurance] + assert subject_view.get_all_errors() == [expected_error_occurance] @pytest.mark.parametrize("close_door_before_queueing", [False, True]) @@ -732,7 +733,7 @@ def test_error_recovery_type_tracking() -> None: id="c2-error", createdAt=datetime(year=2023, month=3, day=3), error=exception ) - assert subject.state.failed_command_errors == [ + assert view.get_all_errors() == [ error_occurrence_1, error_occurrence_2, ] @@ -1100,3 +1101,94 @@ def test_get_state_update_for_false_positive() -> None: subject.handle_action(resume_from_recovery) assert subject_view.get_state_update_for_false_positive() == empty_state_update + + +def test_get_errors_slice_empty() -> None: + """It should return an empty error list.""" + subject = CommandStore( + config=_make_config(), + error_recovery_policy=_placeholder_error_recovery_policy, + is_door_open=False, + ) + subject_view = CommandView(subject.state) + result = subject_view.get_errors_slice(cursor=0, length=2) + + assert result == CommandErrorSlice(commands_errors=[], cursor=0, total_length=0) + + +def test_get_errors_slice() -> None: + """It should return a slice of all command errors.""" + subject = CommandStore( + config=_make_config(), + error_recovery_policy=_placeholder_error_recovery_policy, + is_door_open=False, + ) + + subject_view = CommandView(subject.state) + + queue_1 = actions.QueueCommandAction( + request=commands.WaitForResumeCreate( + params=commands.WaitForResumeParams(), key="command-key-1" + ), + request_hash=None, + created_at=datetime(year=2021, month=1, day=1), + command_id="command-id-1", + ) + subject.handle_action(queue_1) + queue_2_setup = actions.QueueCommandAction( + request=commands.WaitForResumeCreate( + params=commands.WaitForResumeParams(), + intent=commands.CommandIntent.SETUP, + key="command-key-2", + ), + request_hash=None, + created_at=datetime(year=2021, month=1, day=1), + command_id="command-id-2", + ) + subject.handle_action(queue_2_setup) + queue_3_setup = actions.QueueCommandAction( + request=commands.WaitForResumeCreate( + params=commands.WaitForResumeParams(), + intent=commands.CommandIntent.SETUP, + key="command-key-3", + ), + request_hash=None, + created_at=datetime(year=2021, month=1, day=1), + command_id="command-id-3", + ) + subject.handle_action(queue_3_setup) + + run_2_setup = actions.RunCommandAction( + command_id="command-id-2", + started_at=datetime(year=2022, month=2, day=2), + ) + subject.handle_action(run_2_setup) + fail_2_setup = actions.FailCommandAction( + command_id="command-id-2", + running_command=subject_view.get("command-id-2"), + error_id="error-id", + failed_at=datetime(year=2023, month=3, day=3), + error=errors.ProtocolEngineError(message="oh no"), + notes=[], + type=ErrorRecoveryType.CONTINUE_WITH_ERROR, + ) + subject.handle_action(fail_2_setup) + + result = subject_view.get_errors_slice(cursor=1, length=3) + + assert result == CommandErrorSlice( + [ + ErrorOccurrence( + id="error-id", + createdAt=datetime(2023, 3, 3, 0, 0), + isDefined=False, + errorType="ProtocolEngineError", + errorCode="4000", + detail="oh no", + errorInfo={}, + wrappedErrors=[], + ) + ], + cursor=0, + total_length=1, + ) diff --git a/api/tests/opentrons/protocol_engine/state/test_command_store_old.py b/api/tests/opentrons/protocol_engine/state/test_command_store_old.py index d5f171b7ea9..881719ba7ad 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_store_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_store_old.py @@ -333,7 +333,6 @@ def test_command_store_handles_pause_action(pause_source: PauseSource) -> None: recovery_target=None, latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -363,7 +362,6 @@ def test_command_store_handles_play_action(pause_source: PauseSource) -> None: run_started_at=datetime(year=2021, month=1, day=1), latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -398,7 +396,6 @@ def test_command_store_handles_finish_action() -> None: run_started_at=datetime(year=2021, month=1, day=1), latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -453,7 +450,6 @@ def test_command_store_handles_stop_action( run_started_at=datetime(year=2021, month=1, day=1), latest_protocol_command_hash=None, stopped_by_estop=from_estop, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -491,7 +487,6 @@ def test_command_store_handles_stop_action_when_awaiting_recovery() -> None: run_started_at=datetime(year=2021, month=1, day=1), latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -525,7 +520,6 @@ def test_command_store_cannot_restart_after_should_stop() -> None: run_started_at=None, latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -672,7 +666,6 @@ def test_command_store_wraps_unknown_errors() -> None: recovery_target=None, latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -742,7 +735,6 @@ def __init__(self, message: str) -> None: run_started_at=None, latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -778,7 +770,6 @@ def test_command_store_ignores_stop_after_graceful_finish() -> None: run_started_at=datetime(year=2021, month=1, day=1), latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -814,7 +805,6 @@ def test_command_store_ignores_finish_after_non_graceful_stop() -> None: run_started_at=datetime(year=2021, month=1, day=1), latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) @@ -850,7 +840,6 @@ def test_handles_hardware_stopped() -> None: run_started_at=None, latest_protocol_command_hash=None, stopped_by_estop=False, - failed_command_errors=[], error_recovery_policy=matchers.Anything(), has_entered_error_recovery=False, ) diff --git a/api/tests/opentrons/protocol_engine/state/test_command_view_old.py b/api/tests/opentrons/protocol_engine/state/test_command_view_old.py index f7b1d6cd31f..0cbef9cf474 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_view_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_view_old.py @@ -28,19 +28,17 @@ CommandState, CommandView, CommandSlice, - CommandErrorSlice, CommandPointer, RunResult, QueueStatus, ) -from opentrons.protocol_engine.state.command_history import CommandEntry +from opentrons.protocol_engine.state.command_history import CommandEntry, CommandHistory from opentrons.protocol_engine.errors import ProtocolCommandFailedError, ErrorOccurrence from opentrons_shared_data.errors.codes import ErrorCodes -from opentrons.protocol_engine.state.command_history import CommandHistory from opentrons.protocol_engine.state.update_types import StateUpdate from .command_fixtures import ( @@ -77,7 +75,6 @@ def get_command_view( # noqa: C901 finish_error: Optional[errors.ErrorOccurrence] = None, commands: Sequence[cmd.Command] = (), latest_command_hash: Optional[str] = None, - failed_command_errors: Optional[List[ErrorOccurrence]] = None, has_entered_error_recovery: bool = False, ) -> CommandView: """Get a command view test subject.""" @@ -121,7 +118,6 @@ def get_command_view( # noqa: C901 run_started_at=run_started_at, latest_protocol_command_hash=latest_command_hash, stopped_by_estop=False, - failed_command_errors=failed_command_errors or [], has_entered_error_recovery=has_entered_error_recovery, error_recovery_policy=_placeholder_error_recovery_policy, ) @@ -1031,42 +1027,6 @@ def test_get_slice_default_cursor_running() -> None: ) -def test_get_errors_slice_empty() -> None: - """It should return a slice from the tail if no current command.""" - subject = get_command_view(failed_command_errors=[]) - result = subject.get_errors_slice(cursor=0, length=2) - - assert result == CommandErrorSlice(commands_errors=[], cursor=0, total_length=0) - - -def test_get_errors_slice() -> None: - """It should return a slice of all command errors.""" - error_1 = ErrorOccurrence.construct(id="error-id-1") # type: ignore[call-arg] - error_2 = ErrorOccurrence.construct(id="error-id-2") # type: ignore[call-arg] - error_3 = ErrorOccurrence.construct(id="error-id-3") # type: ignore[call-arg] - error_4 = ErrorOccurrence.construct(id="error-id-4") # type: ignore[call-arg] - - subject = get_command_view( - failed_command_errors=[error_1, error_2, error_3, error_4] - ) - - result = subject.get_errors_slice(cursor=1, length=3) - - assert result == CommandErrorSlice( - commands_errors=[error_2, error_3, error_4], - cursor=1, - total_length=4, - ) - - result = subject.get_errors_slice(cursor=-3, length=10) - - assert result == CommandErrorSlice( - commands_errors=[error_1, error_2, error_3, error_4], - cursor=0, - total_length=4, - ) - - def test_get_slice_without_fixit() -> None: """It should select a cursor based on the running command, if present.""" command_1 = create_succeeded_command(command_id="command-id-1") diff --git a/robot-server/robot_server/data_files/data_files_store.py b/robot-server/robot_server/data_files/data_files_store.py index 28257dbb8d2..e0ef8fefa44 100644 --- a/robot-server/robot_server/data_files/data_files_store.py +++ b/robot-server/robot_server/data_files/data_files_store.py @@ -15,7 +15,7 @@ analysis_csv_rtp_table, run_csv_rtp_table, ) -from robot_server.persistence.tables.schema_7 import DataFileSourceSQLEnum +from robot_server.persistence.tables import DataFileSourceSQLEnum from .models import DataFileSource, FileIdNotFoundError, FileInUseError diff --git a/robot-server/robot_server/persistence/_migrations/v6_to_v7.py b/robot-server/robot_server/persistence/_migrations/v6_to_v7.py index f2c0f2ad93d..29cd284e942 100644 --- a/robot-server/robot_server/persistence/_migrations/v6_to_v7.py +++ b/robot-server/robot_server/persistence/_migrations/v6_to_v7.py @@ -16,7 +16,7 @@ import sqlalchemy from ..database import sql_engine_ctx, sqlite_rowid -from ..tables import DataFileSourceSQLEnum, schema_7 +from ..tables import schema_7 from .._folder_migrator import Migration from ..file_and_directory_names import ( @@ -102,6 +102,6 @@ def _migrate_data_files_table_with_new_source_col( """Add a new 'source' column to data_files table.""" dest_transaction.execute( sqlalchemy.update(schema_7.data_files_table).values( - {"source": DataFileSourceSQLEnum.UPLOADED} + {"source": schema_7.DataFileSourceSQLEnum.UPLOADED} ) ) diff --git a/robot-server/robot_server/persistence/_migrations/v7_to_v8.py b/robot-server/robot_server/persistence/_migrations/v7_to_v8.py new file mode 100644 index 00000000000..a5ed950a8dc --- /dev/null +++ b/robot-server/robot_server/persistence/_migrations/v7_to_v8.py @@ -0,0 +1,135 @@ +"""Migrate the persistence directory from schema 7 to 8. + +Summary of changes from schema 7: + +- Adds a new command_error to store the commands error in the commands table +- Adds a new command_status to store the commands status in the commands table +""" + +import json +from pathlib import Path +from contextlib import ExitStack +import shutil +from typing import Any + +import sqlalchemy + +from ..database import sql_engine_ctx +from ..tables import schema_8 +from .._folder_migrator import Migration + +from ..file_and_directory_names import ( + DB_FILE, +) +from ..tables.schema_8 import CommandStatusSQLEnum + + +class Migration7to8(Migration): # noqa: D101 + def migrate(self, source_dir: Path, dest_dir: Path) -> None: + """Migrate the persistence directory from schema 6 to 7.""" + # Copy over all existing directories and files to new version + for item in source_dir.iterdir(): + if item.is_dir(): + shutil.copytree(src=item, dst=dest_dir / item.name) + else: + shutil.copy(src=item, dst=dest_dir / item.name) + + dest_db_file = dest_dir / DB_FILE + + with ExitStack() as exit_stack: + dest_engine = exit_stack.enter_context(sql_engine_ctx(dest_db_file)) + + dest_transaction = exit_stack.enter_context(dest_engine.begin()) + + def add_column( + engine: sqlalchemy.engine.Engine, + table_name: str, + column: Any, + ) -> None: + column_type = column.type.compile(engine.dialect) + engine.execute( + f"ALTER TABLE {table_name} ADD COLUMN {column.key} {column_type}" + ) + + add_column( + dest_engine, + schema_8.run_command_table.name, + schema_8.run_command_table.c.command_error, + ) + + add_column( + dest_engine, + schema_8.run_command_table.name, + schema_8.run_command_table.c.command_status, + ) + + _add_missing_indexes(dest_transaction=dest_transaction) + + _migrate_command_table_with_new_command_error_col_and_command_status( + dest_transaction=dest_transaction + ) + + +def _add_missing_indexes(dest_transaction: sqlalchemy.engine.Connection) -> None: + # todo(2024-11-20): Probably add the indexes missing from prior migrations here. + # https://opentrons.atlassian.net/browse/EXEC-827 + dest_transaction.execute( + "CREATE UNIQUE INDEX ix_run_run_id_command_status_index_in_run ON run_command (run_id, command_status, index_in_run);" + ) + + +def _migrate_command_table_with_new_command_error_col_and_command_status( + dest_transaction: sqlalchemy.engine.Connection, +) -> None: + """Add a new 'command_error' and 'command_status' column to run_command_table table.""" + commands_table = schema_8.run_command_table + select_commands = sqlalchemy.select(commands_table) + commands_to_update = [] + for row in dest_transaction.execute(select_commands).all(): + data = json.loads(row.command) + new_command_error = ( + # Account for old_row.command["error"] being null. + None + if "error" not in row.command or data["error"] is None + else json.dumps(data["error"]) + ) + # parse json as enum + new_command_status = _convert_commands_status_to_sql_command_status( + data["status"] + ) + commands_to_update.append( + { + "_id": row.row_id, + "command_error": new_command_error, + "command_status": new_command_status, + } + ) + + if len(commands_to_update) > 0: + update_commands = ( + sqlalchemy.update(commands_table) + .where(commands_table.c.row_id == sqlalchemy.bindparam("_id")) + .values( + { + "command_error": sqlalchemy.bindparam("command_error"), + "command_status": sqlalchemy.bindparam("command_status"), + } + ) + ) + dest_transaction.execute(update_commands, commands_to_update) + + +def _convert_commands_status_to_sql_command_status( + status: str, +) -> CommandStatusSQLEnum: + match status: + case "queued": + return CommandStatusSQLEnum.QUEUED + case "running": + return CommandStatusSQLEnum.RUNNING + case "failed": + return CommandStatusSQLEnum.FAILED + case "succeeded": + return CommandStatusSQLEnum.SUCCEEDED + case _: + assert False, "command status is unknown" diff --git a/robot-server/robot_server/persistence/file_and_directory_names.py b/robot-server/robot_server/persistence/file_and_directory_names.py index 7074dd6db2f..220a32e7673 100644 --- a/robot-server/robot_server/persistence/file_and_directory_names.py +++ b/robot-server/robot_server/persistence/file_and_directory_names.py @@ -8,7 +8,7 @@ from typing import Final -LATEST_VERSION_DIRECTORY: Final = "7.1" +LATEST_VERSION_DIRECTORY: Final = "8" DECK_CONFIGURATION_FILE: Final = "deck_configuration.json" PROTOCOLS_DIRECTORY: Final = "protocols" diff --git a/robot-server/robot_server/persistence/persistence_directory.py b/robot-server/robot_server/persistence/persistence_directory.py index c6b40ce10ab..1f6a9fb6733 100644 --- a/robot-server/robot_server/persistence/persistence_directory.py +++ b/robot-server/robot_server/persistence/persistence_directory.py @@ -11,7 +11,7 @@ from anyio import Path as AsyncPath, to_thread from ._folder_migrator import MigrationOrchestrator -from ._migrations import up_to_3, v3_to_v4, v4_to_v5, v5_to_v6, v6_to_v7 +from ._migrations import up_to_3, v3_to_v4, v4_to_v5, v5_to_v6, v6_to_v7, v7_to_v8 from .file_and_directory_names import LATEST_VERSION_DIRECTORY _TEMP_PERSISTENCE_DIR_PREFIX: Final = "opentrons-robot-server-" @@ -59,7 +59,8 @@ def make_migration_orchestrator(prepared_root: Path) -> MigrationOrchestrator: # Subdirectory "7" was previously used on our edge branch for an in-dev # schema that was never released to the public. It may be present on # internal robots. - v6_to_v7.Migration6to7(subdirectory=LATEST_VERSION_DIRECTORY), + v6_to_v7.Migration6to7(subdirectory="7.1"), + v7_to_v8.Migration7to8(subdirectory=LATEST_VERSION_DIRECTORY), ], temp_file_prefix="temp-", ) diff --git a/robot-server/robot_server/persistence/tables/__init__.py b/robot-server/robot_server/persistence/tables/__init__.py index fa0129a4ee6..56e149d6dfd 100644 --- a/robot-server/robot_server/persistence/tables/__init__.py +++ b/robot-server/robot_server/persistence/tables/__init__.py @@ -1,7 +1,7 @@ """SQL database schemas.""" # Re-export the latest schema. -from .schema_7 import ( +from .schema_8 import ( metadata, protocol_table, analysis_table, @@ -17,6 +17,7 @@ ProtocolKindSQLEnum, BooleanSettingKey, DataFileSourceSQLEnum, + CommandStatusSQLEnum, ) @@ -36,4 +37,5 @@ "ProtocolKindSQLEnum", "BooleanSettingKey", "DataFileSourceSQLEnum", + "CommandStatusSQLEnum", ] diff --git a/robot-server/robot_server/persistence/tables/schema_8.py b/robot-server/robot_server/persistence/tables/schema_8.py new file mode 100644 index 00000000000..c92dd4645c7 --- /dev/null +++ b/robot-server/robot_server/persistence/tables/schema_8.py @@ -0,0 +1,358 @@ +"""v8 of our SQLite schema.""" +import enum +import sqlalchemy + +from robot_server.persistence._utc_datetime import UTCDateTime + +metadata = sqlalchemy.MetaData() + + +class PrimitiveParamSQLEnum(enum.Enum): + """Enum type to store primitive param type.""" + + INT = "int" + FLOAT = "float" + BOOL = "bool" + STR = "str" + + +class ProtocolKindSQLEnum(enum.Enum): + """What kind a stored protocol is.""" + + STANDARD = "standard" + QUICK_TRANSFER = "quick-transfer" + + +class DataFileSourceSQLEnum(enum.Enum): + """The source this data file is from.""" + + UPLOADED = "uploaded" + GENERATED = "generated" + + +class CommandStatusSQLEnum(enum.Enum): + """Command status sql enum.""" + + QUEUED = "queued" + RUNNING = "running" + SUCCEEDED = "succeeded" + FAILED = "failed" + + +protocol_table = sqlalchemy.Table( + "protocol", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "created_at", + UTCDateTime, + nullable=False, + ), + sqlalchemy.Column("protocol_key", sqlalchemy.String, nullable=True), + sqlalchemy.Column( + "protocol_kind", + sqlalchemy.Enum( + ProtocolKindSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + create_constraint=True, + ), + index=True, + nullable=False, + ), +) + +analysis_table = sqlalchemy.Table( + "analysis", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "protocol_id", + sqlalchemy.String, + sqlalchemy.ForeignKey("protocol.id"), + index=True, + nullable=False, + ), + sqlalchemy.Column( + "analyzer_version", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "completed_analysis", + # Stores a JSON string. See CompletedAnalysisStore. + sqlalchemy.String, + nullable=False, + ), +) + +analysis_primitive_type_rtp_table = sqlalchemy.Table( + "analysis_primitive_rtp_table", + metadata, + sqlalchemy.Column( + "row_id", + sqlalchemy.Integer, + primary_key=True, + ), + sqlalchemy.Column( + "analysis_id", + sqlalchemy.ForeignKey("analysis.id"), + nullable=False, + ), + sqlalchemy.Column( + "parameter_variable_name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "parameter_type", + sqlalchemy.Enum( + PrimitiveParamSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + create_constraint=True, + # todo(mm, 2024-09-24): Can we add validate_strings=True here? + ), + nullable=False, + ), + sqlalchemy.Column( + "parameter_value", + sqlalchemy.String, + nullable=False, + ), +) + +analysis_csv_rtp_table = sqlalchemy.Table( + "analysis_csv_rtp_table", + metadata, + sqlalchemy.Column( + "row_id", + sqlalchemy.Integer, + primary_key=True, + ), + sqlalchemy.Column( + "analysis_id", + sqlalchemy.ForeignKey("analysis.id"), + nullable=False, + ), + sqlalchemy.Column( + "parameter_variable_name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "file_id", + sqlalchemy.ForeignKey("data_files.id"), + nullable=True, + ), +) + +run_table = sqlalchemy.Table( + "run", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "created_at", + UTCDateTime, + nullable=False, + ), + sqlalchemy.Column( + "protocol_id", + sqlalchemy.String, + sqlalchemy.ForeignKey("protocol.id"), + nullable=True, + ), + sqlalchemy.Column( + "state_summary", + sqlalchemy.String, + nullable=True, + ), + sqlalchemy.Column("engine_status", sqlalchemy.String, nullable=True), + sqlalchemy.Column("_updated_at", UTCDateTime, nullable=True), + sqlalchemy.Column( + "run_time_parameters", + # Stores a JSON string. See RunStore. + sqlalchemy.String, + nullable=True, + ), +) + +action_table = sqlalchemy.Table( + "action", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column("created_at", UTCDateTime, nullable=False), + sqlalchemy.Column("action_type", sqlalchemy.String, nullable=False), + sqlalchemy.Column( + "run_id", + sqlalchemy.String, + sqlalchemy.ForeignKey("run.id"), + nullable=False, + ), +) + +run_command_table = sqlalchemy.Table( + "run_command", + metadata, + sqlalchemy.Column("row_id", sqlalchemy.Integer, primary_key=True), + sqlalchemy.Column( + "run_id", sqlalchemy.String, sqlalchemy.ForeignKey("run.id"), nullable=False + ), + # command_index in commands enumeration + sqlalchemy.Column("index_in_run", sqlalchemy.Integer, nullable=False), + sqlalchemy.Column("command_id", sqlalchemy.String, nullable=False), + sqlalchemy.Column("command", sqlalchemy.String, nullable=False), + sqlalchemy.Column( + "command_intent", + sqlalchemy.String, + # nullable=True to match the underlying SQL, which is nullable because of a bug + # in the migration that introduced this column. This is not intended to ever be + # null in practice. + nullable=True, + ), + sqlalchemy.Column("command_error", sqlalchemy.String, nullable=True), + sqlalchemy.Column( + "command_status", + sqlalchemy.Enum( + CommandStatusSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + # nullable=True because it was easier for the migration to add the column + # this way. This is not intended to ever be null in practice. + nullable=True, + # todo(mm, 2024-11-20): We want create_constraint=True here. Something + # about the way we compare SQL in test_tables.py is making that difficult-- + # even when we correctly add the constraint in the migration, the SQL + # doesn't compare equal to what create_constraint=True here would emit. + create_constraint=False, + ), + ), + sqlalchemy.Index( + "ix_run_run_id_command_id", # An arbitrary name for the index. + "run_id", + "command_id", + unique=True, + ), + sqlalchemy.Index( + "ix_run_run_id_index_in_run", # An arbitrary name for the index. + "run_id", + "index_in_run", + unique=True, + ), + sqlalchemy.Index( + "ix_run_run_id_command_status_index_in_run", # An arbitrary name for the index. + "run_id", + "command_status", + "index_in_run", + unique=True, + ), +) + +data_files_table = sqlalchemy.Table( + "data_files", + metadata, + sqlalchemy.Column( + "id", + sqlalchemy.String, + primary_key=True, + ), + sqlalchemy.Column( + "name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "file_hash", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "created_at", + UTCDateTime, + nullable=False, + ), + sqlalchemy.Column( + "source", + sqlalchemy.Enum( + DataFileSourceSQLEnum, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + # create_constraint=False to match the underlying SQL, which omits + # the constraint because of a bug in the migration that introduced this + # column. This is not intended to ever have values other than those in + # DataFileSourceSQLEnum. + create_constraint=False, + ), + # nullable=True to match the underlying SQL, which is nullable because of a bug + # in the migration that introduced this column. This is not intended to ever be + # null in practice. + nullable=True, + ), +) + +run_csv_rtp_table = sqlalchemy.Table( + "run_csv_rtp_table", + metadata, + sqlalchemy.Column( + "row_id", + sqlalchemy.Integer, + primary_key=True, + ), + sqlalchemy.Column( + "run_id", + sqlalchemy.ForeignKey("run.id"), + nullable=False, + ), + sqlalchemy.Column( + "parameter_variable_name", + sqlalchemy.String, + nullable=False, + ), + sqlalchemy.Column( + "file_id", + sqlalchemy.ForeignKey("data_files.id"), + nullable=True, + ), +) + + +class BooleanSettingKey(enum.Enum): + """Keys for boolean settings.""" + + ENABLE_ERROR_RECOVERY = "enable_error_recovery" + + +boolean_setting_table = sqlalchemy.Table( + "boolean_setting", + metadata, + sqlalchemy.Column( + "key", + sqlalchemy.Enum( + BooleanSettingKey, + values_callable=lambda obj: [e.value for e in obj], + validate_strings=True, + create_constraint=True, + ), + primary_key=True, + ), + sqlalchemy.Column( + "value", + sqlalchemy.Boolean, + nullable=False, + ), +) diff --git a/robot-server/robot_server/runs/router/base_router.py b/robot-server/robot_server/runs/router/base_router.py index 23153669d41..a57ed636647 100644 --- a/robot-server/robot_server/runs/router/base_router.py +++ b/robot-server/robot_server/runs/router/base_router.py @@ -527,14 +527,13 @@ async def get_run_commands_error( run_data_manager: Run data retrieval interface. """ try: - all_errors = run_data_manager.get_command_errors(run_id=runId) - total_length = len(all_errors) + all_errors_count = run_data_manager.get_command_errors_count(run_id=runId) if cursor is None: - if len(all_errors) > 0: + if all_errors_count > 0: # Get the most recent error, # which we can find just at the end of the list. - cursor = total_length - 1 + cursor = all_errors_count - 1 else: cursor = 0 diff --git a/robot-server/robot_server/runs/run_data_manager.py b/robot-server/robot_server/runs/run_data_manager.py index cbbcd022eb6..f5a06fa8172 100644 --- a/robot-server/robot_server/runs/run_data_manager.py +++ b/robot-server/robot_server/runs/run_data_manager.py @@ -15,7 +15,6 @@ CommandErrorSlice, CommandPointer, Command, - ErrorOccurrence, ) from opentrons.protocol_engine.types import ( PrimitiveRunTimeParamValuesType, @@ -368,18 +367,16 @@ async def update(self, run_id: str, current: Optional[bool]) -> Union[Run, BadRu next_current = current if current is False else True if next_current is False: - ( - commands, - state_summary, - parameters, - ) = await self._run_orchestrator_store.clear() + run_result = await self._run_orchestrator_store.clear() + state_summary = run_result.state_summary + parameters = run_result.parameters run_resource: Union[ RunResource, BadRunResource ] = self._run_store.update_run_state( run_id=run_id, - summary=state_summary, - commands=commands, - run_time_parameters=parameters, + summary=run_result.state_summary, + commands=run_result.commands, + run_time_parameters=run_result.parameters, ) self._runs_publisher.publish_pre_serialized_commands_notification(run_id) else: @@ -429,7 +426,7 @@ def get_commands_slice( def get_command_error_slice( self, run_id: str, cursor: int, length: int ) -> CommandErrorSlice: - """Get a slice of run commands. + """Get a slice of run commands errors. Args: run_id: ID of the run. @@ -443,9 +440,9 @@ def get_command_error_slice( return self._run_orchestrator_store.get_command_error_slice( cursor=cursor, length=length ) - - # TODO(tz, 8-5-2024): Change this to return to error list from the DB when we implement https://opentrons.atlassian.net/browse/EXEC-655. - raise RunNotCurrentError() + return self._run_store.get_commands_errors_slice( + run_id=run_id, cursor=cursor, length=length + ) def get_current_command(self, run_id: str) -> Optional[CommandPointer]: """Get the "current" command, if any. @@ -504,13 +501,11 @@ def get_command(self, run_id: str, command_id: str) -> Command: return self._run_store.get_command(run_id=run_id, command_id=command_id) - def get_command_errors(self, run_id: str) -> list[ErrorOccurrence]: + def get_command_errors_count(self, run_id: str) -> int: """Get all command errors.""" if run_id == self._run_orchestrator_store.current_run_id: - return self._run_orchestrator_store.get_command_errors() - - # TODO(tz, 8-5-2024): Change this to return the error list from the DB when we implement https://opentrons.atlassian.net/browse/EXEC-655. - raise RunNotCurrentError() + return len(self._run_orchestrator_store.get_command_errors()) + return self._run_store.get_command_errors_count(run_id) def get_nozzle_maps(self, run_id: str) -> Mapping[str, NozzleMapInterface]: """Get current nozzle maps keyed by pipette id.""" diff --git a/robot-server/robot_server/runs/run_orchestrator_store.py b/robot-server/robot_server/runs/run_orchestrator_store.py index b4bd757150e..a8ad429db4a 100644 --- a/robot-server/robot_server/runs/run_orchestrator_store.py +++ b/robot-server/robot_server/runs/run_orchestrator_store.py @@ -293,7 +293,9 @@ async def clear(self) -> RunResult: self._run_orchestrator = None return RunResult( - state_summary=run_data, commands=commands, parameters=run_time_parameters + state_summary=run_data, + commands=commands, + parameters=run_time_parameters, ) # todo(mm, 2024-11-15): Are all of these pass-through methods helpful? diff --git a/robot-server/robot_server/runs/run_store.py b/robot-server/robot_server/runs/run_store.py index 6ab8665c454..0148f20058b 100644 --- a/robot-server/robot_server/runs/run_store.py +++ b/robot-server/robot_server/runs/run_store.py @@ -11,7 +11,14 @@ from pydantic import ValidationError from opentrons.util.helpers import utc_now -from opentrons.protocol_engine import StateSummary, CommandSlice, CommandIntent +from opentrons.protocol_engine import ( + StateSummary, + CommandSlice, + CommandIntent, + ErrorOccurrence, + CommandErrorSlice, + CommandStatus, +) from opentrons.protocol_engine.commands import Command from opentrons.protocol_engine.types import RunTimeParameter @@ -38,6 +45,7 @@ from .action_models import RunAction, RunActionType from .run_models import RunNotFoundError +from ..persistence.tables import CommandStatusSQLEnum log = logging.getLogger(__name__) @@ -179,6 +187,12 @@ def update_run_state( "command_intent": str(command.intent.value) if command.intent else CommandIntent.PROTOCOL, + "command_error": pydantic_to_json(command.error) + if command.error + else None, + "command_status": _convert_commands_status_to_sql_command_status( + command.status + ), }, ) @@ -537,6 +551,107 @@ def get_all_commands_as_preserialized_list( commands_result = transaction.scalars(select_commands).all() return commands_result + def get_command_errors_count(self, run_id: str) -> int: + """Get run commands errors count from the store. + + Args: + run_id: Run ID to pull commands from. + + Returns: + The number of commands errors. + + Raises: + RunNotFoundError: The given run ID was not found. + """ + with self._sql_engine.begin() as transaction: + if not self._run_exists(run_id, transaction): + raise RunNotFoundError(run_id=run_id) + + select_count = sqlalchemy.select(sqlalchemy.func.count()).where( + and_( + run_command_table.c.run_id == run_id, + run_command_table.c.command_status == CommandStatusSQLEnum.FAILED, + ) + ) + errors_count: int = transaction.execute(select_count).scalar_one() + return errors_count + + def get_commands_errors_slice( + self, + run_id: str, + length: int, + cursor: Optional[int], + ) -> CommandErrorSlice: + """Get a slice of run commands errors from the store. + + Args: + run_id: Run ID to pull commands from. + length: Number of commands to return. + cursor: The starting index of the slice in the whole collection. + If `None`, up to `length` elements at the end of the collection will + be returned. + + Returns: + A collection of command errors as well as the actual cursor used and + the total length of the collection. + + Raises: + RunNotFoundError: The given run ID was not found. + """ + with self._sql_engine.begin() as transaction: + if not self._run_exists(run_id, transaction): + raise RunNotFoundError(run_id=run_id) + + select_count = sqlalchemy.select(sqlalchemy.func.count()).where( + and_( + run_command_table.c.run_id == run_id, + run_command_table.c.command_status == CommandStatusSQLEnum.FAILED, + ) + ) + count_result: int = transaction.execute(select_count).scalar_one() + + actual_cursor = cursor if cursor is not None else count_result - length + # Clamp to [0, count_result). + # cursor is 0 based index and row number starts from 1. + actual_cursor = max(0, min(actual_cursor, count_result - 1)) + 1 + select_command_errors = ( + sqlalchemy.select( + sqlalchemy.func.row_number().over().label("row_num"), + run_command_table, + ) + .where( + and_( + run_command_table.c.run_id == run_id, + run_command_table.c.command_status + == CommandStatusSQLEnum.FAILED, + ) + ) + .order_by(run_command_table.c.index_in_run) + .subquery() + ) + + select_slice = ( + sqlalchemy.select(select_command_errors.c.command_error) + .where( + and_( + select_command_errors.c.row_num >= actual_cursor, + select_command_errors.c.row_num < actual_cursor + length, + ) + ) + .order_by(select_command_errors.c.index_in_run) + ) + slice_result = transaction.execute(select_slice).all() + + sliced_commands: List[ErrorOccurrence] = [ + json_to_pydantic(ErrorOccurrence, row.command_error) for row in slice_result + ] + + return CommandErrorSlice( + cursor=actual_cursor, + total_length=count_result, + commands_errors=sliced_commands, + ) + @lru_cache(maxsize=_CACHE_ENTRIES) def get_command(self, run_id: str, command_id: str) -> Command: """Get run command by id. @@ -712,3 +827,17 @@ def _convert_state_to_sql_values( "_updated_at": utc_now(), "run_time_parameters": pydantic_list_to_json(run_time_parameters), } + + +def _convert_commands_status_to_sql_command_status( + status: CommandStatus, +) -> CommandStatusSQLEnum: + match status: + case CommandStatus.QUEUED: + return CommandStatusSQLEnum.QUEUED + case CommandStatus.RUNNING: + return CommandStatusSQLEnum.RUNNING + case CommandStatus.FAILED: + return CommandStatusSQLEnum.FAILED + case CommandStatus.SUCCEEDED: + return CommandStatusSQLEnum.SUCCEEDED diff --git a/robot-server/tests/persistence/test_tables.py b/robot-server/tests/persistence/test_tables.py index 642d2506e93..6363ed8f47f 100644 --- a/robot-server/tests/persistence/test_tables.py +++ b/robot-server/tests/persistence/test_tables.py @@ -18,6 +18,7 @@ schema_5, schema_6, schema_7, + schema_8, ) # The statements that we expect to emit when we create a fresh database. @@ -110,6 +111,8 @@ command_id VARCHAR NOT NULL, command VARCHAR NOT NULL, command_intent VARCHAR, + command_error VARCHAR, + command_status VARCHAR(9), PRIMARY KEY (row_id), FOREIGN KEY(run_id) REFERENCES run (id) ) @@ -121,6 +124,9 @@ CREATE UNIQUE INDEX ix_run_run_id_index_in_run ON run_command (run_id, index_in_run) """, """ + CREATE UNIQUE INDEX ix_run_run_id_command_status_index_in_run ON run_command (run_id, command_status, index_in_run) + """, + """ CREATE INDEX ix_protocol_protocol_kind ON protocol (protocol_kind) """, """ @@ -155,7 +161,130 @@ ] -EXPECTED_STATEMENTS_V7 = EXPECTED_STATEMENTS_LATEST +EXPECTED_STATEMENTS_V8 = EXPECTED_STATEMENTS_LATEST + + +EXPECTED_STATEMENTS_V7 = [ + """ + CREATE TABLE protocol ( + id VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + protocol_key VARCHAR, + protocol_kind VARCHAR(14) NOT NULL, + PRIMARY KEY (id), + CONSTRAINT protocolkindsqlenum CHECK (protocol_kind IN ('standard', 'quick-transfer')) + ) + """, + """ + CREATE TABLE analysis ( + id VARCHAR NOT NULL, + protocol_id VARCHAR NOT NULL, + analyzer_version VARCHAR NOT NULL, + completed_analysis VARCHAR NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(protocol_id) REFERENCES protocol (id) + ) + """, + """ + CREATE TABLE analysis_primitive_rtp_table ( + row_id INTEGER NOT NULL, + analysis_id VARCHAR NOT NULL, + parameter_variable_name VARCHAR NOT NULL, + parameter_type VARCHAR(5) NOT NULL, + parameter_value VARCHAR NOT NULL, + PRIMARY KEY (row_id), + FOREIGN KEY(analysis_id) REFERENCES analysis (id), + CONSTRAINT primitiveparamsqlenum CHECK (parameter_type IN ('int', 'float', 'bool', 'str')) + ) + """, + """ + CREATE TABLE analysis_csv_rtp_table ( + row_id INTEGER NOT NULL, + analysis_id VARCHAR NOT NULL, + parameter_variable_name VARCHAR NOT NULL, + file_id VARCHAR, + PRIMARY KEY (row_id), + FOREIGN KEY(analysis_id) REFERENCES analysis (id), + FOREIGN KEY(file_id) REFERENCES data_files (id) + ) + """, + """ + CREATE INDEX ix_analysis_protocol_id ON analysis (protocol_id) + """, + """ + CREATE TABLE run ( + id VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + protocol_id VARCHAR, + state_summary VARCHAR, + engine_status VARCHAR, + _updated_at DATETIME, + run_time_parameters VARCHAR, + PRIMARY KEY (id), + FOREIGN KEY(protocol_id) REFERENCES protocol (id) + ) + """, + """ + CREATE TABLE action ( + id VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + action_type VARCHAR NOT NULL, + run_id VARCHAR NOT NULL, + PRIMARY KEY (id), + FOREIGN KEY(run_id) REFERENCES run (id) + ) + """, + """ + CREATE TABLE run_command ( + row_id INTEGER NOT NULL, + run_id VARCHAR NOT NULL, + index_in_run INTEGER NOT NULL, + command_id VARCHAR NOT NULL, + command VARCHAR NOT NULL, + command_intent VARCHAR, + PRIMARY KEY (row_id), + FOREIGN KEY(run_id) REFERENCES run (id) + ) + """, + """ + CREATE UNIQUE INDEX ix_run_run_id_command_id ON run_command (run_id, command_id) + """, + """ + CREATE UNIQUE INDEX ix_run_run_id_index_in_run ON run_command (run_id, index_in_run) + """, + """ + CREATE INDEX ix_protocol_protocol_kind ON protocol (protocol_kind) + """, + """ + CREATE TABLE data_files ( + id VARCHAR NOT NULL, + name VARCHAR NOT NULL, + file_hash VARCHAR NOT NULL, + created_at DATETIME NOT NULL, + source VARCHAR(9), + PRIMARY KEY (id) + ) + """, + """ + CREATE TABLE run_csv_rtp_table ( + row_id INTEGER NOT NULL, + run_id VARCHAR NOT NULL, + parameter_variable_name VARCHAR NOT NULL, + file_id VARCHAR, + PRIMARY KEY (row_id), + FOREIGN KEY(run_id) REFERENCES run (id), + FOREIGN KEY(file_id) REFERENCES data_files (id) + ) + """, + """ + CREATE TABLE boolean_setting ( + "key" VARCHAR(21) NOT NULL, + value BOOLEAN NOT NULL, + PRIMARY KEY ("key"), + CONSTRAINT booleansettingkey CHECK ("key" IN ('enable_error_recovery')) + ) + """, +] EXPECTED_STATEMENTS_V6 = [ @@ -554,6 +683,7 @@ def _normalize_statement(statement: str) -> str: ("metadata", "expected_statements"), [ (latest_metadata, EXPECTED_STATEMENTS_LATEST), + (schema_8.metadata, EXPECTED_STATEMENTS_V8), (schema_7.metadata, EXPECTED_STATEMENTS_V7), (schema_6.metadata, EXPECTED_STATEMENTS_V6), (schema_5.metadata, EXPECTED_STATEMENTS_V5), diff --git a/robot-server/tests/runs/router/test_base_router.py b/robot-server/tests/runs/router/test_base_router.py index aa27d37e66b..bb7f723138f 100644 --- a/robot-server/tests/runs/router/test_base_router.py +++ b/robot-server/tests/runs/router/test_base_router.py @@ -759,13 +759,7 @@ async def test_get_run_commands_errors( ) ).then_raise(RunNotCurrentError("oh no!")) - error = pe_errors.ErrorOccurrence( - id="error-id", - errorType="PrettyBadError", - createdAt=datetime(year=2024, month=4, day=4), - detail="Things are not looking good.", - ) - decoy.when(mock_run_data_manager.get_command_errors("run-id")).then_return([error]) + decoy.when(mock_run_data_manager.get_command_errors_count("run-id")).then_return(1) with pytest.raises(ApiError): result = await get_run_commands_error( @@ -787,7 +781,7 @@ async def test_get_run_commands_errors_raises_no_run( createdAt=datetime(year=2024, month=4, day=4), detail="Things are not looking good.", ) - decoy.when(mock_run_data_manager.get_command_errors("run-id")).then_return([error]) + decoy.when(mock_run_data_manager.get_command_errors_count("run-id")).then_return(1) command_error_slice = CommandErrorSlice( cursor=1, total_length=3, commands_errors=[error] @@ -831,10 +825,7 @@ async def test_get_run_commands_errors_defualt_cursor( expected_cursor_result: int, ) -> None: """It should return a list of all commands errors in a run.""" - print(error_list) - decoy.when(mock_run_data_manager.get_command_errors("run-id")).then_return( - error_list - ) + decoy.when(mock_run_data_manager.get_command_errors_count("run-id")).then_return(1) command_error_slice = CommandErrorSlice( cursor=expected_cursor_result, total_length=3, commands_errors=error_list diff --git a/robot-server/tests/runs/test_run_data_manager.py b/robot-server/tests/runs/test_run_data_manager.py index d27e1aebaff..a26baacadbf 100644 --- a/robot-server/tests/runs/test_run_data_manager.py +++ b/robot-server/tests/runs/test_run_data_manager.py @@ -935,16 +935,30 @@ def test_get_commands_slice_current_run( assert expected_command_slice == result -def test_get_commands_errors_slice__not_current_run_raises( +def test_get_commands_errors_slice_historical_run( decoy: Decoy, subject: RunDataManager, mock_run_orchestrator_store: RunOrchestratorStore, + mock_run_store: RunStore, ) -> None: """Should get a sliced command error list from engine store.""" + expected_commands_errors_result = [ + ErrorOccurrence.construct(id="error-id") # type: ignore[call-arg] + ] + + command_error_slice = CommandErrorSlice( + cursor=1, total_length=3, commands_errors=expected_commands_errors_result + ) + decoy.when(mock_run_orchestrator_store.current_run_id).then_return("run-not-id") - with pytest.raises(RunNotCurrentError): - subject.get_command_error_slice("run-id", 1, 2) + decoy.when(mock_run_store.get_commands_errors_slice("run-id", 2, 1)).then_return( + command_error_slice + ) + + result = subject.get_command_error_slice("run-id", 1, 2) + + assert command_error_slice == result def test_get_commands_errors_slice_current_run( diff --git a/robot-server/tests/runs/test_run_store.py b/robot-server/tests/runs/test_run_store.py index 17a5c3b252f..ab8e5f10fdf 100644 --- a/robot-server/tests/runs/test_run_store.py +++ b/robot-server/tests/runs/test_run_store.py @@ -36,6 +36,7 @@ CommandSlice, Liquid, EngineStatus, + ErrorOccurrence, ) from opentrons.types import MountType, DeckSlotName @@ -59,7 +60,7 @@ def subject( @pytest.fixture def protocol_commands() -> List[pe_commands.Command]: - """Get a StateSummary value object.""" + """Get protocol commands list.""" return [ pe_commands.WaitForResume( id="pause-1", @@ -99,6 +100,61 @@ def protocol_commands() -> List[pe_commands.Command]: ] +@pytest.fixture +def protocol_commands_errors() -> List[pe_commands.Command]: + """Get protocol commands errors list.""" + return [ + pe_commands.WaitForResume( + id="pause-4", + key="command-key", + status=pe_commands.CommandStatus.SUCCEEDED, + createdAt=datetime(year=2022, month=2, day=2), + params=pe_commands.WaitForResumeParams(message="hey world"), + result=pe_commands.WaitForResumeResult(), + intent=pe_commands.CommandIntent.PROTOCOL, + ), + pe_commands.WaitForResume( + id="pause-1", + key="command-key", + status=pe_commands.CommandStatus.FAILED, + createdAt=datetime(year=2021, month=1, day=1), + params=pe_commands.WaitForResumeParams(message="hello world"), + result=pe_commands.WaitForResumeResult(), + intent=pe_commands.CommandIntent.PROTOCOL, + error=ErrorOccurrence.construct( + id="error-id", + createdAt=datetime(2024, 1, 1), + errorType="blah-blah", + detail="test details", + ), + ), + pe_commands.WaitForResume( + id="pause-2", + key="command-key", + status=pe_commands.CommandStatus.FAILED, + createdAt=datetime(year=2022, month=2, day=2), + params=pe_commands.WaitForResumeParams(message="hey world"), + result=pe_commands.WaitForResumeResult(), + intent=pe_commands.CommandIntent.PROTOCOL, + error=ErrorOccurrence.construct( + id="error-id-2", + createdAt=datetime(2024, 1, 1), + errorType="blah-blah", + detail="test details", + ), + ), + pe_commands.WaitForResume( + id="pause-3", + key="command-key", + status=pe_commands.CommandStatus.SUCCEEDED, + createdAt=datetime(year=2022, month=2, day=2), + params=pe_commands.WaitForResumeParams(message="hey world"), + result=pe_commands.WaitForResumeResult(), + intent=pe_commands.CommandIntent.PROTOCOL, + ), + ] + + @pytest.fixture def state_summary() -> StateSummary: """Get a StateSummary test object.""" @@ -289,6 +345,50 @@ async def test_update_run_state( ) +async def test_update_run_state_command_with_errors( + subject: RunStore, + state_summary: StateSummary, + protocol_commands_errors: List[pe_commands.Command], + run_time_parameters: List[pe_types.RunTimeParameter], + mock_runs_publisher: mock.Mock, +) -> None: + """It should be able to update a run state to the store.""" + commands_with_errors = [ + command + for command in protocol_commands_errors + if command.status == pe_commands.CommandStatus.FAILED + ] + action = RunAction( + actionType=RunActionType.PLAY, + createdAt=datetime(year=2022, month=2, day=2, tzinfo=timezone.utc), + id="action-id", + ) + + subject.insert( + run_id="run-id", + protocol_id=None, + created_at=datetime(year=2021, month=1, day=1, tzinfo=timezone.utc), + ) + + subject.update_run_state( + run_id="run-id", + summary=state_summary, + commands=protocol_commands_errors, + run_time_parameters=run_time_parameters, + ) + + subject.insert_action(run_id="run-id", action=action) + command_errors_result = subject.get_commands_errors_slice( + run_id="run-id", + length=5, + cursor=0, + ) + + assert command_errors_result.commands_errors == [ + item.error for item in commands_with_errors + ] + + async def test_insert_and_get_csv_rtp( subject: RunStore, data_files_store: DataFilesStore, From 3f3a938e05c9449fa9728640cebc8d80931340b0 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:07:21 -0500 Subject: [PATCH 108/220] fix(protocol-designer): fix logic for placing trash and staging area slots (#16974) Fix logic in `createProtocolFile` and associated util `getTrashSlot` to correctly place staging areas and trash bins. Priority for staging area slots should be B3, C3, D3, A3, as specified by product. Trash bin should be in A3 unless all 4 staging area slots are added, in which case it gets bumped to A1. Also, I fix a padding issue in ProtocolOverview DeckThumbnail to account for right padding if any staging area slot is added. Closes RQA-3326 --- protocol-designer/src/constants.ts | 28 ++++++++++++------- .../__tests__/utils.test.ts | 15 +++++++++- .../pages/CreateNewProtocolWizard/index.tsx | 12 ++++---- .../pages/CreateNewProtocolWizard/utils.tsx | 6 ++-- .../pages/ProtocolOverview/DeckThumbnail.tsx | 10 ++++++- 5 files changed, 50 insertions(+), 21 deletions(-) diff --git a/protocol-designer/src/constants.ts b/protocol-designer/src/constants.ts index b28f6ebee35..52fd9db947f 100644 --- a/protocol-designer/src/constants.ts +++ b/protocol-designer/src/constants.ts @@ -1,26 +1,27 @@ import mapValues from 'lodash/mapValues' import { - MAGNETIC_MODULE_TYPE, - TEMPERATURE_MODULE_TYPE, - THERMOCYCLER_MODULE_TYPE, + ABSORBANCE_READER_TYPE, + ABSORBANCE_READER_V1, HEATERSHAKER_MODULE_TYPE, + HEATERSHAKER_MODULE_V1, + MAGNETIC_BLOCK_TYPE, + MAGNETIC_BLOCK_V1, + MAGNETIC_MODULE_TYPE, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, + TEMPERATURE_MODULE_TYPE, TEMPERATURE_MODULE_V1, TEMPERATURE_MODULE_V2, + THERMOCYCLER_MODULE_TYPE, THERMOCYCLER_MODULE_V1, - HEATERSHAKER_MODULE_V1, THERMOCYCLER_MODULE_V2, - MAGNETIC_BLOCK_TYPE, - MAGNETIC_BLOCK_V1, - ABSORBANCE_READER_TYPE, - ABSORBANCE_READER_V1, } from '@opentrons/shared-data' import type { - LabwareDefinition2, + CutoutId, DeckSlot as DeckDefSlot, - ModuleType, + LabwareDefinition2, ModuleModel, + ModuleType, } from '@opentrons/shared-data' import type { DeckSlot, WellVolumes } from './types' @@ -167,3 +168,10 @@ export const DND_TYPES = { // Values for TC fields export const THERMOCYCLER_STATE: 'thermocyclerState' = 'thermocyclerState' export const THERMOCYCLER_PROFILE: 'thermocyclerProfile' = 'thermocyclerProfile' +// Priority for fixtures +export const STAGING_AREA_CUTOUTS_ORDERED: CutoutId[] = [ + 'cutoutB3', + 'cutoutC3', + 'cutoutD3', + 'cutoutA3', +] diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/utils.test.ts b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/utils.test.ts index 02039fb312e..17a46072474 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/utils.test.ts +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/utils.test.ts @@ -291,12 +291,25 @@ describe('getTrashSlot', () => { const result = getTrashSlot(MOCK_FORM_STATE) expect(result).toBe('cutoutA3') }) - it('should return cutoutA1 when there is a staging area in slot A3', () => { + it('should return cutoutA3 when there are 3 or fewer staging areas', () => { MOCK_FORM_STATE = { ...MOCK_FORM_STATE, additionalEquipment: ['stagingArea'], } const result = getTrashSlot(MOCK_FORM_STATE) + expect(result).toBe('cutoutA3') + }) + it('should return cutoutA1 when there are 4 staging areas', () => { + MOCK_FORM_STATE = { + ...MOCK_FORM_STATE, + additionalEquipment: [ + 'stagingArea', + 'stagingArea', + 'stagingArea', + 'stagingArea', + ], + } + const result = getTrashSlot(MOCK_FORM_STATE) expect(result).toBe('cutoutA1') }) }) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx index e0a24fea138..df079c72318 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/index.tsx @@ -16,7 +16,6 @@ import { MAGNETIC_BLOCK_TYPE, MAGNETIC_MODULE_TYPE, OT2_ROBOT_TYPE, - STAGING_AREA_CUTOUTS, TEMPERATURE_MODULE_TYPE, THERMOCYCLER_MODULE_TYPE, WASTE_CHUTE_CUTOUT, @@ -29,7 +28,10 @@ import * as labwareDefSelectors from '../../labware-defs/selectors' import * as labwareDefActions from '../../labware-defs/actions' import * as labwareIngredActions from '../../labware-ingred/actions' import { actions as steplistActions } from '../../steplist' -import { INITIAL_DECK_SETUP_STEP_ID } from '../../constants' +import { + INITIAL_DECK_SETUP_STEP_ID, + STAGING_AREA_CUTOUTS_ORDERED, +} from '../../constants' import { actions as stepFormActions } from '../../step-forms' import { createModuleWithNoSlot } from '../../modules' import { @@ -44,7 +46,6 @@ import { SelectModules } from './SelectModules' import { SelectFixtures } from './SelectFixtures' import { AddMetadata } from './AddMetadata' import { getTrashSlot } from './utils' - import type { ThunkDispatch } from 'redux-thunk' import type { NormalizedPipette } from '@opentrons/step-generation' import type { BaseState } from '../../types' @@ -283,10 +284,7 @@ export function CreateNewProtocolWizard(): JSX.Element | null { if (stagingAreas.length > 0) { stagingAreas.forEach((_, index) => { return dispatch( - createDeckFixture( - 'stagingArea', - STAGING_AREA_CUTOUTS.reverse()[index] - ) + createDeckFixture('stagingArea', STAGING_AREA_CUTOUTS_ORDERED[index]) ) }) } diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/utils.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/utils.tsx index 90e06a8368e..cbbe3d98a7f 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/utils.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/utils.tsx @@ -8,7 +8,6 @@ import { MAGNETIC_BLOCK_V1, MAGNETIC_MODULE_V1, MAGNETIC_MODULE_V2, - STAGING_AREA_CUTOUTS, TEMPERATURE_MODULE_V1, TEMPERATURE_MODULE_V2, THERMOCYCLER_MODULE_TYPE, @@ -19,6 +18,7 @@ import { import wasteChuteImage from '../../assets/images/waste_chute.png' import trashBinImage from '../../assets/images/flex_trash_bin.png' import stagingAreaImage from '../../assets/images/staging_area.png' +import { STAGING_AREA_CUTOUTS_ORDERED } from '../../constants' import type { CutoutId, @@ -268,7 +268,9 @@ export const getTrashSlot = (values: WizardFormState): string => { equipment.includes('stagingArea') ) - const cutouts = stagingAreas.map((_, index) => STAGING_AREA_CUTOUTS[index]) + const cutouts = stagingAreas.map( + (_, index) => STAGING_AREA_CUTOUTS_ORDERED[index] + ) const hasWasteChute = additionalEquipment.find(equipment => equipment.includes('wasteChute') ) diff --git a/protocol-designer/src/pages/ProtocolOverview/DeckThumbnail.tsx b/protocol-designer/src/pages/ProtocolOverview/DeckThumbnail.tsx index 250feb06df2..f28b850919b 100644 --- a/protocol-designer/src/pages/ProtocolOverview/DeckThumbnail.tsx +++ b/protocol-designer/src/pages/ProtocolOverview/DeckThumbnail.tsx @@ -35,6 +35,7 @@ import type { StagingAreaLocation, TrashCutoutId } from '@opentrons/components' import type { CutoutId, DeckSlotId } from '@opentrons/shared-data' import type { AdditionalEquipmentEntity } from '@opentrons/step-generation' +const RIGHT_COLUMN_FIXTURE_PADDING = 50 // mm const WASTE_CHUTE_SPACE = 30 const OT2_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST: string[] = [ 'calibrationMarkings', @@ -99,6 +100,8 @@ export function DeckThumbnail(props: DeckThumbnailProps): JSX.Element { const filteredAddressableAreas = deckDef.locations.addressableAreas.filter( aa => isAddressableAreaStandardSlot(aa.id, deckDef) ) + const hasRightColumnFixtures = + stagingAreaFixtures.length + wasteChuteFixtures.length > 0 return ( {() => ( <> From 36487d899d75d3dc3412dfd026521f6cb1e26c60 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Mon, 25 Nov 2024 15:33:36 -0500 Subject: [PATCH 109/220] feat(api): Allow recovering from errors that happen during the preparation part of an aspirate command (#16896) --- .../protocol_engine/commands/aspirate.py | 108 +++-- .../protocol_engine/execution/pipetting.py | 6 +- .../protocol_engine/state/update_types.py | 30 +- .../protocol_engine/commands/test_aspirate.py | 422 ++++++++++++------ .../state/test_update_types.py | 75 ++++ 5 files changed, 460 insertions(+), 181 deletions(-) create mode 100644 api/tests/opentrons/protocol_engine/state/test_update_types.py diff --git a/api/src/opentrons/protocol_engine/commands/aspirate.py b/api/src/opentrons/protocol_engine/commands/aspirate.py index 38dbe03c7e0..fa84afbde8c 100644 --- a/api/src/opentrons/protocol_engine/commands/aspirate.py +++ b/api/src/opentrons/protocol_engine/commands/aspirate.py @@ -11,6 +11,7 @@ FlowRateMixin, BaseLiquidHandlingResult, aspirate_in_place, + prepare_for_aspirate, ) from .movement_common import ( LiquidHandlingWellLocationMixin, @@ -94,6 +95,17 @@ async def execute(self, params: AspirateParams) -> _ExecuteReturn: pipette_id = params.pipetteId labware_id = params.labwareId well_name = params.wellName + well_location = params.wellLocation + + state_update = StateUpdate() + + final_location = self._state_view.geometry.get_well_position( + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + operation_volume=-params.volume, + pipette_id=pipette_id, + ) ready_to_aspirate = self._pipetting.get_is_ready_to_aspirate( pipette_id=pipette_id @@ -102,14 +114,32 @@ async def execute(self, params: AspirateParams) -> _ExecuteReturn: current_well = None if not ready_to_aspirate: - await self._movement.move_to_well( + move_result = await move_to_well( + movement=self._movement, + model_utils=self._model_utils, pipette_id=pipette_id, labware_id=labware_id, well_name=well_name, well_location=WellLocation(origin=WellOrigin.TOP), ) + state_update.append(move_result.state_update) + if isinstance(move_result, DefinedErrorData): + return DefinedErrorData(move_result.public, state_update=state_update) - await self._pipetting.prepare_for_aspirate(pipette_id=pipette_id) + prepare_result = await prepare_for_aspirate( + pipette_id=pipette_id, + pipetting=self._pipetting, + model_utils=self._model_utils, + # Note that the retryLocation is the final location, inside the liquid, + # because that's where we'd want the client to try re-aspirating if this + # command fails and the run enters error recovery. + location_if_error={"retryLocation": final_location}, + ) + state_update.append(prepare_result.state_update) + if isinstance(prepare_result, DefinedErrorData): + return DefinedErrorData( + public=prepare_result.public, state_update=state_update + ) # set our current deck location to the well now that we've made # an intermediate move for the "prepare for aspirate" step @@ -125,12 +155,15 @@ async def execute(self, params: AspirateParams) -> _ExecuteReturn: pipette_id=pipette_id, labware_id=labware_id, well_name=well_name, - well_location=params.wellLocation, + well_location=well_location, current_well=current_well, operation_volume=-params.volume, ) + state_update.append(move_result.state_update) if isinstance(move_result, DefinedErrorData): - return move_result + return DefinedErrorData( + public=move_result.public, state_update=state_update + ) aspirate_result = await aspirate_in_place( pipette_id=pipette_id, @@ -147,47 +180,42 @@ async def execute(self, params: AspirateParams) -> _ExecuteReturn: pipetting=self._pipetting, model_utils=self._model_utils, ) + state_update.append(aspirate_result.state_update) if isinstance(aspirate_result, DefinedErrorData): - return DefinedErrorData( - public=aspirate_result.public, - state_update=StateUpdate.reduce( - move_result.state_update, aspirate_result.state_update - ).set_liquid_operated( - labware_id=labware_id, - well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( - labware_id, - well_name, - params.pipetteId, - ), - volume_added=CLEAR, - ), - state_update_if_false_positive=StateUpdate.reduce( - move_result.state_update, - aspirate_result.state_update_if_false_positive, + state_update.set_liquid_operated( + labware_id=labware_id, + well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( + labware_id, + well_name, + params.pipetteId, ), + volume_added=CLEAR, ) - else: - return SuccessData( - public=AspirateResult( - volume=aspirate_result.public.volume, - position=move_result.public.position, - ), - state_update=StateUpdate.reduce( - move_result.state_update, aspirate_result.state_update - ).set_liquid_operated( - labware_id=labware_id, - well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( - labware_id, well_name, pipette_id - ), - volume_added=-aspirate_result.public.volume - * self._state_view.geometry.get_nozzles_per_well( - labware_id, - well_name, - params.pipetteId, - ), - ), + return DefinedErrorData( + public=aspirate_result.public, state_update=state_update ) + state_update.set_liquid_operated( + labware_id=labware_id, + well_names=self._state_view.geometry.get_wells_covered_by_pipette_with_active_well( + labware_id, well_name, pipette_id + ), + volume_added=-aspirate_result.public.volume + * self._state_view.geometry.get_nozzles_per_well( + labware_id, + well_name, + params.pipetteId, + ), + ) + + return SuccessData( + public=AspirateResult( + volume=aspirate_result.public.volume, + position=move_result.public.position, + ), + state_update=state_update, + ) + class Aspirate( BaseCommand[ diff --git a/api/src/opentrons/protocol_engine/execution/pipetting.py b/api/src/opentrons/protocol_engine/execution/pipetting.py index 2964f02d183..10d613e4dcf 100644 --- a/api/src/opentrons/protocol_engine/execution/pipetting.py +++ b/api/src/opentrons/protocol_engine/execution/pipetting.py @@ -91,7 +91,11 @@ def get_is_ready_to_aspirate(self, pipette_id: str) -> bool: ) async def prepare_for_aspirate(self, pipette_id: str) -> None: - """Prepare for pipette aspiration.""" + """Prepare for pipette aspiration. + + Raises: + PipetteOverpressureError, propagated as-is from the hardware controller. + """ hw_mount = self._state_view.pipettes.get_mount(pipette_id).to_hw_mount() await self._hardware_api.prepare_for_aspirate(mount=hw_mount) diff --git a/api/src/opentrons/protocol_engine/state/update_types.py b/api/src/opentrons/protocol_engine/state/update_types.py index 567ba39144c..76f16dadfbe 100644 --- a/api/src/opentrons/protocol_engine/state/update_types.py +++ b/api/src/opentrons/protocol_engine/state/update_types.py @@ -299,6 +299,19 @@ class StateUpdate: liquid_class_loaded: LiquidClassLoadedUpdate | NoChangeType = NO_CHANGE + def append(self, other: Self) -> Self: + """Apply another `StateUpdate` "on top of" this one. + + This object is mutated in-place, taking values from `other`. + If an attribute in `other` is `NO_CHANGE`, the value in this object is kept. + """ + fields = dataclasses.fields(other) + for field in fields: + other_value = other.__dict__[field.name] + if other_value != NO_CHANGE: + self.__dict__[field.name] = other_value + return self + @classmethod def reduce(cls: typing.Type[Self], *args: Self) -> Self: """Fuse multiple state updates into a single one. @@ -306,19 +319,10 @@ def reduce(cls: typing.Type[Self], *args: Self) -> Self: State updates that are later in the parameter list are preferred to those that are earlier; NO_CHANGE is ignored. """ - fields = dataclasses.fields(cls) - changes_dicts = [ - { - field.name: update.__dict__[field.name] - for field in fields - if update.__dict__[field.name] != NO_CHANGE - } - for update in args - ] - changes = {} - for changes_dict in changes_dicts: - changes.update(changes_dict) - return cls(**changes) + accumulator = cls() + for arg in args: + accumulator.append(arg) + return accumulator # These convenience functions let the caller avoid the boilerplate of constructing a # complicated dataclass tree. diff --git a/api/tests/opentrons/protocol_engine/commands/test_aspirate.py b/api/tests/opentrons/protocol_engine/commands/test_aspirate.py index 11078fb43cf..8e50d1825ae 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_aspirate.py +++ b/api/tests/opentrons/protocol_engine/commands/test_aspirate.py @@ -12,7 +12,7 @@ from opentrons.protocol_engine.commands.pipetting_common import OverpressureError from opentrons.protocol_engine.commands.movement_common import StallOrCollisionError from opentrons.protocol_engine.state import update_types -from opentrons.types import MountType, Point +from opentrons.types import Point from opentrons.protocol_engine import ( LiquidHandlingWellLocation, WellOrigin, @@ -36,9 +36,9 @@ from opentrons.protocol_engine.resources.model_utils import ModelUtils from opentrons.protocol_engine.types import ( CurrentWell, - LoadedPipette, AspiratedFluid, FluidKind, + WellLocation, ) from opentrons.hardware_control import HardwareControlAPI from opentrons.protocol_engine.notes import CommandNoteAdder @@ -67,47 +67,50 @@ def subject( async def test_aspirate_implementation_no_prep( decoy: Decoy, state_view: StateView, - hardware_api: HardwareControlAPI, movement: MovementHandler, pipetting: PipettingHandler, subject: AspirateImplementation, mock_command_note_adder: CommandNoteAdder, ) -> None: """An Aspirate should have an execution implementation without preparing to aspirate.""" + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" location = LiquidHandlingWellLocation( origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1) ) - - data = AspirateParams( - pipetteId="abc", - labwareId="123", - wellName="A3", + params = AspirateParams( + pipetteId=pipette_id, + labwareId=labware_id, + wellName=well_name, wellLocation=location, volume=50, flowRate=1.23, ) - decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id="abc")).then_return(True) + decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( + True + ) decoy.when( state_view.geometry.get_nozzles_per_well( - labware_id="123", - target_well_name="A3", - pipette_id="abc", + labware_id=labware_id, + target_well_name=well_name, + pipette_id=pipette_id, ) ).then_return(2) decoy.when( state_view.geometry.get_wells_covered_by_pipette_with_active_well( - "123", "A3", "abc" + labware_id, well_name, pipette_id ) - ).then_return(["A3", "A4"]) + ).then_return(["covered-well-1", "covered-well-2"]) decoy.when( await movement.move_to_well( - pipette_id="abc", - labware_id="123", - well_name="A3", + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, well_location=location, current_well=None, force_direct=False, @@ -119,30 +122,33 @@ async def test_aspirate_implementation_no_prep( decoy.when( await pipetting.aspirate_in_place( - pipette_id="abc", + pipette_id=pipette_id, volume=50, flow_rate=1.23, command_note_adder=mock_command_note_adder, ), ).then_return(50) - result = await subject.execute(data) + result = await subject.execute(params) assert result == SuccessData( public=AspirateResult(volume=50, position=DeckPoint(x=1, y=2, z=3)), state_update=update_types.StateUpdate( pipette_location=update_types.PipetteLocationUpdate( - pipette_id="abc", - new_location=update_types.Well(labware_id="123", well_name="A3"), + pipette_id=pipette_id, + new_location=update_types.Well( + labware_id=labware_id, well_name=well_name + ), new_deck_point=DeckPoint(x=1, y=2, z=3), ), liquid_operated=update_types.LiquidOperatedUpdate( - labware_id="123", - well_names=["A3", "A4"], + labware_id=labware_id, + well_names=["covered-well-1", "covered-well-2"], volume_added=-100, ), pipette_aspirated_fluid=update_types.PipetteAspiratedFluidUpdate( - pipette_id="abc", fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=50) + pipette_id=pipette_id, + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=50), ), ), ) @@ -151,104 +157,112 @@ async def test_aspirate_implementation_no_prep( async def test_aspirate_implementation_with_prep( decoy: Decoy, state_view: StateView, - hardware_api: HardwareControlAPI, movement: MovementHandler, pipetting: PipettingHandler, mock_command_note_adder: CommandNoteAdder, subject: AspirateImplementation, ) -> None: """An Aspirate should have an execution implementation with preparing to aspirate.""" + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" location = LiquidHandlingWellLocation( origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1) ) - - data = AspirateParams( - pipetteId="abc", - labwareId="123", - wellName="A3", + volume = 50 + flow_rate = 1.23 + params = AspirateParams( + pipetteId=pipette_id, + labwareId=labware_id, + wellName=well_name, wellLocation=location, - volume=50, - flowRate=1.23, + volume=volume, + flowRate=flow_rate, ) - decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id="abc")).then_return(False) - - decoy.when(state_view.pipettes.get(pipette_id="abc")).then_return( - LoadedPipette.construct( # type:ignore[call-arg] - mount=MountType.LEFT - ) + decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( + False ) + decoy.when( state_view.geometry.get_nozzles_per_well( - labware_id="123", - target_well_name="A3", - pipette_id="abc", + labware_id=labware_id, + target_well_name=well_name, + pipette_id=pipette_id, ) ).then_return(2) decoy.when( state_view.geometry.get_wells_covered_by_pipette_with_active_well( - "123", "A3", "abc" + labware_id, well_name, pipette_id ) - ).then_return(["A3", "A4"]) + ).then_return(["covered-well-1", "covered-well-2"]) + + decoy.when( + await movement.move_to_well( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=WellLocation(origin=WellOrigin.TOP), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ), + ).then_return(Point()) + decoy.when( await movement.move_to_well( - pipette_id="abc", - labware_id="123", - well_name="A3", + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, well_location=location, current_well=CurrentWell( - pipette_id="abc", - labware_id="123", - well_name="A3", + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, ), force_direct=False, minimum_z_height=None, speed=None, - operation_volume=-50, + operation_volume=-volume, ), ).then_return(Point(x=1, y=2, z=3)) decoy.when( await pipetting.aspirate_in_place( - pipette_id="abc", - volume=50, - flow_rate=1.23, + pipette_id=pipette_id, + volume=volume, + flow_rate=flow_rate, command_note_adder=mock_command_note_adder, ), - ).then_return(50) + ).then_return(volume) - result = await subject.execute(data) + result = await subject.execute(params) assert result == SuccessData( public=AspirateResult(volume=50, position=DeckPoint(x=1, y=2, z=3)), state_update=update_types.StateUpdate( pipette_location=update_types.PipetteLocationUpdate( - pipette_id="abc", - new_location=update_types.Well(labware_id="123", well_name="A3"), + pipette_id=pipette_id, + new_location=update_types.Well( + labware_id=labware_id, well_name=well_name + ), new_deck_point=DeckPoint(x=1, y=2, z=3), ), liquid_operated=update_types.LiquidOperatedUpdate( - labware_id="123", - well_names=["A3", "A4"], + labware_id=labware_id, + well_names=["covered-well-1", "covered-well-2"], volume_added=-100, ), pipette_aspirated_fluid=update_types.PipetteAspiratedFluidUpdate( - pipette_id="abc", fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=50) + pipette_id=pipette_id, + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=50), ), ), ) - decoy.verify( - await movement.move_to_well( - pipette_id="abc", - labware_id="123", - well_name="A3", - well_location=LiquidHandlingWellLocation(origin=WellOrigin.TOP), - ), - await pipetting.prepare_for_aspirate(pipette_id="abc"), - ) - async def test_aspirate_raises_volume_error( decoy: Decoy, @@ -259,40 +273,44 @@ async def test_aspirate_raises_volume_error( subject: AspirateImplementation, ) -> None: """Should raise an assertion error for volume larger than working volume.""" + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" location = LiquidHandlingWellLocation( origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1) ) - - data = AspirateParams( - pipetteId="abc", - labwareId="123", - wellName="A3", + params = AspirateParams( + pipetteId=pipette_id, + labwareId=labware_id, + wellName=well_name, wellLocation=location, volume=50, flowRate=1.23, ) - decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id="abc")).then_return(True) + decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( + True + ) decoy.when( state_view.geometry.get_nozzles_per_well( - labware_id="123", - target_well_name="A3", - pipette_id="abc", + labware_id=labware_id, + target_well_name=well_name, + pipette_id=pipette_id, ) ).then_return(2) decoy.when( state_view.geometry.get_wells_covered_by_pipette_with_active_well( - "123", "A3", "abc" + labware_id, well_name, pipette_id ) - ).then_return(["A3", "A4"]) + ).then_return(["covered-well-1", "covered-well-2"]) decoy.when( await movement.move_to_well( - pipette_id="abc", - labware_id="123", - well_name="A3", + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, well_location=location, current_well=None, force_direct=False, @@ -304,7 +322,7 @@ async def test_aspirate_raises_volume_error( decoy.when( await pipetting.aspirate_in_place( - pipette_id="abc", + pipette_id=pipette_id, volume=50, flow_rate=1.23, command_note_adder=mock_command_note_adder, @@ -312,7 +330,7 @@ async def test_aspirate_raises_volume_error( ).then_raise(AssertionError("blah blah")) with pytest.raises(AssertionError): - await subject.execute(data) + await subject.execute(params) async def test_overpressure_error( @@ -337,7 +355,7 @@ async def test_overpressure_error( error_id = "error-id" error_timestamp = datetime(year=2020, month=1, day=2) - data = AspirateParams( + params = AspirateParams( pipetteId=pipette_id, labwareId=labware_id, wellName=well_name, @@ -348,17 +366,17 @@ async def test_overpressure_error( decoy.when( state_view.geometry.get_nozzles_per_well( - labware_id="labware-id", - target_well_name="well-name", - pipette_id="pipette-id", + labware_id=labware_id, + target_well_name=well_name, + pipette_id=pipette_id, ) ).then_return(2) decoy.when( state_view.geometry.get_wells_covered_by_pipette_with_active_well( - "labware-id", "well-name", "pipette-id" + labware_id, well_name, pipette_id ) - ).then_return(["A3", "A4"]) + ).then_return(["covered-well-1", "covered-well-2"]) decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( True @@ -390,7 +408,7 @@ async def test_overpressure_error( decoy.when(model_utils.generate_id()).then_return(error_id) decoy.when(model_utils.get_timestamp()).then_return(error_timestamp) - result = await subject.execute(data) + result = await subject.execute(params) assert result == DefinedErrorData( public=OverpressureError.construct( @@ -409,22 +427,13 @@ async def test_overpressure_error( ), liquid_operated=update_types.LiquidOperatedUpdate( labware_id=labware_id, - well_names=["A3", "A4"], + well_names=["covered-well-1", "covered-well-2"], volume_added=update_types.CLEAR, ), pipette_aspirated_fluid=update_types.PipetteUnknownFluidUpdate( pipette_id=pipette_id ), ), - state_update_if_false_positive=update_types.StateUpdate( - pipette_location=update_types.PipetteLocationUpdate( - pipette_id=pipette_id, - new_location=update_types.Well( - labware_id=labware_id, well_name=well_name - ), - new_deck_point=DeckPoint(x=position.x, y=position.y, z=position.z), - ), - ), ) @@ -438,15 +447,18 @@ async def test_aspirate_implementation_meniscus( mock_command_note_adder: CommandNoteAdder, ) -> None: """Aspirate should update WellVolumeOffset when called with WellOrigin.MENISCUS.""" + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" location = LiquidHandlingWellLocation( origin=WellOrigin.MENISCUS, offset=WellOffset(x=0, y=0, z=-1), volumeOffset="operationVolume", ) - data = AspirateParams( - pipetteId="abc", - labwareId="123", - wellName="A3", + params = AspirateParams( + pipetteId=pipette_id, + labwareId=labware_id, + wellName=well_name, wellLocation=location, volume=50, flowRate=1.23, @@ -454,25 +466,27 @@ async def test_aspirate_implementation_meniscus( decoy.when( state_view.geometry.get_nozzles_per_well( - labware_id="123", - target_well_name="A3", - pipette_id="abc", + labware_id=labware_id, + target_well_name=well_name, + pipette_id=pipette_id, ) ).then_return(2) decoy.when( state_view.geometry.get_wells_covered_by_pipette_with_active_well( - "123", "A3", "abc" + labware_id, well_name, pipette_id ) - ).then_return(["A3", "A4"]) + ).then_return(["covered-well-1", "covered-well-2"]) - decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id="abc")).then_return(True) + decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( + True + ) decoy.when( await movement.move_to_well( - pipette_id="abc", - labware_id="123", - well_name="A3", + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, well_location=location, current_well=None, force_direct=False, @@ -484,36 +498,39 @@ async def test_aspirate_implementation_meniscus( decoy.when( await pipetting.aspirate_in_place( - pipette_id="abc", + pipette_id=pipette_id, volume=50, flow_rate=1.23, command_note_adder=mock_command_note_adder, ), ).then_return(50) - result = await subject.execute(data) + result = await subject.execute(params) assert result == SuccessData( public=AspirateResult(volume=50, position=DeckPoint(x=1, y=2, z=3)), state_update=update_types.StateUpdate( pipette_location=update_types.PipetteLocationUpdate( - pipette_id="abc", - new_location=update_types.Well(labware_id="123", well_name="A3"), + pipette_id=pipette_id, + new_location=update_types.Well( + labware_id=labware_id, well_name=well_name + ), new_deck_point=DeckPoint(x=1, y=2, z=3), ), liquid_operated=update_types.LiquidOperatedUpdate( - labware_id="123", - well_names=["A3", "A4"], + labware_id=labware_id, + well_names=["covered-well-1", "covered-well-2"], volume_added=-100, ), pipette_aspirated_fluid=update_types.PipetteAspiratedFluidUpdate( - pipette_id="abc", fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=50) + pipette_id=pipette_id, + fluid=AspiratedFluid(kind=FluidKind.LIQUID, volume=50), ), ), ) -async def test_stall_error( +async def test_stall_during_final_movement( decoy: Decoy, movement: MovementHandler, pipetting: PipettingHandler, @@ -521,7 +538,7 @@ async def test_stall_error( model_utils: ModelUtils, state_view: StateView, ) -> None: - """It should return an overpressure error if the hardware API indicates that.""" + """It should propagate a stall error that happens when moving to the final position.""" pipette_id = "pipette-id" labware_id = "labware-id" well_name = "well-name" @@ -535,7 +552,7 @@ async def test_stall_error( True ) - data = AspirateParams( + params = AspirateParams( pipetteId=pipette_id, labwareId=labware_id, wellName=well_name, @@ -561,7 +578,7 @@ async def test_stall_error( decoy.when(model_utils.generate_id()).then_return(error_id) decoy.when(model_utils.get_timestamp()).then_return(error_timestamp) - result = await subject.execute(data) + result = await subject.execute(params) assert result == DefinedErrorData( public=StallOrCollisionError.construct( @@ -571,3 +588,154 @@ async def test_stall_error( ), state_update=update_types.StateUpdate(pipette_location=update_types.CLEAR), ) + + +async def test_stall_during_preparation( + decoy: Decoy, + movement: MovementHandler, + pipetting: PipettingHandler, + subject: AspirateImplementation, + model_utils: ModelUtils, +) -> None: + """It should propagate a stall error that happens during the prepare-to-aspirate part.""" + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" + well_location = LiquidHandlingWellLocation( + origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1) + ) + + error_id = "error-id" + error_timestamp = datetime(year=2020, month=1, day=2) + + params = AspirateParams( + pipetteId=pipette_id, + labwareId=labware_id, + wellName=well_name, + wellLocation=well_location, + volume=50, + flowRate=1.23, + ) + + decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( + False + ) + + decoy.when( + await movement.move_to_well( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=WellLocation(origin=WellOrigin.TOP), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ), + ).then_raise(StallOrCollisionDetectedError()) + decoy.when(model_utils.generate_id()).then_return(error_id) + decoy.when(model_utils.get_timestamp()).then_return(error_timestamp) + + result = await subject.execute(params) + assert result == DefinedErrorData( + public=StallOrCollisionError.construct( + id=error_id, createdAt=error_timestamp, wrappedErrors=[matchers.Anything()] + ), + state_update=update_types.StateUpdate( + pipette_location=update_types.CLEAR, + ), + state_update_if_false_positive=update_types.StateUpdate(), + ) + + +async def test_overpressure_during_preparation( + decoy: Decoy, + movement: MovementHandler, + pipetting: PipettingHandler, + subject: AspirateImplementation, + state_view: StateView, + model_utils: ModelUtils, +) -> None: + """It should propagate an overpressure error that happens during the prepare-to-aspirate part.""" + pipette_id = "pipette-id" + labware_id = "labware-id" + well_name = "well-name" + well_location = LiquidHandlingWellLocation( + origin=WellOrigin.BOTTOM, offset=WellOffset(x=0, y=0, z=1) + ) + + error_id = "error-id" + error_timestamp = datetime(year=2020, month=1, day=2) + + params = AspirateParams( + pipetteId=pipette_id, + labwareId=labware_id, + wellName=well_name, + wellLocation=well_location, + volume=50, + flowRate=1.23, + ) + + decoy.when(pipetting.get_is_ready_to_aspirate(pipette_id=pipette_id)).then_return( + False + ) + + retry_location = Point(1, 2, 3) + decoy.when( + state_view.geometry.get_well_position( + labware_id=labware_id, + well_name=well_name, + well_location=well_location, + operation_volume=-params.volume, + pipette_id=pipette_id, + ) + ).then_return(retry_location) + + prep_location = Point(4, 5, 6) + decoy.when( + await movement.move_to_well( + pipette_id=pipette_id, + labware_id=labware_id, + well_name=well_name, + well_location=WellLocation(origin=WellOrigin.TOP), + current_well=None, + force_direct=False, + minimum_z_height=None, + speed=None, + operation_volume=None, + ), + ).then_return(prep_location) + + decoy.when(await pipetting.prepare_for_aspirate(pipette_id)).then_raise( + PipetteOverpressureError() + ) + decoy.when(model_utils.generate_id()).then_return(error_id) + decoy.when(model_utils.get_timestamp()).then_return(error_timestamp) + + result = await subject.execute(params) + assert result == DefinedErrorData( + public=OverpressureError.construct( + id=error_id, + createdAt=error_timestamp, + wrappedErrors=[matchers.Anything()], + errorInfo={ + "retryLocation": (retry_location.x, retry_location.y, retry_location.z) + }, + ), + state_update=update_types.StateUpdate( + pipette_location=update_types.PipetteLocationUpdate( + pipette_id=pipette_id, + new_location=update_types.Well( + labware_id=labware_id, well_name=well_name + ), + new_deck_point=DeckPoint( + x=prep_location.x, y=prep_location.y, z=prep_location.z + ), + ), + pipette_aspirated_fluid=update_types.PipetteUnknownFluidUpdate( + pipette_id=pipette_id + ), + ), + state_update_if_false_positive=update_types.StateUpdate(), + ) diff --git a/api/tests/opentrons/protocol_engine/state/test_update_types.py b/api/tests/opentrons/protocol_engine/state/test_update_types.py new file mode 100644 index 00000000000..741df813e19 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/state/test_update_types.py @@ -0,0 +1,75 @@ +"""Unit tests for the utilities in `update_types`.""" + + +from opentrons.protocol_engine.state import update_types + + +def test_append() -> None: + """Test `StateUpdate.append()`.""" + state_update = update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=True + ) + ) + + # Populating a new field should leave the original ones unchanged. + result = state_update.append( + update_types.StateUpdate(pipette_location=update_types.CLEAR) + ) + assert result is state_update + assert state_update.absorbance_reader_lid == update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=True + ) + assert state_update.pipette_location == update_types.CLEAR + + # Populating a field that's already been populated should overwrite it. + result = state_update.append( + update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=False + ) + ) + ) + assert result is state_update + assert state_update.absorbance_reader_lid == update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=False + ) + assert state_update.pipette_location == update_types.CLEAR + + +def test_reduce() -> None: + """Test `StateUpdate.reduce()`.""" + assert update_types.StateUpdate.reduce() == update_types.StateUpdate() + + # It should union all the set fields together. + assert update_types.StateUpdate.reduce( + update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=True + ) + ), + update_types.StateUpdate(pipette_location=update_types.CLEAR), + ) == update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=True + ), + pipette_location=update_types.CLEAR, + ) + + # When one field appears multiple times, the last write wins. + assert update_types.StateUpdate.reduce( + update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=True + ) + ), + update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=False + ) + ), + ) == update_types.StateUpdate( + absorbance_reader_lid=update_types.AbsorbanceReaderLidUpdate( + module_id="module_id", is_lid_on=False + ) + ) From 157658115ff8351c37bde3a97faec4f7fa0fd6b3 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:59:24 -0500 Subject: [PATCH 110/220] fix(protocol-designer): only show tooltip if confirm button disabled (#16975) On the WizardBody component used for creating a new protocol file, we optionally pass a tooltip to be shown when hovering the confirm button if it is disabled. This PR fixes a bug where the tooltip showed on hover even if the button is enabled. --- .../src/pages/CreateNewProtocolWizard/WizardBody.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx index 58deec63717..d0c9c57cb37 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/WizardBody.tsx @@ -160,7 +160,7 @@ export function WizardBody(props: WizardBodyProps): JSX.Element { width="8.5625rem" /> - {tooltipOnDisabled != null ? ( + {tooltipOnDisabled != null && disabled ? ( {tooltipOnDisabled} ) : null} From 44ed81fd32cee216dc47c3fbb4b9458cd516ad04 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Mon, 25 Nov 2024 16:08:32 -0500 Subject: [PATCH 111/220] refactor(robot-server): Avoid features that will be removed in SQLAlchemy 2.0 (#16926) --- robot-server/pytest.ini | 5 +++ .../persistence/_migrations/_util.py | 45 ++++++++++++++++++- .../persistence/_migrations/v3_to_v4.py | 14 +----- .../persistence/_migrations/v4_to_v5.py | 14 +----- .../persistence/_migrations/v6_to_v7.py | 12 +---- .../persistence/_migrations/v7_to_v8.py | 19 +++----- 6 files changed, 57 insertions(+), 52 deletions(-) diff --git a/robot-server/pytest.ini b/robot-server/pytest.ini index 211c218295d..51ed89fd0d2 100644 --- a/robot-server/pytest.ini +++ b/robot-server/pytest.ini @@ -4,3 +4,8 @@ markers = ot3_only: Test only functions using the OT3 hardware addopts = --color=yes --strict-markers asyncio_mode = auto + +# Don't allow any new code that uses features removed in SQLAlchemy 2.0. +# We should remove this when we upgrade to SQLAlchemy 2.0. +filterwarnings = + error::sqlalchemy.exc.RemovedIn20Warning diff --git a/robot-server/robot_server/persistence/_migrations/_util.py b/robot-server/robot_server/persistence/_migrations/_util.py index b3c44a96af2..b0fd8074966 100644 --- a/robot-server/robot_server/persistence/_migrations/_util.py +++ b/robot-server/robot_server/persistence/_migrations/_util.py @@ -1,10 +1,11 @@ """Shared helpers for migrations.""" -import sqlalchemy - import shutil +import typing from pathlib import Path +import sqlalchemy + from ..database import sqlite_rowid @@ -54,3 +55,43 @@ def copytree_if_exists(src: Path, dst: Path) -> None: shutil.copytree(src=src, dst=dst) except FileNotFoundError: pass + + +def add_column( + engine: sqlalchemy.engine.Engine, + table_name: str, + column: typing.Any, +) -> None: + """Add a column to an existing SQL table, with an `ALTER TABLE` statement. + + Params: + engine: A SQLAlchemy engine to connect to the database. + table_name: The SQL name of the parent table. + column: The SQLAlchemy column object. + + Known limitations: + + - This does not currently support indexes. + - This does not currently support constraints. + - The column will always be added as nullable. Adding non-nullable columns in + SQLite requires an elaborate and sensitive dance that we do not wish to attempt. + https://www.sqlite.org/lang_altertable.html#making_other_kinds_of_table_schema_changes + + To avoid those limitations, instead of this function, consider this: + + 1. Start with an empty database, or drop or rename the current table. + 2. Use SQLAlchemy's `metadata.create_all()` to create an empty table with the new + schema, including the new column. + 3. Copy rows from the old table to the new one, populating the new column + however you please. + """ + column_type = column.type.compile(engine.dialect) + with engine.begin() as transaction: + # todo(mm, 2024-11-25): This text seems like something that SQLAlchemy could generate for us + # (maybe: https://docs.sqlalchemy.org/en/20/core/metadata.html#sqlalchemy.schema.Column.compile), + # and that might help us account for indexes and constraints. + transaction.execute( + sqlalchemy.text( + f"ALTER TABLE {table_name} ADD COLUMN {column.key} {column_type}" + ) + ) diff --git a/robot-server/robot_server/persistence/_migrations/v3_to_v4.py b/robot-server/robot_server/persistence/_migrations/v3_to_v4.py index f5273f5f678..b69eb0e5b4f 100644 --- a/robot-server/robot_server/persistence/_migrations/v3_to_v4.py +++ b/robot-server/robot_server/persistence/_migrations/v3_to_v4.py @@ -9,10 +9,8 @@ from pathlib import Path from contextlib import ExitStack import shutil -from typing import Any - -import sqlalchemy +from ._util import add_column from ..database import sql_engine_ctx from ..file_and_directory_names import DB_FILE from ..tables import schema_4 @@ -35,16 +33,6 @@ def migrate(self, source_dir: Path, dest_dir: Path) -> None: dest_engine = exit_stack.enter_context(sql_engine_ctx(dest_db_file)) schema_4.metadata.create_all(dest_engine) - def add_column( - engine: sqlalchemy.engine.Engine, - table_name: str, - column: Any, - ) -> None: - column_type = column.type.compile(engine.dialect) - engine.execute( - f"ALTER TABLE {table_name} ADD COLUMN {column.key} {column_type}" - ) - add_column( dest_engine, schema_4.analysis_table.name, diff --git a/robot-server/robot_server/persistence/_migrations/v4_to_v5.py b/robot-server/robot_server/persistence/_migrations/v4_to_v5.py index 788723968b2..44b7f9a12d4 100644 --- a/robot-server/robot_server/persistence/_migrations/v4_to_v5.py +++ b/robot-server/robot_server/persistence/_migrations/v4_to_v5.py @@ -9,10 +9,8 @@ from pathlib import Path from contextlib import ExitStack import shutil -from typing import Any - -import sqlalchemy +from ._util import add_column from ..database import sql_engine_ctx from ..file_and_directory_names import DB_FILE from ..tables import schema_5 @@ -35,16 +33,6 @@ def migrate(self, source_dir: Path, dest_dir: Path) -> None: dest_engine = exit_stack.enter_context(sql_engine_ctx(dest_db_file)) schema_5.metadata.create_all(dest_engine) - def add_column( - engine: sqlalchemy.engine.Engine, - table_name: str, - column: Any, - ) -> None: - column_type = column.type.compile(engine.dialect) - engine.execute( - f"ALTER TABLE {table_name} ADD COLUMN {column.key} {column_type}" - ) - add_column( dest_engine, schema_5.protocol_table.name, diff --git a/robot-server/robot_server/persistence/_migrations/v6_to_v7.py b/robot-server/robot_server/persistence/_migrations/v6_to_v7.py index 29cd284e942..8fe63806b8a 100644 --- a/robot-server/robot_server/persistence/_migrations/v6_to_v7.py +++ b/robot-server/robot_server/persistence/_migrations/v6_to_v7.py @@ -11,10 +11,10 @@ from pathlib import Path from contextlib import ExitStack import shutil -from typing import Any import sqlalchemy +from ._util import add_column from ..database import sql_engine_ctx, sqlite_rowid from ..tables import schema_7 from .._folder_migrator import Migration @@ -44,16 +44,6 @@ def migrate(self, source_dir: Path, dest_dir: Path) -> None: dest_transaction = exit_stack.enter_context(dest_engine.begin()) - def add_column( - engine: sqlalchemy.engine.Engine, - table_name: str, - column: Any, - ) -> None: - column_type = column.type.compile(engine.dialect) - engine.execute( - f"ALTER TABLE {table_name} ADD COLUMN {column.key} {column_type}" - ) - add_column( dest_engine, schema_7.run_command_table.name, diff --git a/robot-server/robot_server/persistence/_migrations/v7_to_v8.py b/robot-server/robot_server/persistence/_migrations/v7_to_v8.py index a5ed950a8dc..035d92cf045 100644 --- a/robot-server/robot_server/persistence/_migrations/v7_to_v8.py +++ b/robot-server/robot_server/persistence/_migrations/v7_to_v8.py @@ -10,10 +10,10 @@ from pathlib import Path from contextlib import ExitStack import shutil -from typing import Any import sqlalchemy +from ._util import add_column from ..database import sql_engine_ctx from ..tables import schema_8 from .._folder_migrator import Migration @@ -41,16 +41,6 @@ def migrate(self, source_dir: Path, dest_dir: Path) -> None: dest_transaction = exit_stack.enter_context(dest_engine.begin()) - def add_column( - engine: sqlalchemy.engine.Engine, - table_name: str, - column: Any, - ) -> None: - column_type = column.type.compile(engine.dialect) - engine.execute( - f"ALTER TABLE {table_name} ADD COLUMN {column.key} {column_type}" - ) - add_column( dest_engine, schema_8.run_command_table.name, @@ -73,9 +63,12 @@ def add_column( def _add_missing_indexes(dest_transaction: sqlalchemy.engine.Connection) -> None: # todo(2024-11-20): Probably add the indexes missing from prior migrations here. # https://opentrons.atlassian.net/browse/EXEC-827 - dest_transaction.execute( - "CREATE UNIQUE INDEX ix_run_run_id_command_status_index_in_run ON run_command (run_id, command_status, index_in_run);" + index = next( + index + for index in schema_8.run_command_table.indexes + if index.name == "ix_run_run_id_command_status_index_in_run" ) + index.create(dest_transaction) def _migrate_command_table_with_new_command_error_col_and_command_status( From 685ab6211b5b1bc399340477f523c62a9ec52d03 Mon Sep 17 00:00:00 2001 From: koji Date: Mon, 25 Nov 2024 16:17:30 -0500 Subject: [PATCH 112/220] fix(protocol-designer): fix disabled condition in add a pipette (#16977) * fix(protocol-designer): fix disabled condition in add a pipette --- .../src/pages/CreateNewProtocolWizard/SelectPipettes.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx index 57f2ec6b4b5..a5c0e8b5ab4 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx @@ -114,7 +114,8 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { const isDisabled = (page === 'add' && pipettesByMount[defaultMount].tiprackDefURI == null) || - noPipette + noPipette || + selectedValues.length === 0 const targetPipetteMount = pipettesByMount.left.pipetteName == null || From 849ad0e2bccd58466b6f605b11aaf42b3f46d011 Mon Sep 17 00:00:00 2001 From: koji Date: Mon, 25 Nov 2024 16:39:38 -0500 Subject: [PATCH 113/220] refactor(protocol-designer): switch from div tag to Box component (#16976) * refactor(protocol-designer): switch from div tag to Box component --- protocol-designer/src/ProtocolEditor.tsx | 15 +++++++++++---- protocol-designer/src/ProtocolRoutes.tsx | 1 - 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/protocol-designer/src/ProtocolEditor.tsx b/protocol-designer/src/ProtocolEditor.tsx index 7ca14592e86..244d9d264e0 100644 --- a/protocol-designer/src/ProtocolEditor.tsx +++ b/protocol-designer/src/ProtocolEditor.tsx @@ -1,15 +1,22 @@ import { DndProvider } from 'react-dnd' import { HashRouter } from 'react-router-dom' import { HTML5Backend } from 'react-dnd-html5-backend' -import { DIRECTION_COLUMN, Flex, OVERFLOW_AUTO } from '@opentrons/components' +import { + Box, + DIRECTION_COLUMN, + Flex, + OVERFLOW_AUTO, +} from '@opentrons/components' import { PortalRoot as TopPortalRoot } from './components/portals/TopPortal' import { ProtocolRoutes } from './ProtocolRoutes' function ProtocolEditorComponent(): JSX.Element { return ( -
@@ -17,7 +24,7 @@ function ProtocolEditorComponent(): JSX.Element { -
+ ) } diff --git a/protocol-designer/src/ProtocolRoutes.tsx b/protocol-designer/src/ProtocolRoutes.tsx index b491ac8ca60..7350aa0a8da 100644 --- a/protocol-designer/src/ProtocolRoutes.tsx +++ b/protocol-designer/src/ProtocolRoutes.tsx @@ -73,7 +73,6 @@ export function ProtocolRoutes(): JSX.Element { onReset={handleReset} > - {showGateModal ? : null} From 2dc3e1d929648537b285b71c7524a1a307b86b64 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:18:16 -0500 Subject: [PATCH 114/220] fix(protocol-designer): fix copy for pristine well warning (#16979) Remove starting deck state link from pristine well warning. Also, remove grid gap between timeline warning title and body. Closes RQA-3710 --- protocol-designer/src/organisms/Alerts/FormAlerts.tsx | 3 +-- protocol-designer/src/organisms/Alerts/WarningContents.tsx | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/protocol-designer/src/organisms/Alerts/FormAlerts.tsx b/protocol-designer/src/organisms/Alerts/FormAlerts.tsx index d51d34ff5d8..b6080a05a73 100644 --- a/protocol-designer/src/organisms/Alerts/FormAlerts.tsx +++ b/protocol-designer/src/organisms/Alerts/FormAlerts.tsx @@ -118,7 +118,7 @@ function FormAlertsComponent(props: FormAlertsProps): JSX.Element | null { width="100%" iconMarginLeft={SPACING.spacing4} > - + {data.title} @@ -183,7 +183,6 @@ function FormAlertsComponent(props: FormAlertsProps): JSX.Element | null { return [...formErrors, ...timelineWarnings, ...formWarnings].length > 0 ? ( {showFormErrors diff --git a/protocol-designer/src/organisms/Alerts/WarningContents.tsx b/protocol-designer/src/organisms/Alerts/WarningContents.tsx index 559d2d957ce..d75222dbaf1 100644 --- a/protocol-designer/src/organisms/Alerts/WarningContents.tsx +++ b/protocol-designer/src/organisms/Alerts/WarningContents.tsx @@ -1,6 +1,4 @@ import { useTranslation } from 'react-i18next' -import { START_TERMINAL_ITEM_ID } from '../../steplist' -import { TerminalItemLink } from './TerminalItemLink' import type { AlertLevel } from './types' @@ -22,7 +20,6 @@ export function WarningContents( {t(`timeline.warning.${warningType}.body`, { defaultValue: '', })} - ) default: From 342902e82d6848e4455c409c44ceca3969ad0159 Mon Sep 17 00:00:00 2001 From: koji Date: Mon, 25 Nov 2024 17:57:02 -0500 Subject: [PATCH 115/220] refactor(components, protocol-designer) clean up react import statements (#16969) * refactor(components, protocol-designer) clean up react import statements (#16969) --- components/src/atoms/InputField/index.tsx | 22 +++++++++++++------ .../src/hardware-sim/BaseDeck/BaseDeck.tsx | 18 +++++++-------- .../src/hardware-sim/Deck/RobotWorkSpace.tsx | 7 +++--- .../src/hooks/useMenuHandleClickOutside.tsx | 14 +++++++----- components/src/organisms/Toolbox/index.tsx | 10 ++++----- .../fields/DropTipField/index.tsx | 10 +++++---- .../src/organisms/Kitchen/index.tsx | 10 ++++----- .../TipPositionModal/ZTipPositionModal.tsx | 6 ++--- .../src/organisms/TipPositionModal/index.tsx | 12 +++++----- .../ProtocolSteps/Timeline/AddStepButton.tsx | 19 ++++++++-------- .../ProtocolSteps/Timeline/Substep.tsx | 4 ++-- .../__tests__/LiquidsOverflowMenu.test.tsx | 9 ++++---- 12 files changed, 76 insertions(+), 65 deletions(-) diff --git a/components/src/atoms/InputField/index.tsx b/components/src/atoms/InputField/index.tsx index 06b4ad68533..40642a897e0 100644 --- a/components/src/atoms/InputField/index.tsx +++ b/components/src/atoms/InputField/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { forwardRef } from 'react' import styled, { css } from 'styled-components' import { Flex } from '../../primitives' @@ -15,7 +15,15 @@ import { RESPONSIVENESS, SPACING, TYPOGRAPHY } from '../../ui-style-constants' import { Tooltip } from '../Tooltip' import { useHoverTooltip } from '../../tooltips' import { StyledText } from '../StyledText' + +import type { + ChangeEventHandler, + FocusEvent, + MouseEvent, + ReactNode, +} from 'react' import type { IconName } from '../../icons' + export const INPUT_TYPE_NUMBER = 'number' as const export const LEGACY_INPUT_TYPE_TEXT = 'text' as const export const LEGACY_INPUT_TYPE_PASSWORD = 'password' as const @@ -25,7 +33,7 @@ export interface InputFieldProps { /** field is disabled if value is true */ disabled?: boolean /** change handler */ - onChange?: React.ChangeEventHandler + onChange?: ChangeEventHandler /** name of field in form */ name?: string /** optional ID of element */ @@ -33,7 +41,7 @@ export interface InputFieldProps { /** placeholder text */ placeholder?: string /** optional suffix component, appears to the right of input text */ - units?: React.ReactNode + units?: ReactNode /** current value of text in box, defaults to '' */ value?: string | number | null /** if included, InputField will use error style and display error instead of caption */ @@ -50,11 +58,11 @@ export interface InputFieldProps { | typeof LEGACY_INPUT_TYPE_PASSWORD | typeof INPUT_TYPE_NUMBER /** mouse click handler */ - onClick?: (event: React.MouseEvent) => unknown + onClick?: (event: MouseEvent) => unknown /** focus handler */ - onFocus?: (event: React.FocusEvent) => unknown + onFocus?: (event: FocusEvent) => unknown /** blur handler */ - onBlur?: (event: React.FocusEvent) => unknown + onBlur?: (event: FocusEvent) => unknown /** makes input field read-only */ readOnly?: boolean /** html tabindex property */ @@ -88,7 +96,7 @@ export interface InputFieldProps { padding?: string } -export const InputField = React.forwardRef( +export const InputField = forwardRef( (props, ref): JSX.Element => { const { placeholder, diff --git a/components/src/hardware-sim/BaseDeck/BaseDeck.tsx b/components/src/hardware-sim/BaseDeck/BaseDeck.tsx index fcf71c57ea1..c8f22175952 100644 --- a/components/src/hardware-sim/BaseDeck/BaseDeck.tsx +++ b/components/src/hardware-sim/BaseDeck/BaseDeck.tsx @@ -1,5 +1,4 @@ -import * as React from 'react' - +import { Fragment } from 'react' import { getDeckDefFromRobotType, getModuleDef2, @@ -34,6 +33,7 @@ import { StagingAreaFixture } from './StagingAreaFixture' import { WasteChuteFixture } from './WasteChuteFixture' import { WasteChuteStagingAreaFixture } from './WasteChuteStagingAreaFixture' +import type { ComponentProps, ReactNode } from 'react' import type { Svg } from '../../primitives' import type { CutoutFixtureId, @@ -54,7 +54,7 @@ export interface LabwareOnDeck { wellFill?: WellFill missingTips?: WellGroup /** generic prop to render self-positioned children for each labware */ - labwareChildren?: React.ReactNode + labwareChildren?: ReactNode onLabwareClick?: () => void highlight?: boolean highlightShadow?: boolean @@ -66,9 +66,9 @@ export interface ModuleOnDeck { moduleLocation: ModuleLocation nestedLabwareDef?: LabwareDefinition2 | null nestedLabwareWellFill?: WellFill - innerProps?: React.ComponentProps['innerProps'] + innerProps?: ComponentProps['innerProps'] /** generic prop to render self-positioned children for each module */ - moduleChildren?: React.ReactNode + moduleChildren?: ReactNode onLabwareClick?: () => void highlightLabware?: boolean highlightShadowLabware?: boolean @@ -84,12 +84,12 @@ interface BaseDeckProps { lightFill?: string mediumFill?: string darkFill?: string - children?: React.ReactNode + children?: ReactNode showSlotLabels?: boolean /** whether to make wrapping svg tag animatable via @react-spring/web, defaults to false */ animatedSVG?: boolean /** extra props to pass to svg tag */ - svgProps?: React.ComponentProps + svgProps?: ComponentProps } const LABWARE_OFFSET_DISPLAY_THRESHOLD = 2 @@ -195,7 +195,7 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element { /> ))} {trashBinFixtures.map(fixture => ( - + - + ))} {wasteChuteOnlyFixtures.map(fixture => { if (fixture.cutoutId === WASTE_CHUTE_CUTOUT) { diff --git a/components/src/hardware-sim/Deck/RobotWorkSpace.tsx b/components/src/hardware-sim/Deck/RobotWorkSpace.tsx index bf999139659..5c9663a6ca1 100644 --- a/components/src/hardware-sim/Deck/RobotWorkSpace.tsx +++ b/components/src/hardware-sim/Deck/RobotWorkSpace.tsx @@ -1,8 +1,9 @@ -import * as React from 'react' +import { useRef } from 'react' import { OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { Svg } from '../../primitives' import { DeckFromLayers } from './DeckFromLayers' +import type { ReactNode } from 'react' import type { StyleProps } from '../../primitives' import type { DeckDefinition, DeckSlot } from '@opentrons/shared-data' @@ -17,7 +18,7 @@ export interface RobotWorkSpaceRenderProps { export interface RobotWorkSpaceProps extends StyleProps { deckDef?: DeckDefinition viewBox?: string | null - children?: (props: RobotWorkSpaceRenderProps) => React.ReactNode + children?: (props: RobotWorkSpaceRenderProps) => ReactNode deckLayerBlocklist?: string[] // optional boolean to show the OT-2 deck from deck defintion layers showDeckLayers?: boolean @@ -36,7 +37,7 @@ export function RobotWorkSpace(props: RobotWorkSpaceProps): JSX.Element | null { id, ...styleProps } = props - const wrapperRef = React.useRef(null) + const wrapperRef = useRef(null) // NOTE: getScreenCTM in Chrome a DOMMatrix type, // in Firefox the same fn returns a deprecated SVGMatrix. diff --git a/components/src/hooks/useMenuHandleClickOutside.tsx b/components/src/hooks/useMenuHandleClickOutside.tsx index f3e567a25f6..bf93df4a395 100644 --- a/components/src/hooks/useMenuHandleClickOutside.tsx +++ b/components/src/hooks/useMenuHandleClickOutside.tsx @@ -1,24 +1,26 @@ -import * as React from 'react' +import { useState } from 'react' import { COLORS } from '../helix-design-system' import { Overlay } from '../modals' +import type { Dispatch, MouseEventHandler, SetStateAction } from 'react' + interface MenuHandleClickOutside { menuOverlay: JSX.Element - handleOverflowClick: React.MouseEventHandler + handleOverflowClick: MouseEventHandler showOverflowMenu: boolean - setShowOverflowMenu: React.Dispatch> + setShowOverflowMenu: Dispatch> } export function useMenuHandleClickOutside(): MenuHandleClickOutside { - const [showOverflowMenu, setShowOverflowMenu] = React.useState(false) + const [showOverflowMenu, setShowOverflowMenu] = useState(false) - const handleOverflowClick: React.MouseEventHandler = e => { + const handleOverflowClick: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowOverflowMenu(currentShowOverflowMenu => !currentShowOverflowMenu) } - const handleClickOutside: React.MouseEventHandler = e => { + const handleClickOutside: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowOverflowMenu(false) diff --git a/components/src/organisms/Toolbox/index.tsx b/components/src/organisms/Toolbox/index.tsx index 147b8b0eda2..3064469f247 100644 --- a/components/src/organisms/Toolbox/index.tsx +++ b/components/src/organisms/Toolbox/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useRef, useState } from 'react' import { Box, Btn, Flex } from '../../primitives' import { ALIGN_CENTER, @@ -53,10 +53,8 @@ export function Toolbox(props: ToolboxProps): JSX.Element { position = POSITION_FIXED, } = props - const slideOutRef = React.useRef(null) - const [isScrolledToBottom, setIsScrolledToBottom] = React.useState( - false - ) + const slideOutRef = useRef(null) + const [isScrolledToBottom, setIsScrolledToBottom] = useState(false) const handleScroll = (): void => { if (slideOutRef.current == null) return const { scrollTop, scrollHeight, clientHeight } = slideOutRef.current @@ -67,7 +65,7 @@ export function Toolbox(props: ToolboxProps): JSX.Element { } } - React.useEffect(() => { + useEffect(() => { handleScroll() }, [slideOutRef]) diff --git a/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx index a17e1804576..00902b75915 100644 --- a/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import { DropdownField, FormGroup } from '@opentrons/components' @@ -8,13 +8,15 @@ import { } from '../../../../step-forms/selectors' import { getAllTiprackOptions } from '../../../../ui/labware/selectors' import { getEnableReturnTip } from '../../../../feature-flags/selectors' + +import type { ComponentProps, ChangeEvent } from 'react' import type { DropdownOption } from '@opentrons/components' import type { StepFormDropdown } from '../StepFormDropdownField' import styles from '../../StepEditForm.module.css' export function DropTipField( - props: Omit, 'options'> & {} + props: Omit, 'options'> & {} ): JSX.Element { const { value: dropdownItem, @@ -49,7 +51,7 @@ export function DropTipField( if (wasteChute != null) options.push(wasteChuteOption) if (trashBin != null) options.push(trashOption) - React.useEffect(() => { + useEffect(() => { if ( additionalEquipment[String(dropdownItem)] == null && labwareEntities[String(dropdownItem)] == null @@ -75,7 +77,7 @@ export function DropTipField( value={dropdownItem ? String(dropdownItem) : null} onBlur={onFieldBlur} onFocus={onFieldFocus} - onChange={(e: React.ChangeEvent) => { + onChange={(e: ChangeEvent) => { updateValue(e.currentTarget.value) }} /> diff --git a/protocol-designer/src/organisms/Kitchen/index.tsx b/protocol-designer/src/organisms/Kitchen/index.tsx index 1732ac014a6..770447f9239 100644 --- a/protocol-designer/src/organisms/Kitchen/index.tsx +++ b/protocol-designer/src/organisms/Kitchen/index.tsx @@ -1,5 +1,4 @@ -import * as React from 'react' - +import { useState } from 'react' import { Flex, ALIGN_CENTER, @@ -14,6 +13,7 @@ import { import { uuid } from '../../utils' import { KitchenContext } from './KitchenContext' +import type { ReactNode } from 'react' import type { SnackbarProps, ToastProps, @@ -22,7 +22,7 @@ import type { import type { BakeOptions, MakeSnackbarOptions } from './KitchenContext' interface PantryProps { - children: React.ReactNode + children: ReactNode } /** @@ -32,8 +32,8 @@ interface PantryProps { * @returns */ export function Kitchen({ children }: PantryProps): JSX.Element { - const [toasts, setToasts] = React.useState([]) - const [snackbar, setSnackbar] = React.useState(null) + const [toasts, setToasts] = useState([]) + const [snackbar, setSnackbar] = useState(null) /** * makes toast, rendering it in the Kitchen display container diff --git a/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx b/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx index 23d1540bbfc..2282869ac92 100644 --- a/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx +++ b/protocol-designer/src/organisms/TipPositionModal/ZTipPositionModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { @@ -53,12 +53,12 @@ export function ZTipPositionModal(props: ZTipPositionModalProps): JSX.Element { wellDepthMm, }) - const [value, setValue] = React.useState( + const [value, setValue] = useState( zValue !== null ? String(zValue) : null ) // in this modal, pristinity hides the OUT_OF_BOUNDS error only. - const [isPristine, setPristine] = React.useState(true) + const [isPristine, setPristine] = useState(true) const getMinMaxMmFromBottom = (): { maxMmFromBottom: number diff --git a/protocol-designer/src/organisms/TipPositionModal/index.tsx b/protocol-designer/src/organisms/TipPositionModal/index.tsx index 704ab7e8cf7..e7dfed1a476 100644 --- a/protocol-designer/src/organisms/TipPositionModal/index.tsx +++ b/protocol-designer/src/organisms/TipPositionModal/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { @@ -64,7 +64,7 @@ export function TipPositionModal( 'shared', 'application', ]) - const [view, setView] = React.useState<'top' | 'side'>('side') + const [view, setView] = useState<'top' | 'side'>('side') const zSpec = specs.z const ySpec = specs.y const xSpec = specs.x @@ -80,18 +80,18 @@ export function TipPositionModal( wellDepthMm, }) - const [zValue, setZValue] = React.useState( + const [zValue, setZValue] = useState( zSpec?.value == null ? String(defaultMmFromBottom) : String(zSpec?.value) ) - const [yValue, setYValue] = React.useState( + const [yValue, setYValue] = useState( ySpec?.value == null ? null : String(ySpec?.value) ) - const [xValue, setXValue] = React.useState( + const [xValue, setXValue] = useState( xSpec?.value == null ? null : String(xSpec?.value) ) // in this modal, pristinity hides the OUT_OF_BOUNDS error only. - const [isPristine, setPristine] = React.useState(true) + const [isPristine, setPristine] = useState(true) const getMinMaxMmFromBottom = (): { maxMmFromBottom: number minMmFromBottom: number diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/AddStepButton.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/AddStepButton.tsx index b7e070de5c5..974198e0501 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/AddStepButton.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/AddStepButton.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' @@ -38,6 +38,7 @@ import { } from '../../../../components/modals/ConfirmDeleteModal' import { AddStepOverflowButton } from './AddStepOverflowButton' +import type { MouseEvent } from 'react' import type { ThunkDispatch } from 'redux-thunk' import type { BaseState } from '../../../../types' import type { StepType } from '../../../../form-types' @@ -58,19 +59,17 @@ export function AddStepButton(): JSX.Element { ) const isStepCreationDisabled = useSelector(getIsMultiSelectMode) const modules = useSelector(stepFormSelectors.getInitialDeckSetup).modules - const [ - showStepOverflowMenu, - setShowStepOverflowMenu, - ] = React.useState(false) + const [showStepOverflowMenu, setShowStepOverflowMenu] = useState( + false + ) const overflowWrapperRef = useOnClickOutside({ onClickOutside: () => { setShowStepOverflowMenu(false) }, }) - const [ - enqueuedStepType, - setEnqueuedStepType, - ] = React.useState(null) + const [enqueuedStepType, setEnqueuedStepType] = useState( + null + ) const getSupportedSteps = (): Array< Exclude @@ -166,7 +165,7 @@ export function AddStepButton(): JSX.Element { boxShadow="0px 1px 3px rgba(0, 0, 0, 0.2)" backgroundColor={COLORS.white} flexDirection={DIRECTION_COLUMN} - onClick={(e: React.MouseEvent) => { + onClick={(e: MouseEvent) => { e.preventDefault() e.stopPropagation() }} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx index 7c62f23140d..7a94454cefc 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/Substep.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { memo } from 'react' import { useTranslation } from 'react-i18next' import noop from 'lodash/noop' import { @@ -169,4 +169,4 @@ function SubstepComponent(props: SubstepProps): JSX.Element { ) } -export const Substep = React.memo(SubstepComponent) +export const Substep = memo(SubstepComponent) diff --git a/protocol-designer/src/pages/Designer/__tests__/LiquidsOverflowMenu.test.tsx b/protocol-designer/src/pages/Designer/__tests__/LiquidsOverflowMenu.test.tsx index 24877f61294..45fbebe5494 100644 --- a/protocol-designer/src/pages/Designer/__tests__/LiquidsOverflowMenu.test.tsx +++ b/protocol-designer/src/pages/Designer/__tests__/LiquidsOverflowMenu.test.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { createRef } from 'react' import { describe, it, expect, vi, beforeEach } from 'vitest' import { fireEvent, screen } from '@testing-library/react' import { i18n } from '../../../assets/localization' @@ -7,6 +7,7 @@ import * as labwareIngredActions from '../../../labware-ingred/actions' import { renderWithProviders } from '../../../__testing-utils__' import { LiquidsOverflowMenu } from '../LiquidsOverflowMenu' +import type { ComponentProps } from 'react' import type { NavigateFunction } from 'react-router-dom' const mockLocation = vi.fn() @@ -21,20 +22,20 @@ vi.mock('react-router-dom', async importOriginal => { } }) -const render = (props: React.ComponentProps) => { +const render = (props: ComponentProps) => { return renderWithProviders(, { i18nInstance: i18n, })[0] } describe('SlotOverflowMenu', () => { - let props: React.ComponentProps + let props: ComponentProps beforeEach(() => { props = { onClose: vi.fn(), showLiquidsModal: vi.fn(), - overflowWrapperRef: React.createRef(), + overflowWrapperRef: createRef(), } vi.mocked(labwareIngredSelectors.allIngredientNamesIds).mockReturnValue([ { From 7e0972247ae2c324f883d481ae75af349e060e6a Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Tue, 26 Nov 2024 09:56:05 -0500 Subject: [PATCH 116/220] docs(api): edit Thermocycler docstring notes (#16952) # Overview I recently noticed that there was a syntax error that was hiding some notes in the docstrings for Thermocycler methods. I fixed the syntax in another PR and they became visible. But then I didn't like them! So this PR fixes them up. ## Test Plan and Hands on Testing Sandbox ## Changelog - Remove note about specifying time for profile steps. Covered by parameter entry. - Transform note about run log behavior into a version changed statement. ## Review requests gtg? ## Risk assessment v low, docstrings --- .../opentrons/protocol_api/module_contexts.py | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/api/src/opentrons/protocol_api/module_contexts.py b/api/src/opentrons/protocol_api/module_contexts.py index 8890981e32a..96950b927ef 100644 --- a/api/src/opentrons/protocol_api/module_contexts.py +++ b/api/src/opentrons/protocol_api/module_contexts.py @@ -608,7 +608,7 @@ def set_lid_temperature(self, temperature: float) -> None: .. note:: The Thermocycler will proceed to the next command immediately after - ``temperature`` has been reached. + ``temperature`` is reached. """ self._core.set_target_lid_temperature(celsius=temperature) @@ -625,28 +625,18 @@ def execute_profile( """Execute a Thermocycler profile, defined as a cycle of ``steps``, for a given number of ``repetitions``. - :param steps: List of unique steps that make up a single cycle. - Each list item should be a dictionary that maps to - the parameters of the :py:meth:`set_block_temperature` - method with a ``temperature`` key, and either or both of + :param steps: List of steps that make up a single cycle. + Each list item should be a dictionary that maps to the parameters + of the :py:meth:`set_block_temperature` method. The dictionary's + keys must be ``temperature`` and one or both of ``hold_time_seconds`` and ``hold_time_minutes``. :param repetitions: The number of times to repeat the cycled steps. :param block_max_volume: The greatest volume of liquid contained in any individual well of the loaded labware, in µL. If not specified, the default is 25 µL. - .. note:: - - Unlike with :py:meth:`set_block_temperature`, either or both of - ``hold_time_minutes`` and ``hold_time_seconds`` must be defined - and for each step. - - .. note:: - - Before API Version 2.21, Thermocycler profiles run with this command - would be listed in the app as having a number of repetitions equal to - their step count. At or above API Version 2.21, the structure of the - Thermocycler cycles is preserved. + .. versionchanged:: 2.21 + Fixed run log listing number of steps instead of number of repetitions. """ repetitions = validation.ensure_thermocycler_repetition_count(repetitions) From 90f0c03b3c08a0278b5beffdb0a17a8639805097 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Tue, 26 Nov 2024 10:24:54 -0500 Subject: [PATCH 117/220] chore(release): Fix import statement merge --- .../RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts index 2045312af4b..82d9c30c84b 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/hooks/useRunHeaderDropTip.ts @@ -16,11 +16,11 @@ import { useTipAttachmentStatus } from '/app/resources/instruments' import type { RobotType } from '@opentrons/shared-data' import type { Run, RunStatus } from '@opentrons/api-client' -import type { PipetteWithTip } from '/app/resources/instruments' import type { - DropTipWizardFlowsProps, + PipetteWithTip, TipAttachmentStatusResult, -} from '/app/organisms/DropTipWizardFlows' +} from '/app/resources/instruments' +import type { DropTipWizardFlowsProps } from '/app/organisms/DropTipWizardFlows' import type { UseProtocolDropTipModalResult } from '../modals' import type { PipetteDetails } from '/app/resources/maintenance_runs' From 825e2af7d477a6ae9399cdb43c11e819416a664b Mon Sep 17 00:00:00 2001 From: Laura Cox <31892318+Laura-Danielle@users.noreply.github.com> Date: Tue, 26 Nov 2024 21:51:30 +0100 Subject: [PATCH 118/220] feat(api): RobotContext: Add gripper commands (#16752) --- .../protocols/gripper_controller.py | 3 + .../protocol_api/core/engine/robot.py | 8 ++ api/src/opentrons/protocol_api/core/robot.py | 8 ++ .../opentrons/protocol_api/robot_context.py | 8 +- .../commands/command_unions.py | 10 +++ .../commands/robot/__init__.py | 26 ++++++ .../commands/robot/close_gripper_jaw.py | 79 +++++++++++++++++ .../commands/robot/open_gripper_jaw.py | 77 ++++++++++++++++ .../commands/robot/test_close_gripper_jaw.py | 28 ++++++ .../commands/robot/test_open_gripper_jaw.py | 28 ++++++ shared-data/command/schemas/11.json | 88 ++++++++++++++++++- 11 files changed, 359 insertions(+), 4 deletions(-) create mode 100644 api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py create mode 100644 api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py create mode 100644 api/tests/opentrons/protocol_engine/commands/robot/test_close_gripper_jaw.py create mode 100644 api/tests/opentrons/protocol_engine/commands/robot/test_open_gripper_jaw.py diff --git a/api/src/opentrons/hardware_control/protocols/gripper_controller.py b/api/src/opentrons/hardware_control/protocols/gripper_controller.py index fc81325193c..1b81f4ab460 100644 --- a/api/src/opentrons/hardware_control/protocols/gripper_controller.py +++ b/api/src/opentrons/hardware_control/protocols/gripper_controller.py @@ -14,6 +14,9 @@ async def grip( ) -> None: ... + async def home_gripper_jaw(self) -> None: + ... + async def ungrip(self, force_newtons: Optional[float] = None) -> None: """Release gripped object. diff --git a/api/src/opentrons/protocol_api/core/engine/robot.py b/api/src/opentrons/protocol_api/core/engine/robot.py index df80917e091..0418afcbb95 100644 --- a/api/src/opentrons/protocol_api/core/engine/robot.py +++ b/api/src/opentrons/protocol_api/core/engine/robot.py @@ -129,3 +129,11 @@ def move_axes_relative(self, axis_map: AxisMapType, speed: Optional[float]) -> N self._engine_client.execute_command( cmd.robot.MoveAxesRelativeParams(axis_map=axis_engine_map, speed=speed) ) + + def release_grip(self) -> None: + self._engine_client.execute_command(cmd.robot.openGripperJawParams()) + + def close_gripper(self, force: Optional[float] = None) -> None: + self._engine_client.execute_command( + cmd.robot.closeGripperJawParams(force=force) + ) diff --git a/api/src/opentrons/protocol_api/core/robot.py b/api/src/opentrons/protocol_api/core/robot.py index 95def3e17f3..f65ddbbd7bb 100644 --- a/api/src/opentrons/protocol_api/core/robot.py +++ b/api/src/opentrons/protocol_api/core/robot.py @@ -41,3 +41,11 @@ def move_axes_to( @abstractmethod def move_axes_relative(self, axis_map: AxisMapType, speed: Optional[float]) -> None: ... + + @abstractmethod + def release_grip(self) -> None: + ... + + @abstractmethod + def close_gripper(self, force: Optional[float] = None) -> None: + ... diff --git a/api/src/opentrons/protocol_api/robot_context.py b/api/src/opentrons/protocol_api/robot_context.py index 5b0e578f9bb..df14b8bb7c5 100644 --- a/api/src/opentrons/protocol_api/robot_context.py +++ b/api/src/opentrons/protocol_api/robot_context.py @@ -144,11 +144,13 @@ def move_axes_relative( ) self._core.move_axes_relative(axis_map, speed) - def close_gripper_jaw(self, force: float) -> None: - raise NotImplementedError() + def close_gripper_jaw(self, force: Optional[float] = None) -> None: + """Command the gripper closed with some force.""" + self._core.close_gripper(force) def open_gripper_jaw(self) -> None: - raise NotImplementedError() + """Command the gripper open.""" + self._core.release_grip() def axis_coordinates_for( self, diff --git a/api/src/opentrons/protocol_engine/commands/command_unions.py b/api/src/opentrons/protocol_engine/commands/command_unions.py index c33f55e2e01..9c548fa8045 100644 --- a/api/src/opentrons/protocol_engine/commands/command_unions.py +++ b/api/src/opentrons/protocol_engine/commands/command_unions.py @@ -416,6 +416,8 @@ robot.MoveTo, robot.MoveAxesRelative, robot.MoveAxesTo, + robot.openGripperJaw, + robot.closeGripperJaw, ], Field(discriminator="commandType"), ] @@ -499,6 +501,8 @@ robot.MoveAxesRelativeParams, robot.MoveAxesToParams, robot.MoveToParams, + robot.openGripperJawParams, + robot.closeGripperJawParams, ] CommandType = Union[ @@ -580,6 +584,8 @@ robot.MoveAxesRelativeCommandType, robot.MoveAxesToCommandType, robot.MoveToCommandType, + robot.openGripperJawCommandType, + robot.closeGripperJawCommandType, ] CommandCreate = Annotated[ @@ -662,6 +668,8 @@ robot.MoveAxesRelativeCreate, robot.MoveAxesToCreate, robot.MoveToCreate, + robot.openGripperJawCreate, + robot.closeGripperJawCreate, ], Field(discriminator="commandType"), ] @@ -745,6 +753,8 @@ robot.MoveAxesRelativeResult, robot.MoveAxesToResult, robot.MoveToResult, + robot.openGripperJawResult, + robot.closeGripperJawResult, ] diff --git a/api/src/opentrons/protocol_engine/commands/robot/__init__.py b/api/src/opentrons/protocol_engine/commands/robot/__init__.py index 5d5fc691e5f..048fecd09fe 100644 --- a/api/src/opentrons/protocol_engine/commands/robot/__init__.py +++ b/api/src/opentrons/protocol_engine/commands/robot/__init__.py @@ -21,6 +21,20 @@ MoveAxesRelativeResult, MoveAxesRelativeCommandType, ) +from .open_gripper_jaw import ( + openGripperJaw, + openGripperJawCreate, + openGripperJawParams, + openGripperJawResult, + openGripperJawCommandType, +) +from .close_gripper_jaw import ( + closeGripperJaw, + closeGripperJawCreate, + closeGripperJawParams, + closeGripperJawResult, + closeGripperJawCommandType, +) __all__ = [ # robot/moveTo @@ -41,4 +55,16 @@ "MoveAxesRelativeParams", "MoveAxesRelativeResult", "MoveAxesRelativeCommandType", + # robot/openGripperJaw + "openGripperJaw", + "openGripperJawCreate", + "openGripperJawParams", + "openGripperJawResult", + "openGripperJawCommandType", + # robot/closeGripperJaw + "closeGripperJaw", + "closeGripperJawCreate", + "closeGripperJawParams", + "closeGripperJawResult", + "closeGripperJawCommandType", ] diff --git a/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py b/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py new file mode 100644 index 00000000000..965c6d2ec72 --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/robot/close_gripper_jaw.py @@ -0,0 +1,79 @@ +"""Command models for opening a gripper jaw.""" +from __future__ import annotations +from typing import Literal, Type, Optional +from opentrons.hardware_control import HardwareControlAPI +from opentrons.protocol_engine.resources import ensure_ot3_hardware + +from pydantic import BaseModel, Field + +from ..command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + SuccessData, +) +from opentrons.protocol_engine.errors.error_occurrence import ErrorOccurrence + + +closeGripperJawCommandType = Literal["robot/closeGripperJaw"] + + +class closeGripperJawParams(BaseModel): + """Payload required to close a gripper.""" + + force: Optional[float] = Field( + default=None, + description="The force the gripper should use to hold the jaws, falls to default if none is provided.", + ) + + +class closeGripperJawResult(BaseModel): + """Result data from the execution of a closeGripperJaw command.""" + + pass + + +class closeGripperJawImplementation( + AbstractCommandImpl[closeGripperJawParams, SuccessData[closeGripperJawResult]] +): + """closeGripperJaw command implementation.""" + + def __init__( + self, + hardware_api: HardwareControlAPI, + **kwargs: object, + ) -> None: + self._hardware_api = hardware_api + + async def execute( + self, params: closeGripperJawParams + ) -> SuccessData[closeGripperJawResult]: + """Release the gripper.""" + ot3_hardware_api = ensure_ot3_hardware(self._hardware_api) + await ot3_hardware_api.grip(force_newtons=params.force) + return SuccessData( + public=closeGripperJawResult(), + ) + + +class closeGripperJaw( + BaseCommand[closeGripperJawParams, closeGripperJawResult, ErrorOccurrence] +): + """closeGripperJaw command model.""" + + commandType: closeGripperJawCommandType = "robot/closeGripperJaw" + params: closeGripperJawParams + result: Optional[closeGripperJawResult] + + _ImplementationCls: Type[ + closeGripperJawImplementation + ] = closeGripperJawImplementation + + +class closeGripperJawCreate(BaseCommandCreate[closeGripperJawParams]): + """closeGripperJaw command request model.""" + + commandType: closeGripperJawCommandType = "robot/closeGripperJaw" + params: closeGripperJawParams + + _CommandCls: Type[closeGripperJaw] = closeGripperJaw diff --git a/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py b/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py new file mode 100644 index 00000000000..22aa1debd42 --- /dev/null +++ b/api/src/opentrons/protocol_engine/commands/robot/open_gripper_jaw.py @@ -0,0 +1,77 @@ +"""Command models for opening a gripper jaw.""" +from __future__ import annotations +from typing import Literal, Type, Optional +from opentrons.hardware_control import HardwareControlAPI +from opentrons.protocol_engine.resources import ensure_ot3_hardware + +from pydantic import BaseModel + +from ..command import ( + AbstractCommandImpl, + BaseCommand, + BaseCommandCreate, + SuccessData, +) +from opentrons.protocol_engine.errors.error_occurrence import ErrorOccurrence + + +openGripperJawCommandType = Literal["robot/openGripperJaw"] + + +class openGripperJawParams(BaseModel): + """Payload required to release a gripper.""" + + pass + + +class openGripperJawResult(BaseModel): + """Result data from the execution of a openGripperJaw command.""" + + pass + + +class openGripperJawImplementation( + AbstractCommandImpl[openGripperJawParams, SuccessData[openGripperJawResult]] +): + """openGripperJaw command implementation.""" + + def __init__( + self, + hardware_api: HardwareControlAPI, + **kwargs: object, + ) -> None: + self._hardware_api = hardware_api + + async def execute( + self, params: openGripperJawParams + ) -> SuccessData[openGripperJawResult]: + """Release the gripper.""" + ot3_hardware_api = ensure_ot3_hardware(self._hardware_api) + + await ot3_hardware_api.home_gripper_jaw() + return SuccessData( + public=openGripperJawResult(), + ) + + +class openGripperJaw( + BaseCommand[openGripperJawParams, openGripperJawResult, ErrorOccurrence] +): + """openGripperJaw command model.""" + + commandType: openGripperJawCommandType = "robot/openGripperJaw" + params: openGripperJawParams + result: Optional[openGripperJawResult] + + _ImplementationCls: Type[ + openGripperJawImplementation + ] = openGripperJawImplementation + + +class openGripperJawCreate(BaseCommandCreate[openGripperJawParams]): + """openGripperJaw command request model.""" + + commandType: openGripperJawCommandType = "robot/openGripperJaw" + params: openGripperJawParams + + _CommandCls: Type[openGripperJaw] = openGripperJaw diff --git a/api/tests/opentrons/protocol_engine/commands/robot/test_close_gripper_jaw.py b/api/tests/opentrons/protocol_engine/commands/robot/test_close_gripper_jaw.py new file mode 100644 index 00000000000..c5ccd4bf48d --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/robot/test_close_gripper_jaw.py @@ -0,0 +1,28 @@ +"""Test robot.open-gripper-jaw commands.""" +from decoy import Decoy + +from opentrons.hardware_control import OT3HardwareControlAPI + +from opentrons.protocol_engine.commands.command import SuccessData +from opentrons.protocol_engine.commands.robot.close_gripper_jaw import ( + closeGripperJawParams, + closeGripperJawResult, + closeGripperJawImplementation, +) + + +async def test_close_gripper_jaw_implementation( + decoy: Decoy, + ot3_hardware_api: OT3HardwareControlAPI, +) -> None: + """Test the `robot.closeGripperJaw` implementation.""" + subject = closeGripperJawImplementation( + hardware_api=ot3_hardware_api, + ) + + params = closeGripperJawParams(force=10) + + result = await subject.execute(params=params) + + assert result == SuccessData(public=closeGripperJawResult()) + decoy.verify(await ot3_hardware_api.grip(force_newtons=10)) diff --git a/api/tests/opentrons/protocol_engine/commands/robot/test_open_gripper_jaw.py b/api/tests/opentrons/protocol_engine/commands/robot/test_open_gripper_jaw.py new file mode 100644 index 00000000000..6ded7932963 --- /dev/null +++ b/api/tests/opentrons/protocol_engine/commands/robot/test_open_gripper_jaw.py @@ -0,0 +1,28 @@ +"""Test robot.open-gripper-jaw commands.""" +from decoy import Decoy + +from opentrons.hardware_control import OT3HardwareControlAPI + +from opentrons.protocol_engine.commands.command import SuccessData +from opentrons.protocol_engine.commands.robot.open_gripper_jaw import ( + openGripperJawParams, + openGripperJawResult, + openGripperJawImplementation, +) + + +async def test_open_gripper_jaw_implementation( + decoy: Decoy, + ot3_hardware_api: OT3HardwareControlAPI, +) -> None: + """Test the `robot.openGripperJaw` implementation.""" + subject = openGripperJawImplementation( + hardware_api=ot3_hardware_api, + ) + + params = openGripperJawParams() + + result = await subject.execute(params=params) + + assert result == SuccessData(public=openGripperJawResult()) + decoy.verify(await ot3_hardware_api.home_gripper_jaw()) diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 432e8a08231..38a39ea7902 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -82,7 +82,9 @@ "unsafe/placeLabware": "#/definitions/UnsafePlaceLabwareCreate", "robot/moveAxesRelative": "#/definitions/MoveAxesRelativeCreate", "robot/moveAxesTo": "#/definitions/MoveAxesToCreate", - "robot/moveTo": "#/definitions/MoveToCreate" + "robot/moveTo": "#/definitions/MoveToCreate", + "robot/openGripperJaw": "#/definitions/openGripperJawCreate", + "robot/closeGripperJaw": "#/definitions/closeGripperJawCreate" } }, "oneOf": [ @@ -319,6 +321,12 @@ }, { "$ref": "#/definitions/MoveToCreate" + }, + { + "$ref": "#/definitions/openGripperJawCreate" + }, + { + "$ref": "#/definitions/closeGripperJawCreate" } ], "definitions": { @@ -6111,6 +6119,84 @@ } }, "required": ["params"] + }, + "openGripperJawParams": { + "title": "openGripperJawParams", + "description": "Payload required to release a gripper.", + "type": "object", + "properties": {} + }, + "openGripperJawCreate": { + "title": "openGripperJawCreate", + "description": "openGripperJaw command request model.", + "type": "object", + "properties": { + "commandType": { + "title": "Commandtype", + "default": "robot/openGripperJaw", + "enum": ["robot/openGripperJaw"], + "type": "string" + }, + "params": { + "$ref": "#/definitions/openGripperJawParams" + }, + "intent": { + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "allOf": [ + { + "$ref": "#/definitions/CommandIntent" + } + ] + }, + "key": { + "title": "Key", + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "type": "string" + } + }, + "required": ["params"] + }, + "closeGripperJawParams": { + "title": "closeGripperJawParams", + "description": "Payload required to close a gripper.", + "type": "object", + "properties": { + "force": { + "title": "Force", + "description": "The force the gripper should use to hold the jaws, falls to default if none is provided.", + "type": "number" + } + } + }, + "closeGripperJawCreate": { + "title": "closeGripperJawCreate", + "description": "closeGripperJaw command request model.", + "type": "object", + "properties": { + "commandType": { + "title": "Commandtype", + "default": "robot/closeGripperJaw", + "enum": ["robot/closeGripperJaw"], + "type": "string" + }, + "params": { + "$ref": "#/definitions/closeGripperJawParams" + }, + "intent": { + "description": "The reason the command was added. If not specified or `protocol`, the command will be treated as part of the protocol run itself, and added to the end of the existing command queue.\n\nIf `setup`, the command will be treated as part of run setup. A setup command may only be enqueued if the run has not started.\n\nUse setup commands for activities like pre-run calibration checks and module setup, like pre-heating.", + "allOf": [ + { + "$ref": "#/definitions/CommandIntent" + } + ] + }, + "key": { + "title": "Key", + "description": "A key value, unique in this run, that can be used to track the same logical command across multiple runs of the same protocol. If a value is not provided, one will be generated.", + "type": "string" + } + }, + "required": ["params"] } }, "$id": "opentronsCommandSchemaV11", From 8b59d02006953d0b562fd900238ef16a6442ecb7 Mon Sep 17 00:00:00 2001 From: Anthony Ngumah <68346382+AnthonyNASC20@users.noreply.github.com> Date: Tue, 26 Nov 2024 16:11:28 -0500 Subject: [PATCH 119/220] updated temp sensor script to work with new ips.json (#16984) # Overview Removed robot_ip field from config file. ABRAsairScript.py now uses ips.json file same as abr_calibration_logs.py. ## Test Plan and Hands on Testing Mad sure functionality still worked by running make abr-setup, and running the script standalone from terminal ## Changelog Removed robo_ip field in config.ini modified ips.json definition ## Review requests ## Risk assessment --- abr-testing/abr_testing/tools/abr_setup.py | 14 +++------- .../scripts/ABRAsairScript.py | 26 ++++++++++++------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/abr-testing/abr_testing/tools/abr_setup.py b/abr-testing/abr_testing/tools/abr_setup.py index 67ed5bfb333..a0fca76b6e4 100644 --- a/abr-testing/abr_testing/tools/abr_setup.py +++ b/abr-testing/abr_testing/tools/abr_setup.py @@ -20,9 +20,9 @@ def run_sync_abr_sheet( sync_abr_sheet.run(storage_directory, abr_data_sheet, room_conditions_sheet) -def run_temp_sensor(ip_file: str) -> None: +def run_temp_sensor() -> None: """Run temperature sensors on all robots.""" - processes = ABRAsairScript.run(ip_file) + processes = ABRAsairScript.run() for process in processes: process.start() time.sleep(20) @@ -64,7 +64,6 @@ def get_calibration_data( def main(configurations: configparser.ConfigParser) -> None: """Main function.""" - ip_file = None storage_directory = None email = None drive_folder = None @@ -89,15 +88,10 @@ def main(configurations: configparser.ConfigParser) -> None: # Run Temperature Sensors if not has_defaults: - ip_file = configurations["TEMP-SENSOR"]["Robo_List"] ambient_conditions_sheet = configurations["TEMP-SENSOR"]["Sheet_Url"] print("Starting temp sensors...") - if ip_file: - run_temp_sensor(ip_file) - print("Temp Sensors Started") - else: - print("Missing ip_file location, please fix configs") - sys.exit(1) + run_temp_sensor() + print("Temp Sensors Started") # Get Run Logs and Record if not has_defaults: storage_directory = configurations["RUN-LOG"]["Storage"] diff --git a/hardware-testing/hardware_testing/scripts/ABRAsairScript.py b/hardware-testing/hardware_testing/scripts/ABRAsairScript.py index 710d3c17578..5f94faad1e8 100644 --- a/hardware-testing/hardware_testing/scripts/ABRAsairScript.py +++ b/hardware-testing/hardware_testing/scripts/ABRAsairScript.py @@ -1,5 +1,4 @@ """ABR Asair Automation Script!""" -import sys import paramiko as pmk import time import json @@ -62,19 +61,27 @@ def run_command_on_ip( print(f"Error running command on {curr_ip}: {e}") -def run(file_name: str) -> List[Any]: +def run() -> List[Any]: """Run asair script module.""" # Load Robot IPs cmd = "nohup python3 -m hardware_testing.scripts.abr_asair_sensor {name} {duration} {frequency}" cd = "cd /opt/opentrons-robot-server && " robot_ips = [] robot_names = [] - with open(file_name) as file: - file_dict = json.load(file) - robot_dict = file_dict.get("ip_address_list") - robot_ips = list(robot_dict.keys()) - robot_names = list(robot_dict.values()) - print("Executing Script on All Robots:") + + robot = input("Enter IP of robot (type 'all' to run on all robots): ") + if robot.lower() == "all": + ip_file = input("Path of IPs.json: ") + with open(ip_file) as file: + file_dict = json.load(file) + robot_dict = file_dict.get("ip_address_list") + robot_ips = list(robot_dict.keys()) + robot_names = list(robot_dict.values()) + else: + robot_name = input("What is the name of the robot? ") + robot_ips.append(robot) + robot_names.append(robot_name) + print("Executing Script on Robot(s):") # Launch the processes for each robot. processes = [] for index in range(len(robot_ips)): @@ -87,8 +94,7 @@ def run(file_name: str) -> List[Any]: if __name__ == "__main__": # Wait for all processes to finish. - file_name = sys.argv[1] - processes = run(file_name) + processes = run() for process in processes: process.start() time.sleep(20) From ab58237f59e32ae1d071f34f44d8fe62b4528425 Mon Sep 17 00:00:00 2001 From: Caila Marashaj <98041399+caila-marashaj@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:09:06 -0500 Subject: [PATCH 120/220] fix(api): peek pipette bug fixes (#16985) --- .../backends/flex_protocol.py | 11 ++++---- .../backends/ot3controller.py | 25 ++++++++----------- .../hardware_control/backends/ot3simulator.py | 11 ++++---- .../hardware_control/backends/ot3utils.py | 12 ++++++++- api/src/opentrons/hardware_control/ot3api.py | 17 +++---------- .../pipette/model_constants.py | 1 + .../pipette/pipette_load_name_conversions.py | 12 +++++++-- .../opentrons_shared_data/pipette/types.py | 3 +++ 8 files changed, 49 insertions(+), 43 deletions(-) diff --git a/api/src/opentrons/hardware_control/backends/flex_protocol.py b/api/src/opentrons/hardware_control/backends/flex_protocol.py index e5bc7ba1905..3862981b20c 100644 --- a/api/src/opentrons/hardware_control/backends/flex_protocol.py +++ b/api/src/opentrons/hardware_control/backends/flex_protocol.py @@ -77,13 +77,12 @@ def update_constraints_for_calibration_with_gantry_load( ) -> None: ... - def update_constraints_for_emulsifying_pipette( - self, mount: OT3Mount, gantry_load: GantryLoad - ) -> None: - ... - def update_constraints_for_plunger_acceleration( - self, mount: OT3Mount, acceleration: float, gantry_load: GantryLoad + self, + mount: OT3Mount, + acceleration: float, + gantry_load: GantryLoad, + high_speed_pipette: bool = False, ) -> None: ... diff --git a/api/src/opentrons/hardware_control/backends/ot3controller.py b/api/src/opentrons/hardware_control/backends/ot3controller.py index a7c30677910..0ff3c033f44 100644 --- a/api/src/opentrons/hardware_control/backends/ot3controller.py +++ b/api/src/opentrons/hardware_control/backends/ot3controller.py @@ -50,7 +50,6 @@ get_system_constraints, get_system_constraints_for_calibration, get_system_constraints_for_plunger_acceleration, - get_system_constraints_for_emulsifying_pipette, ) from .tip_presence_manager import TipPresenceManager @@ -406,28 +405,24 @@ def update_constraints_for_calibration_with_gantry_load( f"Set system constraints for calibration: {self._move_manager.get_constraints()}" ) - def update_constraints_for_emulsifying_pipette( - self, mount: OT3Mount, gantry_load: GantryLoad - ) -> None: - self._move_manager.update_constraints( - get_system_constraints_for_emulsifying_pipette( - self._configuration.motion_settings, gantry_load, mount - ) - ) - log.debug( - f"Set system constraints for emulsifying pipette: {self._move_manager.get_constraints()}" - ) - def update_constraints_for_gantry_load(self, gantry_load: GantryLoad) -> None: self._move_manager.update_constraints( get_system_constraints(self._configuration.motion_settings, gantry_load) ) def update_constraints_for_plunger_acceleration( - self, mount: OT3Mount, acceleration: float, gantry_load: GantryLoad + self, + mount: OT3Mount, + acceleration: float, + gantry_load: GantryLoad, + high_speed_pipette: bool = False, ) -> None: new_constraints = get_system_constraints_for_plunger_acceleration( - self._configuration.motion_settings, gantry_load, mount, acceleration + self._configuration.motion_settings, + gantry_load, + mount, + acceleration, + high_speed_pipette, ) self._move_manager.update_constraints(new_constraints) diff --git a/api/src/opentrons/hardware_control/backends/ot3simulator.py b/api/src/opentrons/hardware_control/backends/ot3simulator.py index 533fffe5642..377397ba597 100644 --- a/api/src/opentrons/hardware_control/backends/ot3simulator.py +++ b/api/src/opentrons/hardware_control/backends/ot3simulator.py @@ -234,13 +234,12 @@ def update_constraints_for_calibration_with_gantry_load( ) -> None: self._sim_gantry_load = gantry_load - def update_constraints_for_emulsifying_pipette( - self, mount: OT3Mount, gantry_load: GantryLoad - ) -> None: - pass - def update_constraints_for_plunger_acceleration( - self, mount: OT3Mount, acceleration: float, gantry_load: GantryLoad + self, + mount: OT3Mount, + acceleration: float, + gantry_load: GantryLoad, + high_speed_pipette: bool = False, ) -> None: self._sim_gantry_load = gantry_load diff --git a/api/src/opentrons/hardware_control/backends/ot3utils.py b/api/src/opentrons/hardware_control/backends/ot3utils.py index 57e74537bfd..cb8f5e95e71 100644 --- a/api/src/opentrons/hardware_control/backends/ot3utils.py +++ b/api/src/opentrons/hardware_control/backends/ot3utils.py @@ -284,12 +284,22 @@ def get_system_constraints_for_plunger_acceleration( gantry_load: GantryLoad, mount: OT3Mount, acceleration: float, + high_speed_pipette: bool = False, ) -> "SystemConstraints[Axis]": old_constraints = config.by_gantry_load(gantry_load) new_constraints = {} axis_kinds = set([k for _, v in old_constraints.items() for k in v.keys()]) + + def _get_axis_max_speed(ax: Axis) -> float: + if ax == Axis.of_main_tool_actuator(mount) and high_speed_pipette: + _max_speed = float(DEFAULT_EMULSIFYING_PIPETTE_AXIS_MAX_SPEED) + else: + _max_speed = old_constraints["default_max_speed"][axis_kind] + return _max_speed + for axis_kind in axis_kinds: for axis in Axis.of_kind(axis_kind): + _default_max_speed = _get_axis_max_speed(axis) if axis == Axis.of_main_tool_actuator(mount): _accel = acceleration else: @@ -298,7 +308,7 @@ def get_system_constraints_for_plunger_acceleration( _accel, old_constraints["max_speed_discontinuity"][axis_kind], old_constraints["direction_change_speed_discontinuity"][axis_kind], - old_constraints["default_max_speed"][axis_kind], + _default_max_speed, ) return new_constraints diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index af170484150..1b3275f4c7e 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -299,8 +299,11 @@ async def set_system_constraints_for_calibration(self) -> None: async def set_system_constraints_for_plunger_acceleration( self, mount: OT3Mount, acceleration: float ) -> None: + high_speed_pipette = self._pipette_handler.get_pipette( + mount + ).is_high_speed_pipette() self._backend.update_constraints_for_plunger_acceleration( - mount, acceleration, self._gantry_load + mount, acceleration, self._gantry_load, high_speed_pipette ) @contextlib.asynccontextmanager @@ -636,9 +639,6 @@ async def cache_pipette( ) self._pipette_handler.hardware_instruments[mount] = p - if self._pipette_handler.has_pipette(mount): - self._confirm_pipette_motion_constraints(mount) - if config is not None: self._set_pressure_sensor_available(mount, instrument_config=config) @@ -646,15 +646,6 @@ async def cache_pipette( # when applicable return skipped - def _confirm_pipette_motion_constraints( - self, - mount: OT3Mount, - ) -> None: - if self._pipette_handler.get_pipette(mount).is_high_speed_pipette(): - self._backend.update_constraints_for_emulsifying_pipette( - mount, self.gantry_load - ) - def get_pressure_sensor_available(self, mount: OT3Mount) -> bool: pip_axis = Axis.of_main_tool_actuator(mount) return self._backend.get_pressure_sensor_available(pip_axis) diff --git a/shared-data/python/opentrons_shared_data/pipette/model_constants.py b/shared-data/python/opentrons_shared_data/pipette/model_constants.py index 7d34e0e5f6a..daf9b233e52 100644 --- a/shared-data/python/opentrons_shared_data/pipette/model_constants.py +++ b/shared-data/python/opentrons_shared_data/pipette/model_constants.py @@ -20,6 +20,7 @@ PipetteGenerationType.FLEX: { PipetteChannelType.SINGLE_CHANNEL: RobotMountConfigs(2133.33, 230.15, 80), PipetteChannelType.EIGHT_CHANNEL: RobotMountConfigs(2133.33, 230.15, 80), + PipetteChannelType.EIGHT_CHANNEL_EM: RobotMountConfigs(2133.33, 230.15, 80), PipetteChannelType.NINETY_SIX_CHANNEL: RobotMountConfigs(2133.33, 230.15, 80), }, } diff --git a/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py b/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py index f5113cff9e7..865862bfec2 100644 --- a/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py +++ b/shared-data/python/opentrons_shared_data/pipette/pipette_load_name_conversions.py @@ -81,6 +81,8 @@ def channels_from_string(channels: str) -> PipetteChannelType: if channels == "96": return PipetteChannelType.NINETY_SIX_CHANNEL elif "multi" in channels: + if "em" in channels: + return PipetteChannelType.EIGHT_CHANNEL_EM return PipetteChannelType.EIGHT_CHANNEL elif channels == "single": return PipetteChannelType.SINGLE_CHANNEL @@ -115,6 +117,8 @@ def get_channel_from_pipette_name(pipette_name_tuple: Tuple[str, ...]) -> str: elif "96" in pipette_name_tuple: return "ninety_six_channel" else: + if "em" in pipette_name_tuple: + return "eight_channel_em" return "eight_channel" @@ -154,7 +158,6 @@ def version_from_generation(pipette_name_tuple: Tuple[str, ...]) -> PipetteVersi ) model_from_pipette_name = pipette_name_tuple[0] channel_from_pipette_name = get_channel_from_pipette_name(pipette_name_tuple) - paths_to_validate = ( get_shared_data_root() / "pipette" / "definitions" / "2" / "general" ) @@ -246,7 +249,12 @@ def convert_pipette_name( """ split_pipette_name = name.split("_") - channels = channels_from_string(split_pipette_name[1]) + channels_type = split_pipette_name[1] + if len(split_pipette_name) > 2: + if split_pipette_name[2] == "em": + channels_type = "multi_em" + + channels = channels_from_string(channels_type) if provided_version: version = version_from_string(provided_version) else: diff --git a/shared-data/python/opentrons_shared_data/pipette/types.py b/shared-data/python/opentrons_shared_data/pipette/types.py index c52e57eb20e..685dae89957 100644 --- a/shared-data/python/opentrons_shared_data/pipette/types.py +++ b/shared-data/python/opentrons_shared_data/pipette/types.py @@ -49,6 +49,7 @@ def check_and_return_type( class PipetteChannelType(int, enum.Enum): SINGLE_CHANNEL = 1 EIGHT_CHANNEL = 8 + EIGHT_CHANNEL_EM = 82 NINETY_SIX_CHANNEL = 96 def __str__(self) -> str: @@ -56,6 +57,8 @@ def __str__(self) -> str: return "96" elif self.value == 8: return "multi" + elif self.value == 82: + return "multi_em" else: return "single" From b82fc0ef657872b12fa6f7ae0bc7faade9f0a78f Mon Sep 17 00:00:00 2001 From: Alise Au <20424172+ahiuchingau@users.noreply.github.com> Date: Tue, 26 Nov 2024 18:36:34 -0500 Subject: [PATCH 121/220] fix(hardware-testing): stacker qc script add error handling (#16988) --- .../modules/flex_stacker_evt_qc/driver.py | 9 ++++++++- .../modules/flex_stacker_evt_qc/utils.py | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py index 443140573bd..791ba5ed566 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py @@ -117,7 +117,7 @@ def __init__(self, port: str, simulating: bool = False) -> None: """Constructor.""" self._simulating = simulating if not self._simulating: - self._serial = serial.Serial(port, baudrate=STACKER_FREQ) + self._serial = serial.Serial(port, baudrate=STACKER_FREQ, timeout=60) def _send_and_recv(self, msg: str, guard_ret: str = "") -> str: """Internal utility to send a command and receive the response.""" @@ -155,6 +155,12 @@ def set_serial_number(self, sn: str) -> None: return self._send_and_recv(f"M996 {sn}\n", "M996 OK") + def stop_motor(self) -> None: + """Stop motor movement.""" + if self._simulating: + return + self._send_and_recv("M0\n") + def get_limit_switch(self, axis: StackerAxis, direction: Direction) -> bool: """Get limit switch status. @@ -243,4 +249,5 @@ def move_to_limit_switch( def __del__(self) -> None: """Close serial port.""" if not self._simulating: + self.stop_motor() self._serial.close() diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py index 2aca90c8886..d30d6eea783 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/utils.py @@ -14,7 +14,7 @@ def test_limit_switches_per_direction( direction: Direction, report: CSVReport, section: str, - speed: float = 50.0, + speed: float = 10.0, ) -> None: """Sequence to test the limit switch for one direction.""" ui.print_header(f"{axis} Limit Switch - {direction} direction") @@ -26,7 +26,7 @@ def test_limit_switches_per_direction( # move until the limit switch is reached print(f"moving towards {direction} limit switch...\n") - driver.move_to_limit_switch(axis, direction, MoveParams(max_speed=speed)) + driver.move_to_limit_switch(axis, direction, MoveParams(max_speed_discont=speed)) result = driver.get_limit_switch(axis, direction) opposite_result = not driver.get_limit_switch(axis, direction.opposite()) print(f"{direction} switch triggered: {result}") From ff1df36f06fcdb7d8d4819947ab0d69cb3d659fe Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Wed, 27 Nov 2024 09:39:45 -0500 Subject: [PATCH 122/220] fix(protocol-designer): fix scroll on SelectPipettes screen (#16983) Reverts overflow on SelectPipettes screen to `OVERFLOW_SCROLL`. Also, adds autoscroll to bottom to reveal tiprack selection if obscured. --- .../CreateNewProtocolWizard/SelectPipettes.tsx | 17 ++++++++++++++++- .../__tests__/SelectPipettes.test.tsx | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx index a5c0e8b5ab4..72cc6338526 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled, { css } from 'styled-components' import { useDispatch, useSelector } from 'react-redux' @@ -91,6 +91,16 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { setPipetteVolume(null) } + const ref = useRef(null) + + const handleScrollToBottom = (): void => { + if (ref.current != null) { + ref.current.scrollIntoView({ + behavior: 'smooth', + block: 'end', + }) + } + } // initialize pipette name once all fields are filled out useEffect(() => { if ( @@ -106,6 +116,10 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { } }, [pipetteType, pipetteGen, pipetteVolume, selectedPipetteName]) + useEffect(() => { + handleScrollToBottom() + }, [pipetteType, pipetteVolume, pipetteGen]) + const noPipette = (pipettesByMount.left.pipetteName == null || pipettesByMount.left.tiprackDefURI == null) && @@ -187,6 +201,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { flexDirection={DIRECTION_COLUMN} overflowY={OVERFLOW_AUTO} gridGap={SPACING.spacing32} + ref={ref} > { const actual = await importOriginal() From 8ae4d49d0cf6e04e1bcb8fc4eb3feaeec33abd0a Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Wed, 27 Nov 2024 09:40:30 -0500 Subject: [PATCH 123/220] chore(protocol-designer): update knowledge link for PD redesign (#16987) Update link for PD documentation --- protocol-designer/src/organisms/KnowledgeLink.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protocol-designer/src/organisms/KnowledgeLink.tsx b/protocol-designer/src/organisms/KnowledgeLink.tsx index 8398539db57..12b460b5c03 100644 --- a/protocol-designer/src/organisms/KnowledgeLink.tsx +++ b/protocol-designer/src/organisms/KnowledgeLink.tsx @@ -5,7 +5,8 @@ interface KnowledgeLinkProps { children: ReactNode } -export const DOC_URL = 'https://docs.opentrons.com/protocol-designer/' +export const DOC_URL = + 'https://insights.opentrons.com/hubfs/Protocol%20Designer%20Instruction%20Manual.pdf' export function KnowledgeLink(props: KnowledgeLinkProps): JSX.Element { const { children } = props From d65a8ae1c47b334b5d546981469127dd20ad3492 Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Wed, 27 Nov 2024 10:02:30 -0500 Subject: [PATCH 124/220] =?UTF-8?q?fix(protocol-designer):=20use=20=C2=B5?= =?UTF-8?q?=20symbol=20in=20pipette=20capacities=20(#16986)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Overview Use the proper prefix symbol for pipette capacities when setting up a new protocol. ## Test Plan and Hands on Testing Passes automated tests, looks good with `make dev`. image ## Changelog 1 character + tests ## Review requests Make sure this doesn't impact anywhere else, but I think the test has it covered. ## Risk assessment v low --- .../src/assets/localization/en/create_new_protocol.json | 2 +- .../CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/create_new_protocol.json b/protocol-designer/src/assets/localization/en/create_new_protocol.json index f2e132728a5..5d81a9ef2fd 100644 --- a/protocol-designer/src/assets/localization/en/create_new_protocol.json +++ b/protocol-designer/src/assets/localization/en/create_new_protocol.json @@ -41,7 +41,7 @@ "trash_required": "A trash entity is required", "trashBin": "Trash Bin", "up_to_3_tipracks": "Up to 3 tip rack types are allowed per pipette", - "vol_label": "{{volume}} uL", + "vol_label": "{{volume}} µL", "wasteChute": "Waste Chute", "which_fixtures": "Which fixtures will you be using?", "which_modules": "Select modules to use in your protocol.", diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx index 67f5588d4ec..4ab55529662 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx @@ -87,7 +87,7 @@ describe('SelectPipettes', () => { fireEvent.click(screen.getByRole('label', { name: '1-Channel' })) screen.getByText('Pipette volume') // select pip volume - fireEvent.click(screen.getByRole('label', { name: '1000 uL' })) + fireEvent.click(screen.getByRole('label', { name: '1000 µL' })) // select tip screen.getByText('Add custom pipette tips') screen.getByText('200uL Flex tipracks') @@ -140,7 +140,7 @@ describe('SelectPipettes', () => { screen.getByText('Pipette volume') // select pip volume - fireEvent.click(screen.getByRole('label', { name: '20 uL' })) + fireEvent.click(screen.getByRole('label', { name: '20 µL' })) // select tip screen.getByText('Add custom pipette tips') screen.getByText('10uL tipracks') From 93a9ffb8c79fdb1cb635c3444f0f20b052f74718 Mon Sep 17 00:00:00 2001 From: koji Date: Wed, 27 Nov 2024 11:28:06 -0500 Subject: [PATCH 125/220] =?UTF-8?q?fix(protocol-designer):=20use=20=C2=B5?= =?UTF-8?q?=20symbol=20in=20pipette=20capacities=20part2=20(#16990)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(protocol-designer): use µ symbol in pipette capacities part2 --- .../src/assets/localization/en/alert.json | 6 +++--- .../__tests__/SelectPipettes.test.tsx | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/alert.json b/protocol-designer/src/assets/localization/en/alert.json index ece60e77570..0f3f439be05 100644 --- a/protocol-designer/src/assets/localization/en/alert.json +++ b/protocol-designer/src/assets/localization/en/alert.json @@ -13,15 +13,15 @@ "title": "Dispense volume will overflow a destination well" }, "BELOW_PIPETTE_MINIMUM_VOLUME": { - "title": "Transfer volume is below pipette minimum ({{min}} uL)", + "title": "Transfer volume is below pipette minimum ({{min}} µL)", "body": "Pipettes cannot accurately handle volumes below their minimum. " }, "BELOW_MIN_AIR_GAP_VOLUME": { - "title": "Air gap volume is below pipette minimum ({{min}} uL)", + "title": "Air gap volume is below pipette minimum ({{min}} µL)", "body": "Pipettes cannot accurately handle volumes below their minimum. " }, "BELOW_MIN_DISPOSAL_VOLUME": { - "title": "Disposal volume is below recommended minimum ({{min}} uL)", + "title": "Disposal volume is below recommended minimum ({{min}} µL)", "body": "For accuracy in multi-dispense Transfers we recommend you use a disposal volume of at least the pipette's minimum. Read more ", "link": "here" } diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx index 4ab55529662..016a143a4bc 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/__tests__/SelectPipettes.test.tsx @@ -70,8 +70,8 @@ describe('SelectPipettes', () => { vi.mocked(getLabwareDefsByURI).mockReturnValue({}) vi.mocked(getAllowAllTipracks).mockReturnValue(false) vi.mocked(getTiprackOptions).mockReturnValue({ - 'opentrons/opentrons_flex_96_tiprack_200ul/1': '200uL Flex tipracks', - 'opentrons/opentrons_flex_96_tiprack_1000ul/1': '1000uL Flex tipracks', + 'opentrons/opentrons_flex_96_tiprack_200ul/1': '200µL Flex tipracks', + 'opentrons/opentrons_flex_96_tiprack_1000ul/1': '1000µL Flex tipracks', }) }) @@ -90,8 +90,8 @@ describe('SelectPipettes', () => { fireEvent.click(screen.getByRole('label', { name: '1000 µL' })) // select tip screen.getByText('Add custom pipette tips') - screen.getByText('200uL Flex tipracks') - fireEvent.click(screen.getByText('1000uL Flex tipracks')) + screen.getByText('200µL Flex tipracks') + fireEvent.click(screen.getByText('1000µL Flex tipracks')) screen.getByRole('button', { name: 'Confirm' }) @@ -104,8 +104,8 @@ describe('SelectPipettes', () => { it('renders the first page of select pipettes for an ot-2', () => { vi.mocked(getTiprackOptions).mockReturnValue({ - 'opentrons/opentrons_96_tiprack_10ul/1': '10uL tipracks', - 'opentrons/opentrons_96_tiprack_300ul/1': '300uL tipracks', + 'opentrons/opentrons_96_tiprack_10ul/1': '10µL tipracks', + 'opentrons/opentrons_96_tiprack_300ul/1': '300µL tipracks', }) const values = { @@ -143,8 +143,8 @@ describe('SelectPipettes', () => { fireEvent.click(screen.getByRole('label', { name: '20 µL' })) // select tip screen.getByText('Add custom pipette tips') - screen.getByText('10uL tipracks') - fireEvent.click(screen.getByText('300uL tipracks')) + screen.getByText('10µL tipracks') + fireEvent.click(screen.getByText('300µL tipracks')) screen.getByText('Add custom pipette tips') // add custom pipette tips From bd0b634f6a40a8283b2f593cd11837c342b4f787 Mon Sep 17 00:00:00 2001 From: Elyor Kodirov Date: Wed, 27 Nov 2024 16:34:32 +0000 Subject: [PATCH 126/220] fix(opentrons-ai-server, storage/docs): adapting prompts for PCR/Serial dilution protocols (#16992) # Overview Fine tuned prompts with respect to UI for better PCR and Serial dilution protocols. Added more serial dilution guidelines. Closes: AUTH-1052 ## Test Plan and Hands on Testing You may try a simple serial dilution protocol example. ## Changelog - Modified system prompt - Modified user prompt - Extended serial dilution guidelines ## Review requests You may try a simple serial dilution protocol example. ## Risk assessment Low --- .../api/domain/config_anthropic.py | 109 ++-- ...samples.md => serial_dilution_examples.md} | 506 +++++++++++++++++- .../storage/docs/standard-loadname-info.md | 36 ++ 3 files changed, 610 insertions(+), 41 deletions(-) rename opentrons-ai-server/api/storage/docs/{serial_dilution_samples.md => serial_dilution_examples.md} (52%) diff --git a/opentrons-ai-server/api/domain/config_anthropic.py b/opentrons-ai-server/api/domain/config_anthropic.py index beebc16d5ec..718e8f283c9 100644 --- a/opentrons-ai-server/api/domain/config_anthropic.py +++ b/opentrons-ai-server/api/domain/config_anthropic.py @@ -1,23 +1,50 @@ SYSTEM_PROMPT = """ -You are a friendly and knowledgeable AI assistant specializing in Opentrons protocol development. -You help scientists create and optimize protocols using the Opentrons Python API v2. - -Your key responsibilities: -1. Welcome scientists warmly and understand their protocol needs -2. Generate accurate Python protocols using standard Opentrons labware (see standard-loadname-info.md in ) -3. Provide clear explanations and documentation -4. Flag potential safety or compatibility issues -5. Suggest protocol optimizations when appropriate - -Important guidelines: -- Always verify labware compatibility before generating protocols -- Include appropriate error handling in generated code -- Provide clear setup instructions and prerequisites -- Flag any potential safety concerns -- Format code examples using standard Python conventions - -If you encounter requests outside your knowledge of Opentrons capabilities, -ask for clarification rather than making assumptions. +You are an expert AI assistant specializing in Opentrons protocol development, +combining deep knowledge of laboratory automation with practical programming expertise. +Your mission is to help scientists automate their laboratory workflows efficiently and +safely using the Opentrons Python API v2 and provided documents in . + + +- Complete mastery of Opentrons Python API v2 +- Deep understanding of laboratory protocols and liquid handling principles +- Expertise in all Opentrons hardware specifications and limitations +- Comprehensive knowledge of supported labware and their compatibility + + +1. Protocol Development & Optimization + - Generate precise, efficient protocols using provided documentation + - Implement proper tip management and resource calculation before code generation + - Use transfer functions optimally to avoid unnecessary loops + - Validate all variables, well positions, and module compatibility + - Follow best practices for error prevention and handling + - Verify sufficient tips and proper deck layout + - Ensure correct API version compatibility (≥2.16 for Flex features) + +2. + - Welcome scientists warmly and understand their protocol needs + - Maintain a professional yet approachable tone + - Ask clarifying questions when requirements are ambiguous + - Provide rationale for technical decisions and recommendations + - Offer alternatives when requested features aren't possible + - Guide users toward best practices + +3. + - Calculate and validate total tip requirements before protocol generation + - Plan efficient tip usage and replacement strategy + - Include explicit tip tracking in protocols + - Track and optimize reagent usage + - Manage deck space efficiently based on provided layout documentation + - Ensure proper module-labware compatibility + - Verify correct adapter usage for temperature-sensitive labware + +4. + - Verify all variables are defined before use + - Confirm tip rack quantity matches transfer operations + - Validate all well positions exist in specified labware + - Check module-labware compatibility + - Verify correct API version for all features + - Ensure proper slot assignments + - Validate sufficient resources for complete protocol execution """ DOCUMENTS = """ @@ -29,14 +56,15 @@ Follow these instructions to handle the user's prompt: 1. : - a) A request to generate a protocol - b) A question about the Opentrons Python API v2 or about details of protocol - c) A common task (e.g., value changes, OT-2 to Flex conversion, slot correction) - d) An unrelated or unclear request - e) A tool calling. If a user calls simulate protocol explicity, then call. - f) A greeting. Respond kindly. + - A request to generate a protocol + - A question about the Opentrons Python API v2 or about details of protocol + - A common task (e.g., value changes, OT-2 to Flex conversion, slot correction) + - An unrelated or unclear request + - A tool calling. If a user calls simulate protocol explicity, then call. + - A greeting. Respond kindly. + - A protocol type (e.g., serial dilution, before generation see serial_dilution_examples.md in - Note: when you respond you dont need mention the category or the type. + Note: when you respond you do not need mention the category or the type. 2. If the prompt is unrelated or unclear, ask the user for clarification. I'm sorry, but your prompt seems unclear. Could you please provide more details? @@ -65,22 +93,17 @@ b) If any crucial information is missing, ask for clarification: - To generate an accurate protocol, I need more information about [missing elements]. - Please provide details about: - [List of missing elements] + To generate an accurate protocol, I need more information about [missing elements]. + Please provide details about: + [List of missing elements] - c) If all necessary information is available, generate the protocol using the following structure: + c) Generate the protocol using the following structure: + - apiLevel and robotType are required otherwise robot does not run. ```python from opentrons import protocol_api - metadata = {{ - 'protocolName': '[Protocol name based on user prompt]', - 'author': 'AI Assistant', - 'description': '[Brief description based on user prompt]' - }} - requirements = {{ 'robotType': '[Robot type: OT-2(default) for Opentrons OT-2, Flex for Opentrons Flex]', 'apiLevel': '[apiLevel, default: 2.19]' @@ -102,9 +125,12 @@ def run(protocol: protocol_api.ProtocolContext): # For Flex protocols using API version 2.16 or later, load trash bin trash = protocol.load_trash_bin('A3') + # any calculation, setup, liquids + # Protocol steps [Step-by-step protocol commands with comments] - [Please make sure that the transfer function is used with the new_tip parameter correctly] + [Please make sure that the transfer function is used with the new_tip parameter explicitly and correctly] + [Arguments for `new_tip` must be explict all the time, default: `new_tip='once'`] ``` d) Use the `transfer` function to handle iterations over wells and volumes. Provide lists of source and @@ -140,8 +166,9 @@ def run(protocol: protocol_api.ProtocolContext): e) In the end, make sure you show generate well-written protocol with proper short but useful comments. + f) If it is to fix, then just fix and do not simulate. -5. Common model issues to avoid: +5. - Model outputs `p300_multi` instead of `p300_multi_gen2`. - Model outputs `thermocyclerModuleV1` instead of `thermocyclerModuleV2`. - Model outputs `opentrons_flex_96_tiprack_50ul` instead of `opentrons_flex_96_filtertiprack_50ul`. @@ -195,19 +222,21 @@ def run(protocol: protocol_api.ProtocolContext): which only has positions A1-D6, causing a KeyError when trying to reference well 'A7'. - Model tries to close thermocycler before opening it. Attempted to access labware inside a closed thermocycler, the thermocycler must be opened first. - - Required Validation Steps: + - - Verify all variables are defined before use - Confirm tip rack quantity matches transfer count - Validate all well positions exist in labware - Check module-labware compatibility - Verify correct API version for all features used + - Verify apiLevel is defined + - Verify tips are sufficient for the protocol to cover all steps 6. If slots are not defined, refer to deck_layout.md for proper slot definitions. Make sure slots are different for different labware. If the source and destination are not defined, then you define yourself but inform user with your choice, because user may want to change them. 7. If the request lacks sufficient information to generate a protocol, use casual_examples.md - as a reference to generate a basic protocol. + as a reference to generate a basic protocol. For serial dilution please refer to serial_dilution_examples.md. Remember to use only the information provided in the . Do not introduce any external information or assumptions. diff --git a/opentrons-ai-server/api/storage/docs/serial_dilution_samples.md b/opentrons-ai-server/api/storage/docs/serial_dilution_examples.md similarity index 52% rename from opentrons-ai-server/api/storage/docs/serial_dilution_samples.md rename to opentrons-ai-server/api/storage/docs/serial_dilution_examples.md index ad9a5ee24be..0fa0ed870e2 100644 --- a/opentrons-ai-server/api/storage/docs/serial_dilution_samples.md +++ b/opentrons-ai-server/api/storage/docs/serial_dilution_examples.md @@ -1,4 +1,508 @@ -# Serial dilution examples +# Tutorial: Creating a Serial Dilution Protocol + +## Introduction + +This tutorial will guide you through creating a Python protocol file from scratch. At the end of this process you'll have a complete protocol that can run on a Flex or an OT-2 robot. + +### What You'll Automate + +The lab task that you'll automate in this tutorial is serial dilution: taking a solution and progressively diluting it by transferring it stepwise across a plate from column 1 to column 12. With just a dozen or so lines of code, you can instruct your robot to perform the hundreds of individual pipetting actions necessary to fill an entire 96-well plate. And all of those liquid transfers will be done automatically, so you'll have more time to do other work in your lab. + +### Hardware and Labware + +Before running a protocol, you'll want to have the right kind of hardware and labware ready for your Flex or OT-2. + +- **Flex users** Most Flex code examples will use a Flex 1-Channel 1000 μL pipette. +- **OT-2 users** You can use either a single-channel or 8-channel pipette for this tutorial. Most OT-2 code examples will use a P300 Single-Channel GEN2 pipette. + +The Flex and OT-2 use similar labware for serial dilution. The tutorial code will use the labware listed in the table below, but as long as you have labware of each type you can modify the code to run with your labware. + +| Labware type | Labware name | API load name | +| ------------- | ------------------------------ | --------------------------------- | +| Reservoir | NEST 12 Well Reservoir 15 mL | `nest_12_reservoir_15ml` | +| Well plate | NEST 96 Well Plate 200 µL Flat | `nest_96_wellplate_200ul_flat` | +| Flex tip rack | Opentrons Flex Tips, 200 µL | `opentrons_flex_96_tiprack_200ul` | +| OT-2 tip rack | Opentrons 96 Tip Rack | `opentrons_96_tiprack_300ul` | + +For the liquids, you can use plain water as the diluent and water dyed with food coloring as the solution. + +## Create a Protocol File + +Let's start from scratch to create your serial dilution protocol. Open up a new file in your editor and start with the line: + +```python +from opentrons import protocol_api +``` + +Throughout this documentation, you'll see protocols that begin with the `import` statement shown above. It identifies your code as an Opentrons protocol. This statement is not required, but including it is a good practice and allows most code editors to provide helpful autocomplete suggestions. + +Everything else in the protocol file is required. Next, you'll specify the version of the API you're using. Then comes the core of the protocol: defining a single `run()` function that provides the locations of your labware, states which kind of pipettes you'll use, and finally issues the commands that the robot will perform. + +For this tutorial, you'll write very little Python outside of the `run()` function. But for more complex applications it's worth remembering that your protocol file _is_ a Python script, so any Python code that can run on your robot can be a part of a protocol. + +### Metadata + +Every protocol needs to have a metadata dictionary with information about the protocol. At minimum, you need to specify what version of the API the protocol requires. The scripts for this tutorial were validated against API version 2.16, so specify: + +```python +metadata = {"apiLevel": "2.16"} +``` + +You can include any other information you like in the metadata dictionary. The fields `protocolName`, `description`, and `author` are all displayed in the Opentrons App, so it's a good idea to expand the dictionary to include them: + +```python +metadata = { + "apiLevel": "2.16", + "protocolName": "Serial Dilution Tutorial", + "description": """This protocol is the outcome of following the + Python Protocol API Tutorial located at + https://docs.opentrons.com/v2/tutorial.html. It takes a + solution and progressively dilutes it by transferring it + stepwise across a plate.""", + "author": "New API User" +} +``` + +### Requirements + +The `requirements` code block can appear before _or_ after the `metadata` code block in a Python protocol. It uses the following syntax and accepts two arguments: `robotType` and `apiLevel`. + +Whether you need a `requirements` block depends on your robot model and API version. + +- **Flex:** The `requirements` block is always required. And, the API version does not go in the `metadata` section. The API version belongs in the `requirements`. For example: + +```python +requirements = {"robotType": "Flex", "apiLevel": "2.16"} +``` + +- **OT-2:** The `requirements` block is optional, but including it is a recommended best practice, particularly if you're using API version 2.15 or greater. If you do use it, remember to remove the API version from the `metadata`. For example: + +```python +requirements = {"robotType": "OT-2", "apiLevel": "2.16"} +``` + +### The `run()` function + +Now it's time to actually instruct the Flex or OT-2 how to perform serial dilution. All of this information is contained in a single Python function, which has to be named `run`. This function takes one argument, which is the _protocol context_. Many examples in these docs use the argument name `protocol`, and sometimes they specify the argument's type: + +```python +def run(protocol: protocol_api.ProtocolContext): +``` + +With the protocol context argument named and typed, you can start calling methods on `protocol` to add labware and hardware. + +#### Labware + +For serial dilution, you need to load a tip rack, reservoir, and 96-well plate on the deck of your Flex or OT-2. Loading labware is done with the `load_labware()` method of the protocol context, which takes two arguments: the standard labware name as defined in the Opentrons Labware Library, and the position where you'll place the labware on the robot's deck. + +##### Flex + +Here's how to load the labware on a Flex in slots D1, D2, and D3: + +```python +def run(protocol: protocol_api.ProtocolContext): + tips = protocol.load_labware("opentrons_flex_96_tiprack_200ul", "D1") + reservoir = protocol.load_labware("nest_12_reservoir_15ml", "D2") + plate = protocol.load_labware("nest_96_wellplate_200ul_flat", "D3") +``` + +If you're using a different model of labware, find its name in the Labware Library and replace it in your code. + +##### OT-2 + +Here's how to load the labware on an OT-2 in slots 1, 2, and 3: + +```python +def run(protocol: protocol_api.ProtocolContext): + tips = protocol.load_labware("opentrons_96_tiprack_300ul", 1) + reservoir = protocol.load_labware("nest_12_reservoir_15ml", 2) + plate = protocol.load_labware("nest_96_wellplate_200ul_flat", 3) +``` + +If you're using a different model of labware, find its name in the Labware Library and replace it in your code. + +You may notice that these deck maps don't show where the liquids will be at the start of the protocol. Liquid definitions aren't required in Python protocols, unlike protocols made in Protocol Designer. If you want to identify liquids, see Labeling Liquids in Wells. (Sneak peek: you'll put the diluent in column 1 of the reservoir and the solution in column 2 of the reservoir.) + +#### Trash Bin + +Flex and OT-2 both come with a trash bin for disposing used tips. + +The OT-2 trash bin is fixed in slot 12. Since it can't go anywhere else on the deck, you don't need to write any code to tell the API where it is. + +Flex lets you put a trash bin in multiple locations on the deck. You can even have more than one trash bin, or none at all (if you use the waste chute instead, or if your protocol never trashes any tips). For serial dilution, you'll need to dispose used tips, so you also need to tell the API where the trash container is located on your robot. Loading a trash bin on Flex is done with the `load_trash_bin()` method, which takes one argument: its location. Here's how to load the trash in slot A3: + +```python +trash = protocol.load_trash_bin("A3") +``` + +#### Pipettes + +Next you'll specify what pipette to use in the protocol. Loading a pipette is done with the `load_instrument()` method, which takes three arguments: the name of the pipette, the mount it's installed in, and the tip racks it should use when performing transfers. Load whatever pipette you have installed in your robot by using its standard pipette name. Here's how to load the pipette in the left mount and instantiate it as a variable named `left_pipette`: + +For Flex: + +```python +left_pipette = protocol.load_instrument("flex_1channel_1000", "left", tip_racks=[tips]) +``` + +For OT-2: + +```python +left_pipette = protocol.load_instrument("p300_single_gen2", "left", tip_racks=[tips]) +``` + +Since the pipette is so fundamental to the protocol, it might seem like you should have specified it first. But there's a good reason why pipettes are loaded after labware: you need to have already loaded `tips` in order to tell the pipette to use it. And now you won't have to reference `tips` again in your code — it's assigned to the `left_pipette` and the robot will know to use it when commanded to pick up tips. + +Note: You may notice that the value of `tip_racks` is in brackets, indicating that it's a list. This serial dilution protocol only uses one tip rack, but some protocols require more tips, so you can assign them to a pipette all at once, like `tip_racks=[tips1, tips2]`. + +#### Steps + +Finally, all of your labware and hardware is in place, so it's time to give the robot pipetting steps (also known as commands). The required steps of the serial dilution process break down into three main phases: + +1. Measure out equal amounts of diluent from the reservoir to every well on the plate. +2. Measure out equal amounts of solution from the reservoir into wells in the first column of the plate. +3. Move a portion of the combined liquid from column 1 to 2, then from column 2 to 3, and so on all the way to column 12. + +Thanks to the flexibility of the API's `transfer()` method, which combines many building block commands into one call, each of these phases can be accomplished with a single line of code! You'll just have to write a few more lines of code to repeat the process for as many rows as you want to fill. + +Let's start with the diluent. This phase takes a larger quantity of liquid and spreads it equally to many wells. `transfer()` can handle this all at once, because it accepts either a single well or a list of wells for its source and destination: + +```python +left_pipette.transfer(100, reservoir["A1"], plate.wells()) +``` + +Breaking down these single lines of code shows the power of complex commands. The first argument is the amount to transfer to each destination, 100 µL. The second argument is the source, column 1 of the reservoir (which is still specified with grid-style coordinates as `A1` — a reservoir only has an A row). The third argument is the destination. Here, calling the `wells()` method of `plate` returns a list of _every well_, and the command will apply to all of them. + +In plain English, you've instructed the robot, "For every well on the plate, aspirate 100 µL of fluid from column 1 of the reservoir and dispense it in the well." That's how we understand this line of code as scientists, yet the robot will understand and execute it as nearly 200 discrete actions. + +Now it's time to start mixing in the solution. To do this row by row, nest the commands in a `for` loop: + +```python +for i in range(8): + row = plate.rows()[i] +``` + +Using Python's built-in `range` class is an easy way to repeat this block 8 times, once for each row. This also lets you use the repeat index `i` with `plate.rows()` to keep track of the current row. + +In each row, you first need to add solution. This will be similar to what you did with the diluent, but putting it only in column 1 of the plate. It's best to mix the combined solution and diluent thoroughly, so add the optional `mix_after` argument to `transfer()`: + +```python +left_pipette.transfer(100, reservoir["A2"], row[0], mix_after=(3, 50)) +``` + +As before, the first argument specifies to transfer 100 µL. The second argument is the source, column 2 of the reservoir. The third argument is the destination, the element at index 0 of the current `row`. Since Python lists are zero-indexed, but columns on labware start numbering at 1, this will be well A1 on the first time through the loop, B1 the second time, and so on. The fourth argument specifies to mix 3 times with 50 µL of fluid each time. + +Finally, it's time to dilute the solution down the row. One approach would be to nest another `for` loop here, but instead let's use another feature of the `transfer()` method, taking lists as the source and destination arguments: + +```python +left_pipette.transfer(100, row[:11], row[1:], mix_after=(3, 50)) +``` + +There's some Python shorthand here, so let's unpack it. You can get a range of indices from a list using the colon `:` operator, and omitting it at either end means "from the beginning" or "until the end" of the list. So the source is `row[:11]`, from the beginning of the row until its 11th item. And the destination is `row[1:]`, from index 1 (column 2!) until the end. Since both of these lists have 11 items, `transfer()` will _step through them in parallel_, and they're constructed so when the source is 0, the destination is 1; when the source is 1, the destination is 2; and so on. This condenses all of the subsequent transfers down the row into a single line of code. + +All that remains is for the loop to repeat these steps, filling each row down the plate. + +That's it! If you're using a single-channel pipette, you're ready to try out your protocol. + +#### 8-Channel Pipette + +If you're using an 8-channel pipette, you'll need to make a couple tweaks to the single-channel code from above. Most importantly, whenever you target a well in row A of a plate with an 8-channel pipette, it will move its topmost tip to row A, lining itself up over the entire column. + +Thus, when adding the diluent, instead of targeting every well on the plate, you should only target the top row: + +```python +left_pipette.transfer(100, reservoir["A1"], plate.rows()[0]) +``` + +And by accessing an entire column at once, the 8-channel pipette effectively implements the `for` loop in hardware, so you'll need to remove it: + +```python +row = plate.rows()[0] +left_pipette.transfer(100, reservoir["A2"], row[0], mix_after=(3, 50)) +left_pipette.transfer(100, row[:11], row[1:], mix_after=(3, 50)) +``` + +Instead of tracking the current row in the `row` variable, this code sets it to always be row A (index 0). + +## Complete Protocol Examples + +Here are the complete protocols for both single-channel and 8-channel configurations: + +### Single-Channel Protocol (Flex) + +```python +from opentrons import protocol_api + +requirements = {"robotType": "Flex", "apiLevel": "2.16"} + +metadata = { + "protocolName": "Serial Dilution Tutorial", + "description": """This protocol is the outcome of following the + Python Protocol API Tutorial located at + https://docs.opentrons.com/v2/tutorial.html. It takes a + solution and progressively dilutes it by transferring it + stepwise across a plate.""", + "author": "New API User" +} + +def run(protocol: protocol_api.ProtocolContext): + # Load labware + tips = protocol.load_labware("opentrons_flex_96_tiprack_200ul", "D1") + reservoir = protocol.load_labware("nest_12_reservoir_15ml", "D2") + plate = protocol.load_labware("nest_96_wellplate_200ul_flat", "D3") + trash = protocol.load_trash_bin("A3") + + # Load pipette + left_pipette = protocol.load_instrument( + "flex_1channel_1000", + "left", + tip_racks=[tips] + ) + + # Distribute diluent + left_pipette.transfer(100, reservoir["A1"], plate.wells()) + + # Perform serial dilution + for i in range(8): + row = plate.rows()[i] + # Add solution to first well of row + left_pipette.transfer(100, reservoir["A2"], row[0], mix_after=(3, 50)) + # Perform dilution down the row + left_pipette.transfer(100, row[:11], row[1:], mix_after=(3, 50)) +``` + +### 8-Channel Protocol (OT-2) + +```python +from opentrons import protocol_api + +requirements = {"robotType": "OT-2", "apiLevel": "2.16"} + +metadata = { + "protocolName": "Serial Dilution Tutorial", + "description": """This protocol is the outcome of following the + Python Protocol API Tutorial located at + https://docs.opentrons.com/v2/tutorial.html. It takes a + solution and progressively dilutes it by transferring it + stepwise across a plate.""", + "author": "New API User" +} + +def run(protocol: protocol_api.ProtocolContext): + # Load labware + tips = protocol.load_labware("opentrons_96_tiprack_300ul", 1) + reservoir = protocol.load_labware("nest_12_reservoir_15ml", 2) + plate = protocol.load_labware("nest_96_wellplate_200ul_flat", 3) + + # Load pipette + left_pipette = protocol.load_instrument( + "p300_single_gen2", + "left", + tip_racks=[tips] + ) + + # Distribute diluent to top row (8-channel will handle all rows) + left_pipette.transfer(100, reservoir["A1"], plate.rows()[0]) + + # Perform serial dilution using only the top row + row = plate.rows()[0] + left_pipette.transfer(100, reservoir["A2"], row[0], mix_after=(3, 50)) + left_pipette.transfer(100, row[:11], row[1:], mix_after=(3, 50)) +``` + +These complete examples show how to implement the entire serial dilution workflow for both Flex and OT-2 robots, using either single-channel or 8-channel pipettes. The protocols will: + +1. Load all necessary labware and pipettes +2. Distribute diluent to all wells +3. Add solution to the first column +4. Perform serial dilution across the plate +5. Mix thoroughly at each step + +The key difference between single-channel and 8-channel implementations is that the 8-channel pipette naturally handles all rows simultaneously, eliminating the need for the row-by-row loop. + + + + + +Write a protocol using the Opentrons Python Protocol API v2 for Opentrons OT-2 robot according to the following description: + +Application: +Other + +Description: +A simple serial dilution + +Pipette mount(s): + +P20 Single-Channel GEN2 is mounted on the left +Modules: + +Labware: + +NEST 12 Well Reservoir 15 mL x 1 +NEST 96 Well Plate 100 µL PCR Full Skirt x 1 +Opentrons OT-2 96 Tip Rack 20 µL x 1 +Liquids: + +Liquid 1: diluent liquid, solution + +Steps: + +Step 1: For every well on the plate, aspirate 100 µL of fluid from column 1 of the reservoir and dispense it in the well plate. Use the same tip for each transfer. + +Step 2: Dilute the solution down the row: + +- Transfer 100ul of diluent from column 2 of the reservoir to the first well of the row. Mix 3 times with 50 ul. Use the same tip for each transfer. +- Perform a serial dilution by transferring 100 µL from each well to the next well in the row (from left to right). Mix 3 times with 50 µL after each transfer. Use the same tip for each transfer. + +```python +from opentrons import protocol_api + +metadata = { + 'protocolName': 'Serial Dilution', + 'author': 'Assistant', + 'description': 'Perform serial dilution with diluent and sample distribution' +} + +requirements = { + "robotType": "OT-2", + "apiLevel": "2.19" +} + +def run(protocol: protocol_api.ProtocolContext): + # Load labware + tiprack = protocol.load_labware('opentrons_96_tiprack_300ul', 1) # Changed to 300ul tips + reservoir = protocol.load_labware('nest_12_reservoir_15ml', 2) + plate = protocol.load_labware('nest_96_wellplate_100ul_pcr_full_skirt', 3) + + # Load P300 pipette instead of P20 + pipette = protocol.load_instrument('p300_single_gen2', 'left', tip_racks=[tiprack]) + + # Step 1: Distribute diluent to all wells using the same tip + pipette.distribute( + 100, + reservoir.columns()[0], + plate.wells(), + new_tip='once' + ) + + # Step 2: Perform serial dilution for each row + for i in range(8): # Process each row + row = plate.rows()[i] # Get current row + + # Transfer solution from reservoir to first well and mix + pipette.transfer( + 100, + reservoir.columns()[1], + row[0], + mix_after=(3, 50), + new_tip='once' + ) + + # Dilute down the row + pipette.transfer( + 100, + row[:11], # Source wells: first 11 wells + row[1:], # Destination wells: last 11 wells + mix_after=(3, 50), + new_tip='once' + ) + +``` + + + + + +Application: +Other + +Description: +A simple serial dilution protocol + +Pipette mount(s): + +P300 8-Channel GEN2 is mounted on the left +Modules: None + +Labware: + +Opentrons OT-2 96 Tip Rack 300 µL x 1 +NEST 12 Well Reservoir 15 mL x 1 +NEST 96 Well Plate 100 µL PCR Full Skirt x 1 +Liquids: + +Liquid 1: diluent, solution + +Steps: + +Step 1: Transfer 100ul of diluent from reservoir first column to all wells of the well plate. Use the same tip for each transfer. +Step 2: Dilute down the row: + +- Transfer 100ul of diluent from second column of reservoir to the first row of the first column of the well plate. Mix 3 times with 50ul. Use the same tip for each transfer. +- Transfer 100ul of solution from each well to the next well in the row. Mix 3 times with 50ul. Use the same tip for each transfer. + +```python +from opentrons import protocol_api + +metadata = { + 'protocolName': 'Serial Dilution Protocol', + 'author': 'Assistant', + 'description': 'A simple serial dilution protocol using multi-channel pipette' +} + +requirements = { + "robotType": "OT-2", + "apiLevel": "2.19" +} + +def run(protocol: protocol_api.ProtocolContext): + # Load labware + tips = protocol.load_labware("opentrons_96_tiprack_300ul", "1") + reservoir = protocol.load_labware("nest_12_reservoir_15ml", "2") + plate = protocol.load_labware("nest_96_wellplate_100ul_pcr_full_skirt", "3") + + # Load pipette + p300_multi = protocol.load_instrument( + "p300_multi_gen2", + "left", + tip_racks=[tips] + ) + + # Step 1: Distribute diluent to all wells + p300_multi.transfer( + 100, + reservoir['A1'], + plate.rows()[0], + new_tip='once' + ) + + # Step 2: Serial dilution along the row + # Transfer from reservoir and mix + p300_multi.transfer( + 100, + reservoir['A2'], + plate.rows()[0][0], + mix_after=(3, 50), + new_tip='once' + ) + + # Perform serial dilution down the row + p300_multi.transfer( + 100, + plate.rows()[0][:11], + plate.rows()[0][1:], + mix_after=(3, 50), + new_tip='once' + ) + +``` + + + + + +# More serial dilution protocol examples ## 1. Serial dilution example diff --git a/opentrons-ai-server/api/storage/docs/standard-loadname-info.md b/opentrons-ai-server/api/storage/docs/standard-loadname-info.md index 5ca402ec2f3..f956a95cd6c 100644 --- a/opentrons-ai-server/api/storage/docs/standard-loadname-info.md +++ b/opentrons-ai-server/api/storage/docs/standard-loadname-info.md @@ -570,6 +570,7 @@ Total number of labware: 73 - Well count: 96 - Max volume: 2.4 mL - Well shape: U-bottom + @@ -597,3 +598,38 @@ Total number of labware: 73 - volume: 5–1000 µL + + + + - Loadname: `temperature module` or `tempdeck` + - Introduced in API Version: 2.0 + + +- Loadname: `temperature module gen2` +- Introduced in API Version: 2.3 + + +- Loadname: `magnetic module` or `magdeck` +- Introduced in API Version: 2.0 + + +- Loadname: `magnetic module gen2` +- Introduced in API Version: 2.3 + + +- Loadname: `thermocycler module` or `thermocycler` +- Introduced in API Version: 2.0 + + +- Loadname: `thermocycler module gen2` or `thermocyclerModuleV2` +- Introduced in API Version: 2.13 + + +- Loadname: `heaterShakerModuleV1` +- Introduced in API Version: 2.13 + + +- Loadname: `magneticBlockV1` +- Introduced in API Version: 2.15 + + From ffc02916f3b155699b74db4637a02fce757fbcb0 Mon Sep 17 00:00:00 2001 From: Elyor Kodirov Date: Wed, 27 Nov 2024 18:03:13 +0000 Subject: [PATCH 127/220] fix(opentrons-ai-client, instrument-pipette): removing GEN1 pipettes (#16993) # Overview Since we do not use GEN1 pipettes, we are removing them from the UI. Closes AUTH-1111 ## Test Plan and Hands on Testing Have a look at the UI and verify that only GEN2 pipettes are present. image ## Changelog - filter out GEN1 pipettes ## Review requests See above ## Risk assessment Low --- .../src/organisms/InstrumentsSection/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/opentrons-ai-client/src/organisms/InstrumentsSection/index.tsx b/opentrons-ai-client/src/organisms/InstrumentsSection/index.tsx index 6f815b45a5d..2986654df24 100644 --- a/opentrons-ai-client/src/organisms/InstrumentsSection/index.tsx +++ b/opentrons-ai-client/src/organisms/InstrumentsSection/index.tsx @@ -84,6 +84,10 @@ export function InstrumentsSection(): JSX.Element | null { name ) ) + .filter(name => { + const specs = getPipetteSpecsV2(name) + return !specs?.displayName?.includes('GEN1') + }) .map(name => ({ value: name, name: getPipetteSpecsV2(name)?.displayName ?? '', From 1c0a01cfd960fa09750a8bd27cbf935cd18244ec Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Wed, 27 Nov 2024 14:29:10 -0500 Subject: [PATCH 128/220] docs(api): fix typo in loop examples (#16997) # Overview Fixes a typo in one of our example protocols where a command used a volume of 200 instead of 20. Thanks to @ddcc4 for spotting it! ## Test Plan and Hands on Testing - [Sandbox](http://sandbox.docs.opentrons.com/docs-example-loop-fix/v2/new_examples.html#loops) - Simulated code exactly as it appears in sandbox output. ## Changelog - 2-char fix ## Review requests Nothing special ## Risk assessment nil --- api/docs/v2/new_examples.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/docs/v2/new_examples.rst b/api/docs/v2/new_examples.rst index 1aae3b633d0..42dbf92fd8d 100644 --- a/api/docs/v2/new_examples.rst +++ b/api/docs/v2/new_examples.rst @@ -284,7 +284,7 @@ When used in a protocol, loops automate repetitive steps such as aspirating and # etc... # range() starts at 0 and stops before 8, creating a range of 0-7 for i in range(8): - pipette.distribute(200, reservoir.wells()[i], plate.rows()[i]) + pipette.distribute(20, reservoir.wells()[i], plate.rows()[i]) .. tab:: OT-2 @@ -315,7 +315,7 @@ When used in a protocol, loops automate repetitive steps such as aspirating and # etc... # range() starts at 0 and stops before 8, creating a range of 0-7 for i in range(8): - p300.distribute(200, reservoir.wells()[i], plate.rows()[i]) + p300.distribute(20, reservoir.wells()[i], plate.rows()[i]) Notice here how Python's :py:class:`range` class (e.g., ``range(8)``) determines how many times the code loops. Also, in Python, a range of numbers is *exclusive* of the end value and counting starts at 0, not 1. For the Corning 96-well plate used here, this means well A1=0, B1=1, C1=2, and so on to the last well in the row, which is H1=7. From 2b4e6575460591d93c0c399b98454cfee3b6bd95 Mon Sep 17 00:00:00 2001 From: Brayan Almonte Date: Wed, 27 Nov 2024 16:22:57 -0500 Subject: [PATCH 129/220] fix(hardware-testing): add __init__.py to modules/ so it gets packed in the build + other Flex stacker QC fixes. (#16995) - add an `__init__.py` so it does, this will make it so we can push to the robot. - change the way we validate no movement when in e-stop - don't wait for ack from stop_motor `M0` command. --- .../hardware_testing/modules/__init__.py | 1 + .../modules/flex_stacker_evt_qc/driver.py | 9 +++- .../modules/flex_stacker_evt_qc/test_estop.py | 50 +++++++++++++------ 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 hardware-testing/hardware_testing/modules/__init__.py diff --git a/hardware-testing/hardware_testing/modules/__init__.py b/hardware-testing/hardware_testing/modules/__init__.py new file mode 100644 index 00000000000..abbbb3c6ffc --- /dev/null +++ b/hardware-testing/hardware_testing/modules/__init__.py @@ -0,0 +1 @@ +"""Module QC Scripts.""" diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py index 791ba5ed566..afa24d1f315 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/driver.py @@ -119,10 +119,15 @@ def __init__(self, port: str, simulating: bool = False) -> None: if not self._simulating: self._serial = serial.Serial(port, baudrate=STACKER_FREQ, timeout=60) - def _send_and_recv(self, msg: str, guard_ret: str = "") -> str: + def _send_and_recv( + self, msg: str, guard_ret: str = "", response_required: bool = True + ) -> str: """Internal utility to send a command and receive the response.""" assert not self._simulating + self._serial.reset_input_buffer() self._serial.write(msg.encode()) + if not response_required: + return "OK\n" ret = self._serial.readline() if guard_ret: if not ret.startswith(guard_ret.encode()): @@ -159,7 +164,7 @@ def stop_motor(self) -> None: """Stop motor movement.""" if self._simulating: return - self._send_and_recv("M0\n") + self._send_and_recv("M0\n", response_required=False) def get_limit_switch(self, axis: StackerAxis, direction: Direction) -> bool: """Get limit switch status. diff --git a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py index 2a2f24161b7..31df6f1decc 100644 --- a/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py +++ b/hardware-testing/hardware_testing/modules/flex_stacker_evt_qc/test_estop.py @@ -56,14 +56,23 @@ def run(driver: FlexStacker, report: CSVReport, section: str) -> None: report(section, "trigger-estop", [CSVResult.PASS]) - print("try to move X axis...") - driver.move_in_mm(StackerAxis.X, x_limit.opposite().distance(10)) - print("X should not move") - report( - section, - "x-move-disabled", - [CSVResult.from_bool(driver.get_limit_switch(StackerAxis.X, x_limit))], - ) + print("Check X limit switch...") + limit_switch_triggered = driver.get_limit_switch(StackerAxis.X, x_limit) + if limit_switch_triggered: + report( + section, + "x-move-disabled", + [CSVResult.from_bool(False)], + ) + else: + print("try to move X axis back to the limit switch...") + driver.move_in_mm(StackerAxis.X, x_limit.distance(3)) + print("X should not move") + report( + section, + "x-move-disabled", + [CSVResult.from_bool(not driver.get_limit_switch(StackerAxis.X, x_limit))], + ) print("try to move Z axis...") driver.move_in_mm(StackerAxis.Z, z_limit.opposite().distance(10)) @@ -74,14 +83,23 @@ def run(driver: FlexStacker, report: CSVReport, section: str) -> None: [CSVResult.from_bool(driver.get_limit_switch(StackerAxis.Z, z_limit))], ) - print("try to move L axis...") - driver.move_in_mm(StackerAxis.L, l_limit.opposite().distance(10)) - print("L should not move") - report( - section, - "l-move-disabled", - [CSVResult.from_bool(driver.get_limit_switch(StackerAxis.L, l_limit))], - ) + print("Check L limit switch...") + limit_switch_triggered = driver.get_limit_switch(StackerAxis.L, l_limit) + if limit_switch_triggered: + report( + section, + "l-move-disabled", + [CSVResult.from_bool(False)], + ) + else: + print("try to move L axis back to the limit switch...") + driver.move_in_mm(StackerAxis.L, l_limit.distance(1)) + print("L should not move") + report( + section, + "l-move-disabled", + [CSVResult.from_bool(not driver.get_limit_switch(StackerAxis.L, l_limit))], + ) if not driver._simulating: ui.get_user_ready("Untrigger the E-Stop") From b6446cf79e08a2cbb44d85a71274519b3758d3ef Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:28:20 -0500 Subject: [PATCH 130/220] fix(protocol-designer): fix deck map flicker with ot-2 deckmap (#17000) closes RQA-3630 --- protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx index 4617163a247..97f337c2dcd 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/index.tsx @@ -40,7 +40,7 @@ import { } from '../../../file-data/selectors' import { TimelineAlerts } from '../../../organisms' -const CONTENT_MAX_WIDTH = '46.9375rem' +const CONTENT_MAX_WIDTH = '44.6704375rem' export function ProtocolSteps(): JSX.Element { const { i18n, t } = useTranslation('starting_deck_state') From 6e459dd388c3aea9c812e80b14a306a1e787a65a Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 2 Dec 2024 11:24:18 -0500 Subject: [PATCH 131/220] feat(scripts): add automated ODD memory usage analysis (#16847) Closes EXEC-828 This commit adds a script and an action for performing ODD memory usage analysis in an automated manner. Recently, we added a resource monitor to the shell layer on the ODD. The monitor scapes various data from preselected processes and the ODD in general, pushing this data to Mixpanel. While the data is nice and possible to analyze, there are really two problems with it: Post-processing the data in Mixpanel itself is tricky, and directly exporting the data for analysis via a spreadsheet, etc. is not super straightforward (the script solves this one). It's not automatic (the action solves this one). What Results Indicate (And Don't Indicate) This script answers "is memory consumption increasing as uptime increases on a monitored ODD process" and "is ODD memory decreasing as uptime", both pointing to broad, general-usage memory leaks. Note that it is definitely possible for memory leaks to occur in short-lived function calls/views/etc, and these leaks likely would not be captured by this analysis. How the script works The script is the interesting part of this PR. On a high level, it: * Determine the current, valid build of the app by looking at the app manifest. Also get X number of past, valid builds relative to the current build (the hardcoded number is 2 here). Example,chore_release-8.2.0 or 8.1.0. * Using those build strings, query Mixpanel for the past month of resource data for those builds. Each build gets a separate query, and while we could do this in one query, we are allowed more data by using separate queries. Parse the data. We're interested in things like system uptime, process names, process memory usage, and general ODD available memory. * Do statistics. After some reading, Pearson's correlation coefficient seems like the correct thing to be using here. Note that the interpretation specifies different numbers for indicating a weak/moderate/strong trend than this specific source, because there seems to be some conjecture around this, but I don't think it matters that much in the grand scheme of things. There are some very minor, semi subjective magic numbers to consider like pvalues and minimum sample sizes, but again, it seems that anything reasonable is probably fine. * Do math. Because it's a bit easier to understand at first glance, the script puts memory consumption/availability averages into uptime buckets on a per process basis. Note that the script's implementation of Pearson's does NOT do correlations by comparing buckets of averages. We actually plot each memory usage data point relative to uptime. * When doing statistics and math, we aggregate certain processes, AGGREGATED_PROCESSES, since for example, electron's renderer process can include a lot of unique flags that create a lot of unnecessary disparate results when taken individually. Similarly, there are a lot of processes we don't care to analyze, such as python3 processes, so these are added to a BLACKLISTED_PROCESSES and not included in the final results. * We report these results. Some implementation notes I decided against parameterizing a couple things that could be debatably parameterized, notably the number of past valid builds to report too and the timeframe to analyze (we always look at the past month of available data), because I don't think this matters that much. Once a build is built, we don't expect to see any real change in memory performance month-to-month, and if users really want to compare against previous builds with resource monitor data, it's probably best to look at previous CI runs than doing a lot of rapid querying of the Mixpanel API. --- .github/actions/.gitattributes | 1 + .../actions/odd-resource-analysis/.gitignore | 13 + .../odd-resource-analysis/.prettierignore | 2 + .../odd-resource-analysis/.prettierrc.js | 15 + .../actions/odd-resource-analysis/action.yml | 27 + .../action/analyzeMemoryTrends.js | 295 + .../odd-resource-analysis/action/index.js | 48 + .../action/lib/analysis.js | 81 + .../action/lib/constants.js | 49 + .../action/lib/helpers/date.js | 22 + .../action/lib/helpers/index.js | 5 + .../action/lib/helpers/manifest.js | 52 + .../action/lib/helpers/mixpanel.js | 65 + .../odd-resource-analysis/dist/101.index.js | 469 + .../odd-resource-analysis/dist/index.js | 35540 ++++++++++++++++ .../odd-resource-analysis/package-lock.json | 331 + .../odd-resource-analysis/package.json | 22 + .github/workflows/odd-memory-usage-test.yaml | 24 + 18 files changed, 37061 insertions(+) create mode 100644 .github/actions/.gitattributes create mode 100644 .github/actions/odd-resource-analysis/.gitignore create mode 100644 .github/actions/odd-resource-analysis/.prettierignore create mode 100644 .github/actions/odd-resource-analysis/.prettierrc.js create mode 100644 .github/actions/odd-resource-analysis/action.yml create mode 100644 .github/actions/odd-resource-analysis/action/analyzeMemoryTrends.js create mode 100644 .github/actions/odd-resource-analysis/action/index.js create mode 100644 .github/actions/odd-resource-analysis/action/lib/analysis.js create mode 100644 .github/actions/odd-resource-analysis/action/lib/constants.js create mode 100644 .github/actions/odd-resource-analysis/action/lib/helpers/date.js create mode 100644 .github/actions/odd-resource-analysis/action/lib/helpers/index.js create mode 100644 .github/actions/odd-resource-analysis/action/lib/helpers/manifest.js create mode 100644 .github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js create mode 100644 .github/actions/odd-resource-analysis/dist/101.index.js create mode 100644 .github/actions/odd-resource-analysis/dist/index.js create mode 100644 .github/actions/odd-resource-analysis/package-lock.json create mode 100644 .github/actions/odd-resource-analysis/package.json create mode 100644 .github/workflows/odd-memory-usage-test.yaml diff --git a/.github/actions/.gitattributes b/.github/actions/.gitattributes new file mode 100644 index 00000000000..a0e3fe76dd7 --- /dev/null +++ b/.github/actions/.gitattributes @@ -0,0 +1 @@ +.github/actions/odd-resource-analysis/dist/* binary \ No newline at end of file diff --git a/.github/actions/odd-resource-analysis/.gitignore b/.github/actions/odd-resource-analysis/.gitignore new file mode 100644 index 00000000000..368f5c9f9dc --- /dev/null +++ b/.github/actions/odd-resource-analysis/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +.idea +*.log +tmp/ + +*.tern-port +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +*.tsbuildinfo +.npm +.eslintcache diff --git a/.github/actions/odd-resource-analysis/.prettierignore b/.github/actions/odd-resource-analysis/.prettierignore new file mode 100644 index 00000000000..763301fc002 --- /dev/null +++ b/.github/actions/odd-resource-analysis/.prettierignore @@ -0,0 +1,2 @@ +dist/ +node_modules/ \ No newline at end of file diff --git a/.github/actions/odd-resource-analysis/.prettierrc.js b/.github/actions/odd-resource-analysis/.prettierrc.js new file mode 100644 index 00000000000..d9888254456 --- /dev/null +++ b/.github/actions/odd-resource-analysis/.prettierrc.js @@ -0,0 +1,15 @@ +'use strict' + +module.exports = { + printWidth: 80, // default + tabWidth: 2, // default + useTabs: false, // default + semi: false, + singleQuote: true, + jsxSingleQuote: false, // default + trailingComma: 'es5', + bracketSpacing: true, // default + jsxBracketSameLine: false, // default + arrowParens: 'avoid', // default + endOfLine: 'lf', +} diff --git a/.github/actions/odd-resource-analysis/action.yml b/.github/actions/odd-resource-analysis/action.yml new file mode 100644 index 00000000000..f5d6677f6f2 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action.yml @@ -0,0 +1,27 @@ +name: 'ODD Memory Usage Analysis' +description: >- + Analyzes memory usage trends across ODD versions using Mixpanel data. + Note that only processes with positive correlation or explicitly whitelisted processes are shown. + +inputs: + mixpanel-user: + description: 'Mixpanel service account username' + required: true + mixpanel-secret: + description: 'Mixpanel service account password' + required: true + mixpanel-project-id: + description: 'Mixpanel project ID' + required: true + previous-version-count: + description: 'Number of previous versions to analyze' + required: false + default: '2' + +outputs: + analysis-results: + description: 'JSON string containing the complete analysis results' + +runs: + using: 'node16' + main: 'dist/index.js' diff --git a/.github/actions/odd-resource-analysis/action/analyzeMemoryTrends.js b/.github/actions/odd-resource-analysis/action/analyzeMemoryTrends.js new file mode 100644 index 00000000000..139f8719375 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/analyzeMemoryTrends.js @@ -0,0 +1,295 @@ +const { + parseMixpanelData, + getISODatesForPastMonth, + getMixpanelResourceMonitorDataFor, + downloadAppManifest, + getPrevValidVersions, + latestValidVersionFromManifest, +} = require('./lib/helpers') +const { analyzeCorrelation } = require('./lib/analysis') +const { + AGGREGATED_PROCESSES, + AGGREGATED_PROCESS_NAMES, + BLACKLISTED_PROCESSES, + MINIMUM_VALID_SAMPLE_SIZE, +} = require('./lib/constants') + +const UPTIME_BUCKETS = [ + { min: 0, max: 20, label: '0-20hrs' }, + { min: 20, max: 40, label: '20-40hrs' }, + { min: 40, max: 60, label: '40-60hrs' }, + { min: 60, max: 80, label: '60-80hrs' }, + { min: 80, max: 120, label: '80-120hrs' }, + { min: 120, max: 240, label: '120-240hrs' }, + { min: 240, max: Infinity, label: '240+hrs' }, +] + +/** + * @description Calculate average memory usage for measurements within a specific time range + * @param measurements Array of measurements with uptime and a memory metric + * @param minHours Minimum hours (inclusive) + * @param maxHours Maximum hours (exclusive) + * @param memoryMetric The field to average ('memRssMb' or 'systemAvailMemMb') + * @returns {number | null} Average memory usage or null if no measurements in range + */ +function calculateAverageMemoryForRange( + measurements, + minHours, + maxHours, + memoryMetric = 'memRssMb' +) { + const inRange = measurements.filter( + m => m.uptime >= minHours && m.uptime < maxHours + ) + + if (inRange.length === 0 || inRange.length < MINIMUM_VALID_SAMPLE_SIZE) { + return null + } + + const sum = inRange.reduce((acc, m) => acc + m[memoryMetric], 0) + return sum / inRange.length +} + +/** + * @description Calculate memory usage averages across all defined ranges + * @param measurements Array of measurements with uptime and the memory metric + * @param memoryMetric The field to average ('memRssMb' or 'systemAvailMemMb') + * @returns {Object} Contains averages for each range + */ +function calculateRangeAverages(measurements, memoryMetric = 'memRssMb') { + const averages = {} + UPTIME_BUCKETS.forEach(range => { + const avg = calculateAverageMemoryForRange( + measurements, + range.min, + range.max, + memoryMetric + ) + averages[range.label] = + avg !== null ? avg.toFixed(2) : 'N/A - Not enough data available.' + }) + return averages +} + +/** + * @description Filter the Mixpanel data for the data relevant for memory analysis, aggregating data for certain processes + * and ignoring data for blacklisted processes. + * @param data Mixpanel data. + * @return A tuple of memory data by process and general ODD system memory. + */ +function processMixpanelData(data) { + const processByName = new Map() + const systemMemory = [] + + data.forEach(entry => { + const { + systemUptimeHrs, + systemAvailMemMb, + processesDetails, + } = entry.properties + const uptime = parseFloat(systemUptimeHrs) + + // Validate uptime before adding any measurements + if (isNaN(uptime)) { + return + } + + // Ensure system mem is a valid number before adding it. + const availMemMb = parseFloat(systemAvailMemMb) + if (!isNaN(availMemMb)) { + systemMemory.push({ + uptime, + systemAvailMemMb: availMemMb, + }) + } + + processesDetails.forEach(process => { + const isBlacklisted = BLACKLISTED_PROCESSES.some(pattern => + pattern.test(process.name) + ) + + if (!isBlacklisted) { + let processKey = process.name + // Certain processes are aggregated. + for (const { pattern, key } of AGGREGATED_PROCESSES) { + if (pattern.test(process.name)) { + processKey = key + break + } + } + + const memRssMb = parseFloat(process.memRssMb) + if (!isNaN(memRssMb)) { + if (!processByName.has(processKey)) { + processByName.set(processKey, []) + } + processByName.get(processKey).push({ + memRssMb, + uptime, + }) + } + } + }) + }) + + return [processByName, systemMemory] +} + +/** + * @description Group data by process name and calculate correlation and range averages + * @param data See `analyzeMemoryTrends` + */ +function analyzeProcessMemoryTrends(data) { + const [processByName, systemMemory] = processMixpanelData(data) + + // Filter out any process that has less than the minimum sample size + for (const [processName, measurements] of processByName.entries()) { + if (measurements.length < MINIMUM_VALID_SAMPLE_SIZE) { + processByName.delete(processName) + } + } + + // Calculate correlation coefficient and range averages for each process + const results = new Map() + processByName.forEach((measurements, processName) => { + const analysis = analyzeCorrelation( + measurements.map(m => m.uptime), + measurements.map(m => m.memRssMb) + ) + + results.set(processName, { + correlation: analysis.correlation, + sampleSize: analysis.sampleSize, + interpretation: analysis.interpretation, + averageMemoryMbByUptime: calculateRangeAverages(measurements, 'memRssMb'), + }) + }) + + // Calculate system memory metrics + const systemAnalysis = analyzeCorrelation( + systemMemory.map(m => m.uptime), + systemMemory.map(m => m.systemAvailMemMb) + ) + + results.set('odd-available-memory', { + correlation: systemAnalysis.correlation, + sampleSize: systemAnalysis.sampleSize, + interpretation: systemAnalysis.interpretation, + averageMemoryMbByUptime: calculateRangeAverages( + systemMemory, + 'systemAvailMemMb' + ), + }) + + // Filter out any process with a negative correlation except for a few key ones. + for (const [processName, memResults] of results.entries()) { + if ( + memResults.correlation < 0 && + processName !== 'odd-available-memory' && + ![ + AGGREGATED_PROCESS_NAMES.APP_RENDERER, + AGGREGATED_PROCESS_NAMES.SERVER_UVICORN, + ].includes(processName) + ) { + results.delete(processName) + } + } + + return results +} + +/** + * @description Post-process mixpanel data, returning statistical summaries per process + * @param mixpanelData Each entry is expected to contain a top-level 'properties' field with relevant subfields. + */ +function analyzeMemoryTrends(mixpanelData) { + const parsedData = parseMixpanelData(mixpanelData) + const results = analyzeProcessMemoryTrends(parsedData) + + const analysis = {} + results.forEach((result, processName) => { + analysis[processName] = { + correlation: result.correlation.toFixed(4), + sampleSize: result.sampleSize, + interpretation: result.interpretation, + averageMemoryMbByUptime: result.averageMemoryMbByUptime, + } + }) + + return analysis +} + +/** + * @description The 'where' used as a segmentation expression for Mixpanel data filtering. + */ +function buildWhere(version) { + return `properties["appVersion"]=="${version}" and properties["appMode"]=="ODD"` +} + +/** + * @description Analyze memory trends across multiple versions + * @param {number} previousVersionCount Number of previous versions to analyze + * @param {string} uname Mixpanel service account username. + * @param {string} pwd Mixpanel service account password. + * @param {string} projectId Mixpanel project id. + */ +async function analyzeMemoryTrendsAcrossVersions({ + previousVersionCount, + uname, + pwd, + projectId, +}) { + const manifest = await downloadAppManifest() + const latestValidVersion = latestValidVersionFromManifest(manifest) + const prevValidVersions = getPrevValidVersions( + manifest, + latestValidVersion, + previousVersionCount + ) + const analysisPeriod = getISODatesForPastMonth() + + // Populate backup messaging if there's no data available for a specific version + const noDataAvailableStr = 'N/A - No data available' + const results = { + [latestValidVersion]: noDataAvailableStr, + } + prevValidVersions.forEach(version => { + results[version] = noDataAvailableStr + }) + + // Analyze latest version + const currentVersionData = await getMixpanelResourceMonitorDataFor({ + version: latestValidVersion, + uname, + pwd, + projectId, + fromDate: analysisPeriod.from, + toDate: analysisPeriod.to, + where: buildWhere(latestValidVersion), + }) + + if (currentVersionData) { + results[latestValidVersion] = analyzeMemoryTrends(currentVersionData) + } + + // Analyze previous versions + for (const version of prevValidVersions) { + const versionData = await getMixpanelResourceMonitorDataFor({ + version, + uname, + pwd, + projectId, + fromDate: analysisPeriod.from, + toDate: analysisPeriod.to, + where: buildWhere(version), + }) + + if (versionData) { + results[version] = analyzeMemoryTrends(versionData) + } + } + + return results +} + +module.exports = { analyzeMemoryTrendsAcrossVersions } diff --git a/.github/actions/odd-resource-analysis/action/index.js b/.github/actions/odd-resource-analysis/action/index.js new file mode 100644 index 00000000000..9ccd2f48e5a --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/index.js @@ -0,0 +1,48 @@ +const core = require('@actions/core') +const { analyzeMemoryTrendsAcrossVersions } = require('./analyzeMemoryTrends') + +async function run() { + try { + const mixpanelUser = core.getInput('mixpanel-user', { required: true }) + const mixpanelSecret = core.getInput('mixpanel-secret', { required: true }) + const mixpanelProjectId = core.getInput('mixpanel-project-id', { + required: true, + }) + const previousVersionCount = parseInt( + core.getInput('previous-version-count') || '2' + ) + + core.info('Beginning analysis...') + const memoryAnalysis = await analyzeMemoryTrendsAcrossVersions({ + previousVersionCount, + uname: mixpanelUser, + pwd: mixpanelSecret, + projectId: mixpanelProjectId, + }) + + console.log( + 'ODD Available Memory and Processes with Increasing Memory Trend or Selectively Observed by Version (Rolling 1 Month Analysis Window):' + ) + console.log(JSON.stringify(memoryAnalysis, null, 2)) + + const outputText = + 'ODD Available Memory and Processes with Increasing Memory Trend or Selectively Observed by Version (Rolling 1 Month Analysis Window):\n' + + Object.entries(memoryAnalysis) + .map( + ([version, analysis]) => + `\n${version}: ${JSON.stringify(analysis, null, 2)}` + ) + .join('\n') + + core.setOutput('analysis-results', JSON.stringify(memoryAnalysis)) + + await core.summary + .addHeading('ODD Memory Usage Results') + .addCodeBlock(outputText, 'json') + .write() + } catch (error) { + core.setFailed(error.message) + } +} + +run() diff --git a/.github/actions/odd-resource-analysis/action/lib/analysis.js b/.github/actions/odd-resource-analysis/action/lib/analysis.js new file mode 100644 index 00000000000..bc672aace51 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/lib/analysis.js @@ -0,0 +1,81 @@ +const calculateCorrelation = require('calculate-correlation') +const { MINIMUM_VALID_SAMPLE_SIZE } = require('./constants') + +const P_VALUE_THRESHOLD = 0.05 + +const CORRELATION_THRESHOLDS = { + STRONG: 0.7, + MODERATE: 0.3, +} + +/** + * @description Calculate significance of Pearson correlation coefficient using t-distribution approximation + * @param {number} correlation Pearson correlation coefficient + * @param {number} sampleSize Number of samples + * @returns {number} One-tailed p-value + */ +function calculatePValue(correlation, sampleSize) { + // Convert correlation coefficient to t-statistic + const t = correlation * Math.sqrt((sampleSize - 2) / (1 - correlation ** 2)) + + // Degrees of freedom + const df = sampleSize - 2 + + const x = df / (df + t * t) + return 0.5 * Math.pow(x, df / 2) +} + +/** + * @description Determines correlation strength and direction + * @param {number} correlation Pearson correlation coefficient + * @returns {string} Human readable interpretation + */ +function getCorrelationDescription(correlation) { + const strength = Math.abs(correlation) + const direction = correlation > 0 ? 'positive' : 'negative' + + if (strength > CORRELATION_THRESHOLDS.STRONG) { + return `Strong ${direction} correlation (>${CORRELATION_THRESHOLDS.STRONG})` + } else if (strength > CORRELATION_THRESHOLDS.MODERATE) { + return `Moderate ${direction} correlation (>${CORRELATION_THRESHOLDS.MODERATE} and <${CORRELATION_THRESHOLDS.STRONG})` + } + return `Weak ${direction} correlation (<=${CORRELATION_THRESHOLDS.MODERATE})` +} + +/** + * @description Performs complete correlation analysis including significance testing + * @param {Array} x Array of numbers + * @param {Array} y Array of numbers + * @return {Object} Analysis results including correlation, significance, and interpretation + */ +function analyzeCorrelation(x, y) { + const lowestSampleSize = Math.min(x.length, y.length) + + if (lowestSampleSize < MINIMUM_VALID_SAMPLE_SIZE) { + return { + correlation: 0, + isSignificant: false, + sampleSize: lowestSampleSize, + pValue: 1, + interpretation: 'Not enough samples for analysis', + } + } + + const correlation = calculateCorrelation(x, y, { decimals: 4 }) + const pValue = calculatePValue(correlation, lowestSampleSize) + const isSignificant = pValue < P_VALUE_THRESHOLD + + return { + correlation, + isSignificant, + sampleSize: x.length, + pValue, + interpretation: isSignificant + ? getCorrelationDescription(correlation) + : 'No significant correlation found', + } +} + +module.exports = { + analyzeCorrelation, +} diff --git a/.github/actions/odd-resource-analysis/action/lib/constants.js b/.github/actions/odd-resource-analysis/action/lib/constants.js new file mode 100644 index 00000000000..e6b426422d1 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/lib/constants.js @@ -0,0 +1,49 @@ +const AGGREGATED_PROCESS_NAMES = { + APP_RENDERER: 'app-renderer-processes', + APP_ZYGOTE: 'app-zygote-processes', + SERVER_UVICORN: 'robot-server-uvicorn-processes', + APP_UTILITY: 'app-utility-processes', +} + +/** + * @description Several processes we care about execute with a lot of unique sub args determined at + * runtime. These processes are aggregated using a regex pattern. + */ +const AGGREGATED_PROCESSES = [ + { + pattern: /^\/opt\/opentrons-app\/opentrons --type=renderer/, + key: AGGREGATED_PROCESS_NAMES.APP_RENDERER, + }, + { + pattern: /^\/opt\/opentrons-app\/opentrons --type=zygote/, + key: AGGREGATED_PROCESS_NAMES.APP_ZYGOTE, + }, + { + pattern: /^python3 -m uvicorn/, + key: AGGREGATED_PROCESS_NAMES.SERVER_UVICORN, + }, + { + pattern: /^\/opt\/opentrons-app\/opentrons --type=utility/, + key: AGGREGATED_PROCESS_NAMES.APP_UTILITY, + }, +] + +/** + * @description Generally don't include any variation of external processes in analysis. + */ +const BLACKLISTED_PROCESSES = [/^nmcli/, /^\/usr\/bin\/python3/] + +/** + * @description For Pearson's, it's generally recommended to use a sample size of at least n=30. + */ +const MINIMUM_VALID_SAMPLE_SIZE = 30 + +const P_VALUE_SIGNIFICANCE_THRESHOLD = 0.05 + +module.exports = { + AGGREGATED_PROCESSES, + AGGREGATED_PROCESS_NAMES, + BLACKLISTED_PROCESSES, + MINIMUM_VALID_SAMPLE_SIZE, + P_VALUE_SIGNIFICANCE_THRESHOLD, +} diff --git a/.github/actions/odd-resource-analysis/action/lib/helpers/date.js b/.github/actions/odd-resource-analysis/action/lib/helpers/date.js new file mode 100644 index 00000000000..fa0bda62d51 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/lib/helpers/date.js @@ -0,0 +1,22 @@ +/** + * @description Get ISO date strings for the past month from yesterday. + */ +function getISODatesForPastMonth() { + const now = new Date() + // Don't use today's data, because the Mixpanel API seemingly doesn't use UTC timestamps, and + // it's easy to fail a request depending on the time of day it's made. + const yesterday = new Date(now.setDate(now.getDate() - 1)) + const formatDate = date => date.toISOString().split('T')[0] + + const monthAgo = new Date(yesterday) + monthAgo.setMonth(yesterday.getMonth() - 1) + + return { + from: formatDate(monthAgo), + to: formatDate(yesterday), + } +} + +module.exports = { + getISODatesForPastMonth, +} diff --git a/.github/actions/odd-resource-analysis/action/lib/helpers/index.js b/.github/actions/odd-resource-analysis/action/lib/helpers/index.js new file mode 100644 index 00000000000..71991e2d09f --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/lib/helpers/index.js @@ -0,0 +1,5 @@ +module.exports = { + ...require('./date'), + ...require('./manifest'), + ...require('./mixpanel'), +} diff --git a/.github/actions/odd-resource-analysis/action/lib/helpers/manifest.js b/.github/actions/odd-resource-analysis/action/lib/helpers/manifest.js new file mode 100644 index 00000000000..371f5e78cd9 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/lib/helpers/manifest.js @@ -0,0 +1,52 @@ +const fetch = require('node-fetch') + +const APP_MANIFEST = 'https://builds.opentrons.com/ot3-oe/releases.json' + +async function downloadAppManifest() { + const response = await fetch(APP_MANIFEST) + return await response.json() +} + +/** + * @description Get the most recent app version that is not revoked. + * @param manifest The app manifest + */ +function latestValidVersionFromManifest(manifest) { + const versions = Object.keys(manifest.production) + const latestValidVersion = versions.findLast( + version => !('revoked' in manifest.production[version]) + ) + + if (latestValidVersion != null) { + return latestValidVersion + } else { + throw new Error('No valid versions found') + } +} + +/** + * @description Get `count` latest, previous non revoked versions relative to the latest version. + * @param manifest The app manifest + * @param latestVersion The latest valid version + * @param count Number of previous versions to return + * @returns {string[]} Array of version strings, ordered from newest to oldest + */ +function getPrevValidVersions(manifest, latestVersion, count) { + const versions = Object.keys(manifest.production) + const latestIndex = versions.indexOf(latestVersion) + + if (latestIndex === -1) { + throw new Error('Latest version not found in manifest') + } + + return versions + .slice(0, latestIndex) + .filter(version => !manifest.production[version].revoked) + .slice(-count) + .reverse() +} +module.exports = { + downloadAppManifest, + latestValidVersionFromManifest, + getPrevValidVersions, +} diff --git a/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js b/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js new file mode 100644 index 00000000000..a518d1f4b40 --- /dev/null +++ b/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js @@ -0,0 +1,65 @@ +const fetch = require('node-fetch') + +const MIXPANEL_URL = 'https://data.mixpanel.com/api/2.0/export' + +/** + * @description Base64 encode a username and password in + * @param uname Mixpanel service account username. + * @param pwd Mixpanel service account password. + * @return {string} + */ +function encodeCredentialsForMixpanel(uname, pwd) { + return Buffer.from(`${uname}:${pwd}`).toString('base64') +} + +/** + * @description Cleans up Mixpanel data for post-processing. + * @param data Mixpanel data + */ +function parseMixpanelData(data) { + const lines = data.split('\n').filter(line => line.trim()) + return lines.map(line => JSON.parse(line)) +} + +/** + * @description Make the network request to Mixpanel. + */ +async function getMixpanelResourceMonitorDataFor({ + uname, + pwd, + projectId, + fromDate, + toDate, + where, +}) { + const params = new URLSearchParams({ + project_id: projectId, + from_date: fromDate, + to_date: toDate, + event: '["resourceMonitorReport"]', + where, + }) + + const options = { + method: 'GET', + headers: { + 'Accept-Encoding': 'gzip', + accept: 'text/plain', + authorization: `Basic ${encodeCredentialsForMixpanel(uname, pwd)}`, + }, + } + + const response = await fetch(`${MIXPANEL_URL}?${params}`, options) + const text = await response.text() + if (!response.ok) { + throw new Error( + `Mixpanel request failed: ${response.status}, ${response.statusText}, ${text}` + ) + } + return text +} + +module.exports = { + getMixpanelResourceMonitorDataFor, + parseMixpanelData, +} diff --git a/.github/actions/odd-resource-analysis/dist/101.index.js b/.github/actions/odd-resource-analysis/dist/101.index.js new file mode 100644 index 00000000000..acbcf4681d5 --- /dev/null +++ b/.github/actions/odd-resource-analysis/dist/101.index.js @@ -0,0 +1,469 @@ +'use strict' +exports.id = 101 +exports.ids = [101] +exports.modules = { + /***/ 9101: /***/ ( + __unused_webpack___webpack_module__, + __webpack_exports__, + __webpack_require__ + ) => { + /* harmony export */ __webpack_require__.d(__webpack_exports__, { + /* harmony export */ toFormData: () => /* binding */ toFormData, + /* harmony export */ + }) + /* harmony import */ var fetch_blob_from_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( + 9802 + ) + /* harmony import */ var formdata_polyfill_esm_min_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( + 3018 + ) + + let s = 0 + const S = { + START_BOUNDARY: s++, + HEADER_FIELD_START: s++, + HEADER_FIELD: s++, + HEADER_VALUE_START: s++, + HEADER_VALUE: s++, + HEADER_VALUE_ALMOST_DONE: s++, + HEADERS_ALMOST_DONE: s++, + PART_DATA_START: s++, + PART_DATA: s++, + END: s++, + } + + let f = 1 + const F = { + PART_BOUNDARY: f, + LAST_BOUNDARY: (f *= 2), + } + + const LF = 10 + const CR = 13 + const SPACE = 32 + const HYPHEN = 45 + const COLON = 58 + const A = 97 + const Z = 122 + + const lower = c => c | 0x20 + + const noop = () => {} + + class MultipartParser { + /** + * @param {string} boundary + */ + constructor(boundary) { + this.index = 0 + this.flags = 0 + + this.onHeaderEnd = noop + this.onHeaderField = noop + this.onHeadersEnd = noop + this.onHeaderValue = noop + this.onPartBegin = noop + this.onPartData = noop + this.onPartEnd = noop + + this.boundaryChars = {} + + boundary = '\r\n--' + boundary + const ui8a = new Uint8Array(boundary.length) + for (let i = 0; i < boundary.length; i++) { + ui8a[i] = boundary.charCodeAt(i) + this.boundaryChars[ui8a[i]] = true + } + + this.boundary = ui8a + this.lookbehind = new Uint8Array(this.boundary.length + 8) + this.state = S.START_BOUNDARY + } + + /** + * @param {Uint8Array} data + */ + write(data) { + let i = 0 + const length_ = data.length + let previousIndex = this.index + let { lookbehind, boundary, boundaryChars, index, state, flags } = this + const boundaryLength = this.boundary.length + const boundaryEnd = boundaryLength - 1 + const bufferLength = data.length + let c + let cl + + const mark = name => { + this[name + 'Mark'] = i + } + + const clear = name => { + delete this[name + 'Mark'] + } + + const callback = (callbackSymbol, start, end, ui8a) => { + if (start === undefined || start !== end) { + this[callbackSymbol](ui8a && ui8a.subarray(start, end)) + } + } + + const dataCallback = (name, clear) => { + const markSymbol = name + 'Mark' + if (!(markSymbol in this)) { + return + } + + if (clear) { + callback(name, this[markSymbol], i, data) + delete this[markSymbol] + } else { + callback(name, this[markSymbol], data.length, data) + this[markSymbol] = 0 + } + } + + for (i = 0; i < length_; i++) { + c = data[i] + + switch (state) { + case S.START_BOUNDARY: + if (index === boundary.length - 2) { + if (c === HYPHEN) { + flags |= F.LAST_BOUNDARY + } else if (c !== CR) { + return + } + + index++ + break + } else if (index - 1 === boundary.length - 2) { + if (flags & F.LAST_BOUNDARY && c === HYPHEN) { + state = S.END + flags = 0 + } else if (!(flags & F.LAST_BOUNDARY) && c === LF) { + index = 0 + callback('onPartBegin') + state = S.HEADER_FIELD_START + } else { + return + } + + break + } + + if (c !== boundary[index + 2]) { + index = -2 + } + + if (c === boundary[index + 2]) { + index++ + } + + break + case S.HEADER_FIELD_START: + state = S.HEADER_FIELD + mark('onHeaderField') + index = 0 + // falls through + case S.HEADER_FIELD: + if (c === CR) { + clear('onHeaderField') + state = S.HEADERS_ALMOST_DONE + break + } + + index++ + if (c === HYPHEN) { + break + } + + if (c === COLON) { + if (index === 1) { + // empty header field + return + } + + dataCallback('onHeaderField', true) + state = S.HEADER_VALUE_START + break + } + + cl = lower(c) + if (cl < A || cl > Z) { + return + } + + break + case S.HEADER_VALUE_START: + if (c === SPACE) { + break + } + + mark('onHeaderValue') + state = S.HEADER_VALUE + // falls through + case S.HEADER_VALUE: + if (c === CR) { + dataCallback('onHeaderValue', true) + callback('onHeaderEnd') + state = S.HEADER_VALUE_ALMOST_DONE + } + + break + case S.HEADER_VALUE_ALMOST_DONE: + if (c !== LF) { + return + } + + state = S.HEADER_FIELD_START + break + case S.HEADERS_ALMOST_DONE: + if (c !== LF) { + return + } + + callback('onHeadersEnd') + state = S.PART_DATA_START + break + case S.PART_DATA_START: + state = S.PART_DATA + mark('onPartData') + // falls through + case S.PART_DATA: + previousIndex = index + + if (index === 0) { + // boyer-moore derrived algorithm to safely skip non-boundary data + i += boundaryEnd + while (i < bufferLength && !(data[i] in boundaryChars)) { + i += boundaryLength + } + + i -= boundaryEnd + c = data[i] + } + + if (index < boundary.length) { + if (boundary[index] === c) { + if (index === 0) { + dataCallback('onPartData', true) + } + + index++ + } else { + index = 0 + } + } else if (index === boundary.length) { + index++ + if (c === CR) { + // CR = part boundary + flags |= F.PART_BOUNDARY + } else if (c === HYPHEN) { + // HYPHEN = end boundary + flags |= F.LAST_BOUNDARY + } else { + index = 0 + } + } else if (index - 1 === boundary.length) { + if (flags & F.PART_BOUNDARY) { + index = 0 + if (c === LF) { + // unset the PART_BOUNDARY flag + flags &= ~F.PART_BOUNDARY + callback('onPartEnd') + callback('onPartBegin') + state = S.HEADER_FIELD_START + break + } + } else if (flags & F.LAST_BOUNDARY) { + if (c === HYPHEN) { + callback('onPartEnd') + state = S.END + flags = 0 + } else { + index = 0 + } + } else { + index = 0 + } + } + + if (index > 0) { + // when matching a possible boundary, keep a lookbehind reference + // in case it turns out to be a false lead + lookbehind[index - 1] = c + } else if (previousIndex > 0) { + // if our boundary turned out to be rubbish, the captured lookbehind + // belongs to partData + const _lookbehind = new Uint8Array( + lookbehind.buffer, + lookbehind.byteOffset, + lookbehind.byteLength + ) + callback('onPartData', 0, previousIndex, _lookbehind) + previousIndex = 0 + mark('onPartData') + + // reconsider the current character even so it interrupted the sequence + // it could be the beginning of a new sequence + i-- + } + + break + case S.END: + break + default: + throw new Error(`Unexpected state entered: ${state}`) + } + } + + dataCallback('onHeaderField') + dataCallback('onHeaderValue') + dataCallback('onPartData') + + // Update properties for the next call + this.index = index + this.state = state + this.flags = flags + } + + end() { + if ( + (this.state === S.HEADER_FIELD_START && this.index === 0) || + (this.state === S.PART_DATA && this.index === this.boundary.length) + ) { + this.onPartEnd() + } else if (this.state !== S.END) { + throw new Error('MultipartParser.end(): stream ended unexpectedly') + } + } + } + + function _fileName(headerValue) { + // matches either a quoted-string or a token (RFC 2616 section 19.5.1) + const m = headerValue.match( + /\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i + ) + if (!m) { + return + } + + const match = m[2] || m[3] || '' + let filename = match.slice(match.lastIndexOf('\\') + 1) + filename = filename.replace(/%22/g, '"') + filename = filename.replace(/&#(\d{4});/g, (m, code) => { + return String.fromCharCode(code) + }) + return filename + } + + async function toFormData(Body, ct) { + if (!/multipart/i.test(ct)) { + throw new TypeError('Failed to fetch') + } + + const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i) + + if (!m) { + throw new TypeError( + 'no or bad content-type header, no multipart boundary' + ) + } + + const parser = new MultipartParser(m[1] || m[2]) + + let headerField + let headerValue + let entryValue + let entryName + let contentType + let filename + const entryChunks = [] + const formData = new formdata_polyfill_esm_min_js__WEBPACK_IMPORTED_MODULE_1__ /* .FormData */.fS() + + const onPartData = ui8a => { + entryValue += decoder.decode(ui8a, { stream: true }) + } + + const appendToFile = ui8a => { + entryChunks.push(ui8a) + } + + const appendFileToFormData = () => { + const file = new fetch_blob_from_js__WEBPACK_IMPORTED_MODULE_0__ /* .File */.ZH( + entryChunks, + filename, + { type: contentType } + ) + formData.append(entryName, file) + } + + const appendEntryToFormData = () => { + formData.append(entryName, entryValue) + } + + const decoder = new TextDecoder('utf-8') + decoder.decode() + + parser.onPartBegin = function () { + parser.onPartData = onPartData + parser.onPartEnd = appendEntryToFormData + + headerField = '' + headerValue = '' + entryValue = '' + entryName = '' + contentType = '' + filename = null + entryChunks.length = 0 + } + + parser.onHeaderField = function (ui8a) { + headerField += decoder.decode(ui8a, { stream: true }) + } + + parser.onHeaderValue = function (ui8a) { + headerValue += decoder.decode(ui8a, { stream: true }) + } + + parser.onHeaderEnd = function () { + headerValue += decoder.decode() + headerField = headerField.toLowerCase() + + if (headerField === 'content-disposition') { + // matches either a quoted-string or a token (RFC 2616 section 19.5.1) + const m = headerValue.match( + /\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i + ) + + if (m) { + entryName = m[2] || m[3] || '' + } + + filename = _fileName(headerValue) + + if (filename) { + parser.onPartData = appendToFile + parser.onPartEnd = appendFileToFormData + } + } else if (headerField === 'content-type') { + contentType = headerValue + } + + headerValue = '' + headerField = '' + } + + for await (const chunk of Body) { + parser.write(chunk) + } + + parser.end() + + return formData + } + + /***/ + }, +} diff --git a/.github/actions/odd-resource-analysis/dist/index.js b/.github/actions/odd-resource-analysis/dist/index.js new file mode 100644 index 00000000000..cca88b8a17d --- /dev/null +++ b/.github/actions/odd-resource-analysis/dist/index.js @@ -0,0 +1,35540 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 1548: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { + parseMixpanelData, + getISODatesForPastMonth, + getMixpanelResourceMonitorDataFor, + downloadAppManifest, + getPrevValidVersions, + latestValidVersionFromManifest, +} = __nccwpck_require__(3937) +const { analyzeCorrelation } = __nccwpck_require__(725) +const { + AGGREGATED_PROCESSES, + AGGREGATED_PROCESS_NAMES, + BLACKLISTED_PROCESSES, + MINIMUM_VALID_SAMPLE_SIZE, +} = __nccwpck_require__(2038) + +const UPTIME_BUCKETS = [ + { min: 0, max: 20, label: '0-20hrs' }, + { min: 20, max: 40, label: '20-40hrs' }, + { min: 40, max: 60, label: '40-60hrs' }, + { min: 60, max: 80, label: '60-80hrs' }, + { min: 80, max: 120, label: '80-120hrs' }, + { min: 120, max: 240, label: '120-240hrs' }, + { min: 240, max: Infinity, label: '240+hrs' }, +] + +/** + * @description Calculate average memory usage for measurements within a specific time range + * @param measurements Array of measurements with uptime and a memory metric + * @param minHours Minimum hours (inclusive) + * @param maxHours Maximum hours (exclusive) + * @param memoryMetric The field to average ('memRssMb' or 'systemAvailMemMb') + * @returns {number | null} Average memory usage or null if no measurements in range + */ +function calculateAverageMemoryForRange( + measurements, + minHours, + maxHours, + memoryMetric = 'memRssMb' +) { + const inRange = measurements.filter( + m => m.uptime >= minHours && m.uptime < maxHours + ) + + if (inRange.length === 0 || inRange.length < MINIMUM_VALID_SAMPLE_SIZE) { + return null + } + + const sum = inRange.reduce((acc, m) => acc + m[memoryMetric], 0) + return sum / inRange.length +} + +/** + * @description Calculate memory usage averages across all defined ranges + * @param measurements Array of measurements with uptime and the memory metric + * @param memoryMetric The field to average ('memRssMb' or 'systemAvailMemMb') + * @returns {Object} Contains averages for each range + */ +function calculateRangeAverages(measurements, memoryMetric = 'memRssMb') { + const averages = {} + UPTIME_BUCKETS.forEach(range => { + const avg = calculateAverageMemoryForRange( + measurements, + range.min, + range.max, + memoryMetric + ) + averages[range.label] = + avg !== null ? avg.toFixed(2) : 'N/A - Not enough data available.' + }) + return averages +} + +/** + * @description Filter the Mixpanel data for the data relevant for memory analysis, aggregating data for certain processes + * and ignoring data for blacklisted processes. + * @param data Mixpanel data. + * @return A tuple of memory data by process and general ODD system memory. + */ +function processMixpanelData(data) { + const processByName = new Map() + const systemMemory = [] + + data.forEach(entry => { + const { systemUptimeHrs, systemAvailMemMb, processesDetails } = + entry.properties + const uptime = parseFloat(systemUptimeHrs) + + // Validate uptime before adding any measurements + if (isNaN(uptime)) { + return + } + + // Ensure system mem is a valid number before adding it. + const availMemMb = parseFloat(systemAvailMemMb) + if (!isNaN(availMemMb)) { + systemMemory.push({ + uptime, + systemAvailMemMb: availMemMb, + }) + } + + processesDetails.forEach(process => { + const isBlacklisted = BLACKLISTED_PROCESSES.some(pattern => + pattern.test(process.name) + ) + + if (!isBlacklisted) { + let processKey = process.name + // Certain processes are aggregated. + for (const { pattern, key } of AGGREGATED_PROCESSES) { + if (pattern.test(process.name)) { + processKey = key + break + } + } + + const memRssMb = parseFloat(process.memRssMb) + if (!isNaN(memRssMb)) { + if (!processByName.has(processKey)) { + processByName.set(processKey, []) + } + processByName.get(processKey).push({ + memRssMb, + uptime, + }) + } + } + }) + }) + + return [processByName, systemMemory] +} + +/** + * @description Group data by process name and calculate correlation and range averages + * @param data See `analyzeMemoryTrends` + */ +function analyzeProcessMemoryTrends(data) { + const [processByName, systemMemory] = processMixpanelData(data) + + // Filter out any process that has less than the minimum sample size + for (const [processName, measurements] of processByName.entries()) { + if (measurements.length < MINIMUM_VALID_SAMPLE_SIZE) { + processByName.delete(processName) + } + } + + // Calculate correlation coefficient and range averages for each process + const results = new Map() + processByName.forEach((measurements, processName) => { + const analysis = analyzeCorrelation( + measurements.map(m => m.uptime), + measurements.map(m => m.memRssMb) + ) + + results.set(processName, { + correlation: analysis.correlation, + sampleSize: analysis.sampleSize, + interpretation: analysis.interpretation, + averageMemoryMbByUptime: calculateRangeAverages(measurements, 'memRssMb'), + }) + }) + + // Calculate system memory metrics + const systemAnalysis = analyzeCorrelation( + systemMemory.map(m => m.uptime), + systemMemory.map(m => m.systemAvailMemMb) + ) + + results.set('odd-available-memory', { + correlation: systemAnalysis.correlation, + sampleSize: systemAnalysis.sampleSize, + interpretation: systemAnalysis.interpretation, + averageMemoryMbByUptime: calculateRangeAverages( + systemMemory, + 'systemAvailMemMb' + ), + }) + + // Filter out any process with a negative correlation except for a few key ones. + for (const [processName, memResults] of results.entries()) { + if ( + memResults.correlation < 0 && + processName !== 'odd-available-memory' && + ![ + AGGREGATED_PROCESS_NAMES.APP_RENDERER, + AGGREGATED_PROCESS_NAMES.SERVER_UVICORN, + ].includes(processName) + ) { + results.delete(processName) + } + } + + return results +} + +/** + * @description Post-process mixpanel data, returning statistical summaries per process + * @param mixpanelData Each entry is expected to contain a top-level 'properties' field with relevant subfields. + */ +function analyzeMemoryTrends(mixpanelData) { + const parsedData = parseMixpanelData(mixpanelData) + const results = analyzeProcessMemoryTrends(parsedData) + + const analysis = {} + results.forEach((result, processName) => { + analysis[processName] = { + correlation: result.correlation.toFixed(4), + sampleSize: result.sampleSize, + interpretation: result.interpretation, + averageMemoryMbByUptime: result.averageMemoryMbByUptime, + } + }) + + return analysis +} + +/** + * @description The 'where' used as a segmentation expression for Mixpanel data filtering. + */ +function buildWhere(version) { + return `properties["appVersion"]=="${version}" and properties["appMode"]=="ODD"` +} + +/** + * @description Analyze memory trends across multiple versions + * @param {number} previousVersionCount Number of previous versions to analyze + * @param {string} uname Mixpanel service account username. + * @param {string} pwd Mixpanel service account password. + * @param {string} projectId Mixpanel project id. + */ +async function analyzeMemoryTrendsAcrossVersions({ + previousVersionCount, + uname, + pwd, + projectId, +}) { + const manifest = await downloadAppManifest() + const latestValidVersion = latestValidVersionFromManifest(manifest) + const prevValidVersions = getPrevValidVersions( + manifest, + latestValidVersion, + previousVersionCount + ) + const analysisPeriod = getISODatesForPastMonth() + + // Populate backup messaging if there's no data available for a specific version + const noDataAvailableStr = 'N/A - No data available' + const results = { + [latestValidVersion]: noDataAvailableStr, + } + prevValidVersions.forEach(version => { + results[version] = noDataAvailableStr + }) + + // Analyze latest version + const currentVersionData = await getMixpanelResourceMonitorDataFor({ + version: latestValidVersion, + uname, + pwd, + projectId, + fromDate: analysisPeriod.from, + toDate: analysisPeriod.to, + where: buildWhere(latestValidVersion), + }) + + if (currentVersionData) { + results[latestValidVersion] = analyzeMemoryTrends(currentVersionData) + } + + // Analyze previous versions + for (const version of prevValidVersions) { + const versionData = await getMixpanelResourceMonitorDataFor({ + version, + uname, + pwd, + projectId, + fromDate: analysisPeriod.from, + toDate: analysisPeriod.to, + where: buildWhere(version), + }) + + if (versionData) { + results[version] = analyzeMemoryTrends(versionData) + } + } + + return results +} + +module.exports = { analyzeMemoryTrendsAcrossVersions } + + +/***/ }), + +/***/ 725: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const calculateCorrelation = __nccwpck_require__(133) +const { MINIMUM_VALID_SAMPLE_SIZE } = __nccwpck_require__(2038) + +const P_VALUE_THRESHOLD = 0.05 + +const CORRELATION_THRESHOLDS = { + STRONG: 0.7, + MODERATE: 0.3, +} + +/** + * @description Calculate significance of Pearson correlation coefficient using t-distribution approximation + * @param {number} correlation Pearson correlation coefficient + * @param {number} sampleSize Number of samples + * @returns {number} One-tailed p-value + */ +function calculatePValue(correlation, sampleSize) { + // Convert correlation coefficient to t-statistic + const t = correlation * Math.sqrt((sampleSize - 2) / (1 - correlation ** 2)) + + // Degrees of freedom + const df = sampleSize - 2 + + const x = df / (df + t * t) + return 0.5 * Math.pow(x, df / 2) +} + +/** + * @description Determines correlation strength and direction + * @param {number} correlation Pearson correlation coefficient + * @returns {string} Human readable interpretation + */ +function getCorrelationDescription(correlation) { + const strength = Math.abs(correlation) + const direction = correlation > 0 ? 'positive' : 'negative' + + if (strength > CORRELATION_THRESHOLDS.STRONG) { + return `Strong ${direction} correlation (>${CORRELATION_THRESHOLDS.STRONG})` + } else if (strength > CORRELATION_THRESHOLDS.MODERATE) { + return `Moderate ${direction} correlation (>${CORRELATION_THRESHOLDS.MODERATE} and <${CORRELATION_THRESHOLDS.STRONG})` + } + return `Weak ${direction} correlation (<=${CORRELATION_THRESHOLDS.MODERATE})` +} + +/** + * @description Performs complete correlation analysis including significance testing + * @param {Array} x Array of numbers + * @param {Array} y Array of numbers + * @return {Object} Analysis results including correlation, significance, and interpretation + */ +function analyzeCorrelation(x, y) { + const lowestSampleSize = Math.min(x.length, y.length) + + if (lowestSampleSize < MINIMUM_VALID_SAMPLE_SIZE) { + return { + correlation: 0, + isSignificant: false, + sampleSize: lowestSampleSize, + pValue: 1, + interpretation: 'Not enough samples for analysis', + } + } + + const correlation = calculateCorrelation(x, y, { decimals: 4 }) + const pValue = calculatePValue(correlation, lowestSampleSize) + const isSignificant = pValue < P_VALUE_THRESHOLD + + return { + correlation, + isSignificant, + sampleSize: x.length, + pValue, + interpretation: isSignificant + ? getCorrelationDescription(correlation) + : 'No significant correlation found', + } +} + +module.exports = { + analyzeCorrelation, +} + + +/***/ }), + +/***/ 2038: +/***/ ((module) => { + +const AGGREGATED_PROCESS_NAMES = { + APP_RENDERER: 'app-renderer-processes', + APP_ZYGOTE: 'app-zygote-processes', + SERVER_UVICORN: 'robot-server-uvicorn-processes', + APP_UTILITY: 'app-utility-processes', +} + +/** + * @description Several processes we care about execute with a lot of unique sub args determined at + * runtime. These processes are aggregated using a regex pattern. + */ +const AGGREGATED_PROCESSES = [ + { + pattern: /^\/opt\/opentrons-app\/opentrons --type=renderer/, + key: AGGREGATED_PROCESS_NAMES.APP_RENDERER, + }, + { + pattern: /^\/opt\/opentrons-app\/opentrons --type=zygote/, + key: AGGREGATED_PROCESS_NAMES.APP_ZYGOTE, + }, + { + pattern: /^python3 -m uvicorn/, + key: AGGREGATED_PROCESS_NAMES.SERVER_UVICORN, + }, + { + pattern: /^\/opt\/opentrons-app\/opentrons --type=utility/, + key: AGGREGATED_PROCESS_NAMES.APP_UTILITY, + }, +] + +/** + * @description Generally don't include any variation of external processes in analysis. + */ +const BLACKLISTED_PROCESSES = [/^nmcli/, /^\/usr\/bin\/python3/] + +/** + * @description For Pearson's, it's generally recommended to use a sample size of at least n=30. + */ +const MINIMUM_VALID_SAMPLE_SIZE = 30 + +const P_VALUE_SIGNIFICANCE_THRESHOLD = 0.05 + +module.exports = { + AGGREGATED_PROCESSES, + AGGREGATED_PROCESS_NAMES, + BLACKLISTED_PROCESSES, + MINIMUM_VALID_SAMPLE_SIZE, + P_VALUE_SIGNIFICANCE_THRESHOLD, +} + + +/***/ }), + +/***/ 9417: +/***/ ((module) => { + +/** + * @description Get ISO date strings for the past month from yesterday. + */ +function getISODatesForPastMonth() { + const now = new Date() + // Don't use today's data, because the Mixpanel API seemingly doesn't use UTC timestamps, and + // it's easy to fail a request depending on the time of day it's made. + const yesterday = new Date(now.setDate(now.getDate() - 1)) + const formatDate = date => date.toISOString().split('T')[0] + + const monthAgo = new Date(yesterday) + monthAgo.setMonth(yesterday.getMonth() - 1) + + return { + from: formatDate(monthAgo), + to: formatDate(yesterday), + } +} + +module.exports = { + getISODatesForPastMonth, +} + + +/***/ }), + +/***/ 3937: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = { + ...__nccwpck_require__(9417), + ...__nccwpck_require__(7440), + ...__nccwpck_require__(9437), +} + + +/***/ }), + +/***/ 7440: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const fetch = __nccwpck_require__(6705) + +const APP_MANIFEST = 'https://builds.opentrons.com/ot3-oe/releases.json' + +async function downloadAppManifest() { + const response = await fetch(APP_MANIFEST) + return await response.json() +} + +/** + * @description Get the most recent app version that is not revoked. + * @param manifest The app manifest + */ +function latestValidVersionFromManifest(manifest) { + const versions = Object.keys(manifest.production) + const latestValidVersion = versions.findLast( + version => !('revoked' in manifest.production[version]) + ) + + if (latestValidVersion != null) { + return latestValidVersion + } else { + throw new Error('No valid versions found') + } +} + +/** + * @description Get `count` latest, previous non revoked versions relative to the latest version. + * @param manifest The app manifest + * @param latestVersion The latest valid version + * @param count Number of previous versions to return + * @returns {string[]} Array of version strings, ordered from newest to oldest + */ +function getPrevValidVersions(manifest, latestVersion, count) { + const versions = Object.keys(manifest.production) + const latestIndex = versions.indexOf(latestVersion) + + if (latestIndex === -1) { + throw new Error('Latest version not found in manifest') + } + + return versions + .slice(0, latestIndex) + .filter(version => !manifest.production[version].revoked) + .slice(-count) + .reverse() +} +module.exports = { + downloadAppManifest, + latestValidVersionFromManifest, + getPrevValidVersions, +} + + +/***/ }), + +/***/ 9437: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const fetch = __nccwpck_require__(6705) + +const MIXPANEL_URL = 'https://data.mixpanel.com/api/2.0/export' + +/** + * @description Base64 encode a username and password in + * @param uname Mixpanel service account username. + * @param pwd Mixpanel service account password. + * @return {string} + */ +function encodeCredentialsForMixpanel(uname, pwd) { + return Buffer.from(`${uname}:${pwd}`).toString('base64') +} + +/** + * @description Cleans up Mixpanel data for post-processing. + * @param data Mixpanel data + */ +function parseMixpanelData(data) { + const lines = data.split('\n').filter(line => line.trim()) + return lines.map(line => JSON.parse(line)) +} + +/** + * @description Make the network request to Mixpanel. + */ +async function getMixpanelResourceMonitorDataFor({ + uname, + pwd, + projectId, + fromDate, + toDate, + where, +}) { + const params = new URLSearchParams({ + project_id: projectId, + from_date: fromDate, + to_date: toDate, + event: '["resourceMonitorReport"]', + where, + }) + + const options = { + method: 'GET', + headers: { + 'Accept-Encoding': 'gzip', + accept: 'text/plain', + authorization: `Basic ${encodeCredentialsForMixpanel(uname, pwd)}`, + }, + } + + const response = await fetch(`${MIXPANEL_URL}?${params}`, options) + const text = await response.text() + if (!response.ok) { + throw new Error( + `Mixpanel request failed: ${response.status}, ${response.statusText}, ${text}` + ) + } + return text +} + +module.exports = { + getMixpanelResourceMonitorDataFor, + parseMixpanelData, +} + + +/***/ }), + +/***/ 4914: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__nccwpck_require__(857)); +const utils_1 = __nccwpck_require__(302); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +function escapeData(s) { + return (0, utils_1.toCommandValue)(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return (0, utils_1.toCommandValue)(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), + +/***/ 7484: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(4914); +const file_command_1 = __nccwpck_require__(4753); +const utils_1 = __nccwpck_require__(302); +const os = __importStar(__nccwpck_require__(857)); +const path = __importStar(__nccwpck_require__(6928)); +const oidc_utils_1 = __nccwpck_require__(5306); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode || (exports.ExitCode = ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = (0, utils_1.toCommandValue)(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val)); + } + (0, command_1.issueCommand)('set-env', { name }, convertedVal); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + (0, command_1.issueCommand)('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + (0, file_command_1.issueFileCommand)('PATH', inputPath); + } + else { + (0, command_1.issueCommand)('add-path', {}, inputPath); + } + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(input => input.trim()); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value)); + } + process.stdout.write(os.EOL); + (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value)); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + (0, command_1.issue)('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + (0, command_1.issueCommand)('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message, properties = {}) { + (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message, properties = {}) { + (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + (0, command_1.issue)('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + (0, command_1.issue)('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value)); + } + (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value)); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __nccwpck_require__(1847); +Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); +/** + * @deprecated use core.summary + */ +var summary_2 = __nccwpck_require__(1847); +Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); +/** + * Path exports + */ +var path_utils_1 = __nccwpck_require__(1976); +Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); +Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); +Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); +/** + * Platform utilities exports + */ +exports.platform = __importStar(__nccwpck_require__(8968)); +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 4753: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const crypto = __importStar(__nccwpck_require__(6982)); +const fs = __importStar(__nccwpck_require__(9896)); +const os = __importStar(__nccwpck_require__(857)); +const utils_1 = __nccwpck_require__(302); +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = (0, utils_1.toCommandValue)(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; +//# sourceMappingURL=file-command.js.map + +/***/ }), + +/***/ 5306: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OidcClient = void 0; +const http_client_1 = __nccwpck_require__(4844); +const auth_1 = __nccwpck_require__(4552); +const core_1 = __nccwpck_require__(7484); +class OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient + .getJson(id_token_url) + .catch(error => { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + (0, core_1.debug)(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + (0, core_1.setSecret)(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map + +/***/ }), + +/***/ 1976: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__nccwpck_require__(6928)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map + +/***/ }), + +/***/ 8968: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; +const os_1 = __importDefault(__nccwpck_require__(857)); +const exec = __importStar(__nccwpck_require__(5236)); +const getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { + silent: true + }); + const { stdout: name } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', undefined, { + silent: true + }); + return { + name: name.trim(), + version: version.trim() + }; +}); +const getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput('sw_vers', undefined, { + silent: true + }); + const version = (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; + const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ''; + return { + name, + version + }; +}); +const getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { + silent: true + }); + const [name, version] = stdout.trim().split('\n'); + return { + name, + version + }; +}); +exports.platform = os_1.default.platform(); +exports.arch = os_1.default.arch(); +exports.isWindows = exports.platform === 'win32'; +exports.isMacOS = exports.platform === 'darwin'; +exports.isLinux = exports.platform === 'linux'; +function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign(Object.assign({}, (yield (exports.isWindows + ? getWindowsInfo() + : exports.isMacOS + ? getMacOsInfo() + : getLinuxInfo()))), { platform: exports.platform, + arch: exports.arch, + isWindows: exports.isWindows, + isMacOS: exports.isMacOS, + isLinux: exports.isLinux }); + }); +} +exports.getDetails = getDetails; +//# sourceMappingURL=platform.js.map + +/***/ }), + +/***/ 1847: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __nccwpck_require__(857); +const fs_1 = __nccwpck_require__(9896); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise
} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map + +/***/ }), + +/***/ 302: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 5236: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getExecOutput = exports.exec = void 0; +const string_decoder_1 = __nccwpck_require__(3193); +const tr = __importStar(__nccwpck_require__(6665)); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +/** + * Exec a command and get the output. + * Output will be streamed to the live console. + * Returns promise with the exit code and collected stdout and stderr + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code, stdout, and stderr + */ +function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ''; + let stderr = ''; + //Using string decoder covers the case where a mult-byte character is split + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + //flush any remaining characters + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); +} +exports.getExecOutput = getExecOutput; +//# sourceMappingURL=exec.js.map + +/***/ }), + +/***/ 6665: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.argStringToArray = exports.ToolRunner = void 0; +const os = __importStar(__nccwpck_require__(857)); +const events = __importStar(__nccwpck_require__(4434)); +const child = __importStar(__nccwpck_require__(5317)); +const path = __importStar(__nccwpck_require__(6928)); +const io = __importStar(__nccwpck_require__(4994)); +const ioUtil = __importStar(__nccwpck_require__(5207)); +const timers_1 = __nccwpck_require__(3557); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + return s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + return ''; + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that precede a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + // root the tool path if it is unrooted and contains relative pathing + if (!ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes('/') || + (IS_WINDOWS && this.toolPath.includes('\\')))) { + // prefer options.cwd if it is specified, however options.cwd may also need to be rooted + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + // if the tool is only a file name, then resolve it from the PATH + // otherwise verify it exists (add extension on Windows if necessary) + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + })); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map + +/***/ }), + +/***/ 4552: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 4844: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(8611)); +const https = __importStar(__nccwpck_require__(5692)); +const pm = __importStar(__nccwpck_require__(4988)); +const tunnel = __importStar(__nccwpck_require__(770)); +const undici_1 = __nccwpck_require__(6752); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes || (exports.HttpCodes = HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers || (exports.Headers = Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes || (exports.MediaTypes = MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', (chunk) => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (!useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if tunneling agent isn't assigned create a new agent + if (!agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + // if agent is already assigned use that agent. + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && { + token: `Basic ${Buffer.from(`${proxyUrl.username}:${proxyUrl.password}`).toString('base64')}` + }))); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 4988: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + try { + return new DecodedURL(proxyVar); + } + catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) + return new DecodedURL(`http://${proxyVar}`); + } + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperNoProxyItem === '*' || + upperReqHosts.some(x => x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && + x.endsWith(`${upperNoProxyItem}`)))) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return (hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]')); +} +class DecodedURL extends URL { + constructor(url, base) { + super(url, base); + this._decodedUsername = decodeURIComponent(super.username); + this._decodedPassword = decodeURIComponent(super.password); + } + get username() { + return this._decodedUsername; + } + get password() { + return this._decodedPassword; + } +} +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 5207: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__nccwpck_require__(9896)); +const path = __importStar(__nccwpck_require__(6928)); +_a = fs.promises +// export const {open} = 'fs' +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +// export const {open} = 'fs' +exports.IS_WINDOWS = process.platform === 'win32'; +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 +exports.UV_FS_O_EXLOCK = 0x10000000; +exports.READONLY = fs.constants.O_RDONLY; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; +//# sourceMappingURL=io-util.js.map + +/***/ }), + +/***/ 4994: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __nccwpck_require__(2613); +const path = __importStar(__nccwpck_require__(6928)); +const ioUtil = __importStar(__nccwpck_require__(5207)); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() && copySourceDirectory + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + } + try { + // note if path does not exist, error is silent + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 + }); + } + catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); +} +exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); +} +//# sourceMappingURL=io.js.map + +/***/ }), + +/***/ 133: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// export the calculator fn +module.exports = __nccwpck_require__(6737); + +// TODO maybe provide name exports of other functions for avg, std dev, variance, etc... 🤔 + + +/***/ }), + +/***/ 2214: +/***/ ((module) => { + +// will only call it with a _safe_ array of values, so no need to sanitize input here +module.exports = values => + values.reduce((sum, v) => sum + v, 0) / values.length; + + +/***/ }), + +/***/ 6737: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const calculateAverage = __nccwpck_require__(2214); +const calculateStdDev = __nccwpck_require__(825); +const checkInput = __nccwpck_require__(9039); +const preciseRound = __nccwpck_require__(2940); +const manageInput = __nccwpck_require__(9554); + +module.exports = (...args) => { + const [arrays, options] = manageInput(args); + + const isInputValid = checkInput(arrays); + if (!isInputValid) throw new Error('Input not valid'); + + const [x, y] = arrays; + + const µ = { x: calculateAverage(x), y: calculateAverage(y) }; + const s = { x: calculateStdDev(x), y: calculateStdDev(y) }; + + const addedMultipliedDifferences = x + .map((val, i) => (val - µ.x) * (y[i] - µ.y)) + .reduce((sum, v) => sum + v, 0); + + const dividedByDevs = addedMultipliedDifferences / (s.x * s.y); + + const r = dividedByDevs / (x.length - 1); + + // return string? + if (options.returnString === true) return r.toFixed(options.returnDecimals); + // default return + return preciseRound(r, options.returnDecimals); +}; + + +/***/ }), + +/***/ 825: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const calculateAverage = __nccwpck_require__(2214); + +// will only call it with a _safe_ array of values +module.exports = values => { + const µ = calculateAverage(values); + const addedSquareDiffs = values + .map(val => val - µ) + .map(diff => diff ** 2) + .reduce((sum, v) => sum + v, 0); + const variance = addedSquareDiffs / (values.length - 1); + return Math.sqrt(variance); +}; + +// TODO maybe export fns to calculate variance and std deviation too from the package? + + +/***/ }), + +/***/ 9039: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const isNumber = __nccwpck_require__(3230); + +module.exports = args => { + // only two inputs exist + if (args.length !== 2) return false; + const [x, y] = args; + // inputs are not falsy + if (!x || !y) return false; + // they are arrays + if (!Array.isArray(x) || !Array.isArray(y)) return false; + // length is not 0 + if (!x.length || !y.length) return false; + // length is the same + if (x.length !== y.length) return false; + // all the elems in the arrays are numbers + if (x.concat(y).find(el => !isNumber(el))) return false; + // 👌 all good! + return true; +}; + +// TODO maybe return some message about each problem, so it can be thrown in the Error + + +/***/ }), + +/***/ 3230: +/***/ ((module) => { + +// idea from https://codepen.io/grok/pen/LvOQbW?editors=0010 +module.exports = n => + typeof n === 'number' && n === Number(n) && Number.isFinite(n); + + +/***/ }), + +/***/ 5608: +/***/ ((module) => { + +// idea from https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript/8511350#8511350 +module.exports = obj => + typeof obj === 'object' && obj !== null && !Array.isArray(obj); + + +/***/ }), + +/***/ 9554: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const isObject = __nccwpck_require__(5608); + +module.exports = input => { + let arrays = input; + let options = {}; + + if (input.length > 2) { + /* eslint-disable-next-line prefer-destructuring */ + if (isObject(input[2])) options = input[2]; + arrays = input.slice(0, 2); + } + + const opts = { + returnString: options.string || false, + returnDecimals: options.decimals || 9, + }; + + return [arrays, opts]; +}; + + +/***/ }), + +/***/ 2940: +/***/ ((module) => { + +// idea from https://www.w3resource.com/javascript-exercises/javascript-math-exercise-14.php +module.exports = (num, dec) => + Math.round(num * 10 ** dec + (num >= 0 ? 1 : -1) * 0.0001) / 10 ** dec; + + +/***/ }), + +/***/ 6705: +/***/ ((module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var Stream = _interopDefault(__nccwpck_require__(2203)); +var http = _interopDefault(__nccwpck_require__(8611)); +var Url = _interopDefault(__nccwpck_require__(7016)); +var whatwgUrl = _interopDefault(__nccwpck_require__(2686)); +var https = _interopDefault(__nccwpck_require__(5692)); +var zlib = _interopDefault(__nccwpck_require__(3106)); + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + constructor() { + this[TYPE] = ''; + + const blobParts = arguments[0]; + const options = arguments[1]; + + const buffers = []; + let size = 0; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = (__nccwpck_require__(4572)/* .convert */ .C); +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream) { + body.on('error', function (err) { + const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + _this[INTERNALS].error = error; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + let body = this.body; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } + + accumBytes += chunk.length; + accum.push(chunk); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } + + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + this[MAP] = Object.create(null); + + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) ; else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; + + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); + +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } + + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; + + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + Body.call(this, body, opts); + + const status = opts.status || 200; + const headers = new Headers(opts.headers); + + if (body != null && !headers.has('Content-Type')) { + const contentType = extractContentType(body); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + + get url() { + return this[INTERNALS$1].url || ''; + } + + get status() { + return this[INTERNALS$1].status; + } + + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + + get redirected() { + return this[INTERNALS$1].counter > 0; + } + + get statusText() { + return this[INTERNALS$1].statusText; + } + + get headers() { + return this[INTERNALS$1].headers; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +Body.mixIn(Response.prototype); + +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); + +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); + +const INTERNALS$2 = Symbol('Request internals'); +const URL = Url.URL || whatwgUrl.URL; + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +/** + * Wrapper around `new URL` to handle arbitrary URLs + * + * @param {string} urlStr + * @return {void} + */ +function parseURL(urlStr) { + /* + Check whether the URL is absolute or not + Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 + Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + */ + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL(urlStr).toString(); + } + + // Fallback to old implementation for arbitrary URLs + return parse_url(urlStr); +} + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parseURL(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parseURL(`${input}`); + } + input = {}; + } else { + parsedURL = parseURL(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); + + if (inputBody != null && !headers.has('Content-Type')) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + let signal = isRequest(input) ? input.signal : null; + if ('signal' in init) signal = init.signal; + + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal'); + } + + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL, + signal + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + + get method() { + return this[INTERNALS$2].method; + } + + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + + get headers() { + return this[INTERNALS$2].headers; + } + + get redirect() { + return this[INTERNALS$2].redirect; + } + + get signal() { + return this[INTERNALS$2].signal; + } + + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } +} + +Body.mixIn(Request.prototype); + +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } + + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } + + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + if (request.compress && !headers.has('Accept-Encoding')) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } + + let agent = request.agent; + if (typeof agent === 'function') { + agent = agent(parsedURL); + } + + if (!headers.has('Connection') && !agent) { + headers.set('Connection', 'close'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +const URL$1 = Url.URL || whatwgUrl.URL; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; + +const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { + const orig = new URL$1(original).hostname; + const dest = new URL$1(destination).hostname; + + return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); +}; + +/** + * isSameProtocol reports whether the two provided URLs use the same protocol. + * + * Both domains must already be in canonical form. + * @param {string|URL} original + * @param {string|URL} destination + */ +const isSameProtocol = function isSameProtocol(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + + return orig === dest; +}; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + + const send = (options.protocol === 'https:' ? https : http).request; + const signal = request.signal; + + let response = null; + + const abort = function abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + const req = send(options); + let reqTimeout; + + if (signal) { + signal.addEventListener('abort', abortAndFinalize); + } + + function finalize() { + req.abort(); + if (signal) signal.removeEventListener('abort', abortAndFinalize); + clearTimeout(reqTimeout); + } + + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } + + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + + if (response && response.body) { + destroyStream(response.body, err); + } + + finalize(); + }); + + fixResponseChunkedTransferBadEnding(req, function (err) { + if (signal && signal.aborted) { + return; + } + + if (response && response.body) { + destroyStream(response.body, err); + } + }); + + /* c8 ignore next 18 */ + if (parseInt(process.version.substring(1)) < 14) { + // Before Node.js 14, pipeline() does not fully support async iterators and does not always + // properly handle when the socket close/end events are out of order. + req.on('socket', function (s) { + s.addListener('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = s.listenerCount('data') > 0; + + // if end happened before close but the socket didn't emit an error, do it now + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + response.body.emit('error', err); + } + }); + }); + } + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + // error here can only be invalid URL in Location: header + // do not throw when options.redirect == manual + // let the user extract the errorneous redirect URL + if (request.redirect !== 'manual') { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); + finalize(); + return; + } + } + + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; + + if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) { + for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { + requestOpts.headers.delete(name); + } + } + + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + res.once('end', function () { + if (signal) signal.removeEventListener('abort', abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + raw.on('end', function () { + // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted. + if (!response) { + response = new Response(body, response_options); + resolve(response); + } + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + + request.on('socket', function (s) { + socket = s; + }); + + request.on('response', function (response) { + const headers = response.headers; + + if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) { + response.once('close', function (hadError) { + // if a data listener is still present we didn't end cleanly + const hasDataListener = socket.listenerCount('data') > 0; + + if (hasDataListener && !hadError) { + const err = new Error('Premature close'); + err.code = 'ERR_STREAM_PREMATURE_CLOSE'; + errorCallback(err); + } + }); + } + }); +} + +function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + // node < 8 + stream.emit('error', err); + stream.end(); + } +} + +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +module.exports = exports = fetch; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports["default"] = exports; +exports.Headers = Headers; +exports.Request = Request; +exports.Response = Response; +exports.FetchError = FetchError; + + +/***/ }), + +/***/ 1552: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var punycode = __nccwpck_require__(4876); +var mappingTable = __nccwpck_require__(2472); + +var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 +}; + +function normalize(str) { // fix bug in v8 + return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); +} + +function findStatus(val) { + var start = 0; + var end = mappingTable.length - 1; + + while (start <= end) { + var mid = Math.floor((start + end) / 2); + + var target = mappingTable[mid]; + if (target[0][0] <= val && target[0][1] >= val) { + return target; + } else if (target[0][0] > val) { + end = mid - 1; + } else { + start = mid + 1; + } + } + + return null; +} + +var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + +function countSymbols(string) { + return string + // replace every surrogate pair with a BMP symbol + .replace(regexAstralSymbols, '_') + // then get the length + .length; +} + +function mapChars(domain_name, useSTD3, processing_option) { + var hasError = false; + var processed = ""; + + var len = countSymbols(domain_name); + for (var i = 0; i < len; ++i) { + var codePoint = domain_name.codePointAt(i); + var status = findStatus(codePoint); + + switch (status[1]) { + case "disallowed": + hasError = true; + processed += String.fromCodePoint(codePoint); + break; + case "ignored": + break; + case "mapped": + processed += String.fromCodePoint.apply(String, status[2]); + break; + case "deviation": + if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { + processed += String.fromCodePoint.apply(String, status[2]); + } else { + processed += String.fromCodePoint(codePoint); + } + break; + case "valid": + processed += String.fromCodePoint(codePoint); + break; + case "disallowed_STD3_mapped": + if (useSTD3) { + hasError = true; + processed += String.fromCodePoint(codePoint); + } else { + processed += String.fromCodePoint.apply(String, status[2]); + } + break; + case "disallowed_STD3_valid": + if (useSTD3) { + hasError = true; + } + + processed += String.fromCodePoint(codePoint); + break; + } + } + + return { + string: processed, + error: hasError + }; +} + +var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; + +function validateLabel(label, processing_option) { + if (label.substr(0, 4) === "xn--") { + label = punycode.toUnicode(label); + processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; + } + + var error = false; + + if (normalize(label) !== label || + (label[3] === "-" && label[4] === "-") || + label[0] === "-" || label[label.length - 1] === "-" || + label.indexOf(".") !== -1 || + label.search(combiningMarksRegex) === 0) { + error = true; + } + + var len = countSymbols(label); + for (var i = 0; i < len; ++i) { + var status = findStatus(label.codePointAt(i)); + if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || + (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && + status[1] !== "valid" && status[1] !== "deviation")) { + error = true; + break; + } + } + + return { + label: label, + error: error + }; +} + +function processing(domain_name, useSTD3, processing_option) { + var result = mapChars(domain_name, useSTD3, processing_option); + result.string = normalize(result.string); + + var labels = result.string.split("."); + for (var i = 0; i < labels.length; ++i) { + try { + var validation = validateLabel(labels[i]); + labels[i] = validation.label; + result.error = result.error || validation.error; + } catch(e) { + result.error = true; + } + } + + return { + string: labels.join("."), + error: result.error + }; +} + +module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { + var result = processing(domain_name, useSTD3, processing_option); + var labels = result.string.split("."); + labels = labels.map(function(l) { + try { + return punycode.toASCII(l); + } catch(e) { + result.error = true; + return l; + } + }); + + if (verifyDnsLength) { + var total = labels.slice(0, labels.length - 1).join(".").length; + if (total.length > 253 || total.length === 0) { + result.error = true; + } + + for (var i=0; i < labels.length; ++i) { + if (labels.length > 63 || labels.length === 0) { + result.error = true; + break; + } + } + } + + if (result.error) return null; + return labels.join("."); +}; + +module.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + + return { + domain: result.string, + error: result.error + }; +}; + +module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + + +/***/ }), + +/***/ 770: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(218); + + +/***/ }), + +/***/ 218: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var net = __nccwpck_require__(9278); +var tls = __nccwpck_require__(4756); +var http = __nccwpck_require__(8611); +var https = __nccwpck_require__(5692); +var events = __nccwpck_require__(4434); +var assert = __nccwpck_require__(2613); +var util = __nccwpck_require__(9023); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test + + +/***/ }), + +/***/ 6752: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Client = __nccwpck_require__(6197) +const Dispatcher = __nccwpck_require__(992) +const errors = __nccwpck_require__(8707) +const Pool = __nccwpck_require__(5076) +const BalancedPool = __nccwpck_require__(1093) +const Agent = __nccwpck_require__(9965) +const util = __nccwpck_require__(3440) +const { InvalidArgumentError } = errors +const api = __nccwpck_require__(6615) +const buildConnector = __nccwpck_require__(9136) +const MockClient = __nccwpck_require__(7365) +const MockAgent = __nccwpck_require__(7501) +const MockPool = __nccwpck_require__(4004) +const mockErrors = __nccwpck_require__(2429) +const ProxyAgent = __nccwpck_require__(2720) +const RetryHandler = __nccwpck_require__(3573) +const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(2581) +const DecoratorHandler = __nccwpck_require__(8840) +const RedirectHandler = __nccwpck_require__(8299) +const createRedirectInterceptor = __nccwpck_require__(4415) + +let hasCrypto +try { + __nccwpck_require__(6982) + hasCrypto = true +} catch { + hasCrypto = false +} + +Object.assign(Dispatcher.prototype, api) + +module.exports.Dispatcher = Dispatcher +module.exports.Client = Client +module.exports.Pool = Pool +module.exports.BalancedPool = BalancedPool +module.exports.Agent = Agent +module.exports.ProxyAgent = ProxyAgent +module.exports.RetryHandler = RetryHandler + +module.exports.DecoratorHandler = DecoratorHandler +module.exports.RedirectHandler = RedirectHandler +module.exports.createRedirectInterceptor = createRedirectInterceptor + +module.exports.buildConnector = buildConnector +module.exports.errors = errors + +function makeDispatcher (fn) { + return (url, opts, handler) => { + if (typeof opts === 'function') { + handler = opts + opts = null + } + + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url') + } + + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path') + } + + let path = opts.path + if (!opts.path.startsWith('/')) { + path = `/${path}` + } + + url = new URL(util.parseOrigin(url).origin + path) + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {} + } + + url = util.parseURL(url) + } + + const { agent, dispatcher = getGlobalDispatcher() } = opts + + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') + } + + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, handler) + } +} + +module.exports.setGlobalDispatcher = setGlobalDispatcher +module.exports.getGlobalDispatcher = getGlobalDispatcher + +if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { + let fetchImpl = null + module.exports.fetch = async function fetch (resource) { + if (!fetchImpl) { + fetchImpl = (__nccwpck_require__(2315).fetch) + } + + try { + return await fetchImpl(...arguments) + } catch (err) { + if (typeof err === 'object') { + Error.captureStackTrace(err, this) + } + + throw err + } + } + module.exports.Headers = __nccwpck_require__(6349).Headers + module.exports.Response = __nccwpck_require__(8676).Response + module.exports.Request = __nccwpck_require__(5194).Request + module.exports.FormData = __nccwpck_require__(3073).FormData + module.exports.File = __nccwpck_require__(3041).File + module.exports.FileReader = __nccwpck_require__(2160).FileReader + + const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(5628) + + module.exports.setGlobalOrigin = setGlobalOrigin + module.exports.getGlobalOrigin = getGlobalOrigin + + const { CacheStorage } = __nccwpck_require__(4738) + const { kConstruct } = __nccwpck_require__(296) + + // Cache & CacheStorage are tightly coupled with fetch. Even if it may run + // in an older version of Node, it doesn't have any use without fetch. + module.exports.caches = new CacheStorage(kConstruct) +} + +if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(3168) + + module.exports.deleteCookie = deleteCookie + module.exports.getCookies = getCookies + module.exports.getSetCookies = getSetCookies + module.exports.setCookie = setCookie + + const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) + + module.exports.parseMIMEType = parseMIMEType + module.exports.serializeAMimeType = serializeAMimeType +} + +if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = __nccwpck_require__(5171) + + module.exports.WebSocket = WebSocket +} + +module.exports.request = makeDispatcher(api.request) +module.exports.stream = makeDispatcher(api.stream) +module.exports.pipeline = makeDispatcher(api.pipeline) +module.exports.connect = makeDispatcher(api.connect) +module.exports.upgrade = makeDispatcher(api.upgrade) + +module.exports.MockClient = MockClient +module.exports.MockPool = MockPool +module.exports.MockAgent = MockAgent +module.exports.mockErrors = mockErrors + + +/***/ }), + +/***/ 9965: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { InvalidArgumentError } = __nccwpck_require__(8707) +const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = __nccwpck_require__(6443) +const DispatcherBase = __nccwpck_require__(1) +const Pool = __nccwpck_require__(5076) +const Client = __nccwpck_require__(6197) +const util = __nccwpck_require__(3440) +const createRedirectInterceptor = __nccwpck_require__(4415) +const { WeakRef, FinalizationRegistry } = __nccwpck_require__(3194)() + +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kMaxRedirections = Symbol('maxRedirections') +const kOnDrain = Symbol('onDrain') +const kFactory = Symbol('factory') +const kFinalizer = Symbol('finalizer') +const kOptions = Symbol('options') + +function defaultFactory (origin, opts) { + return opts && opts.connections === 1 + ? new Client(origin, opts) + : new Pool(origin, opts) +} + +class Agent extends DispatcherBase { + constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super() + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + if (connect && typeof connect !== 'function') { + connect = { ...connect } + } + + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })] + + this[kOptions] = { ...util.deepClone(options), connect } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kMaxRedirections] = maxRedirections + this[kFactory] = factory + this[kClients] = new Map() + this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => { + const ref = this[kClients].get(key) + if (ref !== undefined && ref.deref() === undefined) { + this[kClients].delete(key) + } + }) + + const agent = this + + this[kOnDrain] = (origin, targets) => { + agent.emit('drain', origin, [agent, ...targets]) + } + + this[kOnConnect] = (origin, targets) => { + agent.emit('connect', origin, [agent, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit('disconnect', origin, [agent, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit('connectionError', origin, [agent, ...targets], err) + } + } + + get [kRunning] () { + let ret = 0 + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore next: gc is undeterministic */ + if (client) { + ret += client[kRunning] + } + } + return ret + } + + [kDispatch] (opts, handler) { + let key + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin) + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') + } + + const ref = this[kClients].get(key) + + let dispatcher = ref ? ref.deref() : null + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + this[kClients].set(key, new WeakRef(dispatcher)) + this[kFinalizer].register(dispatcher, key) + } + + return dispatcher.dispatch(opts, handler) + } + + async [kClose] () { + const closePromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + closePromises.push(client.close()) + } + } + + await Promise.all(closePromises) + } + + async [kDestroy] (err) { + const destroyPromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + destroyPromises.push(client.destroy(err)) + } + } + + await Promise.all(destroyPromises) + } +} + +module.exports = Agent + + +/***/ }), + +/***/ 158: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { addAbortListener } = __nccwpck_require__(3440) +const { RequestAbortedError } = __nccwpck_require__(8707) + +const kListener = Symbol('kListener') +const kSignal = Symbol('kSignal') + +function abort (self) { + if (self.abort) { + self.abort() + } else { + self.onError(new RequestAbortedError()) + } +} + +function addSignal (self, signal) { + self[kSignal] = null + self[kListener] = null + + if (!signal) { + return + } + + if (signal.aborted) { + abort(self) + return + } + + self[kSignal] = signal + self[kListener] = () => { + abort(self) + } + + addAbortListener(self[kSignal], self[kListener]) +} + +function removeSignal (self) { + if (!self[kSignal]) { + return + } + + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]) + } else { + self[kSignal].removeListener('abort', self[kListener]) + } + + self[kSignal] = null + self[kListener] = null +} + +module.exports = { + addSignal, + removeSignal +} + + +/***/ }), + +/***/ 4660: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { AsyncResource } = __nccwpck_require__(290) +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { addSignal, removeSignal } = __nccwpck_require__(158) + +class ConnectHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_CONNECT') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.callback = callback + this.abort = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders () { + throw new SocketError('bad connect', null) + } + + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + removeSignal(this) + + this.callback = null + + let headers = rawHeaders + // Indicates is an HTTP2Session + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + } + + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} + +function connect (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const connectHandler = new ConnectHandler(opts, callback) + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = connect + + +/***/ }), + +/***/ 6862: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + Readable, + Duplex, + PassThrough +} = __nccwpck_require__(2203) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { AsyncResource } = __nccwpck_require__(290) +const { addSignal, removeSignal } = __nccwpck_require__(158) +const assert = __nccwpck_require__(2613) + +const kResume = Symbol('resume') + +class PipelineRequest extends Readable { + constructor () { + super({ autoDestroy: true }) + + this[kResume] = null + } + + _read () { + const { [kResume]: resume } = this + + if (resume) { + this[kResume] = null + resume() + } + } + + _destroy (err, callback) { + this._read() + + callback(err) + } +} + +class PipelineResponse extends Readable { + constructor (resume) { + super({ autoDestroy: true }) + this[kResume] = resume + } + + _read () { + this[kResume]() + } + + _destroy (err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + callback(err) + } +} + +class PipelineHandler extends AsyncResource { + constructor (opts, handler) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler') + } + + const { signal, method, opaque, onInfo, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_PIPELINE') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.handler = handler + this.abort = null + this.context = null + this.onInfo = onInfo || null + + this.req = new PipelineRequest().on('error', util.nop) + + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this + + if (body && body.resume) { + body.resume() + } + }, + write: (chunk, encoding, callback) => { + const { req } = this + + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback() + } else { + req[kResume] = callback + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this + + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError() + } + + if (abort && err) { + abort() + } + + util.destroy(body, err) + util.destroy(req, err) + util.destroy(res, err) + + removeSignal(this) + + callback(err) + } + }).on('prefinish', () => { + const { req } = this + + // Node < 15 does not call _final in same tick. + req.push(null) + }) + + this.res = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + const { ret, res } = this + + assert(!res, 'pipeline cannot be retried') + + if (ret.destroyed) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this + + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.onInfo({ statusCode, headers }) + } + return + } + + this.res = new PipelineResponse(resume) + + let body + try { + this.handler = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }) + } catch (err) { + this.res.on('error', util.nop) + throw err + } + + if (!body || typeof body.on !== 'function') { + throw new InvalidReturnValueError('expected Readable') + } + + body + .on('data', (chunk) => { + const { ret, body } = this + + if (!ret.push(chunk) && body.pause) { + body.pause() + } + }) + .on('error', (err) => { + const { ret } = this + + util.destroy(ret, err) + }) + .on('end', () => { + const { ret } = this + + ret.push(null) + }) + .on('close', () => { + const { ret } = this + + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()) + } + }) + + this.body = body + } + + onData (chunk) { + const { res } = this + return res.push(chunk) + } + + onComplete (trailers) { + const { res } = this + res.push(null) + } + + onError (err) { + const { ret } = this + this.handler = null + util.destroy(ret, err) + } +} + +function pipeline (opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler) + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler) + return pipelineHandler.ret + } catch (err) { + return new PassThrough().destroy(err) + } +} + +module.exports = pipeline + + +/***/ }), + +/***/ 4043: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Readable = __nccwpck_require__(9927) +const { + InvalidArgumentError, + RequestAbortedError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { getResolveErrorBodyCallback } = __nccwpck_require__(7655) +const { AsyncResource } = __nccwpck_require__(290) +const { addSignal, removeSignal } = __nccwpck_require__(158) + +class RequestHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark') + } + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_REQUEST') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.res = null + this.abort = null + this.body = body + this.trailers = {} + this.context = null + this.onInfo = onInfo || null + this.throwOnError = throwOnError + this.highWaterMark = highWaterMark + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + const body = new Readable({ resume, abort, contentType, highWaterMark }) + + this.callback = null + this.res = body + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body, contentType, statusCode, statusMessage, headers } + ) + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }) + } + } + } + + onData (chunk) { + const { res } = this + return res.push(chunk) + } + + onComplete (trailers) { + const { res } = this + + removeSignal(this) + + util.parseHeaders(trailers, this.trailers) + + res.push(null) + } + + onError (err) { + const { res, callback, body, opaque } = this + + removeSignal(this) + + if (callback) { + // TODO: Does this need queueMicrotask? + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (res) { + this.res = null + // Ensure all queued handlers are invoked before destroying res. + queueMicrotask(() => { + util.destroy(res, err) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + } +} + +function request (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + request.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new RequestHandler(opts, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = request +module.exports.RequestHandler = RequestHandler + + +/***/ }), + +/***/ 3560: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { finished, PassThrough } = __nccwpck_require__(2203) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { getResolveErrorBodyCallback } = __nccwpck_require__(7655) +const { AsyncResource } = __nccwpck_require__(290) +const { addSignal, removeSignal } = __nccwpck_require__(158) + +class StreamHandler extends AsyncResource { + constructor (opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory') + } + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_STREAM') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.factory = factory + this.callback = callback + this.res = null + this.abort = null + this.context = null + this.trailers = null + this.body = body + this.onInfo = onInfo || null + this.throwOnError = throwOnError || false + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + this.factory = null + + let res + + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + res = new PassThrough() + + this.callback = null + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ) + } else { + if (factory === null) { + return + } + + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }) + + if ( + !res || + typeof res.write !== 'function' || + typeof res.end !== 'function' || + typeof res.on !== 'function' + ) { + throw new InvalidReturnValueError('expected Writable') + } + + // TODO: Avoid finished. It registers an unnecessary amount of listeners. + finished(res, { readable: false }, (err) => { + const { callback, res, opaque, trailers, abort } = this + + this.res = null + if (err || !res.readable) { + util.destroy(res, err) + } + + this.callback = null + this.runInAsyncScope(callback, null, err || null, { opaque, trailers }) + + if (err) { + abort() + } + }) + } + + res.on('drain', resume) + + this.res = res + + const needDrain = res.writableNeedDrain !== undefined + ? res.writableNeedDrain + : res._writableState && res._writableState.needDrain + + return needDrain !== true + } + + onData (chunk) { + const { res } = this + + return res ? res.write(chunk) : true + } + + onComplete (trailers) { + const { res } = this + + removeSignal(this) + + if (!res) { + return + } + + this.trailers = util.parseHeaders(trailers) + + res.end() + } + + onError (err) { + const { res, callback, opaque, body } = this + + removeSignal(this) + + this.factory = null + + if (res) { + this.res = null + util.destroy(res, err) + } else if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + } +} + +function stream (opts, factory, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = stream + + +/***/ }), + +/***/ 1882: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8707) +const { AsyncResource } = __nccwpck_require__(290) +const util = __nccwpck_require__(3440) +const { addSignal, removeSignal } = __nccwpck_require__(158) +const assert = __nccwpck_require__(2613) + +class UpgradeHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_UPGRADE') + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.abort = null + this.context = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = null + } + + onHeaders () { + throw new SocketError('bad upgrade', null) + } + + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + assert.strictEqual(statusCode, 101) + + removeSignal(this) + + this.callback = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} + +function upgrade (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const upgradeHandler = new UpgradeHandler(opts, callback) + this.dispatch({ + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, upgradeHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = upgrade + + +/***/ }), + +/***/ 6615: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports.request = __nccwpck_require__(4043) +module.exports.stream = __nccwpck_require__(3560) +module.exports.pipeline = __nccwpck_require__(6862) +module.exports.upgrade = __nccwpck_require__(1882) +module.exports.connect = __nccwpck_require__(4660) + + +/***/ }), + +/***/ 9927: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Ported from https://github.com/nodejs/undici/pull/907 + + + +const assert = __nccwpck_require__(2613) +const { Readable } = __nccwpck_require__(2203) +const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3440) + +let Blob + +const kConsume = Symbol('kConsume') +const kReading = Symbol('kReading') +const kBody = Symbol('kBody') +const kAbort = Symbol('abort') +const kContentType = Symbol('kContentType') + +const noop = () => {} + +module.exports = class BodyReadable extends Readable { + constructor ({ + resume, + abort, + contentType = '', + highWaterMark = 64 * 1024 // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }) + + this._readableState.dataEmitted = false + + this[kAbort] = abort + this[kConsume] = null + this[kBody] = null + this[kContentType] = contentType + + // Is stream being consumed through Readable API? + // This is an optimization so that we avoid checking + // for 'data' and 'readable' listeners in the hot path + // inside push(). + this[kReading] = false + } + + destroy (err) { + if (this.destroyed) { + // Node < 16 + return this + } + + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + if (err) { + this[kAbort]() + } + + return super.destroy(err) + } + + emit (ev, ...args) { + if (ev === 'data') { + // Node < 16.7 + this._readableState.dataEmitted = true + } else if (ev === 'error') { + // Node < 16 + this._readableState.errorEmitted = true + } + return super.emit(ev, ...args) + } + + on (ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true + } + return super.on(ev, ...args) + } + + addListener (ev, ...args) { + return this.on(ev, ...args) + } + + off (ev, ...args) { + const ret = super.off(ev, ...args) + if (ev === 'data' || ev === 'readable') { + this[kReading] = ( + this.listenerCount('data') > 0 || + this.listenerCount('readable') > 0 + ) + } + return ret + } + + removeListener (ev, ...args) { + return this.off(ev, ...args) + } + + push (chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk) + return this[kReading] ? super.push(chunk) : true + } + return super.push(chunk) + } + + // https://fetch.spec.whatwg.org/#dom-body-text + async text () { + return consume(this, 'text') + } + + // https://fetch.spec.whatwg.org/#dom-body-json + async json () { + return consume(this, 'json') + } + + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob () { + return consume(this, 'blob') + } + + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer () { + return consume(this, 'arrayBuffer') + } + + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData () { + // TODO: Implement. + throw new NotSupportedError() + } + + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed () { + return util.isDisturbed(this) + } + + // https://fetch.spec.whatwg.org/#dom-body-body + get body () { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this) + if (this[kConsume]) { + // TODO: Is this the best way to force a lock? + this[kBody].getReader() // Ensure stream is locked. + assert(this[kBody].locked) + } + } + return this[kBody] + } + + dump (opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144 + const signal = opts && opts.signal + + if (signal) { + try { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new InvalidArgumentError('signal must be an AbortSignal') + } + util.throwIfAborted(signal) + } catch (err) { + return Promise.reject(err) + } + } + + if (this.closed) { + return Promise.resolve(null) + } + + return new Promise((resolve, reject) => { + const signalListenerCleanup = signal + ? util.addAbortListener(signal, () => { + this.destroy() + }) + : noop + + this + .on('close', function () { + signalListenerCleanup() + if (signal && signal.aborted) { + reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })) + } else { + resolve(null) + } + }) + .on('error', noop) + .on('data', function (chunk) { + limit -= chunk.length + if (limit <= 0) { + this.destroy() + } + }) + .resume() + }) + } +} + +// https://streams.spec.whatwg.org/#readablestream-locked +function isLocked (self) { + // Consume is an implicit lock. + return (self[kBody] && self[kBody].locked === true) || self[kConsume] +} + +// https://fetch.spec.whatwg.org/#body-unusable +function isUnusable (self) { + return util.isDisturbed(self) || isLocked(self) +} + +async function consume (stream, type) { + if (isUnusable(stream)) { + throw new TypeError('unusable') + } + + assert(!stream[kConsume]) + + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + } + + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err) + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()) + } + }) + + process.nextTick(consumeStart, stream[kConsume]) + }) +} + +function consumeStart (consume) { + if (consume.body === null) { + return + } + + const { _readableState: state } = consume.stream + + for (const chunk of state.buffer) { + consumePush(consume, chunk) + } + + if (state.endEmitted) { + consumeEnd(this[kConsume]) + } else { + consume.stream.on('end', function () { + consumeEnd(this[kConsume]) + }) + } + + consume.stream.resume() + + while (consume.stream.read() != null) { + // Loop + } +} + +function consumeEnd (consume) { + const { type, body, resolve, stream, length } = consume + + try { + if (type === 'text') { + resolve(toUSVString(Buffer.concat(body))) + } else if (type === 'json') { + resolve(JSON.parse(Buffer.concat(body))) + } else if (type === 'arrayBuffer') { + const dst = new Uint8Array(length) + + let pos = 0 + for (const buf of body) { + dst.set(buf, pos) + pos += buf.byteLength + } + + resolve(dst.buffer) + } else if (type === 'blob') { + if (!Blob) { + Blob = (__nccwpck_require__(181).Blob) + } + resolve(new Blob(body, { type: stream[kContentType] })) + } + + consumeFinish(consume) + } catch (err) { + stream.destroy(err) + } +} + +function consumePush (consume, chunk) { + consume.length += chunk.length + consume.body.push(chunk) +} + +function consumeFinish (consume, err) { + if (consume.body === null) { + return + } + + if (err) { + consume.reject(err) + } else { + consume.resolve() + } + + consume.type = null + consume.stream = null + consume.resolve = null + consume.reject = null + consume.length = 0 + consume.body = null +} + + +/***/ }), + +/***/ 7655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(2613) +const { + ResponseStatusCodeError +} = __nccwpck_require__(8707) +const { toUSVString } = __nccwpck_require__(3440) + +async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body) + + let chunks = [] + let limit = 0 + + for await (const chunk of body) { + chunks.push(chunk) + limit += chunk.length + if (limit > 128 * 1024) { + chunks = null + break + } + } + + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) + return + } + + try { + if (contentType.startsWith('application/json')) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + + if (contentType.startsWith('text/')) { + const payload = toUSVString(Buffer.concat(chunks)) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + } catch (err) { + // Process in a fallback if error + } + + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) +} + +module.exports = { getResolveErrorBodyCallback } + + +/***/ }), + +/***/ 1093: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + BalancedPoolMissingUpstreamError, + InvalidArgumentError +} = __nccwpck_require__(8707) +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} = __nccwpck_require__(8640) +const Pool = __nccwpck_require__(5076) +const { kUrl, kInterceptors } = __nccwpck_require__(6443) +const { parseOrigin } = __nccwpck_require__(3440) +const kFactory = Symbol('factory') + +const kOptions = Symbol('options') +const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') +const kCurrentWeight = Symbol('kCurrentWeight') +const kIndex = Symbol('kIndex') +const kWeight = Symbol('kWeight') +const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') +const kErrorPenalty = Symbol('kErrorPenalty') + +function getGreatestCommonDivisor (a, b) { + if (b === 0) return a + return getGreatestCommonDivisor(b, a % b) +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class BalancedPool extends PoolBase { + constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super() + + this[kOptions] = opts + this[kIndex] = -1 + this[kCurrentWeight] = 0 + + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 + this[kErrorPenalty] = this[kOptions].errorPenalty || 15 + + if (!Array.isArray(upstreams)) { + upstreams = [upstreams] + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) + ? opts.interceptors.BalancedPool + : [] + this[kFactory] = factory + + for (const upstream of upstreams) { + this.addUpstream(upstream) + } + this._updateBalancedPoolStats() + } + + addUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + + if (this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + ))) { + return this + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) + + this[kAddClient](pool) + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) + }) + + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + }) + + pool.on('disconnect', (...args) => { + const err = args[2] + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + } + }) + + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer] + } + + this._updateBalancedPoolStats() + + return this + } + + _updateBalancedPoolStats () { + this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0) + } + + removeUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + + const pool = this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + )) + + if (pool) { + this[kRemoveClient](pool) + } + + return this + } + + get upstreams () { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map((p) => p[kUrl].origin) + } + + [kGetDispatcher] () { + // We validate that pools is greater than 0, + // otherwise we would have to wait until an upstream + // is added, which might never happen. + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError() + } + + const dispatcher = this[kClients].find(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + + if (!dispatcher) { + return + } + + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) + + if (allClientsBusy) { + return + } + + let counter = 0 + + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) + + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length + const pool = this[kClients][this[kIndex]] + + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex] + } + + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] + + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer] + } + } + if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { + return pool + } + } + + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] + this[kIndex] = maxWeightIndex + return this[kClients][maxWeightIndex] + } +} + +module.exports = BalancedPool + + +/***/ }), + +/***/ 479: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kConstruct } = __nccwpck_require__(296) +const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(3993) +const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3440) +const { kHeadersList } = __nccwpck_require__(6443) +const { webidl } = __nccwpck_require__(4222) +const { Response, cloneResponse } = __nccwpck_require__(8676) +const { Request } = __nccwpck_require__(5194) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) +const { fetching } = __nccwpck_require__(2315) +const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(5523) +const assert = __nccwpck_require__(2613) +const { getGlobalDispatcher } = __nccwpck_require__(2581) + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation + * @typedef {Object} CacheBatchOperation + * @property {'delete' | 'put'} type + * @property {any} request + * @property {any} response + * @property {import('../../types/cache').CacheQueryOptions} options + */ + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list + * @typedef {[any, any][]} requestResponseList + */ + +class Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList + + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() + } + + this.#relevantRequestResponseList = arguments[1] + } + + async match (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }) + + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + const p = await this.matchAll(request, options) + + if (p.length === 0) { + return + } + + return p[0] + } + + async matchAll (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) + + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + // 1. + let r = null + + // 2. + if (request !== undefined) { + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { + // 2.2.1 + r = new Request(request)[kState] + } + } + + // 5. + // 5.1 + const responses = [] + + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) + + // 5.3.2 + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]) + } + } + + // 5.4 + // We don't implement CORs so we don't need to loop over the responses, yay! + + // 5.5.1 + const responseList = [] + + // 5.5.2 + for (const response of responses) { + // 5.5.2.1 + const responseObject = new Response(response.body?.source ?? null) + const body = responseObject[kState].body + responseObject[kState] = response + responseObject[kState].body = body + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' + + responseList.push(responseObject) + } + + // 6. + return Object.freeze(responseList) + } + + async add (request) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }) + + request = webidl.converters.RequestInfo(request) + + // 1. + const requests = [request] + + // 2. + const responseArrayPromise = this.addAll(requests) + + // 3. + return await responseArrayPromise + } + + async addAll (requests) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }) + + requests = webidl.converters['sequence'](requests) + + // 1. + const responsePromises = [] + + // 2. + const requestList = [] + + // 3. + for (const request of requests) { + if (typeof request === 'string') { + continue + } + + // 3.1 + const r = request[kState] + + // 3.2 + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme when method is not GET.' + }) + } + } + + // 4. + /** @type {ReturnType[]} */ + const fetchControllers = [] + + // 5. + for (const request of requests) { + // 5.1 + const r = new Request(request)[kState] + + // 5.2 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme.' + }) + } + + // 5.4 + r.initiator = 'fetch' + r.destination = 'subresource' + + // 5.5 + requestList.push(r) + + // 5.6 + const responsePromise = createDeferredPromise() + + // 5.7 + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse (response) { + // 1. + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + })) + } else if (response.headersList.contains('vary')) { // 2. + // 2.1 + const fieldValues = getFieldValues(response.headersList.get('vary')) + + // 2.2 + for (const fieldValue of fieldValues) { + // 2.2.1 + if (fieldValue === '*') { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + })) + + for (const controller of fetchControllers) { + controller.abort() + } + + return + } + } + } + }, + processResponseEndOfBody (response) { + // 1. + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')) + return + } + + // 2. + responsePromise.resolve(response) + } + })) + + // 5.8 + responsePromises.push(responsePromise.promise) + } + + // 6. + const p = Promise.all(responsePromises) + + // 7. + const responses = await p + + // 7.1 + const operations = [] + + // 7.2 + let index = 0 + + // 7.3 + for (const response of responses) { + // 7.3.1 + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 7.3.2 + request: requestList[index], // 7.3.3 + response // 7.3.4 + } + + operations.push(operation) // 7.3.5 + + index++ // 7.3.6 + } + + // 7.5 + const cacheJobPromise = createDeferredPromise() + + // 7.6.1 + let errorData = null + + // 7.6.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + // 7.6.3 + queueMicrotask(() => { + // 7.6.3.1 + if (errorData === null) { + cacheJobPromise.resolve(undefined) + } else { + // 7.6.3.2 + cacheJobPromise.reject(errorData) + } + }) + + // 7.7 + return cacheJobPromise.promise + } + + async put (request, response) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }) + + request = webidl.converters.RequestInfo(request) + response = webidl.converters.Response(response) + + // 1. + let innerRequest = null + + // 2. + if (request instanceof Request) { + innerRequest = request[kState] + } else { // 3. + innerRequest = new Request(request)[kState] + } + + // 4. + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Expected an http/s scheme when method is not GET' + }) + } + + // 5. + const innerResponse = response[kState] + + // 6. + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got 206 status' + }) + } + + // 7. + if (innerResponse.headersList.contains('vary')) { + // 7.1. + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')) + + // 7.2. + for (const fieldValue of fieldValues) { + // 7.2.1 + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got * vary field value' + }) + } + } + } + + // 8. + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Response body is locked or disturbed' + }) + } + + // 9. + const clonedResponse = cloneResponse(innerResponse) + + // 10. + const bodyReadPromise = createDeferredPromise() + + // 11. + if (innerResponse.body != null) { + // 11.1 + const stream = innerResponse.body.stream + + // 11.2 + const reader = stream.getReader() + + // 11.3 + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject) + } else { + bodyReadPromise.resolve(undefined) + } + + // 12. + /** @type {CacheBatchOperation[]} */ + const operations = [] + + // 13. + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 14. + request: innerRequest, // 15. + response: clonedResponse // 16. + } + + // 17. + operations.push(operation) + + // 19. + const bytes = await bodyReadPromise.promise + + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes + } + + // 19.1 + const cacheJobPromise = createDeferredPromise() + + // 19.2.1 + let errorData = null + + // 19.2.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + // 19.2.3 + queueMicrotask(() => { + // 19.2.3.1 + if (errorData === null) { + cacheJobPromise.resolve() + } else { // 19.2.3.2 + cacheJobPromise.reject(errorData) + } + }) + + return cacheJobPromise.promise + } + + async delete (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }) + + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + /** + * @type {Request} + */ + let r = null + + if (request instanceof Request) { + r = request[kState] + + if (r.method !== 'GET' && !options.ignoreMethod) { + return false + } + } else { + assert(typeof request === 'string') + + r = new Request(request)[kState] + } + + /** @type {CacheBatchOperation[]} */ + const operations = [] + + /** @type {CacheBatchOperation} */ + const operation = { + type: 'delete', + request: r, + options + } + + operations.push(operation) + + const cacheJobPromise = createDeferredPromise() + + let errorData = null + let requestResponses + + try { + requestResponses = this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length) + } else { + cacheJobPromise.reject(errorData) + } + }) + + return cacheJobPromise.promise + } + + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) + + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + // 1. + let r = null + + // 2. + if (request !== undefined) { + // 2.1 + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { // 2.2 + r = new Request(request)[kState] + } + } + + // 4. + const promise = createDeferredPromise() + + // 5. + // 5.1 + const requests = [] + + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + // 5.2.1.1 + requests.push(requestResponse[0]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) + + // 5.3.2 + for (const requestResponse of requestResponses) { + // 5.3.2.1 + requests.push(requestResponse[0]) + } + } + + // 5.4 + queueMicrotask(() => { + // 5.4.1 + const requestList = [] + + // 5.4.2 + for (const request of requests) { + const requestObject = new Request('https://a') + requestObject[kState] = request + requestObject[kHeaders][kHeadersList] = request.headersList + requestObject[kHeaders][kGuard] = 'immutable' + requestObject[kRealm] = request.client + + // 5.4.2.1 + requestList.push(requestObject) + } + + // 5.4.3 + promise.resolve(Object.freeze(requestList)) + }) + + return promise.promise + } + + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations (operations) { + // 1. + const cache = this.#relevantRequestResponseList + + // 2. + const backupCache = [...cache] + + // 3. + const addedItems = [] + + // 4.1 + const resultList = [] + + try { + // 4.2 + for (const operation of operations) { + // 4.2.1 + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }) + } + + // 4.2.2 + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }) + } + + // 4.2.3 + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError') + } + + // 4.2.4 + let requestResponses + + // 4.2.5 + if (operation.type === 'delete') { + // 4.2.5.1 + requestResponses = this.#queryCache(operation.request, operation.options) + + // TODO: the spec is wrong, this is needed to pass WPTs + if (requestResponses.length === 0) { + return [] + } + + // 4.2.5.2 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) + + // 4.2.5.2.1 + cache.splice(idx, 1) + } + } else if (operation.type === 'put') { // 4.2.6 + // 4.2.6.1 + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }) + } + + // 4.2.6.2 + const r = operation.request + + // 4.2.6.3 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }) + } + + // 4.2.6.4 + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }) + } + + // 4.2.6.5 + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }) + } + + // 4.2.6.6 + requestResponses = this.#queryCache(operation.request) + + // 4.2.6.7 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) + + // 4.2.6.7.1 + cache.splice(idx, 1) + } + + // 4.2.6.8 + cache.push([operation.request, operation.response]) + + // 4.2.6.10 + addedItems.push([operation.request, operation.response]) + } + + // 4.2.7 + resultList.push([operation.request, operation.response]) + } + + // 4.3 + return resultList + } catch (e) { // 5. + // 5.1 + this.#relevantRequestResponseList.length = 0 + + // 5.2 + this.#relevantRequestResponseList = backupCache + + // 5.3 + throw e + } + } + + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache (requestQuery, options, targetStorage) { + /** @type {requestResponseList} */ + const resultList = [] + + const storage = targetStorage ?? this.#relevantRequestResponseList + + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse) + } + } + + return resultList + } + + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem (requestQuery, request, response = null, options) { + // if (options?.ignoreMethod === false && request.method === 'GET') { + // return false + // } + + const queryURL = new URL(requestQuery.url) + + const cachedURL = new URL(request.url) + + if (options?.ignoreSearch) { + cachedURL.search = '' + + queryURL.search = '' + } + + if (!urlEquals(queryURL, cachedURL, true)) { + return false + } + + if ( + response == null || + options?.ignoreVary || + !response.headersList.contains('vary') + ) { + return true + } + + const fieldValues = getFieldValues(response.headersList.get('vary')) + + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false + } + + const requestValue = request.headersList.get(fieldValue) + const queryValue = requestQuery.headersList.get(fieldValue) + + // If one has the header and the other doesn't, or one has + // a different value than the other, return false + if (requestValue !== queryValue) { + return false + } + } + + return true + } +} + +Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) + +const cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: false + } +] + +webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters) + +webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString + } +]) + +webidl.converters.Response = webidl.interfaceConverter(Response) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.RequestInfo +) + +module.exports = { + Cache +} + + +/***/ }), + +/***/ 4738: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kConstruct } = __nccwpck_require__(296) +const { Cache } = __nccwpck_require__(479) +const { webidl } = __nccwpck_require__(4222) +const { kEnumerableProperty } = __nccwpck_require__(3440) + +class CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }) + + cacheName = webidl.converters.DOMString(cacheName) + + // 2.1.1 + // 2.2 + return this.#caches.has(cacheName) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }) + + cacheName = webidl.converters.DOMString(cacheName) + + // 2.1 + if (this.#caches.has(cacheName)) { + // await caches.open('v1') !== await caches.open('v1') + + // 2.1.1 + const cache = this.#caches.get(cacheName) + + // 2.1.1.1 + return new Cache(kConstruct, cache) + } + + // 2.2 + const cache = [] + + // 2.3 + this.#caches.set(cacheName, cache) + + // 2.4 + return new Cache(kConstruct, cache) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }) + + cacheName = webidl.converters.DOMString(cacheName) + + return this.#caches.delete(cacheName) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys () { + webidl.brandCheck(this, CacheStorage) + + // 2.1 + const keys = this.#caches.keys() + + // 2.2 + return [...keys] + } +} + +Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) + +module.exports = { + CacheStorage +} + + +/***/ }), + +/***/ 296: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = { + kConstruct: (__nccwpck_require__(6443).kConstruct) +} + + +/***/ }), + +/***/ 3993: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(2613) +const { URLSerializer } = __nccwpck_require__(4322) +const { isValidHeaderName } = __nccwpck_require__(5523) + +/** + * @see https://url.spec.whatwg.org/#concept-url-equals + * @param {URL} A + * @param {URL} B + * @param {boolean | undefined} excludeFragment + * @returns {boolean} + */ +function urlEquals (A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment) + + const serializedB = URLSerializer(B, excludeFragment) + + return serializedA === serializedB +} + +/** + * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 + * @param {string} header + */ +function fieldValues (header) { + assert(header !== null) + + const values = [] + + for (let value of header.split(',')) { + value = value.trim() + + if (!value.length) { + continue + } else if (!isValidHeaderName(value)) { + continue + } + + values.push(value) + } + + return values +} + +module.exports = { + urlEquals, + fieldValues +} + + +/***/ }), + +/***/ 6197: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// @ts-check + + + +/* global WebAssembly */ + +const assert = __nccwpck_require__(2613) +const net = __nccwpck_require__(9278) +const http = __nccwpck_require__(8611) +const { pipeline } = __nccwpck_require__(2203) +const util = __nccwpck_require__(3440) +const timers = __nccwpck_require__(8804) +const Request = __nccwpck_require__(4655) +const DispatcherBase = __nccwpck_require__(1) +const { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError +} = __nccwpck_require__(8707) +const buildConnector = __nccwpck_require__(9136) +const { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest +} = __nccwpck_require__(6443) + +/** @type {import('http2')} */ +let http2 +try { + http2 = __nccwpck_require__(5675) +} catch { + // @ts-ignore + http2 = { constants: {} } +} + +const { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } +} = http2 + +// Experimental +let h2ExperimentalWarned = false + +const FastBuffer = Buffer[Symbol.species] + +const kClosedResolve = Symbol('kClosedResolve') + +const channels = {} + +try { + const diagnosticsChannel = __nccwpck_require__(1637) + channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders') + channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect') + channels.connectError = diagnosticsChannel.channel('undici:client:connectError') + channels.connected = diagnosticsChannel.channel('undici:client:connected') +} catch { + channels.sendHeaders = { hasSubscribers: false } + channels.beforeConnect = { hasSubscribers: false } + channels.connectError = { hasSubscribers: false } + channels.connected = { hasSubscribers: false } +} + +/** + * @type {import('../types/client').default} + */ +class Client extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor (url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super() + + if (keepAlive !== undefined) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') + } + + if (socketTimeout !== undefined) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') + } + + if (requestTimeout !== undefined) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') + } + + if (idleTimeout !== undefined) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') + } + + if (maxKeepAliveTimeout !== undefined) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') + } + + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize') + } + + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath') + } + + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout') + } + + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout') + } + + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout') + } + + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') + } + + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') + } + + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') + } + + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address') + } + + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number') + } + + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number') + } + + // h2 + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value') + } + + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) + ? interceptors.Client + : [createRedirectInterceptor({ maxRedirections })] + this[kUrl] = util.parseOrigin(url) + this[kConnector] = connect + this[kSocket] = null + this[kPipelining] = pipelining != null ? pipelining : 1 + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout] + this[kServerName] = null + this[kLocalAddress] = localAddress != null ? localAddress : null + this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n` + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3 + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3 + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength + this[kMaxRedirections] = maxRedirections + this[kMaxRequests] = maxRequestsPerClient + this[kClosedResolve] = null + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1 + this[kHTTPConnVersion] = 'h1' + + // HTTP/2 + this[kHTTP2Session] = null + this[kHTTP2SessionState] = !allowH2 + ? null + : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server + } + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}` + + // kQueue is built up of 3 sections separated by + // the kRunningIdx and kPendingIdx indices. + // | complete | running | pending | + // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length + // kRunningIdx points to the first running element. + // kPendingIdx points to the first pending element. + // This implements a fast queue with an amortized + // time of O(1). + + this[kQueue] = [] + this[kRunningIdx] = 0 + this[kPendingIdx] = 0 + } + + get pipelining () { + return this[kPipelining] + } + + set pipelining (value) { + this[kPipelining] = value + resume(this, true) + } + + get [kPending] () { + return this[kQueue].length - this[kPendingIdx] + } + + get [kRunning] () { + return this[kPendingIdx] - this[kRunningIdx] + } + + get [kSize] () { + return this[kQueue].length - this[kRunningIdx] + } + + get [kConnected] () { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed + } + + get [kBusy] () { + const socket = this[kSocket] + return ( + (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || + (this[kSize] >= (this[kPipelining] || 1)) || + this[kPending] > 0 + ) + } + + /* istanbul ignore: only used for test */ + [kConnect] (cb) { + connect(this) + this.once('connect', cb) + } + + [kDispatch] (opts, handler) { + const origin = opts.origin || this[kUrl].origin + + const request = this[kHTTPConnVersion] === 'h2' + ? Request[kHTTP2BuildRequest](origin, opts, handler) + : Request[kHTTP1BuildRequest](origin, opts, handler) + + this[kQueue].push(request) + if (this[kResuming]) { + // Do nothing. + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + // Wait a tick in case stream/iterator is ended in the same tick. + this[kResuming] = 1 + process.nextTick(resume, this) + } else { + resume(this, true) + } + + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2 + } + + return this[kNeedDrain] < 2 + } + + async [kClose] () { + // TODO: for H2 we need to gracefully flush the remaining enqueued + // request and close each stream. + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null) + } else { + this[kClosedResolve] = resolve + } + }) + } + + async [kDestroy] (err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + + const callback = () => { + if (this[kClosedResolve]) { + // TODO (fix): Should we error here with ClientDestroyedError? + this[kClosedResolve]() + this[kClosedResolve] = null + } + resolve() + } + + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err) + this[kHTTP2Session] = null + this[kHTTP2SessionState] = null + } + + if (!this[kSocket]) { + queueMicrotask(callback) + } else { + util.destroy(this[kSocket].on('close', callback), err) + } + + resume(this) + }) + } +} + +function onHttp2SessionError (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + this[kSocket][kError] = err + + onError(this[kClient], err) +} + +function onHttp2FrameError (type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + + if (id === 0) { + this[kSocket][kError] = err + onError(this[kClient], err) + } +} + +function onHttp2SessionEnd () { + util.destroy(this, new SocketError('other side closed')) + util.destroy(this[kSocket], new SocketError('other side closed')) +} + +function onHTTP2GoAway (code) { + const client = this[kClient] + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`) + client[kSocket] = null + client[kHTTP2Session] = null + + if (client.destroyed) { + assert(this[kPending] === 0) + + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + } else if (client[kRunning] > 0) { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + + errorRequest(client, request, err) + } + + client[kPendingIdx] = client[kRunningIdx] + + assert(client[kRunning] === 0) + + client.emit('disconnect', + client[kUrl], + [client], + err + ) + + resume(client) +} + +const constants = __nccwpck_require__(2824) +const createRedirectInterceptor = __nccwpck_require__(4415) +const EMPTY_BUF = Buffer.alloc(0) + +async function lazyllhttp () { + const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(3870) : undefined + + let mod + try { + mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(3434), 'base64')) + } catch (e) { + /* istanbul ignore next */ + + // We could check if the error was caused by the simd option not + // being enabled, but the occurring of this other error + // * https://github.com/emscripten-core/emscripten/issues/11495 + // got me to remove that check to avoid breaking Node 12. + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || __nccwpck_require__(3870), 'base64')) + } + + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + + wasm_on_url: (p, at, len) => { + /* istanbul ignore next */ + return 0 + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageBegin() || 0 + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageComplete() || 0 + } + + /* eslint-enable camelcase */ + } + }) +} + +let llhttpInstance = null +let llhttpPromise = lazyllhttp() +llhttpPromise.catch() + +let currentParser = null +let currentBufferRef = null +let currentBufferSize = 0 +let currentBufferPtr = null + +const TIMEOUT_HEADERS = 1 +const TIMEOUT_BODY = 2 +const TIMEOUT_IDLE = 3 + +class Parser { + constructor (client, socket, { exports }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0) + + this.llhttp = exports + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE) + this.client = client + this.socket = socket + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + this.statusCode = null + this.statusText = '' + this.upgrade = false + this.headers = [] + this.headersSize = 0 + this.headersMaxSize = client[kMaxHeadersSize] + this.shouldKeepAlive = false + this.paused = false + this.resume = this.resume.bind(this) + + this.bytesRead = 0 + + this.keepAlive = '' + this.contentLength = '' + this.connection = '' + this.maxResponseSize = client[kMaxResponseSize] + } + + setTimeout (value, type) { + this.timeoutType = type + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout) + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this) + // istanbul ignore else: only for jest + if (this.timeout.unref) { + this.timeout.unref() + } + } else { + this.timeout = null + } + this.timeoutValue = value + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + } + + resume () { + if (this.socket.destroyed || !this.paused) { + return + } + + assert(this.ptr != null) + assert(currentParser == null) + + this.llhttp.llhttp_resume(this.ptr) + + assert(this.timeoutType === TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + this.paused = false + this.execute(this.socket.read() || EMPTY_BUF) // Flush parser. + this.readMore() + } + + readMore () { + while (!this.paused && this.ptr) { + const chunk = this.socket.read() + if (chunk === null) { + break + } + this.execute(chunk) + } + } + + execute (data) { + assert(this.ptr != null) + assert(currentParser == null) + assert(!this.paused) + + const { socket, llhttp } = this + + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr) + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096 + currentBufferPtr = llhttp.malloc(currentBufferSize) + } + + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data) + + // Call `execute` on the wasm parser. + // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, + // and finally the length of bytes to parse. + // The return value is an error code or `constants.ERROR.OK`. + try { + let ret + + try { + currentBufferRef = data + currentParser = this + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length) + /* eslint-disable-next-line no-useless-catch */ + } catch (err) { + /* istanbul ignore next: difficult to make a test case for */ + throw err + } finally { + currentParser = null + currentBufferRef = null + } + + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr + + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)) + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true + socket.unshift(data.slice(offset)) + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr) + let message = '' + /* istanbul ignore else: difficult to make a test case for */ + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0) + message = + 'Response does not match the HTTP/1.1 protocol (' + + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + + ')' + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) + } + } catch (err) { + util.destroy(socket, err) + } + } + + destroy () { + assert(this.ptr != null) + assert(currentParser == null) + + this.llhttp.llhttp_free(this.ptr) + this.ptr = null + + timers.clearTimeout(this.timeout) + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + + this.paused = false + } + + onStatus (buf) { + this.statusText = buf.toString() + } + + onMessageBegin () { + const { socket, client } = this + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + if (!request) { + return -1 + } + } + + onHeaderField (buf) { + const len = this.headers.length + + if ((len & 1) === 0) { + this.headers.push(buf) + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } + + this.trackHeader(buf.length) + } + + onHeaderValue (buf) { + let len = this.headers.length + + if ((len & 1) === 1) { + this.headers.push(buf) + len += 1 + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } + + const key = this.headers[len - 2] + if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { + this.keepAlive += buf.toString() + } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { + this.connection += buf.toString() + } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + this.contentLength += buf.toString() + } + + this.trackHeader(buf.length) + } + + trackHeader (len) { + this.headersSize += len + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()) + } + } + + onUpgrade (head) { + const { upgrade, client, socket, headers, statusCode } = this + + assert(upgrade) + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert(!socket.destroyed) + assert(socket === client[kSocket]) + assert(!this.paused) + assert(request.upgrade || request.method === 'CONNECT') + + this.statusCode = null + this.statusText = '' + this.shouldKeepAlive = null + + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + + socket.unshift(head) + + socket[kParser].destroy() + socket[kParser] = null + + socket[kClient] = null + socket[kError] = null + socket + .removeListener('error', onSocketError) + .removeListener('readable', onSocketReadable) + .removeListener('end', onSocketEnd) + .removeListener('close', onSocketClose) + + client[kSocket] = null + client[kQueue][client[kRunningIdx]++] = null + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')) + + try { + request.onUpgrade(statusCode, headers, socket) + } catch (err) { + util.destroy(socket, err) + } + + resume(client) + } + + onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + + /* istanbul ignore next: difficult to make a test case for */ + if (!request) { + return -1 + } + + assert(!this.upgrade) + assert(this.statusCode < 200) + + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 + } + + /* this can only happen if server is misbehaving */ + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) + return -1 + } + + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS) + + this.statusCode = statusCode + this.shouldKeepAlive = ( + shouldKeepAlive || + // Override llhttp value which does not allow keepAlive for HEAD. + (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive') + ) + + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null + ? request.bodyTimeout + : client[kBodyTimeout] + this.setTimeout(bodyTimeout, TIMEOUT_BODY) + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } + + if (upgrade) { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } + + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null + + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ) + if (timeout <= 0) { + socket[kReset] = true + } else { + client[kKeepAliveTimeoutValue] = timeout + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout] + } + } else { + // Stop more requests from being dispatched. + socket[kReset] = true + } + + const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false + + if (request.aborted) { + return -1 + } + + if (request.method === 'HEAD') { + return 1 + } + + if (statusCode < 200) { + return 1 + } + + if (socket[kBlocking]) { + socket[kBlocking] = false + resume(client) + } + + return pause ? constants.ERROR.PAUSED : 0 + } + + onBody (buf) { + const { client, socket, statusCode, maxResponseSize } = this + + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert.strictEqual(this.timeoutType, TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + assert(statusCode >= 200) + + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()) + return -1 + } + + this.bytesRead += buf.length + + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED + } + } + + onMessageComplete () { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this + + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1 + } + + if (upgrade) { + return + } + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert(statusCode >= 100) + + this.statusCode = null + this.statusText = '' + this.bytesRead = 0 + this.contentLength = '' + this.keepAlive = '' + this.connection = '' + + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + + if (statusCode < 200) { + return + } + + /* istanbul ignore next: should be handled by llhttp? */ + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()) + return -1 + } + + request.onComplete(headers) + + client[kQueue][client[kRunningIdx]++] = null + + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0) + // Response completed before request. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (socket[kReset] && client[kRunning] === 0) { + // Destroy socket once all requests have completed. + // The request at the tail of the pipeline is the one + // that requested reset and no further requests should + // have been queued since then. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(resume, client) + } else { + resume(client) + } + } +} + +function onParserTimeout (parser) { + const { socket, timeoutType, client } = parser + + /* istanbul ignore else */ + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, 'cannot be paused while waiting for headers') + util.destroy(socket, new HeadersTimeoutError()) + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()) + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]) + util.destroy(socket, new InformationalError('socket idle timeout')) + } +} + +function onSocketReadable () { + const { [kParser]: parser } = this + if (parser) { + parser.readMore() + } +} + +function onSocketError (err) { + const { [kClient]: client, [kParser]: parser } = this + + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + if (client[kHTTPConnVersion] !== 'h2') { + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded + // to the user. + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so for as a valid response. + parser.onMessageComplete() + return + } + } + + this[kError] = err + + onError(this[kClient], err) +} + +function onError (client, err) { + if ( + client[kRunning] === 0 && + err.code !== 'UND_ERR_INFO' && + err.code !== 'UND_ERR_SOCKET' + ) { + // Error is not caused by running request and not a recoverable + // socket error. + + assert(client[kPendingIdx] === client[kRunningIdx]) + + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + assert(client[kSize] === 0) + } +} + +function onSocketEnd () { + const { [kParser]: parser, [kClient]: client } = this + + if (client[kHTTPConnVersion] !== 'h2') { + if (parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + return + } + } + + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) +} + +function onSocketClose () { + const { [kClient]: client, [kParser]: parser } = this + + if (client[kHTTPConnVersion] === 'h1' && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + } + + this[kParser].destroy() + this[kParser] = null + } + + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) + + client[kSocket] = null + + if (client.destroyed) { + assert(client[kPending] === 0) + + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + + errorRequest(client, request, err) + } + + client[kPendingIdx] = client[kRunningIdx] + + assert(client[kRunning] === 0) + + client.emit('disconnect', client[kUrl], [client], err) + + resume(client) +} + +async function connect (client) { + assert(!client[kConnecting]) + assert(!client[kSocket]) + + let { host, hostname, protocol, port } = client[kUrl] + + // Resolve ipv6 + if (hostname[0] === '[') { + const idx = hostname.indexOf(']') + + assert(idx !== -1) + const ip = hostname.substring(1, idx) + + assert(net.isIP(ip)) + hostname = ip + } + + client[kConnecting] = true + + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }) + } + + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket) => { + if (err) { + reject(err) + } else { + resolve(socket) + } + }) + }) + + if (client.destroyed) { + util.destroy(socket.on('error', () => {}), new ClientDestroyedError()) + return + } + + client[kConnecting] = false + + assert(socket) + + const isH2 = socket.alpnProtocol === 'h2' + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }) + } + + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }) + + client[kHTTPConnVersion] = 'h2' + session[kClient] = client + session[kSocket] = socket + session.on('error', onHttp2SessionError) + session.on('frameError', onHttp2FrameError) + session.on('end', onHttp2SessionEnd) + session.on('goaway', onHTTP2GoAway) + session.on('close', onSocketClose) + session.unref() + + client[kHTTP2Session] = session + socket[kHTTP2Session] = session + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise + llhttpPromise = null + } + + socket[kNoRef] = false + socket[kWriting] = false + socket[kReset] = false + socket[kBlocking] = false + socket[kParser] = new Parser(client, socket, llhttpInstance) + } + + socket[kCounter] = 0 + socket[kMaxRequests] = client[kMaxRequests] + socket[kClient] = client + socket[kError] = null + + socket + .on('error', onSocketError) + .on('readable', onSocketReadable) + .on('end', onSocketEnd) + .on('close', onSocketClose) + + client[kSocket] = socket + + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }) + } + client.emit('connect', client[kUrl], [client]) + } catch (err) { + if (client.destroyed) { + return + } + + client[kConnecting] = false + + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }) + } + + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0) + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++] + errorRequest(client, request, err) + } + } else { + onError(client, err) + } + + client.emit('connectionError', client[kUrl], [client], err) + } + + resume(client) +} + +function emitDrain (client) { + client[kNeedDrain] = 0 + client.emit('drain', client[kUrl], [client]) +} + +function resume (client, sync) { + if (client[kResuming] === 2) { + return + } + + client[kResuming] = 2 + + _resume(client, sync) + client[kResuming] = 0 + + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]) + client[kPendingIdx] -= client[kRunningIdx] + client[kRunningIdx] = 0 + } +} + +function _resume (client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0) + return + } + + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve]() + client[kClosedResolve] = null + return + } + + const socket = client[kSocket] + + if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref() + socket[kNoRef] = true + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref() + socket[kNoRef] = false + } + + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE) + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request = client[kQueue][client[kRunningIdx]] + const headersTimeout = request.headersTimeout != null + ? request.headersTimeout + : client[kHeadersTimeout] + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS) + } + } + } + + if (client[kBusy]) { + client[kNeedDrain] = 2 + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1 + process.nextTick(emitDrain, client) + } else { + emitDrain(client) + } + continue + } + + if (client[kPending] === 0) { + return + } + + if (client[kRunning] >= (client[kPipelining] || 1)) { + return + } + + const request = client[kQueue][client[kPendingIdx]] + + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return + } + + client[kServerName] = request.servername + + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError('servername changed')) + return + } + } + + if (client[kConnecting]) { + return + } + + if (!socket && !client[kHTTP2Session]) { + connect(client) + return + } + + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return + } + + if (client[kRunning] > 0 && !request.idempotent) { + // Non-idempotent request cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } + + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + // Don't dispatch an upgrade until all preceding requests have completed. + // A misbehaving server might upgrade the connection before all pipelined + // request has completed. + return + } + + if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && + (util.isStream(request.body) || util.isAsyncIterable(request.body))) { + // Request with stream or iterator body can error while other requests + // are inflight and indirectly error those as well. + // Ensure this doesn't happen by waiting for inflight + // to complete before dispatching. + + // Request with stream or iterator body cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } + + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++ + } else { + client[kQueue].splice(client[kPendingIdx], 1) + } + } +} + +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength (method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' +} + +function write (client, request) { + if (client[kHTTPConnVersion] === 'h2') { + writeH2(client, client[kHTTP2Session], request) + return + } + + const { body, method, path, host, upgrade, headers, blocking, reset } = request + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) + + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + + const bodyLength = util.bodyLength(body) + + let contentLength = bodyLength + + if (contentLength === null) { + contentLength = request.contentLength + } + + if (contentLength === 0 && !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + const socket = client[kSocket] + + try { + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } + + errorRequest(client, request, err || new RequestAbortedError()) + + util.destroy(socket, new InformationalError('aborted')) + }) + } catch (err) { + errorRequest(client, request, err) + } + + if (request.aborted) { + return false + } + + if (method === 'HEAD') { + // https://github.com/mcollina/undici/issues/258 + // Close after a HEAD request to interop with misbehaving servers + // that may send a body in the response. + + socket[kReset] = true + } + + if (upgrade || method === 'CONNECT') { + // On CONNECT or upgrade, block pipeline from dispatching further + // requests on this connection. + + socket[kReset] = true + } + + if (reset != null) { + socket[kReset] = reset + } + + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true + } + + if (blocking) { + socket[kBlocking] = true + } + + let header = `${method} ${path} HTTP/1.1\r\n` + + if (typeof host === 'string') { + header += `host: ${host}\r\n` + } else { + header += client[kHostHeader] + } + + if (upgrade) { + header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n` + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n' + } else { + header += 'connection: close\r\n' + } + + if (headers) { + header += headers + } + + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }) + } + + /* istanbul ignore else: assertion */ + if (!body || bodyLength === 0) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + assert(contentLength === null, 'no body must not have content length') + socket.write(`${header}\r\n`, 'latin1') + } + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(body) + socket.uncork() + request.onBodySent(body) + request.onRequestSent() + if (!expectsPayload) { + socket[kReset] = true + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }) + } else { + writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) + } + } else if (util.isStream(body)) { + writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) + } else if (util.isIterable(body)) { + writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) + } else { + assert(false) + } + + return true +} + +function writeH2 (client, session, request) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request + + let headers + if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()) + else headers = reqHeaders + + if (upgrade) { + errorRequest(client, request, new Error('Upgrade not supported for H2')) + return false + } + + try { + // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } + + errorRequest(client, request, err || new RequestAbortedError()) + }) + } catch (err) { + errorRequest(client, request, err) + } + + if (request.aborted) { + return false + } + + /** @type {import('node:http2').ClientHttp2Stream} */ + let stream + const h2State = client[kHTTP2SessionState] + + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost] + headers[HTTP2_HEADER_METHOD] = method + + if (method === 'CONNECT') { + session.ref() + // we are already connected, streams are pending, first request + // will create a new stream. We trigger a request to create the stream and wait until + // `ready` event is triggered + // We disabled endStream to allow the user to write to the stream + stream = session.request(headers, { endStream: false, signal }) + + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + } else { + stream.once('ready', () => { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + }) + } + + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) session.unref() + }) + + return true + } + + // https://tools.ietf.org/html/rfc7540#section-8.3 + // :path and :scheme headers must be omited when sending CONNECT + + headers[HTTP2_HEADER_PATH] = path + headers[HTTP2_HEADER_SCHEME] = 'https' + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) + + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + + let contentLength = util.bodyLength(body) + + if (contentLength == null) { + contentLength = request.contentLength + } + + if (contentLength === 0 || !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + if (contentLength != null) { + assert(body, 'no body must not have content length') + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}` + } + + session.ref() + + const shouldEndStream = method === 'GET' || method === 'HEAD' + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue' + stream = session.request(headers, { endStream: shouldEndStream, signal }) + + stream.once('continue', writeBodyH2) + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }) + writeBodyH2() + } + + // Increment counter as we have new several streams open + ++h2State.openStreams + + stream.once('response', headers => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers + + if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { + stream.pause() + } + }) + + stream.once('end', () => { + request.onComplete([]) + }) + + stream.on('data', (chunk) => { + if (request.onData(chunk) === false) { + stream.pause() + } + }) + + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) { + session.unref() + } + }) + + stream.once('error', function (err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) + + stream.once('frameError', (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + errorRequest(client, request, err) + + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) + + // stream.on('aborted', () => { + // // TODO(HTTP/2): Support aborted + // }) + + // stream.on('timeout', () => { + // // TODO(HTTP/2): Support timeout + // }) + + // stream.on('push', headers => { + // // TODO(HTTP/2): Suppor push + // }) + + // stream.on('trailers', headers => { + // // TODO(HTTP/2): Support trailers + // }) + + return true + + function writeBodyH2 () { + /* istanbul ignore else: assertion */ + if (!body) { + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + stream.cork() + stream.write(body) + stream.uncork() + stream.end() + request.onBodySent(body) + request.onRequestSent() + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ + client, + request, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: '' + }) + } else { + writeBlob({ + body, + client, + request, + contentLength, + expectsPayload, + h2stream: stream, + header: '', + socket: client[kSocket] + }) + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: '' + }) + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request, + contentLength, + expectsPayload, + header: '', + h2stream: stream, + socket: client[kSocket] + }) + } else { + assert(false) + } + } +} + +function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') + + if (client[kHTTPConnVersion] === 'h2') { + // For HTTP/2, is enough to pipe the stream + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err) + util.destroy(h2stream, err) + } else { + request.onRequestSent() + } + } + ) + + pipe.on('data', onPipeData) + pipe.once('end', () => { + pipe.removeListener('data', onPipeData) + util.destroy(pipe) + }) + + function onPipeData (chunk) { + request.onBodySent(chunk) + } + + return + } + + let finished = false + + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + + const onData = function (chunk) { + if (finished) { + return + } + + try { + if (!writer.write(chunk) && this.pause) { + this.pause() + } + } catch (err) { + util.destroy(this, err) + } + } + const onDrain = function () { + if (finished) { + return + } + + if (body.resume) { + body.resume() + } + } + const onAbort = function () { + if (finished) { + return + } + const err = new RequestAbortedError() + queueMicrotask(() => onFinished(err)) + } + const onFinished = function (err) { + if (finished) { + return + } + + finished = true + + assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)) + + socket + .off('drain', onDrain) + .off('error', onFinished) + + body + .removeListener('data', onData) + .removeListener('end', onFinished) + .removeListener('error', onFinished) + .removeListener('close', onAbort) + + if (!err) { + try { + writer.end() + } catch (er) { + err = er + } + } + + writer.destroy(err) + + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body, err) + } else { + util.destroy(body) + } + } + + body + .on('data', onData) + .on('end', onFinished) + .on('error', onFinished) + .on('close', onAbort) + + if (body.resume) { + body.resume() + } + + socket + .on('drain', onDrain) + .on('error', onFinished) +} + +async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, 'blob body must have content length') + + const isH2 = client[kHTTPConnVersion] === 'h2' + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError() + } + + const buffer = Buffer.from(await body.arrayBuffer()) + + if (isH2) { + h2stream.cork() + h2stream.write(buffer) + h2stream.uncork() + } else { + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(buffer) + socket.uncork() + } + + request.onBodySent(buffer) + request.onRequestSent() + + if (!expectsPayload) { + socket[kReset] = true + } + + resume(client) + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err) + } +} + +async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') + + let callback = null + function onDrain () { + if (callback) { + const cb = callback + callback = null + cb() + } + } + + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null) + + if (socket[kError]) { + reject(socket[kError]) + } else { + callback = resolve + } + }) + + if (client[kHTTPConnVersion] === 'h2') { + h2stream + .on('close', onDrain) + .on('drain', onDrain) + + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } + + const res = h2stream.write(chunk) + request.onBodySent(chunk) + if (!res) { + await waitForDrain() + } + } + } catch (err) { + h2stream.destroy(err) + } finally { + request.onRequestSent() + h2stream.end() + h2stream + .off('close', onDrain) + .off('drain', onDrain) + } + + return + } + + socket + .on('close', onDrain) + .on('drain', onDrain) + + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } + + if (!writer.write(chunk)) { + await waitForDrain() + } + } + + writer.end() + } catch (err) { + writer.destroy(err) + } finally { + socket + .off('close', onDrain) + .off('drain', onDrain) + } +} + +class AsyncWriter { + constructor ({ socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket + this.request = request + this.contentLength = contentLength + this.client = client + this.bytesWritten = 0 + this.expectsPayload = expectsPayload + this.header = header + + socket[kWriting] = true + } + + write (chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this + + if (socket[kError]) { + throw socket[kError] + } + + if (socket.destroyed) { + return false + } + + const len = Buffer.byteLength(chunk) + if (!len) { + return true + } + + // We should defer writing chunks. + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + socket.cork() + + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true + } + + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1') + } else { + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + } + } + + if (contentLength === null) { + socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1') + } + + this.bytesWritten += len + + const ret = socket.write(chunk) + + socket.uncork() + + request.onBodySent(chunk) + + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } + } + + return ret + } + + end () { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this + request.onRequestSent() + + socket[kWriting] = false + + if (socket[kError]) { + throw socket[kError] + } + + if (socket.destroyed) { + return + } + + if (bytesWritten === 0) { + if (expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD send a Content-Length in a request message when + // no Transfer-Encoding is sent and the request method defines a meaning + // for an enclosed payload body. + + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + socket.write(`${header}\r\n`, 'latin1') + } + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1') + } + + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } else { + process.emitWarning(new RequestContentLengthMismatchError()) + } + } + + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } + + resume(client) + } + + destroy (err) { + const { socket, client } = this + + socket[kWriting] = false + + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request') + util.destroy(socket, err) + } + } +} + +function errorRequest (client, request, err) { + try { + request.onError(err) + assert(request.aborted) + } catch (err) { + client.emit('error', err) + } +} + +module.exports = Client + + +/***/ }), + +/***/ 3194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/* istanbul ignore file: only for Node 12 */ + +const { kConnected, kSize } = __nccwpck_require__(6443) + +class CompatWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value[kConnected] === 0 && this.value[kSize] === 0 + ? undefined + : this.value + } +} + +class CompatFinalizer { + constructor (finalizer) { + this.finalizer = finalizer + } + + register (dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key) + } + }) + } + } +} + +module.exports = function () { + // FIXME: remove workaround when the Node bug is fixed + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + } + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + } +} + + +/***/ }), + +/***/ 9237: +/***/ ((module) => { + +"use strict"; + + +// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size +const maxAttributeValueSize = 1024 + +// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size +const maxNameValuePairSize = 4096 + +module.exports = { + maxAttributeValueSize, + maxNameValuePairSize +} + + +/***/ }), + +/***/ 3168: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { parseSetCookie } = __nccwpck_require__(8915) +const { stringify, getHeadersList } = __nccwpck_require__(3834) +const { webidl } = __nccwpck_require__(4222) +const { Headers } = __nccwpck_require__(6349) + +/** + * @typedef {Object} Cookie + * @property {string} name + * @property {string} value + * @property {Date|number|undefined} expires + * @property {number|undefined} maxAge + * @property {string|undefined} domain + * @property {string|undefined} path + * @property {boolean|undefined} secure + * @property {boolean|undefined} httpOnly + * @property {'Strict'|'Lax'|'None'} sameSite + * @property {string[]} unparsed + */ + +/** + * @param {Headers} headers + * @returns {Record} + */ +function getCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookie = headers.get('cookie') + const out = {} + + if (!cookie) { + return out + } + + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('=') + + out[name.trim()] = value.join('=') + } + + return out +} + +/** + * @param {Headers} headers + * @param {string} name + * @param {{ path?: string, domain?: string }|undefined} attributes + * @returns {void} + */ +function deleteCookie (headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + name = webidl.converters.DOMString(name) + attributes = webidl.converters.DeleteCookieAttributes(attributes) + + // Matches behavior of + // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 + setCookie(headers, { + name, + value: '', + expires: new Date(0), + ...attributes + }) +} + +/** + * @param {Headers} headers + * @returns {Cookie[]} + */ +function getSetCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookies = getHeadersList(headers).cookies + + if (!cookies) { + return [] + } + + // In older versions of undici, cookies is a list of name:value. + return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)) +} + +/** + * @param {Headers} headers + * @param {Cookie} cookie + * @returns {void} + */ +function setCookie (headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + cookie = webidl.converters.Cookie(cookie) + + const str = stringify(cookie) + + if (str) { + headers.append('Set-Cookie', stringify(cookie)) + } +} + +webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + } +]) + +webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value) + } + + return new Date(value) + }), + key: 'expires', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: [] + } +]) + +module.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie +} + + +/***/ }), + +/***/ 8915: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(9237) +const { isCTLExcludingHtab } = __nccwpck_require__(3834) +const { collectASequenceOfCodePointsFast } = __nccwpck_require__(4322) +const assert = __nccwpck_require__(2613) + +/** + * @description Parses the field-value attributes of a set-cookie header string. + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} header + * @returns if the header is invalid, null will be returned + */ +function parseSetCookie (header) { + // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F + // character (CTL characters excluding HTAB): Abort these steps and + // ignore the set-cookie-string entirely. + if (isCTLExcludingHtab(header)) { + return null + } + + let nameValuePair = '' + let unparsedAttributes = '' + let name = '' + let value = '' + + // 2. If the set-cookie-string contains a %x3B (";") character: + if (header.includes(';')) { + // 1. The name-value-pair string consists of the characters up to, + // but not including, the first %x3B (";"), and the unparsed- + // attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question). + const position = { position: 0 } + + nameValuePair = collectASequenceOfCodePointsFast(';', header, position) + unparsedAttributes = header.slice(position.position) + } else { + // Otherwise: + + // 1. The name-value-pair string consists of all the characters + // contained in the set-cookie-string, and the unparsed- + // attributes is the empty string. + nameValuePair = header + } + + // 3. If the name-value-pair string lacks a %x3D ("=") character, then + // the name string is empty, and the value string is the value of + // name-value-pair. + if (!nameValuePair.includes('=')) { + value = nameValuePair + } else { + // Otherwise, the name string consists of the characters up to, but + // not including, the first %x3D ("=") character, and the (possibly + // empty) value string consists of the characters after the first + // %x3D ("=") character. + const position = { position: 0 } + name = collectASequenceOfCodePointsFast( + '=', + nameValuePair, + position + ) + value = nameValuePair.slice(position.position + 1) + } + + // 4. Remove any leading or trailing WSP characters from the name + // string and the value string. + name = name.trim() + value = value.trim() + + // 5. If the sum of the lengths of the name string and the value string + // is more than 4096 octets, abort these steps and ignore the set- + // cookie-string entirely. + if (name.length + value.length > maxNameValuePairSize) { + return null + } + + // 6. The cookie-name is the name string, and the cookie-value is the + // value string. + return { + name, value, ...parseUnparsedAttributes(unparsedAttributes) + } +} + +/** + * Parses the remaining attributes of a set-cookie header + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} unparsedAttributes + * @param {[Object.]={}} cookieAttributeList + */ +function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) { + // 1. If the unparsed-attributes string is empty, skip the rest of + // these steps. + if (unparsedAttributes.length === 0) { + return cookieAttributeList + } + + // 2. Discard the first character of the unparsed-attributes (which + // will be a %x3B (";") character). + assert(unparsedAttributes[0] === ';') + unparsedAttributes = unparsedAttributes.slice(1) + + let cookieAv = '' + + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + if (unparsedAttributes.includes(';')) { + // 1. Consume the characters of the unparsed-attributes up to, but + // not including, the first %x3B (";") character. + cookieAv = collectASequenceOfCodePointsFast( + ';', + unparsedAttributes, + { position: 0 } + ) + unparsedAttributes = unparsedAttributes.slice(cookieAv.length) + } else { + // Otherwise: + + // 1. Consume the remainder of the unparsed-attributes. + cookieAv = unparsedAttributes + unparsedAttributes = '' + } + + // Let the cookie-av string be the characters consumed in this step. + + let attributeName = '' + let attributeValue = '' + + // 4. If the cookie-av string contains a %x3D ("=") character: + if (cookieAv.includes('=')) { + // 1. The (possibly empty) attribute-name string consists of the + // characters up to, but not including, the first %x3D ("=") + // character, and the (possibly empty) attribute-value string + // consists of the characters after the first %x3D ("=") + // character. + const position = { position: 0 } + + attributeName = collectASequenceOfCodePointsFast( + '=', + cookieAv, + position + ) + attributeValue = cookieAv.slice(position.position + 1) + } else { + // Otherwise: + + // 1. The attribute-name string consists of the entire cookie-av + // string, and the attribute-value string is empty. + attributeName = cookieAv + } + + // 5. Remove any leading or trailing WSP characters from the attribute- + // name string and the attribute-value string. + attributeName = attributeName.trim() + attributeValue = attributeValue.trim() + + // 6. If the attribute-value is longer than 1024 octets, ignore the + // cookie-av string and return to Step 1 of this algorithm. + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 7. Process the attribute-name and attribute-value according to the + // requirements in the following subsections. (Notice that + // attributes with unrecognized attribute-names are ignored.) + const attributeNameLowercase = attributeName.toLowerCase() + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 + // If the attribute-name case-insensitively matches the string + // "Expires", the user agent MUST process the cookie-av as follows. + if (attributeNameLowercase === 'expires') { + // 1. Let the expiry-time be the result of parsing the attribute-value + // as cookie-date (see Section 5.1.1). + const expiryTime = new Date(attributeValue) + + // 2. If the attribute-value failed to parse as a cookie date, ignore + // the cookie-av. + + cookieAttributeList.expires = expiryTime + } else if (attributeNameLowercase === 'max-age') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 + // If the attribute-name case-insensitively matches the string "Max- + // Age", the user agent MUST process the cookie-av as follows. + + // 1. If the first character of the attribute-value is not a DIGIT or a + // "-" character, ignore the cookie-av. + const charCode = attributeValue.charCodeAt(0) + + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 2. If the remainder of attribute-value contains a non-DIGIT + // character, ignore the cookie-av. + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 3. Let delta-seconds be the attribute-value converted to an integer. + const deltaSeconds = Number(attributeValue) + + // 4. Let cookie-age-limit be the maximum age of the cookie (which + // SHOULD be 400 days or less, see Section 4.1.2.2). + + // 5. Set delta-seconds to the smaller of its present value and cookie- + // age-limit. + // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) + + // 6. If delta-seconds is less than or equal to zero (0), let expiry- + // time be the earliest representable date and time. Otherwise, let + // the expiry-time be the current date and time plus delta-seconds + // seconds. + // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds + + // 7. Append an attribute to the cookie-attribute-list with an + // attribute-name of Max-Age and an attribute-value of expiry-time. + cookieAttributeList.maxAge = deltaSeconds + } else if (attributeNameLowercase === 'domain') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 + // If the attribute-name case-insensitively matches the string "Domain", + // the user agent MUST process the cookie-av as follows. + + // 1. Let cookie-domain be the attribute-value. + let cookieDomain = attributeValue + + // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be + // cookie-domain without its leading %x2E ("."). + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1) + } + + // 3. Convert the cookie-domain to lower case. + cookieDomain = cookieDomain.toLowerCase() + + // 4. Append an attribute to the cookie-attribute-list with an + // attribute-name of Domain and an attribute-value of cookie-domain. + cookieAttributeList.domain = cookieDomain + } else if (attributeNameLowercase === 'path') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 + // If the attribute-name case-insensitively matches the string "Path", + // the user agent MUST process the cookie-av as follows. + + // 1. If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + let cookiePath = '' + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + // 1. Let cookie-path be the default-path. + cookiePath = '/' + } else { + // Otherwise: + + // 1. Let cookie-path be the attribute-value. + cookiePath = attributeValue + } + + // 2. Append an attribute to the cookie-attribute-list with an + // attribute-name of Path and an attribute-value of cookie-path. + cookieAttributeList.path = cookiePath + } else if (attributeNameLowercase === 'secure') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 + // If the attribute-name case-insensitively matches the string "Secure", + // the user agent MUST append an attribute to the cookie-attribute-list + // with an attribute-name of Secure and an empty attribute-value. + + cookieAttributeList.secure = true + } else if (attributeNameLowercase === 'httponly') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 + // If the attribute-name case-insensitively matches the string + // "HttpOnly", the user agent MUST append an attribute to the cookie- + // attribute-list with an attribute-name of HttpOnly and an empty + // attribute-value. + + cookieAttributeList.httpOnly = true + } else if (attributeNameLowercase === 'samesite') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 + // If the attribute-name case-insensitively matches the string + // "SameSite", the user agent MUST process the cookie-av as follows: + + // 1. Let enforcement be "Default". + let enforcement = 'Default' + + const attributeValueLowercase = attributeValue.toLowerCase() + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "None", set enforcement to "None". + if (attributeValueLowercase.includes('none')) { + enforcement = 'None' + } + + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", set enforcement to "Strict". + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict' + } + + // 4. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", set enforcement to "Lax". + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax' + } + + // 5. Append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of + // enforcement. + cookieAttributeList.sameSite = enforcement + } else { + cookieAttributeList.unparsed ??= [] + + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`) + } + + // 8. Return to Step 1 of this algorithm. + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) +} + +module.exports = { + parseSetCookie, + parseUnparsedAttributes +} + + +/***/ }), + +/***/ 3834: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(2613) +const { kHeadersList } = __nccwpck_require__(6443) + +function isCTLExcludingHtab (value) { + if (value.length === 0) { + return false + } + + for (const char of value) { + const code = char.charCodeAt(0) + + if ( + (code >= 0x00 || code <= 0x08) || + (code >= 0x0A || code <= 0x1F) || + code === 0x7F + ) { + return false + } + } +} + +/** + CHAR = + token = 1* + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + * @param {string} name + */ +function validateCookieName (name) { + for (const char of name) { + const code = char.charCodeAt(0) + + if ( + (code <= 0x20 || code > 0x7F) || + char === '(' || + char === ')' || + char === '>' || + char === '<' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' + ) { + throw new Error('Invalid cookie name') + } + } +} + +/** + cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + ; US-ASCII characters excluding CTLs, + ; whitespace DQUOTE, comma, semicolon, + ; and backslash + * @param {string} value + */ +function validateCookieValue (value) { + for (const char of value) { + const code = char.charCodeAt(0) + + if ( + code < 0x21 || // exclude CTLs (0-31) + code === 0x22 || + code === 0x2C || + code === 0x3B || + code === 0x5C || + code > 0x7E // non-ascii + ) { + throw new Error('Invalid header value') + } + } +} + +/** + * path-value = + * @param {string} path + */ +function validateCookiePath (path) { + for (const char of path) { + const code = char.charCodeAt(0) + + if (code < 0x21 || char === ';') { + throw new Error('Invalid cookie path') + } + } +} + +/** + * I have no idea why these values aren't allowed to be honest, + * but Deno tests these. - Khafra + * @param {string} domain + */ +function validateCookieDomain (domain) { + if ( + domain.startsWith('-') || + domain.endsWith('.') || + domain.endsWith('-') + ) { + throw new Error('Invalid cookie domain') + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 + * @param {number|Date} date + IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT + ; fixed length/zone/capitalization subset of the format + ; see Section 3.3 of [RFC5322] + + day-name = %x4D.6F.6E ; "Mon", case-sensitive + / %x54.75.65 ; "Tue", case-sensitive + / %x57.65.64 ; "Wed", case-sensitive + / %x54.68.75 ; "Thu", case-sensitive + / %x46.72.69 ; "Fri", case-sensitive + / %x53.61.74 ; "Sat", case-sensitive + / %x53.75.6E ; "Sun", case-sensitive + date1 = day SP month SP year + ; e.g., 02 Jun 1982 + + day = 2DIGIT + month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + year = 4DIGIT + + GMT = %x47.4D.54 ; "GMT", case-sensitive + + time-of-day = hour ":" minute ":" second + ; 00:00:00 - 23:59:60 (leap second) + + hour = 2DIGIT + minute = 2DIGIT + second = 2DIGIT + */ +function toIMFDate (date) { + if (typeof date === 'number') { + date = new Date(date) + } + + const days = [ + 'Sun', 'Mon', 'Tue', 'Wed', + 'Thu', 'Fri', 'Sat' + ] + + const months = [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' + ] + + const dayName = days[date.getUTCDay()] + const day = date.getUTCDate().toString().padStart(2, '0') + const month = months[date.getUTCMonth()] + const year = date.getUTCFullYear() + const hour = date.getUTCHours().toString().padStart(2, '0') + const minute = date.getUTCMinutes().toString().padStart(2, '0') + const second = date.getUTCSeconds().toString().padStart(2, '0') + + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT` +} + +/** + max-age-av = "Max-Age=" non-zero-digit *DIGIT + ; In practice, both expires-av and max-age-av + ; are limited to dates representable by the + ; user agent. + * @param {number} maxAge + */ +function validateCookieMaxAge (maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age') + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 + * @param {import('./index').Cookie} cookie + */ +function stringify (cookie) { + if (cookie.name.length === 0) { + return null + } + + validateCookieName(cookie.name) + validateCookieValue(cookie.value) + + const out = [`${cookie.name}=${cookie.value}`] + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true + } + + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true + cookie.domain = null + cookie.path = '/' + } + + if (cookie.secure) { + out.push('Secure') + } + + if (cookie.httpOnly) { + out.push('HttpOnly') + } + + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge) + out.push(`Max-Age=${cookie.maxAge}`) + } + + if (cookie.domain) { + validateCookieDomain(cookie.domain) + out.push(`Domain=${cookie.domain}`) + } + + if (cookie.path) { + validateCookiePath(cookie.path) + out.push(`Path=${cookie.path}`) + } + + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`) + } + + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`) + } + + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed') + } + + const [key, ...value] = part.split('=') + + out.push(`${key.trim()}=${value.join('=')}`) + } + + return out.join('; ') +} + +let kHeadersListNode + +function getHeadersList (headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList] + } + + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find( + (symbol) => symbol.description === 'headers list' + ) + + assert(kHeadersListNode, 'Headers cannot be parsed') + } + + const headersList = headers[kHeadersListNode] + assert(headersList) + + return headersList +} + +module.exports = { + isCTLExcludingHtab, + stringify, + getHeadersList +} + + +/***/ }), + +/***/ 9136: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const net = __nccwpck_require__(9278) +const assert = __nccwpck_require__(2613) +const util = __nccwpck_require__(3440) +const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8707) + +let tls // include tls conditionally since it is not always available + +// TODO: session re-use does not wait for the first +// connection to resolve the session and might therefore +// resolve the same servername multiple times even when +// re-use is enabled. + +let SessionCache +// FIXME: remove workaround when the Node bug is fixed +// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 +if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return + } + + const ref = this._sessionCache.get(key) + if (ref !== undefined && ref.deref() === undefined) { + this._sessionCache.delete(key) + } + }) + } + + get (sessionKey) { + const ref = this._sessionCache.get(sessionKey) + return ref ? ref.deref() : null + } + + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + + this._sessionCache.set(sessionKey, new WeakRef(session)) + this._sessionRegistry.register(session, sessionKey) + } + } +} else { + SessionCache = class SimpleSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + } + + get (sessionKey) { + return this._sessionCache.get(sessionKey) + } + + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + + if (this._sessionCache.size >= this._maxCachedSessions) { + // remove the oldest session + const { value: oldestKey } = this._sessionCache.keys().next() + this._sessionCache.delete(oldestKey) + } + + this._sessionCache.set(sessionKey, session) + } + } +} + +function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') + } + + const options = { path: socketPath, ...opts } + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions) + timeout = timeout == null ? 10e3 : timeout + allowH2 = allowH2 != null ? allowH2 : false + return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket + if (protocol === 'https:') { + if (!tls) { + tls = __nccwpck_require__(4756) + } + servername = servername || options.servername || util.getServerName(host) || null + + const sessionKey = servername || hostname + const session = sessionCache.get(sessionKey) || null + + assert(sessionKey) + + socket = tls.connect({ + highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, // upgrade socket connection + port: port || 443, + host: hostname + }) + + socket + .on('session', function (session) { + // TODO (fix): Can a session become invalid once established? Don't think so? + sessionCache.set(sessionKey, session) + }) + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update') + socket = net.connect({ + highWaterMark: 64 * 1024, // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }) + } + + // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay + socket.setKeepAlive(true, keepAliveInitialDelay) + } + + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout) + + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + cancelTimeout() + + if (callback) { + const cb = callback + callback = null + cb(null, this) + } + }) + .on('error', function (err) { + cancelTimeout() + + if (callback) { + const cb = callback + callback = null + cb(err) + } + }) + + return socket + } +} + +function setupTimeout (onConnectTimeout, timeout) { + if (!timeout) { + return () => {} + } + + let s1 = null + let s2 = null + const timeoutId = setTimeout(() => { + // setImmediate is added to make sure that we priotorise socket error events over timeouts + s1 = setImmediate(() => { + if (process.platform === 'win32') { + // Windows needs an extra setImmediate probably due to implementation differences in the socket logic + s2 = setImmediate(() => onConnectTimeout()) + } else { + onConnectTimeout() + } + }) + }, timeout) + return () => { + clearTimeout(timeoutId) + clearImmediate(s1) + clearImmediate(s2) + } +} + +function onConnectTimeout (socket) { + util.destroy(socket, new ConnectTimeoutError()) +} + +module.exports = buildConnector + + +/***/ }), + +/***/ 735: +/***/ ((module) => { + +"use strict"; + + +/** @type {Record} */ +const headerNameLowerCasedRecord = {} + +// https://developer.mozilla.org/docs/Web/HTTP/Headers +const wellknownHeaderNames = [ + 'Accept', + 'Accept-Encoding', + 'Accept-Language', + 'Accept-Ranges', + 'Access-Control-Allow-Credentials', + 'Access-Control-Allow-Headers', + 'Access-Control-Allow-Methods', + 'Access-Control-Allow-Origin', + 'Access-Control-Expose-Headers', + 'Access-Control-Max-Age', + 'Access-Control-Request-Headers', + 'Access-Control-Request-Method', + 'Age', + 'Allow', + 'Alt-Svc', + 'Alt-Used', + 'Authorization', + 'Cache-Control', + 'Clear-Site-Data', + 'Connection', + 'Content-Disposition', + 'Content-Encoding', + 'Content-Language', + 'Content-Length', + 'Content-Location', + 'Content-Range', + 'Content-Security-Policy', + 'Content-Security-Policy-Report-Only', + 'Content-Type', + 'Cookie', + 'Cross-Origin-Embedder-Policy', + 'Cross-Origin-Opener-Policy', + 'Cross-Origin-Resource-Policy', + 'Date', + 'Device-Memory', + 'Downlink', + 'ECT', + 'ETag', + 'Expect', + 'Expect-CT', + 'Expires', + 'Forwarded', + 'From', + 'Host', + 'If-Match', + 'If-Modified-Since', + 'If-None-Match', + 'If-Range', + 'If-Unmodified-Since', + 'Keep-Alive', + 'Last-Modified', + 'Link', + 'Location', + 'Max-Forwards', + 'Origin', + 'Permissions-Policy', + 'Pragma', + 'Proxy-Authenticate', + 'Proxy-Authorization', + 'RTT', + 'Range', + 'Referer', + 'Referrer-Policy', + 'Refresh', + 'Retry-After', + 'Sec-WebSocket-Accept', + 'Sec-WebSocket-Extensions', + 'Sec-WebSocket-Key', + 'Sec-WebSocket-Protocol', + 'Sec-WebSocket-Version', + 'Server', + 'Server-Timing', + 'Service-Worker-Allowed', + 'Service-Worker-Navigation-Preload', + 'Set-Cookie', + 'SourceMap', + 'Strict-Transport-Security', + 'Supports-Loading-Mode', + 'TE', + 'Timing-Allow-Origin', + 'Trailer', + 'Transfer-Encoding', + 'Upgrade', + 'Upgrade-Insecure-Requests', + 'User-Agent', + 'Vary', + 'Via', + 'WWW-Authenticate', + 'X-Content-Type-Options', + 'X-DNS-Prefetch-Control', + 'X-Frame-Options', + 'X-Permitted-Cross-Domain-Policies', + 'X-Powered-By', + 'X-Requested-With', + 'X-XSS-Protection' +] + +for (let i = 0; i < wellknownHeaderNames.length; ++i) { + const key = wellknownHeaderNames[i] + const lowerCasedKey = key.toLowerCase() + headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = + lowerCasedKey +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(headerNameLowerCasedRecord, null) + +module.exports = { + wellknownHeaderNames, + headerNameLowerCasedRecord +} + + +/***/ }), + +/***/ 8707: +/***/ ((module) => { + +"use strict"; + + +class UndiciError extends Error { + constructor (message) { + super(message) + this.name = 'UndiciError' + this.code = 'UND_ERR' + } +} + +class ConnectTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ConnectTimeoutError) + this.name = 'ConnectTimeoutError' + this.message = message || 'Connect Timeout Error' + this.code = 'UND_ERR_CONNECT_TIMEOUT' + } +} + +class HeadersTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersTimeoutError) + this.name = 'HeadersTimeoutError' + this.message = message || 'Headers Timeout Error' + this.code = 'UND_ERR_HEADERS_TIMEOUT' + } +} + +class HeadersOverflowError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersOverflowError) + this.name = 'HeadersOverflowError' + this.message = message || 'Headers Overflow Error' + this.code = 'UND_ERR_HEADERS_OVERFLOW' + } +} + +class BodyTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, BodyTimeoutError) + this.name = 'BodyTimeoutError' + this.message = message || 'Body Timeout Error' + this.code = 'UND_ERR_BODY_TIMEOUT' + } +} + +class ResponseStatusCodeError extends UndiciError { + constructor (message, statusCode, headers, body) { + super(message) + Error.captureStackTrace(this, ResponseStatusCodeError) + this.name = 'ResponseStatusCodeError' + this.message = message || 'Response Status Code Error' + this.code = 'UND_ERR_RESPONSE_STATUS_CODE' + this.body = body + this.status = statusCode + this.statusCode = statusCode + this.headers = headers + } +} + +class InvalidArgumentError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidArgumentError) + this.name = 'InvalidArgumentError' + this.message = message || 'Invalid Argument Error' + this.code = 'UND_ERR_INVALID_ARG' + } +} + +class InvalidReturnValueError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidReturnValueError) + this.name = 'InvalidReturnValueError' + this.message = message || 'Invalid Return Value Error' + this.code = 'UND_ERR_INVALID_RETURN_VALUE' + } +} + +class RequestAbortedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestAbortedError) + this.name = 'AbortError' + this.message = message || 'Request aborted' + this.code = 'UND_ERR_ABORTED' + } +} + +class InformationalError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InformationalError) + this.name = 'InformationalError' + this.message = message || 'Request information' + this.code = 'UND_ERR_INFO' + } +} + +class RequestContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestContentLengthMismatchError) + this.name = 'RequestContentLengthMismatchError' + this.message = message || 'Request body length does not match content-length header' + this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' + } +} + +class ResponseContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseContentLengthMismatchError) + this.name = 'ResponseContentLengthMismatchError' + this.message = message || 'Response body length does not match content-length header' + this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH' + } +} + +class ClientDestroyedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientDestroyedError) + this.name = 'ClientDestroyedError' + this.message = message || 'The client is destroyed' + this.code = 'UND_ERR_DESTROYED' + } +} + +class ClientClosedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientClosedError) + this.name = 'ClientClosedError' + this.message = message || 'The client is closed' + this.code = 'UND_ERR_CLOSED' + } +} + +class SocketError extends UndiciError { + constructor (message, socket) { + super(message) + Error.captureStackTrace(this, SocketError) + this.name = 'SocketError' + this.message = message || 'Socket error' + this.code = 'UND_ERR_SOCKET' + this.socket = socket + } +} + +class NotSupportedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'NotSupportedError' + this.message = message || 'Not supported error' + this.code = 'UND_ERR_NOT_SUPPORTED' + } +} + +class BalancedPoolMissingUpstreamError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'MissingUpstreamError' + this.message = message || 'No upstream has been added to the BalancedPool' + this.code = 'UND_ERR_BPL_MISSING_UPSTREAM' + } +} + +class HTTPParserError extends Error { + constructor (message, code, data) { + super(message) + Error.captureStackTrace(this, HTTPParserError) + this.name = 'HTTPParserError' + this.code = code ? `HPE_${code}` : undefined + this.data = data ? data.toString() : undefined + } +} + +class ResponseExceededMaxSizeError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseExceededMaxSizeError) + this.name = 'ResponseExceededMaxSizeError' + this.message = message || 'Response content exceeded max size' + this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE' + } +} + +class RequestRetryError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message) + Error.captureStackTrace(this, RequestRetryError) + this.name = 'RequestRetryError' + this.message = message || 'Request retry error' + this.code = 'UND_ERR_REQ_RETRY' + this.statusCode = code + this.data = data + this.headers = headers + } +} + +module.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError +} + + +/***/ }), + +/***/ 4655: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + InvalidArgumentError, + NotSupportedError +} = __nccwpck_require__(8707) +const assert = __nccwpck_require__(2613) +const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(6443) +const util = __nccwpck_require__(3440) + +// tokenRegExp and headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js + +/** + * Verifies that the given val is a valid HTTP token + * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + */ +const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/ + +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ + +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +const invalidPathRegex = /[^\u0021-\u00ff]/ + +const kHandler = Symbol('handler') + +const channels = {} + +let extractBody + +try { + const diagnosticsChannel = __nccwpck_require__(1637) + channels.create = diagnosticsChannel.channel('undici:request:create') + channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent') + channels.headers = diagnosticsChannel.channel('undici:request:headers') + channels.trailers = diagnosticsChannel.channel('undici:request:trailers') + channels.error = diagnosticsChannel.channel('undici:request:error') +} catch { + channels.create = { hasSubscribers: false } + channels.bodySent = { hasSubscribers: false } + channels.headers = { hasSubscribers: false } + channels.trailers = { hasSubscribers: false } + channels.error = { hasSubscribers: false } +} + +class Request { + constructor (origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string') + } else if ( + path[0] !== '/' && + !(path.startsWith('http://') || path.startsWith('https://')) && + method !== 'CONNECT' + ) { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash') + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path') + } + + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string') + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method') + } + + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string') + } + + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout') + } + + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout') + } + + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset') + } + + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue') + } + + this.headersTimeout = headersTimeout + + this.bodyTimeout = bodyTimeout + + this.throwOnError = throwOnError === true + + this.method = method + + this.abort = null + + if (body == null) { + this.body = null + } else if (util.isStream(body)) { + this.body = body + + const rState = this.body._readableState + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy () { + util.destroy(this) + } + this.body.on('end', this.endHandler) + } + + this.errorHandler = err => { + if (this.abort) { + this.abort(err) + } else { + this.error = err + } + } + this.body.on('error', this.errorHandler) + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null + } else if (typeof body === 'string') { + this.body = body.length ? Buffer.from(body) : null + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') + } + + this.completed = false + + this.aborted = false + + this.upgrade = upgrade || null + + this.path = query ? util.buildURL(path, query) : path + + this.origin = origin + + this.idempotent = idempotent == null + ? method === 'HEAD' || method === 'GET' + : idempotent + + this.blocking = blocking == null ? false : blocking + + this.reset = reset == null ? null : reset + + this.host = null + + this.contentLength = null + + this.contentType = null + + this.headers = '' + + // Only for H2 + this.expectContinue = expectContinue != null ? expectContinue : false + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(this, key, headers[key]) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } + + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') + } + + if (!extractBody) { + extractBody = (__nccwpck_require__(8923).extractBody) + } + + const [bodyStream, contentType] = extractBody(body) + if (this.contentType == null) { + this.contentType = contentType + this.headers += `content-type: ${contentType}\r\n` + } + this.body = bodyStream.stream + this.contentLength = bodyStream.length + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type + this.headers += `content-type: ${body.type}\r\n` + } + + util.validateHandler(handler, method, upgrade) + + this.servername = util.getServerName(this.host) + + this[kHandler] = handler + + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }) + } + } + + onBodySent (chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk) + } catch (err) { + this.abort(err) + } + } + } + + onRequestSent () { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }) + } + + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent() + } catch (err) { + this.abort(err) + } + } + } + + onConnect (abort) { + assert(!this.aborted) + assert(!this.completed) + + if (this.error) { + abort(this.error) + } else { + this.abort = abort + return this[kHandler].onConnect(abort) + } + } + + onHeaders (statusCode, headers, resume, statusText) { + assert(!this.aborted) + assert(!this.completed) + + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }) + } + + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText) + } catch (err) { + this.abort(err) + } + } + + onData (chunk) { + assert(!this.aborted) + assert(!this.completed) + + try { + return this[kHandler].onData(chunk) + } catch (err) { + this.abort(err) + return false + } + } + + onUpgrade (statusCode, headers, socket) { + assert(!this.aborted) + assert(!this.completed) + + return this[kHandler].onUpgrade(statusCode, headers, socket) + } + + onComplete (trailers) { + this.onFinally() + + assert(!this.aborted) + + this.completed = true + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }) + } + + try { + return this[kHandler].onComplete(trailers) + } catch (err) { + // TODO (fix): This might be a bad idea? + this.onError(err) + } + } + + onError (error) { + this.onFinally() + + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }) + } + + if (this.aborted) { + return + } + this.aborted = true + + return this[kHandler].onError(error) + } + + onFinally () { + if (this.errorHandler) { + this.body.off('error', this.errorHandler) + this.errorHandler = null + } + + if (this.endHandler) { + this.body.off('end', this.endHandler) + this.endHandler = null + } + } + + // TODO: adjust to support H2 + addHeader (key, value) { + processHeader(this, key, value) + return this + } + + static [kHTTP1BuildRequest] (origin, opts, handler) { + // TODO: Migrate header parsing here, to make Requests + // HTTP agnostic + return new Request(origin, opts, handler) + } + + static [kHTTP2BuildRequest] (origin, opts, handler) { + const headers = opts.headers + opts = { ...opts, headers: null } + + const request = new Request(origin, opts, handler) + + request.headers = {} + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request, headers[i], headers[i + 1], true) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(request, key, headers[key], true) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } + + return request + } + + static [kHTTP2CopyHeaders] (raw) { + const rawHeaders = raw.split('\r\n') + const headers = {} + + for (const header of rawHeaders) { + const [key, value] = header.split(': ') + + if (value == null || value.length === 0) continue + + if (headers[key]) headers[key] += `,${value}` + else headers[key] = value + } + + return headers + } +} + +function processHeaderValue (key, val, skipAppend) { + if (val && typeof val === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`) + } + + val = val != null ? `${val}` : '' + + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + + return skipAppend ? val : `${key}: ${val}\r\n` +} + +function processHeader (request, key, val, skipAppend = false) { + if (val && (typeof val === 'object' && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`) + } else if (val === undefined) { + return + } + + if ( + request.host === null && + key.length === 4 && + key.toLowerCase() === 'host' + ) { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + // Consumed by Client + request.host = val + } else if ( + request.contentLength === null && + key.length === 14 && + key.toLowerCase() === 'content-length' + ) { + request.contentLength = parseInt(val, 10) + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header') + } + } else if ( + request.contentType === null && + key.length === 12 && + key.toLowerCase() === 'content-type' + ) { + request.contentType = val + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } else if ( + key.length === 17 && + key.toLowerCase() === 'transfer-encoding' + ) { + throw new InvalidArgumentError('invalid transfer-encoding header') + } else if ( + key.length === 10 && + key.toLowerCase() === 'connection' + ) { + const value = typeof val === 'string' ? val.toLowerCase() : null + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header') + } else if (value === 'close') { + request.reset = true + } + } else if ( + key.length === 10 && + key.toLowerCase() === 'keep-alive' + ) { + throw new InvalidArgumentError('invalid keep-alive header') + } else if ( + key.length === 7 && + key.toLowerCase() === 'upgrade' + ) { + throw new InvalidArgumentError('invalid upgrade header') + } else if ( + key.length === 6 && + key.toLowerCase() === 'expect' + ) { + throw new NotSupportedError('expect header not supported') + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key') + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}` + else request.headers[key] = processHeaderValue(key, val[i], skipAppend) + } else { + request.headers += processHeaderValue(key, val[i]) + } + } + } else { + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } + } +} + +module.exports = Request + + +/***/ }), + +/***/ 6443: +/***/ ((module) => { + +module.exports = { + kClose: Symbol('close'), + kDestroy: Symbol('destroy'), + kDispatch: Symbol('dispatch'), + kUrl: Symbol('url'), + kWriting: Symbol('writing'), + kResuming: Symbol('resuming'), + kQueue: Symbol('queue'), + kConnect: Symbol('connect'), + kConnecting: Symbol('connecting'), + kHeadersList: Symbol('headers list'), + kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: Symbol('keep alive timeout'), + kKeepAlive: Symbol('keep alive'), + kHeadersTimeout: Symbol('headers timeout'), + kBodyTimeout: Symbol('body timeout'), + kServerName: Symbol('server name'), + kLocalAddress: Symbol('local address'), + kHost: Symbol('host'), + kNoRef: Symbol('no ref'), + kBodyUsed: Symbol('used'), + kRunning: Symbol('running'), + kBlocking: Symbol('blocking'), + kPending: Symbol('pending'), + kSize: Symbol('size'), + kBusy: Symbol('busy'), + kQueued: Symbol('queued'), + kFree: Symbol('free'), + kConnected: Symbol('connected'), + kClosed: Symbol('closed'), + kNeedDrain: Symbol('need drain'), + kReset: Symbol('reset'), + kDestroyed: Symbol.for('nodejs.stream.destroyed'), + kMaxHeadersSize: Symbol('max headers size'), + kRunningIdx: Symbol('running index'), + kPendingIdx: Symbol('pending index'), + kError: Symbol('error'), + kClients: Symbol('clients'), + kClient: Symbol('client'), + kParser: Symbol('parser'), + kOnDestroyed: Symbol('destroy callbacks'), + kPipelining: Symbol('pipelining'), + kSocket: Symbol('socket'), + kHostHeader: Symbol('host header'), + kConnector: Symbol('connector'), + kStrictContentLength: Symbol('strict content length'), + kMaxRedirections: Symbol('maxRedirections'), + kMaxRequests: Symbol('maxRequestsPerClient'), + kProxy: Symbol('proxy agent options'), + kCounter: Symbol('socket request counter'), + kInterceptors: Symbol('dispatch interceptors'), + kMaxResponseSize: Symbol('max response size'), + kHTTP2Session: Symbol('http2Session'), + kHTTP2SessionState: Symbol('http2Session state'), + kHTTP2BuildRequest: Symbol('http2 build request'), + kHTTP1BuildRequest: Symbol('http1 build request'), + kHTTP2CopyHeaders: Symbol('http2 copy headers'), + kHTTPConnVersion: Symbol('http connection version'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable') +} + + +/***/ }), + +/***/ 3440: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(2613) +const { kDestroyed, kBodyUsed } = __nccwpck_require__(6443) +const { IncomingMessage } = __nccwpck_require__(8611) +const stream = __nccwpck_require__(2203) +const net = __nccwpck_require__(9278) +const { InvalidArgumentError } = __nccwpck_require__(8707) +const { Blob } = __nccwpck_require__(181) +const nodeUtil = __nccwpck_require__(9023) +const { stringify } = __nccwpck_require__(3480) +const { headerNameLowerCasedRecord } = __nccwpck_require__(735) + +const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) + +function nop () {} + +function isStream (obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function' +} + +// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) +function isBlobLike (object) { + return (Blob && object instanceof Blob) || ( + object && + typeof object === 'object' && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + /^(Blob|File)$/.test(object[Symbol.toStringTag]) + ) +} + +function buildURL (url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".') + } + + const stringified = stringify(queryParams) + + if (stringified) { + url += '?' + stringified + } + + return url +} + +function parseURL (url) { + if (typeof url === 'string') { + url = new URL(url) + + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + return url + } + + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.') + } + + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.') + } + + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.') + } + + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.') + } + + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.') + } + + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.') + } + + const port = url.port != null + ? url.port + : (url.protocol === 'https:' ? 443 : 80) + let origin = url.origin != null + ? url.origin + : `${url.protocol}//${url.hostname}:${port}` + let path = url.path != null + ? url.path + : `${url.pathname || ''}${url.search || ''}` + + if (origin.endsWith('/')) { + origin = origin.substring(0, origin.length - 1) + } + + if (path && !path.startsWith('/')) { + path = `/${path}` + } + // new URL(path, origin) is unsafe when `path` contains an absolute URL + // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: + // If first parameter is a relative URL, second param is required, and will be used as the base URL. + // If first parameter is an absolute URL, a given second param will be ignored. + url = new URL(origin + path) + } + + return url +} + +function parseOrigin (url) { + url = parseURL(url) + + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url') + } + + return url +} + +function getHostname (host) { + if (host[0] === '[') { + const idx = host.indexOf(']') + + assert(idx !== -1) + return host.substring(1, idx) + } + + const idx = host.indexOf(':') + if (idx === -1) return host + + return host.substring(0, idx) +} + +// IP addresses are not valid server names per RFC6066 +// > Currently, the only server names supported are DNS hostnames +function getServerName (host) { + if (!host) { + return null + } + + assert.strictEqual(typeof host, 'string') + + const servername = getHostname(host) + if (net.isIP(servername)) { + return '' + } + + return servername +} + +function deepClone (obj) { + return JSON.parse(JSON.stringify(obj)) +} + +function isAsyncIterable (obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') +} + +function isIterable (obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) +} + +function bodyLength (body) { + if (body == null) { + return 0 + } else if (isStream(body)) { + const state = body._readableState + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) + ? state.length + : null + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null + } else if (isBuffer(body)) { + return body.byteLength + } + + return null +} + +function isDestroyed (stream) { + return !stream || !!(stream.destroyed || stream[kDestroyed]) +} + +function isReadableAborted (stream) { + const state = stream && stream._readableState + return isDestroyed(stream) && state && !state.endEmitted +} + +function destroy (stream, err) { + if (stream == null || !isStream(stream) || isDestroyed(stream)) { + return + } + + if (typeof stream.destroy === 'function') { + if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { + // See: https://github.com/nodejs/node/pull/38505/files + stream.socket = null + } + + stream.destroy(err) + } else if (err) { + process.nextTick((stream, err) => { + stream.emit('error', err) + }, stream, err) + } + + if (stream.destroyed !== true) { + stream[kDestroyed] = true + } +} + +const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/ +function parseKeepAliveTimeout (val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR) + return m ? parseInt(m[1], 10) * 1000 : null +} + +/** + * Retrieves a header name and returns its lowercase value. + * @param {string | Buffer} value Header name + * @returns {string} + */ +function headerNameToString (value) { + return headerNameLowerCasedRecord[value] || value.toLowerCase() +} + +function parseHeaders (headers, obj = {}) { + // For H2 support + if (!Array.isArray(headers)) return headers + + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase() + let val = obj[key] + + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1].map(x => x.toString('utf8')) + } else { + obj[key] = headers[i + 1].toString('utf8') + } + } else { + if (!Array.isArray(val)) { + val = [val] + obj[key] = val + } + val.push(headers[i + 1].toString('utf8')) + } + } + + // See https://github.com/nodejs/node/pull/46528 + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1') + } + + return obj +} + +function parseRawHeaders (headers) { + const ret = [] + let hasContentLength = false + let contentDispositionIdx = -1 + + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString() + const val = headers[n + 1].toString('utf8') + + if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + ret.push(key, val) + hasContentLength = true + } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = ret.push(key, val) - 1 + } else { + ret.push(key, val) + } + } + + // See https://github.com/nodejs/node/pull/46528 + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1') + } + + return ret +} + +function isBuffer (buffer) { + // See, https://github.com/mcollina/undici/pull/319 + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) +} + +function validateHandler (handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method') + } + + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { + throw new InvalidArgumentError('invalid onBodySent method') + } + + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method') + } + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method') + } + + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method') + } + + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method') + } + } +} + +// A body is disturbed if it has been read from and it cannot +// be re-used without losing state or data. +function isDisturbed (body) { + return !!(body && ( + stream.isDisturbed + ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? + : body[kBodyUsed] || + body.readableDidRead || + (body._readableState && body._readableState.dataEmitted) || + isReadableAborted(body) + )) +} + +function isErrored (body) { + return !!(body && ( + stream.isErrored + ? stream.isErrored(body) + : /state: 'errored'/.test(nodeUtil.inspect(body) + ))) +} + +function isReadable (body) { + return !!(body && ( + stream.isReadable + ? stream.isReadable(body) + : /state: 'readable'/.test(nodeUtil.inspect(body) + ))) +} + +function getSocketInfo (socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + } +} + +async function * convertIterableToBuffer (iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) + } +} + +let ReadableStream +function ReadableStreamFrom (iterable) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } + + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)) + } + + let iterator + return new ReadableStream( + { + async start () { + iterator = iterable[Symbol.asyncIterator]() + }, + async pull (controller) { + const { done, value } = await iterator.next() + if (done) { + queueMicrotask(() => { + controller.close() + }) + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value) + controller.enqueue(new Uint8Array(buf)) + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + } + }, + 0 + ) +} + +// The chunk should be a FormData instance and contains +// all the required methods. +function isFormDataLike (object) { + return ( + object && + typeof object === 'object' && + typeof object.append === 'function' && + typeof object.delete === 'function' && + typeof object.get === 'function' && + typeof object.getAll === 'function' && + typeof object.has === 'function' && + typeof object.set === 'function' && + object[Symbol.toStringTag] === 'FormData' + ) +} + +function throwIfAborted (signal) { + if (!signal) { return } + if (typeof signal.throwIfAborted === 'function') { + signal.throwIfAborted() + } else { + if (signal.aborted) { + // DOMException not available < v17.0.0 + const err = new Error('The operation was aborted') + err.name = 'AbortError' + throw err + } + } +} + +function addAbortListener (signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { once: true }) + return () => signal.removeEventListener('abort', listener) + } + signal.addListener('abort', listener) + return () => signal.removeListener('abort', listener) +} + +const hasToWellFormed = !!String.prototype.toWellFormed + +/** + * @param {string} val + */ +function toUSVString (val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed() + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val) + } + + return `${val}` +} + +// Parsed accordingly to RFC 9110 +// https://www.rfc-editor.org/rfc/rfc9110#field.content-range +function parseRangeHeader (range) { + if (range == null || range === '') return { start: 0, end: null, size: null } + + const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } + : null +} + +const kEnumerableProperty = Object.create(null) +kEnumerableProperty.enumerable = true + +module.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + headerNameToString, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + parseRangeHeader, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +} + + +/***/ }), + +/***/ 1: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Dispatcher = __nccwpck_require__(992) +const { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError +} = __nccwpck_require__(8707) +const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(6443) + +const kDestroyed = Symbol('destroyed') +const kClosed = Symbol('closed') +const kOnDestroyed = Symbol('onDestroyed') +const kOnClosed = Symbol('onClosed') +const kInterceptedDispatch = Symbol('Intercepted Dispatch') + +class DispatcherBase extends Dispatcher { + constructor () { + super() + + this[kDestroyed] = false + this[kOnDestroyed] = null + this[kClosed] = false + this[kOnClosed] = [] + } + + get destroyed () { + return this[kDestroyed] + } + + get closed () { + return this[kClosed] + } + + get interceptors () { + return this[kInterceptors] + } + + set interceptors (newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i] + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function') + } + } + } + + this[kInterceptors] = newInterceptors + } + + close (callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)) + return + } + + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + this[kClosed] = true + this[kOnClosed].push(callback) + + const onClosed = () => { + const callbacks = this[kOnClosed] + this[kOnClosed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed) + }) + } + + destroy (err, callback) { + if (typeof err === 'function') { + callback = err + err = null + } + + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.destroy(err, (err, data) => { + return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + if (!err) { + err = new ClientDestroyedError() + } + + this[kDestroyed] = true + this[kOnDestroyed] = this[kOnDestroyed] || [] + this[kOnDestroyed].push(callback) + + const onDestroyed = () => { + const callbacks = this[kOnDestroyed] + this[kOnDestroyed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed) + }) + } + + [kInterceptedDispatch] (opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch] + return this[kDispatch](opts, handler) + } + + let dispatch = this[kDispatch].bind(this) + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch) + } + this[kInterceptedDispatch] = dispatch + return dispatch(opts, handler) + } + + dispatch (opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.') + } + + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError() + } + + if (this[kClosed]) { + throw new ClientClosedError() + } + + return this[kInterceptedDispatch](opts, handler) + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + handler.onError(err) + + return false + } + } +} + +module.exports = DispatcherBase + + +/***/ }), + +/***/ 992: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const EventEmitter = __nccwpck_require__(4434) + +class Dispatcher extends EventEmitter { + dispatch () { + throw new Error('not implemented') + } + + close () { + throw new Error('not implemented') + } + + destroy () { + throw new Error('not implemented') + } +} + +module.exports = Dispatcher + + +/***/ }), + +/***/ 8923: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Busboy = __nccwpck_require__(9581) +const util = __nccwpck_require__(3440) +const { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody +} = __nccwpck_require__(5523) +const { FormData } = __nccwpck_require__(3073) +const { kState } = __nccwpck_require__(9710) +const { webidl } = __nccwpck_require__(4222) +const { DOMException, structuredClone } = __nccwpck_require__(7326) +const { Blob, File: NativeFile } = __nccwpck_require__(181) +const { kBodyUsed } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { isErrored } = __nccwpck_require__(3440) +const { isUint8Array, isArrayBuffer } = __nccwpck_require__(8253) +const { File: UndiciFile } = __nccwpck_require__(3041) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) + +let ReadableStream = globalThis.ReadableStream + +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile +const textEncoder = new TextEncoder() +const textDecoder = new TextDecoder() + +// https://fetch.spec.whatwg.org/#concept-bodyinit-extract +function extractBody (object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } + + // 1. Let stream be null. + let stream = null + + // 2. If object is a ReadableStream object, then set stream to object. + if (object instanceof ReadableStream) { + stream = object + } else if (isBlobLike(object)) { + // 3. Otherwise, if object is a Blob object, set stream to the + // result of running object’s get stream. + stream = object.stream() + } else { + // 4. Otherwise, set stream to a new ReadableStream object, and set + // up stream. + stream = new ReadableStream({ + async pull (controller) { + controller.enqueue( + typeof source === 'string' ? textEncoder.encode(source) : source + ) + queueMicrotask(() => readableStreamClose(controller)) + }, + start () {}, + type: undefined + }) + } + + // 5. Assert: stream is a ReadableStream object. + assert(isReadableStreamLike(stream)) + + // 6. Let action be null. + let action = null + + // 7. Let source be null. + let source = null + + // 8. Let length be null. + let length = null + + // 9. Let type be null. + let type = null + + // 10. Switch on object: + if (typeof object === 'string') { + // Set source to the UTF-8 encoding of object. + // Note: setting source to a Uint8Array here breaks some mocking assumptions. + source = object + + // Set type to `text/plain;charset=UTF-8`. + type = 'text/plain;charset=UTF-8' + } else if (object instanceof URLSearchParams) { + // URLSearchParams + + // spec says to run application/x-www-form-urlencoded on body.list + // this is implemented in Node.js as apart of an URLSearchParams instance toString method + // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 + // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 + + // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. + source = object.toString() + + // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. + type = 'application/x-www-form-urlencoded;charset=UTF-8' + } else if (isArrayBuffer(object)) { + // BufferSource/ArrayBuffer + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.slice()) + } else if (ArrayBuffer.isView(object)) { + // BufferSource/ArrayBufferView + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)) + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}` + const prefix = `--${boundary}\r\nContent-Disposition: form-data` + + /*! formdata-polyfill. MIT License. Jimmy Wärting */ + const escape = (str) => + str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22') + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n') + + // Set action to this step: run the multipart/form-data + // encoding algorithm, with object’s entry list and UTF-8. + // - This ensures that the body is immutable and can't be changed afterwords + // - That the content-length is calculated in advance. + // - And that all parts are pre-encoded and ready to be sent. + + const blobParts = [] + const rn = new Uint8Array([13, 10]) // '\r\n' + length = 0 + let hasUnknownSizeValue = false + + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk = textEncoder.encode(prefix + + `; name="${escape(normalizeLinefeeds(name))}"` + + `\r\n\r\n${normalizeLinefeeds(value)}\r\n`) + blobParts.push(chunk) + length += chunk.byteLength + } else { + const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' + + `Content-Type: ${ + value.type || 'application/octet-stream' + }\r\n\r\n`) + blobParts.push(chunk, value, rn) + if (typeof value.size === 'number') { + length += chunk.byteLength + value.size + rn.byteLength + } else { + hasUnknownSizeValue = true + } + } + } + + const chunk = textEncoder.encode(`--${boundary}--`) + blobParts.push(chunk) + length += chunk.byteLength + if (hasUnknownSizeValue) { + length = null + } + + // Set source to object. + source = object + + action = async function * () { + for (const part of blobParts) { + if (part.stream) { + yield * part.stream() + } else { + yield part + } + } + } + + // Set type to `multipart/form-data; boundary=`, + // followed by the multipart/form-data boundary string generated + // by the multipart/form-data encoding algorithm. + type = 'multipart/form-data; boundary=' + boundary + } else if (isBlobLike(object)) { + // Blob + + // Set source to object. + source = object + + // Set length to object’s size. + length = object.size + + // If object’s type attribute is not the empty byte sequence, set + // type to its value. + if (object.type) { + type = object.type + } + } else if (typeof object[Symbol.asyncIterator] === 'function') { + // If keepalive is true, then throw a TypeError. + if (keepalive) { + throw new TypeError('keepalive') + } + + // If object is disturbed or locked, then throw a TypeError. + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + 'Response body object should not be disturbed or locked' + ) + } + + stream = + object instanceof ReadableStream ? object : ReadableStreamFrom(object) + } + + // 11. If source is a byte sequence, then set action to a + // step that returns source and length to source’s length. + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source) + } + + // 12. If action is non-null, then run these steps in in parallel: + if (action != null) { + // Run action. + let iterator + stream = new ReadableStream({ + async start () { + iterator = action(object)[Symbol.asyncIterator]() + }, + async pull (controller) { + const { value, done } = await iterator.next() + if (done) { + // When running action is done, close stream. + queueMicrotask(() => { + controller.close() + }) + } else { + // Whenever one or more bytes are available and stream is not errored, + // enqueue a Uint8Array wrapping an ArrayBuffer containing the available + // bytes into stream. + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)) + } + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + }, + type: undefined + }) + } + + // 13. Let body be a body whose stream is stream, source is source, + // and length is length. + const body = { stream, source, length } + + // 14. Return (body, type). + return [body, type] +} + +// https://fetch.spec.whatwg.org/#bodyinit-safely-extract +function safelyExtractBody (object, keepalive = false) { + if (!ReadableStream) { + // istanbul ignore next + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } + + // To safely extract a body and a `Content-Type` value from + // a byte sequence or BodyInit object object, run these steps: + + // 1. If object is a ReadableStream object, then: + if (object instanceof ReadableStream) { + // Assert: object is neither disturbed nor locked. + // istanbul ignore next + assert(!util.isDisturbed(object), 'The body has already been consumed.') + // istanbul ignore next + assert(!object.locked, 'The stream is locked.') + } + + // 2. Return the results of extracting object. + return extractBody(object, keepalive) +} + +function cloneBody (body) { + // To clone a body body, run these steps: + + // https://fetch.spec.whatwg.org/#concept-body-clone + + // 1. Let « out1, out2 » be the result of teeing body’s stream. + const [out1, out2] = body.stream.tee() + const out2Clone = structuredClone(out2, { transfer: [out2] }) + // This, for whatever reasons, unrefs out2Clone which allows + // the process to exit by itself. + const [, finalClone] = out2Clone.tee() + + // 2. Set body’s stream to out1. + body.stream = out1 + + // 3. Return a body whose stream is out2 and other members are copied from body. + return { + stream: finalClone, + length: body.length, + source: body.source + } +} + +async function * consumeBody (body) { + if (body) { + if (isUint8Array(body)) { + yield body + } else { + const stream = body.stream + + if (util.isDisturbed(stream)) { + throw new TypeError('The body has already been consumed.') + } + + if (stream.locked) { + throw new TypeError('The stream is locked.') + } + + // Compat. + stream[kBodyUsed] = true + + yield * stream + } + } +} + +function throwIfAborted (state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError') + } +} + +function bodyMixinMethods (instance) { + const methods = { + blob () { + // The blob() method steps are to return the result of + // running consume body with this and the following step + // given a byte sequence bytes: return a Blob whose + // contents are bytes and whose type attribute is this’s + // MIME type. + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this) + + if (mimeType === 'failure') { + mimeType = '' + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType) + } + + // Return a Blob whose contents are bytes and type attribute + // is mimeType. + return new Blob([bytes], { type: mimeType }) + }, instance) + }, + + arrayBuffer () { + // The arrayBuffer() method steps are to return the result + // of running consume body with this and the following step + // given a byte sequence bytes: return a new ArrayBuffer + // whose contents are bytes. + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer + }, instance) + }, + + text () { + // The text() method steps are to return the result of running + // consume body with this and UTF-8 decode. + return specConsumeBody(this, utf8DecodeBytes, instance) + }, + + json () { + // The json() method steps are to return the result of running + // consume body with this and parse JSON from bytes. + return specConsumeBody(this, parseJSONFromBytes, instance) + }, + + async formData () { + webidl.brandCheck(this, instance) + + throwIfAborted(this[kState]) + + const contentType = this.headers.get('Content-Type') + + // If mimeType’s essence is "multipart/form-data", then: + if (/multipart\/form-data/.test(contentType)) { + const headers = {} + for (const [key, value] of this.headers) headers[key.toLowerCase()] = value + + const responseFormData = new FormData() + + let busboy + + try { + busboy = new Busboy({ + headers, + preservePath: true + }) + } catch (err) { + throw new DOMException(`${err}`, 'AbortError') + } + + busboy.on('field', (name, value) => { + responseFormData.append(name, value) + }) + busboy.on('file', (name, value, filename, encoding, mimeType) => { + const chunks = [] + + if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { + let base64chunk = '' + + value.on('data', (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, '') + + const end = base64chunk.length - base64chunk.length % 4 + chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')) + + base64chunk = base64chunk.slice(end) + }) + value.on('end', () => { + chunks.push(Buffer.from(base64chunk, 'base64')) + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } else { + value.on('data', (chunk) => { + chunks.push(chunk) + }) + value.on('end', () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } + }) + + const busboyResolve = new Promise((resolve, reject) => { + busboy.on('finish', resolve) + busboy.on('error', (err) => reject(new TypeError(err))) + }) + + if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk) + busboy.end() + await busboyResolve + + return responseFormData + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: + + // 1. Let entries be the result of parsing bytes. + let entries + try { + let text = '' + // application/x-www-form-urlencoded parser will keep the BOM. + // https://url.spec.whatwg.org/#concept-urlencoded-parser + // Note that streaming decoder is stateful and cannot be reused + const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }) + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') + } + text += streamingDecoder.decode(chunk, { stream: true }) + } + text += streamingDecoder.decode() + entries = new URLSearchParams(text) + } catch (err) { + // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. + // 2. If entries is failure, then throw a TypeError. + throw Object.assign(new TypeError(), { cause: err }) + } + + // 3. Return a new FormData object whose entries are entries. + const formData = new FormData() + for (const [name, value] of entries) { + formData.append(name, value) + } + return formData + } else { + // Wait a tick before checking if the request has been aborted. + // Otherwise, a TypeError can be thrown when an AbortError should. + await Promise.resolve() + + throwIfAborted(this[kState]) + + // Otherwise, throw a TypeError. + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: 'Could not parse content as FormData.' + }) + } + } + } + + return methods +} + +function mixinBody (prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-consume-body + * @param {Response|Request} object + * @param {(value: unknown) => unknown} convertBytesToJSValue + * @param {Response|Request} instance + */ +async function specConsumeBody (object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance) + + throwIfAborted(object[kState]) + + // 1. If object is unusable, then return a promise rejected + // with a TypeError. + if (bodyUnusable(object[kState].body)) { + throw new TypeError('Body is unusable') + } + + // 2. Let promise be a new promise. + const promise = createDeferredPromise() + + // 3. Let errorSteps given error be to reject promise with error. + const errorSteps = (error) => promise.reject(error) + + // 4. Let successSteps given a byte sequence data be to resolve + // promise with the result of running convertBytesToJSValue + // with data. If that threw an exception, then run errorSteps + // with that exception. + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)) + } catch (e) { + errorSteps(e) + } + } + + // 5. If object’s body is null, then run successSteps with an + // empty byte sequence. + if (object[kState].body == null) { + successSteps(new Uint8Array()) + return promise.promise + } + + // 6. Otherwise, fully read object’s body given successSteps, + // errorSteps, and object’s relevant global object. + await fullyReadBody(object[kState].body, successSteps, errorSteps) + + // 7. Return promise. + return promise.promise +} + +// https://fetch.spec.whatwg.org/#body-unusable +function bodyUnusable (body) { + // An object including the Body interface mixin is + // said to be unusable if its body is non-null and + // its body’s stream is disturbed or locked. + return body != null && (body.stream.locked || util.isDisturbed(body.stream)) +} + +/** + * @see https://encoding.spec.whatwg.org/#utf-8-decode + * @param {Buffer} buffer + */ +function utf8DecodeBytes (buffer) { + if (buffer.length === 0) { + return '' + } + + // 1. Let buffer be the result of peeking three bytes from + // ioQueue, converted to a byte sequence. + + // 2. If buffer is 0xEF 0xBB 0xBF, then read three + // bytes from ioQueue. (Do nothing with those bytes.) + if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + buffer = buffer.subarray(3) + } + + // 3. Process a queue with an instance of UTF-8’s + // decoder, ioQueue, output, and "replacement". + const output = textDecoder.decode(buffer) + + // 4. Return output. + return output +} + +/** + * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value + * @param {Uint8Array} bytes + */ +function parseJSONFromBytes (bytes) { + return JSON.parse(utf8DecodeBytes(bytes)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-mime-type + * @param {import('./response').Response|import('./request').Request} object + */ +function bodyMimeType (object) { + const { headersList } = object[kState] + const contentType = headersList.get('content-type') + + if (contentType === null) { + return 'failure' + } + + return parseMIMEType(contentType) +} + +module.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody +} + + +/***/ }), + +/***/ 7326: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(8167) + +const corsSafeListedMethods = ['GET', 'HEAD', 'POST'] +const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) + +const nullBodyStatus = [101, 204, 205, 304] + +const redirectStatus = [301, 302, 303, 307, 308] +const redirectStatusSet = new Set(redirectStatus) + +// https://fetch.spec.whatwg.org/#block-bad-port +const badPorts = [ + '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', + '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', + '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', + '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', + '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', + '10080' +] + +const badPortsSet = new Set(badPorts) + +// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies +const referrerPolicy = [ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' +] +const referrerPolicySet = new Set(referrerPolicy) + +const requestRedirect = ['follow', 'manual', 'error'] + +const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +const safeMethodsSet = new Set(safeMethods) + +const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors'] + +const requestCredentials = ['omit', 'same-origin', 'include'] + +const requestCache = [ + 'default', + 'no-store', + 'reload', + 'no-cache', + 'force-cache', + 'only-if-cached' +] + +// https://fetch.spec.whatwg.org/#request-body-header-name +const requestBodyHeader = [ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' +] + +// https://fetch.spec.whatwg.org/#enumdef-requestduplex +const requestDuplex = [ + 'half' +] + +// http://fetch.spec.whatwg.org/#forbidden-method +const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK'] +const forbiddenMethodsSet = new Set(forbiddenMethods) + +const subresource = [ + 'audio', + 'audioworklet', + 'font', + 'image', + 'manifest', + 'paintworklet', + 'script', + 'style', + 'track', + 'video', + 'xslt', + '' +] +const subresourceSet = new Set(subresource) + +/** @type {globalThis['DOMException']} */ +const DOMException = globalThis.DOMException ?? (() => { + // DOMException was only made a global in Node v17.0.0, + // but fetch supports >= v16.8. + try { + atob('~') + } catch (err) { + return Object.getPrototypeOf(err).constructor + } +})() + +let channel + +/** @type {globalThis['structuredClone']} */ +const structuredClone = + globalThis.structuredClone ?? + // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone (value, options = undefined) { + if (arguments.length === 0) { + throw new TypeError('missing argument') + } + + if (!channel) { + channel = new MessageChannel() + } + channel.port1.unref() + channel.port2.unref() + channel.port1.postMessage(value, options?.transfer) + return receiveMessageOnPort(channel.port2).message + } + +module.exports = { + DOMException, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet +} + + +/***/ }), + +/***/ 4322: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(2613) +const { atob } = __nccwpck_require__(181) +const { isomorphicDecode } = __nccwpck_require__(5523) + +const encoder = new TextEncoder() + +/** + * @see https://mimesniff.spec.whatwg.org/#http-token-code-point + */ +const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/ +const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line +/** + * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + */ +const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line + +// https://fetch.spec.whatwg.org/#data-url-processor +/** @param {URL} dataURL */ +function dataURLProcessor (dataURL) { + // 1. Assert: dataURL’s scheme is "data". + assert(dataURL.protocol === 'data:') + + // 2. Let input be the result of running the URL + // serializer on dataURL with exclude fragment + // set to true. + let input = URLSerializer(dataURL, true) + + // 3. Remove the leading "data:" string from input. + input = input.slice(5) + + // 4. Let position point at the start of input. + const position = { position: 0 } + + // 5. Let mimeType be the result of collecting a + // sequence of code points that are not equal + // to U+002C (,), given position. + let mimeType = collectASequenceOfCodePointsFast( + ',', + input, + position + ) + + // 6. Strip leading and trailing ASCII whitespace + // from mimeType. + // Undici implementation note: we need to store the + // length because if the mimetype has spaces removed, + // the wrong amount will be sliced from the input in + // step #9 + const mimeTypeLength = mimeType.length + mimeType = removeASCIIWhitespace(mimeType, true, true) + + // 7. If position is past the end of input, then + // return failure + if (position.position >= input.length) { + return 'failure' + } + + // 8. Advance position by 1. + position.position++ + + // 9. Let encodedBody be the remainder of input. + const encodedBody = input.slice(mimeTypeLength + 1) + + // 10. Let body be the percent-decoding of encodedBody. + let body = stringPercentDecode(encodedBody) + + // 11. If mimeType ends with U+003B (;), followed by + // zero or more U+0020 SPACE, followed by an ASCII + // case-insensitive match for "base64", then: + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + // 1. Let stringBody be the isomorphic decode of body. + const stringBody = isomorphicDecode(body) + + // 2. Set body to the forgiving-base64 decode of + // stringBody. + body = forgivingBase64(stringBody) + + // 3. If body is failure, then return failure. + if (body === 'failure') { + return 'failure' + } + + // 4. Remove the last 6 code points from mimeType. + mimeType = mimeType.slice(0, -6) + + // 5. Remove trailing U+0020 SPACE code points from mimeType, + // if any. + mimeType = mimeType.replace(/(\u0020)+$/, '') + + // 6. Remove the last U+003B (;) code point from mimeType. + mimeType = mimeType.slice(0, -1) + } + + // 12. If mimeType starts with U+003B (;), then prepend + // "text/plain" to mimeType. + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType + } + + // 13. Let mimeTypeRecord be the result of parsing + // mimeType. + let mimeTypeRecord = parseMIMEType(mimeType) + + // 14. If mimeTypeRecord is failure, then set + // mimeTypeRecord to text/plain;charset=US-ASCII. + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII') + } + + // 15. Return a new data: URL struct whose MIME + // type is mimeTypeRecord and body is body. + // https://fetch.spec.whatwg.org/#data-url-struct + return { mimeType: mimeTypeRecord, body } +} + +// https://url.spec.whatwg.org/#concept-url-serializer +/** + * @param {URL} url + * @param {boolean} excludeFragment + */ +function URLSerializer (url, excludeFragment = false) { + if (!excludeFragment) { + return url.href + } + + const href = url.href + const hashLength = url.hash.length + + return hashLength === 0 ? href : href.substring(0, href.length - hashLength) +} + +// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/** + * @param {(char: string) => boolean} condition + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePoints (condition, input, position) { + // 1. Let result be the empty string. + let result = '' + + // 2. While position doesn’t point past the end of input and the + // code point at position within input meets the condition condition: + while (position.position < input.length && condition(input[position.position])) { + // 1. Append that code point to the end of result. + result += input[position.position] + + // 2. Advance position by 1. + position.position++ + } + + // 3. Return result. + return result +} + +/** + * A faster collectASequenceOfCodePoints that only works when comparing a single character. + * @param {string} char + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePointsFast (char, input, position) { + const idx = input.indexOf(char, position.position) + const start = position.position + + if (idx === -1) { + position.position = input.length + return input.slice(start) + } + + position.position = idx + return input.slice(start, position.position) +} + +// https://url.spec.whatwg.org/#string-percent-decode +/** @param {string} input */ +function stringPercentDecode (input) { + // 1. Let bytes be the UTF-8 encoding of input. + const bytes = encoder.encode(input) + + // 2. Return the percent-decoding of bytes. + return percentDecode(bytes) +} + +// https://url.spec.whatwg.org/#percent-decode +/** @param {Uint8Array} input */ +function percentDecode (input) { + // 1. Let output be an empty byte sequence. + /** @type {number[]} */ + const output = [] + + // 2. For each byte byte in input: + for (let i = 0; i < input.length; i++) { + const byte = input[i] + + // 1. If byte is not 0x25 (%), then append byte to output. + if (byte !== 0x25) { + output.push(byte) + + // 2. Otherwise, if byte is 0x25 (%) and the next two bytes + // after byte in input are not in the ranges + // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), + // and 0x61 (a) to 0x66 (f), all inclusive, append byte + // to output. + } else if ( + byte === 0x25 && + !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) + ) { + output.push(0x25) + + // 3. Otherwise: + } else { + // 1. Let bytePoint be the two bytes after byte in input, + // decoded, and then interpreted as hexadecimal number. + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]) + const bytePoint = Number.parseInt(nextTwoBytes, 16) + + // 2. Append a byte whose value is bytePoint to output. + output.push(bytePoint) + + // 3. Skip the next two bytes in input. + i += 2 + } + } + + // 3. Return output. + return Uint8Array.from(output) +} + +// https://mimesniff.spec.whatwg.org/#parse-a-mime-type +/** @param {string} input */ +function parseMIMEType (input) { + // 1. Remove any leading and trailing HTTP whitespace + // from input. + input = removeHTTPWhitespace(input, true, true) + + // 2. Let position be a position variable for input, + // initially pointing at the start of input. + const position = { position: 0 } + + // 3. Let type be the result of collecting a sequence + // of code points that are not U+002F (/) from + // input, given position. + const type = collectASequenceOfCodePointsFast( + '/', + input, + position + ) + + // 4. If type is the empty string or does not solely + // contain HTTP token code points, then return failure. + // https://mimesniff.spec.whatwg.org/#http-token-code-point + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure' + } + + // 5. If position is past the end of input, then return + // failure + if (position.position > input.length) { + return 'failure' + } + + // 6. Advance position by 1. (This skips past U+002F (/).) + position.position++ + + // 7. Let subtype be the result of collecting a sequence of + // code points that are not U+003B (;) from input, given + // position. + let subtype = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 8. Remove any trailing HTTP whitespace from subtype. + subtype = removeHTTPWhitespace(subtype, false, true) + + // 9. If subtype is the empty string or does not solely + // contain HTTP token code points, then return failure. + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure' + } + + const typeLowercase = type.toLowerCase() + const subtypeLowercase = subtype.toLowerCase() + + // 10. Let mimeType be a new MIME type record whose type + // is type, in ASCII lowercase, and subtype is subtype, + // in ASCII lowercase. + // https://mimesniff.spec.whatwg.org/#mime-type + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + } + + // 11. While position is not past the end of input: + while (position.position < input.length) { + // 1. Advance position by 1. (This skips past U+003B (;).) + position.position++ + + // 2. Collect a sequence of code points that are HTTP + // whitespace from input given position. + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + char => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ) + + // 3. Let parameterName be the result of collecting a + // sequence of code points that are not U+003B (;) + // or U+003D (=) from input, given position. + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ';' && char !== '=', + input, + position + ) + + // 4. Set parameterName to parameterName, in ASCII + // lowercase. + parameterName = parameterName.toLowerCase() + + // 5. If position is not past the end of input, then: + if (position.position < input.length) { + // 1. If the code point at position within input is + // U+003B (;), then continue. + if (input[position.position] === ';') { + continue + } + + // 2. Advance position by 1. (This skips past U+003D (=).) + position.position++ + } + + // 6. If position is past the end of input, then break. + if (position.position > input.length) { + break + } + + // 7. Let parameterValue be null. + let parameterValue = null + + // 8. If the code point at position within input is + // U+0022 ("), then: + if (input[position.position] === '"') { + // 1. Set parameterValue to the result of collecting + // an HTTP quoted string from input, given position + // and the extract-value flag. + parameterValue = collectAnHTTPQuotedString(input, position, true) + + // 2. Collect a sequence of code points that are not + // U+003B (;) from input, given position. + collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 9. Otherwise: + } else { + // 1. Set parameterValue to the result of collecting + // a sequence of code points that are not U+003B (;) + // from input, given position. + parameterValue = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 2. Remove any trailing HTTP whitespace from parameterValue. + parameterValue = removeHTTPWhitespace(parameterValue, false, true) + + // 3. If parameterValue is the empty string, then continue. + if (parameterValue.length === 0) { + continue + } + } + + // 10. If all of the following are true + // - parameterName is not the empty string + // - parameterName solely contains HTTP token code points + // - parameterValue solely contains HTTP quoted-string token code points + // - mimeType’s parameters[parameterName] does not exist + // then set mimeType’s parameters[parameterName] to parameterValue. + if ( + parameterName.length !== 0 && + HTTP_TOKEN_CODEPOINTS.test(parameterName) && + (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && + !mimeType.parameters.has(parameterName) + ) { + mimeType.parameters.set(parameterName, parameterValue) + } + } + + // 12. Return mimeType. + return mimeType +} + +// https://infra.spec.whatwg.org/#forgiving-base64-decode +/** @param {string} data */ +function forgivingBase64 (data) { + // 1. Remove all ASCII whitespace from data. + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '') // eslint-disable-line + + // 2. If data’s code point length divides by 4 leaving + // no remainder, then: + if (data.length % 4 === 0) { + // 1. If data ends with one or two U+003D (=) code points, + // then remove them from data. + data = data.replace(/=?=$/, '') + } + + // 3. If data’s code point length divides by 4 leaving + // a remainder of 1, then return failure. + if (data.length % 4 === 1) { + return 'failure' + } + + // 4. If data contains a code point that is not one of + // U+002B (+) + // U+002F (/) + // ASCII alphanumeric + // then return failure. + if (/[^+/0-9A-Za-z]/.test(data)) { + return 'failure' + } + + const binary = atob(data) + const bytes = new Uint8Array(binary.length) + + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte) + } + + return bytes +} + +// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string +// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string +/** + * @param {string} input + * @param {{ position: number }} position + * @param {boolean?} extractValue + */ +function collectAnHTTPQuotedString (input, position, extractValue) { + // 1. Let positionStart be position. + const positionStart = position.position + + // 2. Let value be the empty string. + let value = '' + + // 3. Assert: the code point at position within input + // is U+0022 ("). + assert(input[position.position] === '"') + + // 4. Advance position by 1. + position.position++ + + // 5. While true: + while (true) { + // 1. Append the result of collecting a sequence of code points + // that are not U+0022 (") or U+005C (\) from input, given + // position, to value. + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== '\\', + input, + position + ) + + // 2. If position is past the end of input, then break. + if (position.position >= input.length) { + break + } + + // 3. Let quoteOrBackslash be the code point at position within + // input. + const quoteOrBackslash = input[position.position] + + // 4. Advance position by 1. + position.position++ + + // 5. If quoteOrBackslash is U+005C (\), then: + if (quoteOrBackslash === '\\') { + // 1. If position is past the end of input, then append + // U+005C (\) to value and break. + if (position.position >= input.length) { + value += '\\' + break + } + + // 2. Append the code point at position within input to value. + value += input[position.position] + + // 3. Advance position by 1. + position.position++ + + // 6. Otherwise: + } else { + // 1. Assert: quoteOrBackslash is U+0022 ("). + assert(quoteOrBackslash === '"') + + // 2. Break. + break + } + } + + // 6. If the extract-value flag is set, then return value. + if (extractValue) { + return value + } + + // 7. Return the code points from positionStart to position, + // inclusive, within input. + return input.slice(positionStart, position.position) +} + +/** + * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + */ +function serializeAMimeType (mimeType) { + assert(mimeType !== 'failure') + const { parameters, essence } = mimeType + + // 1. Let serialization be the concatenation of mimeType’s + // type, U+002F (/), and mimeType’s subtype. + let serialization = essence + + // 2. For each name → value of mimeType’s parameters: + for (let [name, value] of parameters.entries()) { + // 1. Append U+003B (;) to serialization. + serialization += ';' + + // 2. Append name to serialization. + serialization += name + + // 3. Append U+003D (=) to serialization. + serialization += '=' + + // 4. If value does not solely contain HTTP token code + // points or value is the empty string, then: + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + // 1. Precede each occurence of U+0022 (") or + // U+005C (\) in value with U+005C (\). + value = value.replace(/(\\|")/g, '\\$1') + + // 2. Prepend U+0022 (") to value. + value = '"' + value + + // 3. Append U+0022 (") to value. + value += '"' + } + + // 5. Append value to serialization. + serialization += value + } + + // 3. Return serialization. + return serialization +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} char + */ +function isHTTPWhiteSpace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === ' ' +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} str + */ +function removeHTTPWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); + } + + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); + } + + return str.slice(lead, trail + 1) +} + +/** + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * @param {string} char + */ +function isASCIIWhitespace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' ' +} + +/** + * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace + */ +function removeASCIIWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); + } + + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); + } + + return str.slice(lead, trail + 1) +} + +module.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType +} + + +/***/ }), + +/***/ 3041: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Blob, File: NativeFile } = __nccwpck_require__(181) +const { types } = __nccwpck_require__(9023) +const { kState } = __nccwpck_require__(9710) +const { isBlobLike } = __nccwpck_require__(5523) +const { webidl } = __nccwpck_require__(4222) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const encoder = new TextEncoder() + +class File extends Blob { + constructor (fileBits, fileName, options = {}) { + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }) + + fileBits = webidl.converters['sequence'](fileBits) + fileName = webidl.converters.USVString(fileName) + options = webidl.converters.FilePropertyBag(options) + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + // Note: Blob handles this for us + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // 2. Convert every character in t to ASCII lowercase. + let t = options.type + let d + + // eslint-disable-next-line no-labels + substep: { + if (t) { + t = parseMIMEType(t) + + if (t === 'failure') { + t = '' + // eslint-disable-next-line no-labels + break substep + } + + t = serializeAMimeType(t).toLowerCase() + } + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + d = options.lastModified + } + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + super(processBlobParts(fileBits, options), { type: t }) + this[kState] = { + name: n, + lastModified: d, + type: t + } + } + + get name () { + webidl.brandCheck(this, File) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, File) + + return this[kState].lastModified + } + + get type () { + webidl.brandCheck(this, File) + + return this[kState].type + } +} + +class FileLike { + constructor (blobLike, fileName, options = {}) { + // TODO: argument idl type check + + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // TODO + const t = options.type + + // 2. Convert every character in t to ASCII lowercase. + // TODO + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + const d = options.lastModified ?? Date.now() + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + } + } + + stream (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.stream(...args) + } + + arrayBuffer (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.arrayBuffer(...args) + } + + slice (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.slice(...args) + } + + text (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.text(...args) + } + + get size () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.size + } + + get type () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.type + } + + get name () { + webidl.brandCheck(this, FileLike) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, FileLike) + + return this[kState].lastModified + } + + get [Symbol.toStringTag] () { + return 'File' + } +} + +Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: 'File', + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty +}) + +webidl.converters.Blob = webidl.interfaceConverter(Blob) + +webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if ( + ArrayBuffer.isView(V) || + types.isAnyArrayBuffer(V) + ) { + return webidl.converters.BufferSource(V, opts) + } + } + + return webidl.converters.USVString(V, opts) +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.BlobPart +) + +// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag +webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue () { + return Date.now() + } + }, + { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'endings', + converter: (value) => { + value = webidl.converters.DOMString(value) + value = value.toLowerCase() + + if (value !== 'native') { + value = 'transparent' + } + + return value + }, + defaultValue: 'transparent' + } +]) + +/** + * @see https://www.w3.org/TR/FileAPI/#process-blob-parts + * @param {(NodeJS.TypedArray|Blob|string)[]} parts + * @param {{ type: string, endings: string }} options + */ +function processBlobParts (parts, options) { + // 1. Let bytes be an empty sequence of bytes. + /** @type {NodeJS.TypedArray[]} */ + const bytes = [] + + // 2. For each element in parts: + for (const element of parts) { + // 1. If element is a USVString, run the following substeps: + if (typeof element === 'string') { + // 1. Let s be element. + let s = element + + // 2. If the endings member of options is "native", set s + // to the result of converting line endings to native + // of element. + if (options.endings === 'native') { + s = convertLineEndingsNative(s) + } + + // 3. Append the result of UTF-8 encoding s to bytes. + bytes.push(encoder.encode(s)) + } else if ( + types.isAnyArrayBuffer(element) || + types.isTypedArray(element) + ) { + // 2. If element is a BufferSource, get a copy of the + // bytes held by the buffer source, and append those + // bytes to bytes. + if (!element.buffer) { // ArrayBuffer + bytes.push(new Uint8Array(element)) + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ) + } + } else if (isBlobLike(element)) { + // 3. If element is a Blob, append the bytes it represents + // to bytes. + bytes.push(element) + } + } + + // 3. Return bytes. + return bytes +} + +/** + * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native + * @param {string} s + */ +function convertLineEndingsNative (s) { + // 1. Let native line ending be be the code point U+000A LF. + let nativeLineEnding = '\n' + + // 2. If the underlying platform’s conventions are to + // represent newlines as a carriage return and line feed + // sequence, set native line ending to the code point + // U+000D CR followed by the code point U+000A LF. + if (process.platform === 'win32') { + nativeLineEnding = '\r\n' + } + + return s.replace(/\r?\n/g, nativeLineEnding) +} + +// If this function is moved to ./util.js, some tools (such as +// rollup) will warn about circular dependencies. See: +// https://github.com/nodejs/undici/issues/1629 +function isFileLike (object) { + return ( + (NativeFile && object instanceof NativeFile) || + object instanceof File || ( + object && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File' + ) + ) +} + +module.exports = { File, FileLike, isFileLike } + + +/***/ }), + +/***/ 3073: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(5523) +const { kState } = __nccwpck_require__(9710) +const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(3041) +const { webidl } = __nccwpck_require__(4222) +const { Blob, File: NativeFile } = __nccwpck_require__(181) + +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile + +// https://xhr.spec.whatwg.org/#formdata +class FormData { + constructor (form) { + if (form !== undefined) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }) + } + + this[kState] = [] + } + + append (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? webidl.converters.USVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with + // name, value, and filename if given. + const entry = makeEntry(name, value, filename) + + // 3. Append entry to this’s entry list. + this[kState].push(entry) + } + + delete (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }) + + name = webidl.converters.USVString(name) + + // The delete(name) method steps are to remove all entries whose name + // is name from this’s entry list. + this[kState] = this[kState].filter(entry => entry.name !== name) + } + + get (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }) + + name = webidl.converters.USVString(name) + + // 1. If there is no entry whose name is name in this’s entry list, + // then return null. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx === -1) { + return null + } + + // 2. Return the value of the first entry whose name is name from + // this’s entry list. + return this[kState][idx].value + } + + getAll (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }) + + name = webidl.converters.USVString(name) + + // 1. If there is no entry whose name is name in this’s entry list, + // then return the empty list. + // 2. Return the values of all entries whose name is name, in order, + // from this’s entry list. + return this[kState] + .filter((entry) => entry.name === name) + .map((entry) => entry.value) + } + + has (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }) + + name = webidl.converters.USVString(name) + + // The has(name) method steps are to return true if there is an entry + // whose name is name in this’s entry list; otherwise false. + return this[kState].findIndex((entry) => entry.name === name) !== -1 + } + + set (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // The set(name, value) and set(name, blobValue, filename) method steps + // are: + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? toUSVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with name, value, and + // filename if given. + const entry = makeEntry(name, value, filename) + + // 3. If there are entries in this’s entry list whose name is name, then + // replace the first such entry with entry and remove the others. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) + ] + } else { + // 4. Otherwise, append entry to this’s entry list. + this[kState].push(entry) + } + } + + entries () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key+value' + ) + } + + keys () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key' + ) + } + + values () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'value' + ) + } + + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }) + + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } +} + +FormData.prototype[Symbol.iterator] = FormData.prototype.entries + +Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true + } +}) + +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ +function makeEntry (name, value, filename) { + // 1. Set name to the result of converting name into a scalar value string. + // "To convert a string into a scalar value string, replace any surrogates + // with U+FFFD." + // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end + name = Buffer.from(name).toString('utf8') + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8') + } else { + // 3. Otherwise: + + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }) + } + + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + /** @type {FilePropertyBag} */ + const options = { + type: value.type, + lastModified: value.lastModified + } + + value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile + ? new File([value], filename, options) + : new FileLike(value, filename, options) + } + } + + // 4. Return an entry whose name is name and whose value is value. + return { name, value } +} + +module.exports = { FormData } + + +/***/ }), + +/***/ 5628: +/***/ ((module) => { + +"use strict"; + + +// In case of breaking changes, increase the version +// number to avoid conflicts. +const globalOrigin = Symbol.for('undici.globalOrigin.1') + +function getGlobalOrigin () { + return globalThis[globalOrigin] +} + +function setGlobalOrigin (newOrigin) { + if (newOrigin === undefined) { + Object.defineProperty(globalThis, globalOrigin, { + value: undefined, + writable: true, + enumerable: false, + configurable: false + }) + + return + } + + const parsedURL = new URL(newOrigin) + + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`) + } + + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }) +} + +module.exports = { + getGlobalOrigin, + setGlobalOrigin +} + + +/***/ }), + +/***/ 6349: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +const { kHeadersList, kConstruct } = __nccwpck_require__(6443) +const { kGuard } = __nccwpck_require__(9710) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const { + makeIterator, + isValidHeaderName, + isValidHeaderValue +} = __nccwpck_require__(5523) +const { webidl } = __nccwpck_require__(4222) +const assert = __nccwpck_require__(2613) + +const kHeadersMap = Symbol('headers map') +const kHeadersSortedMap = Symbol('headers map sorted') + +/** + * @param {number} code + */ +function isHTTPWhiteSpaceCharCode (code) { + return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020 +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize (potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + let i = 0; let j = potentialValue.length + + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i + + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j) +} + +function fill (headers, object) { + // To fill a Headers object headers with a given object object, run these steps: + + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i] + // 1. If header does not contain exactly two items, then throw a TypeError. + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }) + } + + // 2. Append (header’s first item, header’s second item) to headers. + appendHeader(headers, header[0], header[1]) + } + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw + + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + const keys = Object.keys(object) + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]) + } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) + } +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-headers-append + */ +function appendHeader (headers, name, value) { + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }) + } + + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // Note: undici does not implement forbidden header names + if (headers[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (headers[kGuard] === 'request-no-cors') { + // 5. Otherwise, if headers’s guard is "request-no-cors": + // TODO + } + + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. + + // 7. Append (name, value) to headers’s header list. + return headers[kHeadersList].append(name, value) + + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers +} + +class HeadersList { + /** @type {[string, string][]|null} */ + cookies = null + + constructor (init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]) + this[kHeadersSortedMap] = init[kHeadersSortedMap] + this.cookies = init.cookies === null ? null : [...init.cookies] + } else { + this[kHeadersMap] = new Map(init) + this[kHeadersSortedMap] = null + } + } + + // https://fetch.spec.whatwg.org/#header-list-contains + contains (name) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + name = name.toLowerCase() + + return this[kHeadersMap].has(name) + } + + clear () { + this[kHeadersMap].clear() + this[kHeadersSortedMap] = null + this.cookies = null + } + + // https://fetch.spec.whatwg.org/#concept-header-list-append + append (name, value) { + this[kHeadersSortedMap] = null + + // 1. If list contains name, then set name to the first such + // header’s name. + const lowercaseName = name.toLowerCase() + const exists = this[kHeadersMap].get(lowercaseName) + + // 2. Append (name, value) to list. + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', ' + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }) + } else { + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + if (lowercaseName === 'set-cookie') { + this.cookies ??= [] + this.cookies.push(value) + } + } + + // https://fetch.spec.whatwg.org/#concept-header-list-set + set (name, value) { + this[kHeadersSortedMap] = null + const lowercaseName = name.toLowerCase() + + if (lowercaseName === 'set-cookie') { + this.cookies = [value] + } + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete (name) { + this[kHeadersSortedMap] = null + + name = name.toLowerCase() + + if (name === 'set-cookie') { + this.cookies = null + } + + this[kHeadersMap].delete(name) + } + + // https://fetch.spec.whatwg.org/#concept-header-list-get + get (name) { + const value = this[kHeadersMap].get(name.toLowerCase()) + + // 1. If list does not contain name, then return null. + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return value === undefined ? null : value.value + } + + * [Symbol.iterator] () { + // use the lowercased name + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value] + } + } + + get entries () { + const headers = {} + + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value + } + } + + return headers + } +} + +// https://fetch.spec.whatwg.org/#headers-class +class Headers { + constructor (init = undefined) { + if (init === kConstruct) { + return + } + this[kHeadersList] = new HeadersList() + + // The new Headers(init) constructor steps are: + + // 1. Set this’s guard to "none". + this[kGuard] = 'none' + + // 2. If init is given, then fill this with init. + if (init !== undefined) { + init = webidl.converters.HeadersInit(init) + fill(this, init) + } + } + + // https://fetch.spec.whatwg.org/#dom-headers-append + append (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }) + + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + return appendHeader(this, name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }) + } + + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this[kHeadersList].contains(name)) { + return + } + + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + this[kHeadersList].delete(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-get + get (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }) + } + + // 2. Return the result of getting name from this’s header + // list. + return this[kHeadersList].get(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-has + has (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }) + } + + // 2. Return true if this’s header list contains name; + // otherwise false. + return this[kHeadersList].contains(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-set + set (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }) + + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value, + type: 'header value' + }) + } + + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + this[kHeadersList].set(name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie () { + webidl.brandCheck(this, Headers) + + // 1. If this’s header list does not contain `Set-Cookie`, then return « ». + // 2. Return the values of all headers in this’s header list whose name is + // a byte-case-insensitive match for `Set-Cookie`, in order. + + const list = this[kHeadersList].cookies + + if (list) { + return [...list] + } + + return [] + } + + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap] () { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap] + } + + // 1. Let headers be an empty list of headers with the key being the name + // and value the value. + const headers = [] + + // 2. Let names be the result of convert header names to a sorted-lowercase + // set with all the names of the headers in list. + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1) + const cookies = this[kHeadersList].cookies + + // 3. For each name of names: + for (let i = 0; i < names.length; ++i) { + const [name, value] = names[i] + // 1. If name is `set-cookie`, then: + if (name === 'set-cookie') { + // 1. Let values be a list of all values of headers in list whose name + // is a byte-case-insensitive match for name, in order. + + // 2. For each value of values: + // 1. Append (name, value) to headers. + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]) + } + } else { + // 2. Otherwise: + + // 1. Let value be the result of getting name from list. + + // 2. Assert: value is non-null. + assert(value !== null) + + // 3. Append (name, value) to headers. + headers.push([name, value]) + } + } + + this[kHeadersList][kHeadersSortedMap] = headers + + // 4. Return headers. + return headers + } + + keys () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key' + ) + } + + values () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'value') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'value' + ) + } + + entries () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key+value') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key+value' + ) + } + + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }) + + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } + + [Symbol.for('nodejs.util.inspect.custom')] () { + webidl.brandCheck(this, Headers) + + return this[kHeadersList] + } +} + +Headers.prototype[Symbol.iterator] = Headers.prototype.entries + +Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + } +}) + +webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence>'](V) + } + + return webidl.converters['record'](V) + } + + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) +} + +module.exports = { + fill, + Headers, + HeadersList +} + + +/***/ }), + +/***/ 2315: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +const { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse +} = __nccwpck_require__(8676) +const { Headers } = __nccwpck_require__(6349) +const { Request, makeRequest } = __nccwpck_require__(5194) +const zlib = __nccwpck_require__(3106) +const { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme +} = __nccwpck_require__(5523) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) +const assert = __nccwpck_require__(2613) +const { safelyExtractBody } = __nccwpck_require__(8923) +const { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException +} = __nccwpck_require__(7326) +const { kHeadersList } = __nccwpck_require__(6443) +const EE = __nccwpck_require__(4434) +const { Readable, pipeline } = __nccwpck_require__(2203) +const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = __nccwpck_require__(3440) +const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(4322) +const { TransformStream } = __nccwpck_require__(3774) +const { getGlobalDispatcher } = __nccwpck_require__(2581) +const { webidl } = __nccwpck_require__(4222) +const { STATUS_CODES } = __nccwpck_require__(8611) +const GET_OR_HEAD = ['GET', 'HEAD'] + +/** @type {import('buffer').resolveObjectURL} */ +let resolveObjectURL +let ReadableStream = globalThis.ReadableStream + +class Fetch extends EE { + constructor (dispatcher) { + super() + + this.dispatcher = dispatcher + this.connection = null + this.dump = false + this.state = 'ongoing' + // 2 terminated listeners get added per request, + // but only 1 gets removed. If there are 20 redirects, + // 21 listeners will be added. + // See https://github.com/nodejs/undici/issues/1711 + // TODO (fix): Find and fix root cause for leaked listener. + this.setMaxListeners(21) + } + + terminate (reason) { + if (this.state !== 'ongoing') { + return + } + + this.state = 'terminated' + this.connection?.destroy(reason) + this.emit('terminated', reason) + } + + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort (error) { + if (this.state !== 'ongoing') { + return + } + + // 1. Set controller’s state to "aborted". + this.state = 'aborted' + + // 2. Let fallbackError be an "AbortError" DOMException. + // 3. Set error to fallbackError if it is not given. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 4. Let serializedError be StructuredSerialize(error). + // If that threw an exception, catch it, and let + // serializedError be StructuredSerialize(fallbackError). + + // 5. Set controller’s serialized abort reason to serializedError. + this.serializedAbortReason = error + + this.connection?.destroy(error) + this.emit('terminated', error) + } +} + +// https://fetch.spec.whatwg.org/#fetch-method +function fetch (input, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }) + + // 1. Let p be a new promise. + const p = createDeferredPromise() + + // 2. Let requestObject be the result of invoking the initial value of + // Request as constructor with input and init as arguments. If this throws + // an exception, reject p with it and return p. + let requestObject + + try { + requestObject = new Request(input, init) + } catch (e) { + p.reject(e) + return p.promise + } + + // 3. Let request be requestObject’s request. + const request = requestObject[kState] + + // 4. If requestObject’s signal’s aborted flag is set, then: + if (requestObject.signal.aborted) { + // 1. Abort the fetch() call with p, request, null, and + // requestObject’s signal’s abort reason. + abortFetch(p, request, null, requestObject.signal.reason) + + // 2. Return p. + return p.promise + } + + // 5. Let globalObject be request’s client’s global object. + const globalObject = request.client.globalObject + + // 6. If globalObject is a ServiceWorkerGlobalScope object, then set + // request’s service-workers mode to "none". + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none' + } + + // 7. Let responseObject be null. + let responseObject = null + + // 8. Let relevantRealm be this’s relevant Realm. + const relevantRealm = null + + // 9. Let locallyAborted be false. + let locallyAborted = false + + // 10. Let controller be null. + let controller = null + + // 11. Add the following abort steps to requestObject’s signal: + addAbortListener( + requestObject.signal, + () => { + // 1. Set locallyAborted to true. + locallyAborted = true + + // 2. Assert: controller is non-null. + assert(controller != null) + + // 3. Abort controller with requestObject’s signal’s abort reason. + controller.abort(requestObject.signal.reason) + + // 4. Abort the fetch() call with p, request, responseObject, + // and requestObject’s signal’s abort reason. + abortFetch(p, request, responseObject, requestObject.signal.reason) + } + ) + + // 12. Let handleFetchDone given response response be to finalize and + // report timing with response, globalObject, and "fetch". + const handleFetchDone = (response) => + finalizeAndReportTiming(response, 'fetch') + + // 13. Set controller to the result of calling fetch given request, + // with processResponseEndOfBody set to handleFetchDone, and processResponse + // given response being these substeps: + + const processResponse = (response) => { + // 1. If locallyAborted is true, terminate these substeps. + if (locallyAborted) { + return Promise.resolve() + } + + // 2. If response’s aborted flag is set, then: + if (response.aborted) { + // 1. Let deserializedError be the result of deserialize a serialized + // abort reason given controller’s serialized abort reason and + // relevantRealm. + + // 2. Abort the fetch() call with p, request, responseObject, and + // deserializedError. + + abortFetch(p, request, responseObject, controller.serializedAbortReason) + return Promise.resolve() + } + + // 3. If response is a network error, then reject p with a TypeError + // and terminate these substeps. + if (response.type === 'error') { + p.reject( + Object.assign(new TypeError('fetch failed'), { cause: response.error }) + ) + return Promise.resolve() + } + + // 4. Set responseObject to the result of creating a Response object, + // given response, "immutable", and relevantRealm. + responseObject = new Response() + responseObject[kState] = response + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + + // 5. Resolve p with responseObject. + p.resolve(responseObject) + } + + controller = fetching({ + request, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici + }) + + // 14. Return p. + return p.promise +} + +// https://fetch.spec.whatwg.org/#finalize-and-report-timing +function finalizeAndReportTiming (response, initiatorType = 'other') { + // 1. If response is an aborted network error, then return. + if (response.type === 'error' && response.aborted) { + return + } + + // 2. If response’s URL list is null or empty, then return. + if (!response.urlList?.length) { + return + } + + // 3. Let originalURL be response’s URL list[0]. + const originalURL = response.urlList[0] + + // 4. Let timingInfo be response’s timing info. + let timingInfo = response.timingInfo + + // 5. Let cacheState be response’s cache state. + let cacheState = response.cacheState + + // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. + if (!urlIsHttpHttpsScheme(originalURL)) { + return + } + + // 7. If timingInfo is null, then return. + if (timingInfo === null) { + return + } + + // 8. If response’s timing allow passed flag is not set, then: + if (!response.timingAllowPassed) { + // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }) + + // 2. Set cacheState to the empty string. + cacheState = '' + } + + // 9. Set timingInfo’s end time to the coarsened shared current time + // given global’s relevant settings object’s cross-origin isolated + // capability. + // TODO: given global’s relevant settings object’s cross-origin isolated + // capability? + timingInfo.endTime = coarsenedSharedCurrentTime() + + // 10. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 11. Mark resource timing for timingInfo, originalURL, initiatorType, + // global, and cacheState. + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ) +} + +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { + if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState) + } +} + +// https://fetch.spec.whatwg.org/#abort-fetch +function abortFetch (p, request, responseObject, error) { + // Note: AbortSignal.reason was added in node v17.2.0 + // which would give us an undefined error to reject with. + // Remove this once node v16 is no longer supported. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 1. Reject promise with error. + p.reject(error) + + // 2. If request’s body is not null and is readable, then cancel request’s + // body with error. + if (request.body != null && isReadable(request.body?.stream)) { + request.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } + + // 3. If responseObject is null, then return. + if (responseObject == null) { + return + } + + // 4. Let response be responseObject’s response. + const response = responseObject[kState] + + // 5. If response’s body is not null and is readable, then error response’s + // body with error. + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } +} + +// https://fetch.spec.whatwg.org/#fetching +function fetching ({ + request, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher // undici +}) { + // 1. Let taskDestination be null. + let taskDestination = null + + // 2. Let crossOriginIsolatedCapability be false. + let crossOriginIsolatedCapability = false + + // 3. If request’s client is non-null, then: + if (request.client != null) { + // 1. Set taskDestination to request’s client’s global object. + taskDestination = request.client.globalObject + + // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin + // isolated capability. + crossOriginIsolatedCapability = + request.client.crossOriginIsolatedCapability + } + + // 4. If useParallelQueue is true, then set taskDestination to the result of + // starting a new parallel queue. + // TODO + + // 5. Let timingInfo be a new fetch timing info whose start time and + // post-redirect start time are the coarsened shared current time given + // crossOriginIsolatedCapability. + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability) + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }) + + // 6. Let fetchParams be a new fetch params whose + // request is request, + // timing info is timingInfo, + // process request body chunk length is processRequestBodyChunkLength, + // process request end-of-body is processRequestEndOfBody, + // process response is processResponse, + // process response consume body is processResponseConsumeBody, + // process response end-of-body is processResponseEndOfBody, + // task destination is taskDestination, + // and cross-origin isolated capability is crossOriginIsolatedCapability. + const fetchParams = { + controller: new Fetch(dispatcher), + request, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + } + + // 7. If request’s body is a byte sequence, then set request’s body to + // request’s body as a body. + // NOTE: Since fetching is only called from fetch, body should already be + // extracted. + assert(!request.body || request.body.stream) + + // 8. If request’s window is "client", then set request’s window to request’s + // client, if request’s client’s global object is a Window object; otherwise + // "no-window". + if (request.window === 'client') { + // TODO: What if request.client is null? + request.window = + request.client?.globalObject?.constructor?.name === 'Window' + ? request.client + : 'no-window' + } + + // 9. If request’s origin is "client", then set request’s origin to request’s + // client’s origin. + if (request.origin === 'client') { + // TODO: What if request.client is null? + request.origin = request.client?.origin + } + + // 10. If all of the following conditions are true: + // TODO + + // 11. If request’s policy container is "client", then: + if (request.policyContainer === 'client') { + // 1. If request’s client is non-null, then set request’s policy + // container to a clone of request’s client’s policy container. [HTML] + if (request.client != null) { + request.policyContainer = clonePolicyContainer( + request.client.policyContainer + ) + } else { + // 2. Otherwise, set request’s policy container to a new policy + // container. + request.policyContainer = makePolicyContainer() + } + } + + // 12. If request’s header list does not contain `Accept`, then: + if (!request.headersList.contains('accept')) { + // 1. Let value be `*/*`. + const value = '*/*' + + // 2. A user agent should set value to the first matching statement, if + // any, switching on request’s destination: + // "document" + // "frame" + // "iframe" + // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` + // "image" + // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` + // "style" + // `text/css,*/*;q=0.1` + // TODO + + // 3. Append `Accept`/value to request’s header list. + request.headersList.append('accept', value) + } + + // 13. If request’s header list does not contain `Accept-Language`, then + // user agents should append `Accept-Language`/an appropriate value to + // request’s header list. + if (!request.headersList.contains('accept-language')) { + request.headersList.append('accept-language', '*') + } + + // 14. If request’s priority is null, then use request’s initiator and + // destination appropriately in setting request’s priority to a + // user-agent-defined object. + if (request.priority === null) { + // TODO + } + + // 15. If request is a subresource request, then: + if (subresourceSet.has(request.destination)) { + // TODO + } + + // 16. Run main fetch given fetchParams. + mainFetch(fetchParams) + .catch(err => { + fetchParams.controller.terminate(err) + }) + + // 17. Return fetchParam's controller + return fetchParams.controller +} + +// https://fetch.spec.whatwg.org/#concept-main-fetch +async function mainFetch (fetchParams, recursive = false) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. If request’s local-URLs-only flag is set and request’s current URL is + // not local, then set response to a network error. + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only') + } + + // 4. Run report Content Security Policy violations for request. + // TODO + + // 5. Upgrade request to a potentially trustworthy URL, if appropriate. + tryUpgradeRequestToAPotentiallyTrustworthyURL(request) + + // 6. If should request be blocked due to a bad port, should fetching request + // be blocked as mixed content, or should request be blocked by Content + // Security Policy returns blocked, then set response to a network error. + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port') + } + // TODO: should fetching request be blocked as mixed content? + // TODO: should request be blocked by Content Security Policy? + + // 7. If request’s referrer policy is the empty string, then set request’s + // referrer policy to request’s policy container’s referrer policy. + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy + } + + // 8. If request’s referrer is not "no-referrer", then set request’s + // referrer to the result of invoking determine request’s referrer. + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request) + } + + // 9. Set request’s current URL’s scheme to "https" if all of the following + // conditions are true: + // - request’s current URL’s scheme is "http" + // - request’s current URL’s host is a domain + // - Matching request’s current URL’s host per Known HSTS Host Domain Name + // Matching results in either a superdomain match with an asserted + // includeSubDomains directive or a congruent match (with or without an + // asserted includeSubDomains directive). [HSTS] + // TODO + + // 10. If recursive is false, then run the remaining steps in parallel. + // TODO + + // 11. If response is null, then set response to the result of running + // the steps corresponding to the first matching statement: + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request) + + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || + // request’s current URL’s scheme is "data" + (currentURL.protocol === 'data:') || + // - request’s mode is "navigate" or "websocket" + (request.mode === 'navigate' || request.mode === 'websocket') + ) { + // 1. Set request’s response tainting to "basic". + request.responseTainting = 'basic' + + // 2. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s mode is "same-origin" + if (request.mode === 'same-origin') { + // 1. Return a network error. + return makeNetworkError('request mode cannot be "same-origin"') + } + + // request’s mode is "no-cors" + if (request.mode === 'no-cors') { + // 1. If request’s redirect mode is not "follow", then return a network + // error. + if (request.redirect !== 'follow') { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ) + } + + // 2. Set request’s response tainting to "opaque". + request.responseTainting = 'opaque' + + // 3. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s current URL’s scheme is not an HTTP(S) scheme + if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { + // Return a network error. + return makeNetworkError('URL scheme must be a HTTP(S) scheme') + } + + // - request’s use-CORS-preflight flag is set + // - request’s unsafe-request flag is set and either request’s method is + // not a CORS-safelisted method or CORS-unsafe request-header names with + // request’s header list is not empty + // 1. Set request’s response tainting to "cors". + // 2. Let corsWithPreflightResponse be the result of running HTTP fetch + // given fetchParams and true. + // 3. If corsWithPreflightResponse is a network error, then clear cache + // entries using request. + // 4. Return corsWithPreflightResponse. + // TODO + + // Otherwise + // 1. Set request’s response tainting to "cors". + request.responseTainting = 'cors' + + // 2. Return the result of running HTTP fetch given fetchParams. + return await httpFetch(fetchParams) + })() + } + + // 12. If recursive is true, then return response. + if (recursive) { + return response + } + + // 13. If response is not a network error and response is not a filtered + // response, then: + if (response.status !== 0 && !response.internalResponse) { + // If request’s response tainting is "cors", then: + if (request.responseTainting === 'cors') { + // 1. Let headerNames be the result of extracting header list values + // given `Access-Control-Expose-Headers` and response’s header list. + // TODO + // 2. If request’s credentials mode is not "include" and headerNames + // contains `*`, then set response’s CORS-exposed header-name list to + // all unique header names in response’s header list. + // TODO + // 3. Otherwise, if headerNames is not null or failure, then set + // response’s CORS-exposed header-name list to headerNames. + // TODO + } + + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic') + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors') + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque') + } else { + assert(false) + } + } + + // 14. Let internalResponse be response, if response is a network error, + // and response’s internal response otherwise. + let internalResponse = + response.status === 0 ? response : response.internalResponse + + // 15. If internalResponse’s URL list is empty, then set it to a clone of + // request’s URL list. + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request.urlList) + } + + // 16. If request’s timing allow failed flag is unset, then set + // internalResponse’s timing allow passed flag. + if (!request.timingAllowFailed) { + response.timingAllowPassed = true + } + + // 17. If response is not a network error and any of the following returns + // blocked + // - should internalResponse to request be blocked as mixed content + // - should internalResponse to request be blocked by Content Security Policy + // - should internalResponse to request be blocked due to its MIME type + // - should internalResponse to request be blocked due to nosniff + // TODO + + // 18. If response’s type is "opaque", internalResponse’s status is 206, + // internalResponse’s range-requested flag is set, and request’s header + // list does not contain `Range`, then set response and internalResponse + // to a network error. + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request.headers.contains('range') + ) { + response = internalResponse = makeNetworkError() + } + + // 19. If response is not a network error and either request’s method is + // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, + // set internalResponse’s body to null and disregard any enqueuing toward + // it (if any). + if ( + response.status !== 0 && + (request.method === 'HEAD' || + request.method === 'CONNECT' || + nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null + fetchParams.controller.dump = true + } + + // 20. If request’s integrity metadata is not the empty string, then: + if (request.integrity) { + // 1. Let processBodyError be this step: run fetch finale given fetchParams + // and a network error. + const processBodyError = (reason) => + fetchFinale(fetchParams, makeNetworkError(reason)) + + // 2. If request’s response tainting is "opaque", or response’s body is null, + // then run processBodyError and abort these steps. + if (request.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error) + return + } + + // 3. Let processBody given bytes be these steps: + const processBody = (bytes) => { + // 1. If bytes do not match request’s integrity metadata, + // then run processBodyError and abort these steps. [SRI] + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch') + return + } + + // 2. Set response’s body to bytes as a body. + response.body = safelyExtractBody(bytes)[0] + + // 3. Run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } + + // 4. Fully read response’s body given processBody and processBodyError. + await fullyReadBody(response.body, processBody, processBodyError) + } else { + // 21. Otherwise, run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } +} + +// https://fetch.spec.whatwg.org/#concept-scheme-fetch +// given a fetch params fetchParams +function schemeFetch (fetchParams) { + // Note: since the connection is destroyed on redirect, which sets fetchParams to a + // cancelled state, we do not want this condition to trigger *unless* there have been + // no redirects. See https://github.com/nodejs/undici/issues/1776 + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)) + } + + // 2. Let request be fetchParams’s request. + const { request } = fetchParams + + const { protocol: scheme } = requestCurrentURL(request) + + // 3. Switch on request’s current URL’s scheme and run the associated steps: + switch (scheme) { + case 'about:': { + // If request’s current URL’s path is the string "blank", then return a new response + // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », + // and body is the empty byte sequence as a body. + + // Otherwise, return a network error. + return Promise.resolve(makeNetworkError('about scheme is not supported')) + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = (__nccwpck_require__(181).resolveObjectURL) + } + + // 1. Let blobURLEntry be request’s current URL’s blob URL entry. + const blobURLEntry = requestCurrentURL(request) + + // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 + // Buffer.resolveObjectURL does not ignore URL queries. + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')) + } + + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()) + + // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s + // object is not a Blob object, then return a network error. + if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError('invalid method')) + } + + // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. + const bodyWithType = safelyExtractBody(blobURLEntryObject) + + // 4. Let body be bodyWithType’s body. + const body = bodyWithType[0] + + // 5. Let length be body’s length, serialized and isomorphic encoded. + const length = isomorphicEncode(`${body.length}`) + + // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. + const type = bodyWithType[1] ?? '' + + // 7. Return a new response whose status message is `OK`, header list is + // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. + const response = makeResponse({ + statusText: 'OK', + headersList: [ + ['content-length', { name: 'Content-Length', value: length }], + ['content-type', { name: 'Content-Type', value: type }] + ] + }) + + response.body = body + + return Promise.resolve(response) + } + case 'data:': { + // 1. Let dataURLStruct be the result of running the + // data: URL processor on request’s current URL. + const currentURL = requestCurrentURL(request) + const dataURLStruct = dataURLProcessor(currentURL) + + // 2. If dataURLStruct is failure, then return a + // network error. + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')) + } + + // 3. Let mimeType be dataURLStruct’s MIME type, serialized. + const mimeType = serializeAMimeType(dataURLStruct.mimeType) + + // 4. Return a response whose status message is `OK`, + // header list is « (`Content-Type`, mimeType) », + // and body is dataURLStruct’s body as a body. + return Promise.resolve(makeResponse({ + statusText: 'OK', + headersList: [ + ['content-type', { name: 'Content-Type', value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })) + } + case 'file:': { + // For now, unfortunate as it is, file URLs are left as an exercise for the reader. + // When in doubt, return a network error. + return Promise.resolve(makeNetworkError('not implemented... yet...')) + } + case 'http:': + case 'https:': { + // Return the result of running HTTP fetch given fetchParams. + + return httpFetch(fetchParams) + .catch((err) => makeNetworkError(err)) + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')) + } + } +} + +// https://fetch.spec.whatwg.org/#finalize-response +function finalizeResponse (fetchParams, response) { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // 2, If fetchParams’s process response done is not null, then queue a fetch + // task to run fetchParams’s process response done given response, with + // fetchParams’s task destination. + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)) + } +} + +// https://fetch.spec.whatwg.org/#fetch-finale +function fetchFinale (fetchParams, response) { + // 1. If response is a network error, then: + if (response.type === 'error') { + // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». + response.urlList = [fetchParams.request.urlList[0]] + + // 2. Set response’s timing info to the result of creating an opaque timing + // info for fetchParams’s timing info. + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }) + } + + // 2. Let processResponseEndOfBody be the following steps: + const processResponseEndOfBody = () => { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // If fetchParams’s process response end-of-body is not null, + // then queue a fetch task to run fetchParams’s process response + // end-of-body given response with fetchParams’s task destination. + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)) + } + } + + // 3. If fetchParams’s process response is non-null, then queue a fetch task + // to run fetchParams’s process response given response, with fetchParams’s + // task destination. + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)) + } + + // 4. If response’s body is null, then run processResponseEndOfBody. + if (response.body == null) { + processResponseEndOfBody() + } else { + // 5. Otherwise: + + // 1. Let transformStream be a new a TransformStream. + + // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, + // enqueues chunk in transformStream. + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk) + } + + // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm + // and flushAlgorithm set to processResponseEndOfBody. + const transformStream = new TransformStream({ + start () {}, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size () { + return 1 + } + }, { + size () { + return 1 + } + }) + + // 4. Set response’s body to the result of piping response’s body through transformStream. + response.body = { stream: response.body.stream.pipeThrough(transformStream) } + } + + // 6. If fetchParams’s process response consume body is non-null, then: + if (fetchParams.processResponseConsumeBody != null) { + // 1. Let processBody given nullOrBytes be this step: run fetchParams’s + // process response consume body given response and nullOrBytes. + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes) + + // 2. Let processBodyError be this step: run fetchParams’s process + // response consume body given response and failure. + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure) + + // 3. If response’s body is null, then queue a fetch task to run processBody + // given null, with fetchParams’s task destination. + if (response.body == null) { + queueMicrotask(() => processBody(null)) + } else { + // 4. Otherwise, fully read response’s body given processBody, processBodyError, + // and fetchParams’s task destination. + return fullyReadBody(response.body, processBody, processBodyError) + } + return Promise.resolve() + } +} + +// https://fetch.spec.whatwg.org/#http-fetch +async function httpFetch (fetchParams) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let actualResponse be null. + let actualResponse = null + + // 4. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 5. If request’s service-workers mode is "all", then: + if (request.serviceWorkers === 'all') { + // TODO + } + + // 6. If response is null, then: + if (response === null) { + // 1. If makeCORSPreflight is true and one of these conditions is true: + // TODO + + // 2. If request’s redirect mode is "follow", then set request’s + // service-workers mode to "none". + if (request.redirect === 'follow') { + request.serviceWorkers = 'none' + } + + // 3. Set response and actualResponse to the result of running + // HTTP-network-or-cache fetch given fetchParams. + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams) + + // 4. If request’s response tainting is "cors" and a CORS check + // for request and response returns failure, then return a network error. + if ( + request.responseTainting === 'cors' && + corsCheck(request, response) === 'failure' + ) { + return makeNetworkError('cors failure') + } + + // 5. If the TAO check for request and response returns failure, then set + // request’s timing allow failed flag. + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true + } + } + + // 7. If either request’s response tainting or response’s type + // is "opaque", and the cross-origin resource policy check with + // request’s origin, request’s client, request’s destination, + // and actualResponse returns blocked, then return a network error. + if ( + (request.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck( + request.origin, + request.client, + request.destination, + actualResponse + ) === 'blocked' + ) { + return makeNetworkError('blocked') + } + + // 8. If actualResponse’s status is a redirect status, then: + if (redirectStatusSet.has(actualResponse.status)) { + // 1. If actualResponse’s status is not 303, request’s body is not null, + // and the connection uses HTTP/2, then user agents may, and are even + // encouraged to, transmit an RST_STREAM frame. + // See, https://github.com/whatwg/fetch/issues/1288 + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy() + } + + // 2. Switch on request’s redirect mode: + if (request.redirect === 'error') { + // Set response to a network error. + response = makeNetworkError('unexpected redirect') + } else if (request.redirect === 'manual') { + // Set response to an opaque-redirect filtered response whose internal + // response is actualResponse. + // NOTE(spec): On the web this would return an `opaqueredirect` response, + // but that doesn't make sense server side. + // See https://github.com/nodejs/undici/issues/1193. + response = actualResponse + } else if (request.redirect === 'follow') { + // Set response to the result of running HTTP-redirect fetch given + // fetchParams and response. + response = await httpRedirectFetch(fetchParams, response) + } else { + assert(false) + } + } + + // 9. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 10. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-redirect-fetch +function httpRedirectFetch (fetchParams, response) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let actualResponse be response, if response is not a filtered response, + // and response’s internal response otherwise. + const actualResponse = response.internalResponse + ? response.internalResponse + : response + + // 3. Let locationURL be actualResponse’s location URL given request’s current + // URL’s fragment. + let locationURL + + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request).hash + ) + + // 4. If locationURL is null, then return response. + if (locationURL == null) { + return response + } + } catch (err) { + // 5. If locationURL is failure, then return a network error. + return Promise.resolve(makeNetworkError(err)) + } + + // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network + // error. + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')) + } + + // 7. If request’s redirect count is 20, then return a network error. + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')) + } + + // 8. Increase request’s redirect count by 1. + request.redirectCount += 1 + + // 9. If request’s mode is "cors", locationURL includes credentials, and + // request’s origin is not same origin with locationURL’s origin, then return + // a network error. + if ( + request.mode === 'cors' && + (locationURL.username || locationURL.password) && + !sameOrigin(request, locationURL) + ) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')) + } + + // 10. If request’s response tainting is "cors" and locationURL includes + // credentials, then return a network error. + if ( + request.responseTainting === 'cors' && + (locationURL.username || locationURL.password) + ) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )) + } + + // 11. If actualResponse’s status is not 303, request’s body is non-null, + // and request’s body’s source is null, then return a network error. + if ( + actualResponse.status !== 303 && + request.body != null && + request.body.source == null + ) { + return Promise.resolve(makeNetworkError()) + } + + // 12. If one of the following is true + // - actualResponse’s status is 301 or 302 and request’s method is `POST` + // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` + if ( + ([301, 302].includes(actualResponse.status) && request.method === 'POST') || + (actualResponse.status === 303 && + !GET_OR_HEAD.includes(request.method)) + ) { + // then: + // 1. Set request’s method to `GET` and request’s body to null. + request.method = 'GET' + request.body = null + + // 2. For each headerName of request-body-header name, delete headerName from + // request’s header list. + for (const headerName of requestBodyHeader) { + request.headersList.delete(headerName) + } + } + + // 13. If request’s current URL’s origin is not same origin with locationURL’s + // origin, then for each headerName of CORS non-wildcard request-header name, + // delete headerName from request’s header list. + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name + request.headersList.delete('authorization') + + // https://fetch.spec.whatwg.org/#authentication-entries + request.headersList.delete('proxy-authorization', true) + + // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. + request.headersList.delete('cookie') + request.headersList.delete('host') + } + + // 14. If request’s body is non-null, then set request’s body to the first return + // value of safely extracting request’s body’s source. + if (request.body != null) { + assert(request.body.source != null) + request.body = safelyExtractBody(request.body.source)[0] + } + + // 15. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 16. Set timingInfo’s redirect end time and post-redirect start time to the + // coarsened shared current time given fetchParams’s cross-origin isolated + // capability. + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = + coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + + // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s + // redirect start time to timingInfo’s start time. + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime + } + + // 18. Append locationURL to request’s URL list. + request.urlList.push(locationURL) + + // 19. Invoke set request’s referrer policy on redirect on request and + // actualResponse. + setRequestReferrerPolicyOnRedirect(request, actualResponse) + + // 20. Return the result of running main fetch given fetchParams and true. + return mainFetch(fetchParams, true) +} + +// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch +async function httpNetworkOrCacheFetch ( + fetchParams, + isAuthenticationFetch = false, + isNewConnectionFetch = false +) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let httpFetchParams be null. + let httpFetchParams = null + + // 3. Let httpRequest be null. + let httpRequest = null + + // 4. Let response be null. + let response = null + + // 5. Let storedResponse be null. + // TODO: cache + + // 6. Let httpCache be null. + const httpCache = null + + // 7. Let the revalidatingFlag be unset. + const revalidatingFlag = false + + // 8. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If request’s window is "no-window" and request’s redirect mode is + // "error", then set httpFetchParams to fetchParams and httpRequest to + // request. + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams + httpRequest = request + } else { + // Otherwise: + + // 1. Set httpRequest to a clone of request. + httpRequest = makeRequest(request) + + // 2. Set httpFetchParams to a copy of fetchParams. + httpFetchParams = { ...fetchParams } + + // 3. Set httpFetchParams’s request to httpRequest. + httpFetchParams.request = httpRequest + } + + // 3. Let includeCredentials be true if one of + const includeCredentials = + request.credentials === 'include' || + (request.credentials === 'same-origin' && + request.responseTainting === 'basic') + + // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s + // body is non-null; otherwise null. + const contentLength = httpRequest.body ? httpRequest.body.length : null + + // 5. Let contentLengthHeaderValue be null. + let contentLengthHeaderValue = null + + // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or + // `PUT`, then set contentLengthHeaderValue to `0`. + if ( + httpRequest.body == null && + ['POST', 'PUT'].includes(httpRequest.method) + ) { + contentLengthHeaderValue = '0' + } + + // 7. If contentLength is non-null, then set contentLengthHeaderValue to + // contentLength, serialized and isomorphic encoded. + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`) + } + + // 8. If contentLengthHeaderValue is non-null, then append + // `Content-Length`/contentLengthHeaderValue to httpRequest’s header + // list. + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue) + } + + // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, + // contentLengthHeaderValue) to httpRequest’s header list. + + // 10. If contentLength is non-null and httpRequest’s keepalive is true, + // then: + if (contentLength != null && httpRequest.keepalive) { + // NOTE: keepalive is a noop outside of browser context. + } + + // 11. If httpRequest’s referrer is a URL, then append + // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, + // to httpRequest’s header list. + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)) + } + + // 12. Append a request `Origin` header for httpRequest. + appendRequestOriginHeader(httpRequest) + + // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] + appendFetchMetadata(httpRequest) + + // 14. If httpRequest’s header list does not contain `User-Agent`, then + // user agents should append `User-Agent`/default `User-Agent` value to + // httpRequest’s header list. + if (!httpRequest.headersList.contains('user-agent')) { + httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node') + } + + // 15. If httpRequest’s cache mode is "default" and httpRequest’s header + // list contains `If-Modified-Since`, `If-None-Match`, + // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set + // httpRequest’s cache mode to "no-store". + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since') || + httpRequest.headersList.contains('if-none-match') || + httpRequest.headersList.contains('if-unmodified-since') || + httpRequest.headersList.contains('if-match') || + httpRequest.headersList.contains('if-range')) + ) { + httpRequest.cache = 'no-store' + } + + // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent + // no-cache cache-control header modification flag is unset, and + // httpRequest’s header list does not contain `Cache-Control`, then append + // `Cache-Control`/`max-age=0` to httpRequest’s header list. + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control') + ) { + httpRequest.headersList.append('cache-control', 'max-age=0') + } + + // 17. If httpRequest’s cache mode is "no-store" or "reload", then: + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + // 1. If httpRequest’s header list does not contain `Pragma`, then append + // `Pragma`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('pragma')) { + httpRequest.headersList.append('pragma', 'no-cache') + } + + // 2. If httpRequest’s header list does not contain `Cache-Control`, + // then append `Cache-Control`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'no-cache') + } + } + + // 18. If httpRequest’s header list contains `Range`, then append + // `Accept-Encoding`/`identity` to httpRequest’s header list. + if (httpRequest.headersList.contains('range')) { + httpRequest.headersList.append('accept-encoding', 'identity') + } + + // 19. Modify httpRequest’s header list per HTTP. Do not append a given + // header if httpRequest’s header list contains that header’s name. + // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 + if (!httpRequest.headersList.contains('accept-encoding')) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate') + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate') + } + } + + httpRequest.headersList.delete('host') + + // 20. If includeCredentials is true, then: + if (includeCredentials) { + // 1. If the user agent is not configured to block cookies for httpRequest + // (see section 7 of [COOKIES]), then: + // TODO: credentials + // 2. If httpRequest’s header list does not contain `Authorization`, then: + // TODO: credentials + } + + // 21. If there’s a proxy-authentication entry, use it as appropriate. + // TODO: proxy-authentication + + // 22. Set httpCache to the result of determining the HTTP cache + // partition, given httpRequest. + // TODO: cache + + // 23. If httpCache is null, then set httpRequest’s cache mode to + // "no-store". + if (httpCache == null) { + httpRequest.cache = 'no-store' + } + + // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", + // then: + if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + // TODO: cache + } + + // 9. If aborted, then return the appropriate network error for fetchParams. + // TODO + + // 10. If response is null, then: + if (response == null) { + // 1. If httpRequest’s cache mode is "only-if-cached", then return a + // network error. + if (httpRequest.mode === 'only-if-cached') { + return makeNetworkError('only if cached') + } + + // 2. Let forwardResponse be the result of running HTTP-network fetch + // given httpFetchParams, includeCredentials, and isNewConnectionFetch. + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ) + + // 3. If httpRequest’s method is unsafe and forwardResponse’s status is + // in the range 200 to 399, inclusive, invalidate appropriate stored + // responses in httpCache, as per the "Invalidation" chapter of HTTP + // Caching, and set storedResponse to null. [HTTP-CACHING] + if ( + !safeMethodsSet.has(httpRequest.method) && + forwardResponse.status >= 200 && + forwardResponse.status <= 399 + ) { + // TODO: cache + } + + // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, + // then: + if (revalidatingFlag && forwardResponse.status === 304) { + // TODO: cache + } + + // 5. If response is null, then: + if (response == null) { + // 1. Set response to forwardResponse. + response = forwardResponse + + // 2. Store httpRequest and forwardResponse in httpCache, as per the + // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] + // TODO: cache + } + } + + // 11. Set response’s URL list to a clone of httpRequest’s URL list. + response.urlList = [...httpRequest.urlList] + + // 12. If httpRequest’s header list contains `Range`, then set response’s + // range-requested flag. + if (httpRequest.headersList.contains('range')) { + response.rangeRequested = true + } + + // 13. Set response’s request-includes-credentials to includeCredentials. + response.requestIncludesCredentials = includeCredentials + + // 14. If response’s status is 401, httpRequest’s response tainting is not + // "cors", includeCredentials is true, and request’s window is an environment + // settings object, then: + // TODO + + // 15. If response’s status is 407, then: + if (response.status === 407) { + // 1. If request’s window is "no-window", then return a network error. + if (request.window === 'no-window') { + return makeNetworkError() + } + + // 2. ??? + + // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 4. Prompt the end user as appropriate in request’s window and store + // the result as a proxy-authentication entry. [HTTP-AUTH] + // TODO: Invoke some kind of callback? + + // 5. Set response to the result of running HTTP-network-or-cache fetch given + // fetchParams. + // TODO + return makeNetworkError('proxy authentication required') + } + + // 16. If all of the following are true + if ( + // response’s status is 421 + response.status === 421 && + // isNewConnectionFetch is false + !isNewConnectionFetch && + // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request.body == null || request.body.source != null) + ) { + // then: + + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 2. Set response to the result of running HTTP-network-or-cache + // fetch given fetchParams, isAuthenticationFetch, and true. + + // TODO (spec): The spec doesn't specify this but we need to cancel + // the active response before we can start a new one. + // https://github.com/whatwg/fetch/issues/1293 + fetchParams.controller.connection.destroy() + + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ) + } + + // 17. If isAuthenticationFetch is true, then create an authentication entry + if (isAuthenticationFetch) { + // TODO + } + + // 18. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-network-fetch +async function httpNetworkFetch ( + fetchParams, + includeCredentials = false, + forceNewConnection = false +) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed) + + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy (err) { + if (!this.destroyed) { + this.destroyed = true + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) + } + } + } + + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 4. Let httpCache be the result of determining the HTTP cache partition, + // given request. + // TODO: cache + const httpCache = null + + // 5. If httpCache is null, then set request’s cache mode to "no-store". + if (httpCache == null) { + request.cache = 'no-store' + } + + // 6. Let networkPartitionKey be the result of determining the network + // partition key given request. + // TODO + + // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise + // "no". + const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars + + // 8. Switch on request’s mode: + if (request.mode === 'websocket') { + // Let connection be the result of obtaining a WebSocket connection, + // given request’s current URL. + // TODO + } else { + // Let connection be the result of obtaining a connection, given + // networkPartitionKey, request’s current URL’s origin, + // includeCredentials, and forceNewConnection. + // TODO + } + + // 9. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If connection is failure, then return a network error. + + // 2. Set timingInfo’s final connection timing info to the result of + // calling clamp and coarsen connection timing info with connection’s + // timing info, timingInfo’s post-redirect start time, and fetchParams’s + // cross-origin isolated capability. + + // 3. If connection is not an HTTP/2 connection, request’s body is non-null, + // and request’s body’s source is null, then append (`Transfer-Encoding`, + // `chunked`) to request’s header list. + + // 4. Set timingInfo’s final network-request start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated + // capability. + + // 5. Set response to the result of making an HTTP request over connection + // using request with the following caveats: + + // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] + // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + + // - If request’s body is non-null, and request’s body’s source is null, + // then the user agent may have a buffer of up to 64 kibibytes and store + // a part of request’s body in that buffer. If the user agent reads from + // request’s body beyond that buffer’s size and the user agent needs to + // resend request, then instead return a network error. + + // - Set timingInfo’s final network-response start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated capability, + // immediately after the user agent’s HTTP parser receives the first byte + // of the response (e.g., frame header bytes for HTTP/2 or response status + // line for HTTP/1.x). + + // - Wait until all the headers are transmitted. + + // - Any responses whose status is in the range 100 to 199, inclusive, + // and is not 101, are to be ignored, except for the purposes of setting + // timingInfo’s final network-response start time above. + + // - If request’s header list contains `Transfer-Encoding`/`chunked` and + // response is transferred via HTTP/1.0 or older, then return a network + // error. + + // - If the HTTP request results in a TLS client certificate dialog, then: + + // 1. If request’s window is an environment settings object, make the + // dialog available in request’s window. + + // 2. Otherwise, return a network error. + + // To transmit request’s body body, run these steps: + let requestBody = null + // 1. If body is null and fetchParams’s process request end-of-body is + // non-null, then queue a fetch task given fetchParams’s process request + // end-of-body and fetchParams’s task destination. + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()) + } else if (request.body != null) { + // 2. Otherwise, if body is non-null: + + // 1. Let processBodyChunk given bytes be these steps: + const processBodyChunk = async function * (bytes) { + // 1. If the ongoing fetch is terminated, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. Run this step in parallel: transmit bytes. + yield bytes + + // 3. If fetchParams’s process request body is non-null, then run + // fetchParams’s process request body given bytes’s length. + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength) + } + + // 2. Let processEndOfBody be these steps: + const processEndOfBody = () => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If fetchParams’s process request end-of-body is non-null, + // then run fetchParams’s process request end-of-body. + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody() + } + } + + // 3. Let processBodyError given e be these steps: + const processBodyError = (e) => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. + if (e.name === 'AbortError') { + fetchParams.controller.abort() + } else { + fetchParams.controller.terminate(e) + } + } + + // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, + // processBodyError, and fetchParams’s task destination. + requestBody = (async function * () { + try { + for await (const bytes of request.body.stream) { + yield * processBodyChunk(bytes) + } + processEndOfBody() + } catch (err) { + processBodyError(err) + } + })() + } + + try { + // socket is only provided for websockets + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }) + + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }) + } else { + const iterator = body[Symbol.asyncIterator]() + fetchParams.controller.next = () => iterator.next() + + response = makeResponse({ status, statusText, headersList }) + } + } catch (err) { + // 10. If aborted, then: + if (err.name === 'AbortError') { + // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. + fetchParams.controller.connection.destroy() + + // 2. Return the appropriate network error for fetchParams. + return makeAppropriateNetworkError(fetchParams, err) + } + + return makeNetworkError(err) + } + + // 11. Let pullAlgorithm be an action that resumes the ongoing fetch + // if it is suspended. + const pullAlgorithm = () => { + fetchParams.controller.resume() + } + + // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s + // controller with reason, given reason. + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason) + } + + // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by + // the user agent. + // TODO + + // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object + // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. + // TODO + + // 15. Let stream be a new ReadableStream. + // 16. Set up stream with pullAlgorithm set to pullAlgorithm, + // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to + // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } + + const stream = new ReadableStream( + { + async start (controller) { + fetchParams.controller.controller = controller + }, + async pull (controller) { + await pullAlgorithm(controller) + }, + async cancel (reason) { + await cancelAlgorithm(reason) + } + }, + { + highWaterMark: 0, + size () { + return 1 + } + } + ) + + // 17. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. Set response’s body to a new body whose stream is stream. + response.body = { stream } + + // 2. If response is not a network error and request’s cache mode is + // not "no-store", then update response in httpCache for request. + // TODO + + // 3. If includeCredentials is true and the user agent is not configured + // to block cookies for request (see section 7 of [COOKIES]), then run the + // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on + // the value of each header whose name is a byte-case-insensitive match for + // `Set-Cookie` in response’s header list, if any, and request’s current URL. + // TODO + + // 18. If aborted, then: + // TODO + + // 19. Run these steps in parallel: + + // 1. Run these steps, but abort when fetchParams is canceled: + fetchParams.controller.on('terminated', onAborted) + fetchParams.controller.resume = async () => { + // 1. While true + while (true) { + // 1-3. See onData... + + // 4. Set bytes to the result of handling content codings given + // codings and bytes. + let bytes + let isFailure + try { + const { done, value } = await fetchParams.controller.next() + + if (isAborted(fetchParams)) { + break + } + + bytes = done ? undefined : value + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + // zlib doesn't like empty streams. + bytes = undefined + } else { + bytes = err + + // err may be propagated from the result of calling readablestream.cancel, + // which might not be an error. https://github.com/nodejs/undici/issues/2009 + isFailure = true + } + } + + if (bytes === undefined) { + // 2. Otherwise, if the bytes transmission for response’s message + // body is done normally and stream is readable, then close + // stream, finalize response for fetchParams and response, and + // abort these in-parallel steps. + readableStreamClose(fetchParams.controller.controller) + + finalizeResponse(fetchParams, response) + + return + } + + // 5. Increase timingInfo’s decoded body size by bytes’s length. + timingInfo.decodedBodySize += bytes?.byteLength ?? 0 + + // 6. If bytes is failure, then terminate fetchParams’s controller. + if (isFailure) { + fetchParams.controller.terminate(bytes) + return + } + + // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes + // into stream. + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)) + + // 8. If stream is errored, then terminate the ongoing fetch. + if (isErrored(stream)) { + fetchParams.controller.terminate() + return + } + + // 9. If stream doesn’t need more data ask the user agent to suspend + // the ongoing fetch. + if (!fetchParams.controller.controller.desiredSize) { + return + } + } + } + + // 2. If aborted, then: + function onAborted (reason) { + // 2. If fetchParams is aborted, then: + if (isAborted(fetchParams)) { + // 1. Set response’s aborted flag. + response.aborted = true + + // 2. If stream is readable, then error stream with the result of + // deserialize a serialized abort reason given fetchParams’s + // controller’s serialized abort reason and an + // implementation-defined realm. + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ) + } + } else { + // 3. Otherwise, if stream is readable, error stream with a TypeError. + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : undefined + })) + } + } + + // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. + // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. + fetchParams.controller.connection.destroy() + } + + // 20. Return response. + return response + + async function dispatch ({ body }) { + const url = requestCurrentURL(request) + /** @type {import('../..').Agent} */ + const agent = fetchParams.controller.dispatcher + + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : undefined + }, + { + body: null, + abort: null, + + onConnect (abort) { + // TODO (fix): Do we need connection here? + const { connection } = fetchParams.controller + + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')) + } else { + fetchParams.controller.on('terminated', abort) + this.abort = connection.abort = abort + } + }, + + onHeaders (status, headersList, resume, statusText) { + if (status < 200) { + return + } + + let codings = [] + let location = '' + + const headers = new Headers() + + // For H2, the headers are a plain JS object + // We distinguish between them and iterate accordingly + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()) + } else if (key.toLowerCase() === 'location') { + location = val + } + + headers[kHeadersList].append(key, val) + } + } else { + const keys = Object.keys(headersList) + for (const key of keys) { + const val = headersList[key] + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse() + } else if (key.toLowerCase() === 'location') { + location = val + } + + headers[kHeadersList].append(key, val) + } + } + + this.body = new Readable({ read: resume }) + + const decoders = [] + + const willFollow = request.redirect === 'follow' && + location && + redirectStatusSet.has(status) + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })) + } else if (coding === 'deflate') { + decoders.push(zlib.createInflate()) + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()) + } else { + decoders.length = 0 + break + } + } + } + + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length + ? pipeline(this.body, ...decoders, () => { }) + : this.body.on('error', () => {}) + }) + + return true + }, + + onData (chunk) { + if (fetchParams.controller.dump) { + return + } + + // 1. If one or more bytes have been transmitted from response’s + // message body, then: + + // 1. Let bytes be the transmitted bytes. + const bytes = chunk + + // 2. Let codings be the result of extracting header list values + // given `Content-Encoding` and response’s header list. + // See pullAlgorithm. + + // 3. Increase timingInfo’s encoded body size by bytes’s length. + timingInfo.encodedBodySize += bytes.byteLength + + // 4. See pullAlgorithm... + + return this.body.push(bytes) + }, + + onComplete () { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + fetchParams.controller.ended = true + + this.body.push(null) + }, + + onError (error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + this.body?.destroy(error) + + fetchParams.controller.terminate(error) + + reject(error) + }, + + onUpgrade (status, headersList, socket) { + if (status !== 101) { + return + } + + const headers = new Headers() + + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + + headers[kHeadersList].append(key, val) + } + + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }) + + return true + } + } + )) + } +} + +module.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming +} + + +/***/ }), + +/***/ 5194: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* globals AbortController */ + + + +const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(8923) +const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(6349) +const { FinalizationRegistry } = __nccwpck_require__(3194)() +const util = __nccwpck_require__(3440) +const { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer, + normalizeMethodRecord +} = __nccwpck_require__(5523) +const { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex +} = __nccwpck_require__(7326) +const { kEnumerableProperty } = util +const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(9710) +const { webidl } = __nccwpck_require__(4222) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { URLSerializer } = __nccwpck_require__(4322) +const { kHeadersList, kConstruct } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(4434) + +let TransformStream = globalThis.TransformStream + +const kAbortController = Symbol('abortController') + +const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort) +}) + +// https://fetch.spec.whatwg.org/#request-class +class Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor (input, init = {}) { + if (input === kConstruct) { + return + } + + webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }) + + input = webidl.converters.RequestInfo(input) + init = webidl.converters.RequestInit(init) + + // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin () { + return this.baseUrl?.origin + }, + policyContainer: makePolicyContainer() + } + } + + // 1. Let request be null. + let request = null + + // 2. Let fallbackMode be null. + let fallbackMode = null + + // 3. Let baseURL be this’s relevant settings object’s API base URL. + const baseUrl = this[kRealm].settingsObject.baseUrl + + // 4. Let signal be null. + let signal = null + + // 5. If input is a string, then: + if (typeof input === 'string') { + // 1. Let parsedURL be the result of parsing input with baseURL. + // 2. If parsedURL is failure, then throw a TypeError. + let parsedURL + try { + parsedURL = new URL(input, baseUrl) + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }) + } + + // 3. If parsedURL includes credentials, then throw a TypeError. + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + 'Request cannot be constructed from a URL that includes credentials: ' + + input + ) + } + + // 4. Set request to a new request whose URL is parsedURL. + request = makeRequest({ urlList: [parsedURL] }) + + // 5. Set fallbackMode to "cors". + fallbackMode = 'cors' + } else { + // 6. Otherwise: + + // 7. Assert: input is a Request object. + assert(input instanceof Request) + + // 8. Set request to input’s request. + request = input[kState] + + // 9. Set signal to input’s signal. + signal = input[kSignal] + } + + // 7. Let origin be this’s relevant settings object’s origin. + const origin = this[kRealm].settingsObject.origin + + // 8. Let window be "client". + let window = 'client' + + // 9. If request’s window is an environment settings object and its origin + // is same origin with origin, then set window to request’s window. + if ( + request.window?.constructor?.name === 'EnvironmentSettingsObject' && + sameOrigin(request.window, origin) + ) { + window = request.window + } + + // 10. If init["window"] exists and is non-null, then throw a TypeError. + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`) + } + + // 11. If init["window"] exists, then set window to "no-window". + if ('window' in init) { + window = 'no-window' + } + + // 12. Set request to a new request with the following properties: + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request.urlList] + }) + + const initHasKey = Object.keys(init).length !== 0 + + // 13. If init is not empty, then: + if (initHasKey) { + // 1. If request’s mode is "navigate", then set it to "same-origin". + if (request.mode === 'navigate') { + request.mode = 'same-origin' + } + + // 2. Unset request’s reload-navigation flag. + request.reloadNavigation = false + + // 3. Unset request’s history-navigation flag. + request.historyNavigation = false + + // 4. Set request’s origin to "client". + request.origin = 'client' + + // 5. Set request’s referrer to "client" + request.referrer = 'client' + + // 6. Set request’s referrer policy to the empty string. + request.referrerPolicy = '' + + // 7. Set request’s URL to request’s current URL. + request.url = request.urlList[request.urlList.length - 1] + + // 8. Set request’s URL list to « request’s URL ». + request.urlList = [request.url] + } + + // 14. If init["referrer"] exists, then: + if (init.referrer !== undefined) { + // 1. Let referrer be init["referrer"]. + const referrer = init.referrer + + // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". + if (referrer === '') { + request.referrer = 'no-referrer' + } else { + // 1. Let parsedReferrer be the result of parsing referrer with + // baseURL. + // 2. If parsedReferrer is failure, then throw a TypeError. + let parsedReferrer + try { + parsedReferrer = new URL(referrer, baseUrl) + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) + } + + // 3. If one of the following is true + // - parsedReferrer’s scheme is "about" and path is the string "client" + // - parsedReferrer’s origin is not same origin with origin + // then set request’s referrer to "client". + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) + ) { + request.referrer = 'client' + } else { + // 4. Otherwise, set request’s referrer to parsedReferrer. + request.referrer = parsedReferrer + } + } + } + + // 15. If init["referrerPolicy"] exists, then set request’s referrer policy + // to it. + if (init.referrerPolicy !== undefined) { + request.referrerPolicy = init.referrerPolicy + } + + // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. + let mode + if (init.mode !== undefined) { + mode = init.mode + } else { + mode = fallbackMode + } + + // 17. If mode is "navigate", then throw a TypeError. + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }) + } + + // 18. If mode is non-null, set request’s mode to mode. + if (mode != null) { + request.mode = mode + } + + // 19. If init["credentials"] exists, then set request’s credentials mode + // to it. + if (init.credentials !== undefined) { + request.credentials = init.credentials + } + + // 18. If init["cache"] exists, then set request’s cache mode to it. + if (init.cache !== undefined) { + request.cache = init.cache + } + + // 21. If request’s cache mode is "only-if-cached" and request’s mode is + // not "same-origin", then throw a TypeError. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ) + } + + // 22. If init["redirect"] exists, then set request’s redirect mode to it. + if (init.redirect !== undefined) { + request.redirect = init.redirect + } + + // 23. If init["integrity"] exists, then set request’s integrity metadata to it. + if (init.integrity != null) { + request.integrity = String(init.integrity) + } + + // 24. If init["keepalive"] exists, then set request’s keepalive to it. + if (init.keepalive !== undefined) { + request.keepalive = Boolean(init.keepalive) + } + + // 25. If init["method"] exists, then: + if (init.method !== undefined) { + // 1. Let method be init["method"]. + let method = init.method + + // 2. If method is not a method or method is a forbidden method, then + // throw a TypeError. + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`) + } + + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw new TypeError(`'${method}' HTTP method is unsupported.`) + } + + // 3. Normalize method. + method = normalizeMethodRecord[method] ?? normalizeMethod(method) + + // 4. Set request’s method to method. + request.method = method + } + + // 26. If init["signal"] exists, then set signal to it. + if (init.signal !== undefined) { + signal = init.signal + } + + // 27. Set this’s request to request. + this[kState] = request + + // 28. Set this’s signal to a new AbortSignal object with this’s relevant + // Realm. + // TODO: could this be simplified with AbortSignal.any + // (https://dom.spec.whatwg.org/#dom-abortsignal-any) + const ac = new AbortController() + this[kSignal] = ac.signal + this[kSignal][kRealm] = this[kRealm] + + // 29. If signal is not null, then make this’s signal follow signal. + if (signal != null) { + if ( + !signal || + typeof signal.aborted !== 'boolean' || + typeof signal.addEventListener !== 'function' + ) { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ) + } + + if (signal.aborted) { + ac.abort(signal.reason) + } else { + // Keep a strong ref to ac while request object + // is alive. This is needed to prevent AbortController + // from being prematurely garbage collected. + // See, https://github.com/nodejs/undici/issues/1926. + this[kAbortController] = ac + + const acRef = new WeakRef(ac) + const abort = function () { + const ac = acRef.deref() + if (ac !== undefined) { + ac.abort(this.reason) + } + } + + // Third-party AbortControllers may not work with these. + // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. + try { + // If the max amount of listeners is equal to the default, increase it + // This is only available in node >= v19.9.0 + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal) + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(100, signal) + } + } catch {} + + util.addAbortListener(signal, abort) + requestFinalizer.register(ac, { signal, abort }) + } + } + + // 30. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is request’s header list and guard is + // "request". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kHeadersList] = request.headersList + this[kHeaders][kGuard] = 'request' + this[kHeaders][kRealm] = this[kRealm] + + // 31. If this’s request’s mode is "no-cors", then: + if (mode === 'no-cors') { + // 1. If this’s request’s method is not a CORS-safelisted method, + // then throw a TypeError. + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError( + `'${request.method} is unsupported in no-cors mode.` + ) + } + + // 2. Set this’s headers’s guard to "request-no-cors". + this[kHeaders][kGuard] = 'request-no-cors' + } + + // 32. If init is not empty, then: + if (initHasKey) { + /** @type {HeadersList} */ + const headersList = this[kHeaders][kHeadersList] + // 1. Let headers be a copy of this’s headers and its associated header + // list. + // 2. If init["headers"] exists, then set headers to init["headers"]. + const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList) + + // 3. Empty this’s headers’s header list. + headersList.clear() + + // 4. If headers is a Headers object, then for each header in its header + // list, append header’s name/header’s value to this’s headers. + if (headers instanceof HeadersList) { + for (const [key, val] of headers) { + headersList.append(key, val) + } + // Note: Copy the `set-cookie` meta-data. + headersList.cookies = headers.cookies + } else { + // 5. Otherwise, fill this’s headers with headers. + fillHeaders(this[kHeaders], headers) + } + } + + // 33. Let inputBody be input’s request’s body if input is a Request + // object; otherwise null. + const inputBody = input instanceof Request ? input[kState].body : null + + // 34. If either init["body"] exists and is non-null or inputBody is + // non-null, and request’s method is `GET` or `HEAD`, then throw a + // TypeError. + if ( + (init.body != null || inputBody != null) && + (request.method === 'GET' || request.method === 'HEAD') + ) { + throw new TypeError('Request with GET/HEAD method cannot have body.') + } + + // 35. Let initBody be null. + let initBody = null + + // 36. If init["body"] exists and is non-null, then: + if (init.body != null) { + // 1. Let Content-Type be null. + // 2. Set initBody and Content-Type to the result of extracting + // init["body"], with keepalive set to request’s keepalive. + const [extractedBody, contentType] = extractBody( + init.body, + request.keepalive + ) + initBody = extractedBody + + // 3, If Content-Type is non-null and this’s headers’s header list does + // not contain `Content-Type`, then append `Content-Type`/Content-Type to + // this’s headers. + if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { + this[kHeaders].append('content-type', contentType) + } + } + + // 37. Let inputOrInitBody be initBody if it is non-null; otherwise + // inputBody. + const inputOrInitBody = initBody ?? inputBody + + // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is + // null, then: + if (inputOrInitBody != null && inputOrInitBody.source == null) { + // 1. If initBody is non-null and init["duplex"] does not exist, + // then throw a TypeError. + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.') + } + + // 2. If this’s request’s mode is neither "same-origin" nor "cors", + // then throw a TypeError. + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ) + } + + // 3. Set this’s request’s use-CORS-preflight flag. + request.useCORSPreflightFlag = true + } + + // 39. Let finalBody be inputOrInitBody. + let finalBody = inputOrInitBody + + // 40. If initBody is null and inputBody is non-null, then: + if (initBody == null && inputBody != null) { + // 1. If input is unusable, then throw a TypeError. + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + 'Cannot construct a Request with a Request object that has already been used.' + ) + } + + // 2. Set finalBody to the result of creating a proxy for inputBody. + if (!TransformStream) { + TransformStream = (__nccwpck_require__(3774).TransformStream) + } + + // https://streams.spec.whatwg.org/#readablestream-create-a-proxy + const identityTransform = new TransformStream() + inputBody.stream.pipeThrough(identityTransform) + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + } + } + + // 41. Set this’s request’s body to finalBody. + this[kState].body = finalBody + } + + // Returns request’s HTTP method, which is "GET" by default. + get method () { + webidl.brandCheck(this, Request) + + // The method getter steps are to return this’s request’s method. + return this[kState].method + } + + // Returns the URL of request as a string. + get url () { + webidl.brandCheck(this, Request) + + // The url getter steps are to return this’s request’s URL, serialized. + return URLSerializer(this[kState].url) + } + + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers () { + webidl.brandCheck(this, Request) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination () { + webidl.brandCheck(this, Request) + + // The destination getter are to return this’s request’s destination. + return this[kState].destination + } + + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer () { + webidl.brandCheck(this, Request) + + // 1. If this’s request’s referrer is "no-referrer", then return the + // empty string. + if (this[kState].referrer === 'no-referrer') { + return '' + } + + // 2. If this’s request’s referrer is "client", then return + // "about:client". + if (this[kState].referrer === 'client') { + return 'about:client' + } + + // Return this’s request’s referrer, serialized. + return this[kState].referrer.toString() + } + + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy () { + webidl.brandCheck(this, Request) + + // The referrerPolicy getter steps are to return this’s request’s referrer policy. + return this[kState].referrerPolicy + } + + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode () { + webidl.brandCheck(this, Request) + + // The mode getter steps are to return this’s request’s mode. + return this[kState].mode + } + + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials () { + // The credentials getter steps are to return this’s request’s credentials mode. + return this[kState].credentials + } + + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache () { + webidl.brandCheck(this, Request) + + // The cache getter steps are to return this’s request’s cache mode. + return this[kState].cache + } + + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect () { + webidl.brandCheck(this, Request) + + // The redirect getter steps are to return this’s request’s redirect mode. + return this[kState].redirect + } + + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity () { + webidl.brandCheck(this, Request) + + // The integrity getter steps are to return this’s request’s integrity + // metadata. + return this[kState].integrity + } + + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive () { + webidl.brandCheck(this, Request) + + // The keepalive getter steps are to return this’s request’s keepalive. + return this[kState].keepalive + } + + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation () { + webidl.brandCheck(this, Request) + + // The isReloadNavigation getter steps are to return true if this’s + // request’s reload-navigation flag is set; otherwise false. + return this[kState].reloadNavigation + } + + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation () { + webidl.brandCheck(this, Request) + + // The isHistoryNavigation getter steps are to return true if this’s request’s + // history-navigation flag is set; otherwise false. + return this[kState].historyNavigation + } + + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal () { + webidl.brandCheck(this, Request) + + // The signal getter steps are to return this’s signal. + return this[kSignal] + } + + get body () { + webidl.brandCheck(this, Request) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Request) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + get duplex () { + webidl.brandCheck(this, Request) + + return 'half' + } + + // Returns a clone of request. + clone () { + webidl.brandCheck(this, Request) + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || this.body?.locked) { + throw new TypeError('unusable') + } + + // 2. Let clonedRequest be the result of cloning this’s request. + const clonedRequest = cloneRequest(this[kState]) + + // 3. Let clonedRequestObject be the result of creating a Request object, + // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. + const clonedRequestObject = new Request(kConstruct) + clonedRequestObject[kState] = clonedRequest + clonedRequestObject[kRealm] = this[kRealm] + clonedRequestObject[kHeaders] = new Headers(kConstruct) + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm] + + // 4. Make clonedRequestObject’s signal follow this’s signal. + const ac = new AbortController() + if (this.signal.aborted) { + ac.abort(this.signal.reason) + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason) + } + ) + } + clonedRequestObject[kSignal] = ac.signal + + // 4. Return clonedRequestObject. + return clonedRequestObject + } +} + +mixinBody(Request) + +function makeRequest (init) { + // https://fetch.spec.whatwg.org/#requests + const request = { + method: 'GET', + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: '', + window: 'client', + keepalive: false, + serviceWorkers: 'all', + initiator: '', + destination: '', + priority: null, + origin: 'client', + policyContainer: 'client', + referrer: 'client', + referrerPolicy: '', + mode: 'no-cors', + useCORSPreflightFlag: false, + credentials: 'same-origin', + useCredentials: false, + cache: 'default', + redirect: 'follow', + integrity: '', + cryptoGraphicsNonceMetadata: '', + parserMetadata: '', + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: 'basic', + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList() + } + request.url = request.urlList[0] + return request +} + +// https://fetch.spec.whatwg.org/#concept-request-clone +function cloneRequest (request) { + // To clone a request request, run these steps: + + // 1. Let newRequest be a copy of request, except for its body. + const newRequest = makeRequest({ ...request, body: null }) + + // 2. If request’s body is non-null, set newRequest’s body to the + // result of cloning request’s body. + if (request.body != null) { + newRequest.body = cloneBody(request.body) + } + + // 3. Return newRequest. + return newRequest +} + +Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true + } +}) + +webidl.converters.Request = webidl.interfaceConverter( + Request +) + +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (V instanceof Request) { + return webidl.converters.Request(V) + } + + return webidl.converters.USVString(V) +} + +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) + +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } +]) + +module.exports = { Request, makeRequest } + + +/***/ }), + +/***/ 8676: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Headers, HeadersList, fill } = __nccwpck_require__(6349) +const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(8923) +const util = __nccwpck_require__(3440) +const { kEnumerableProperty } = util +const { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode +} = __nccwpck_require__(5523) +const { + redirectStatusSet, + nullBodyStatus, + DOMException +} = __nccwpck_require__(7326) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(9710) +const { webidl } = __nccwpck_require__(4222) +const { FormData } = __nccwpck_require__(3073) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { URLSerializer } = __nccwpck_require__(4322) +const { kHeadersList, kConstruct } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { types } = __nccwpck_require__(9023) + +const ReadableStream = globalThis.ReadableStream || (__nccwpck_require__(3774).ReadableStream) +const textEncoder = new TextEncoder('utf-8') + +// https://fetch.spec.whatwg.org/#response-class +class Response { + // Creates network error Response. + static error () { + // TODO + const relevantRealm = { settingsObject: {} } + + // The static error() method steps are to return the result of creating a + // Response object, given a new network error, "immutable", and this’s + // relevant Realm. + const responseObject = new Response() + responseObject[kState] = makeNetworkError() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response-json + static json (data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }) + + if (init !== null) { + init = webidl.converters.ResponseInit(init) + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ) + + // 2. Let body be the result of extracting bytes. + const body = extractBody(bytes) + + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + const relevantRealm = { settingsObject: {} } + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'response' + responseObject[kHeaders][kRealm] = relevantRealm + + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) + + // 5. Return responseObject. + return responseObject + } + + // Creates a redirect Response that redirects to url with status status. + static redirect (url, status = 302) { + const relevantRealm = { settingsObject: {} } + + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }) + + url = webidl.converters.USVString(url) + status = webidl.converters['unsigned short'](status) + + // 1. Let parsedURL be the result of parsing url with current settings + // object’s API base URL. + // 2. If parsedURL is failure, then throw a TypeError. + // TODO: base-URL? + let parsedURL + try { + parsedURL = new URL(url, getGlobalOrigin()) + } catch (err) { + throw Object.assign(new TypeError('Failed to parse URL from ' + url), { + cause: err + }) + } + + // 3. If status is not a redirect status, then throw a RangeError. + if (!redirectStatusSet.has(status)) { + throw new RangeError('Invalid status code ' + status) + } + + // 4. Let responseObject be the result of creating a Response object, + // given a new response, "immutable", and this’s relevant Realm. + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + + // 5. Set responseObject’s response’s status to status. + responseObject[kState].status = status + + // 6. Let value be parsedURL, serialized and isomorphic encoded. + const value = isomorphicEncode(URLSerializer(parsedURL)) + + // 7. Append `Location`/value to responseObject’s response’s header list. + responseObject[kState].headersList.append('location', value) + + // 8. Return responseObject. + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response + constructor (body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body) + } + + init = webidl.converters.ResponseInit(init) + + // TODO + this[kRealm] = { settingsObject: {} } + + // 1. Set this’s response to a new response. + this[kState] = makeResponse({}) + + // 2. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is this’s response’s header list and guard + // is "response". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kGuard] = 'response' + this[kHeaders][kHeadersList] = this[kState].headersList + this[kHeaders][kRealm] = this[kRealm] + + // 3. Let bodyWithType be null. + let bodyWithType = null + + // 4. If body is non-null, then set bodyWithType to the result of extracting body. + if (body != null) { + const [extractedBody, type] = extractBody(body) + bodyWithType = { body: extractedBody, type } + } + + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType) + } + + // Returns response’s type, e.g., "cors". + get type () { + webidl.brandCheck(this, Response) + + // The type getter steps are to return this’s response’s type. + return this[kState].type + } + + // Returns response’s URL, if it has one; otherwise the empty string. + get url () { + webidl.brandCheck(this, Response) + + const urlList = this[kState].urlList + + // The url getter steps are to return the empty string if this’s + // response’s URL is null; otherwise this’s response’s URL, + // serialized with exclude fragment set to true. + const url = urlList[urlList.length - 1] ?? null + + if (url === null) { + return '' + } + + return URLSerializer(url, true) + } + + // Returns whether response was obtained through a redirect. + get redirected () { + webidl.brandCheck(this, Response) + + // The redirected getter steps are to return true if this’s response’s URL + // list has more than one item; otherwise false. + return this[kState].urlList.length > 1 + } + + // Returns response’s status. + get status () { + webidl.brandCheck(this, Response) + + // The status getter steps are to return this’s response’s status. + return this[kState].status + } + + // Returns whether response’s status is an ok status. + get ok () { + webidl.brandCheck(this, Response) + + // The ok getter steps are to return true if this’s response’s status is an + // ok status; otherwise false. + return this[kState].status >= 200 && this[kState].status <= 299 + } + + // Returns response’s status message. + get statusText () { + webidl.brandCheck(this, Response) + + // The statusText getter steps are to return this’s response’s status + // message. + return this[kState].statusText + } + + // Returns response’s headers as Headers. + get headers () { + webidl.brandCheck(this, Response) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + get body () { + webidl.brandCheck(this, Response) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Response) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + // Returns a clone of response. + clone () { + webidl.brandCheck(this, Response) + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || (this.body && this.body.locked)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }) + } + + // 2. Let clonedResponse be the result of cloning this’s response. + const clonedResponse = cloneResponse(this[kState]) + + // 3. Return the result of creating a Response object, given + // clonedResponse, this’s headers’s guard, and this’s relevant Realm. + const clonedResponseObject = new Response() + clonedResponseObject[kState] = clonedResponse + clonedResponseObject[kRealm] = this[kRealm] + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm] + + return clonedResponseObject + } +} + +mixinBody(Response) + +Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } +}) + +Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty +}) + +// https://fetch.spec.whatwg.org/#concept-response-clone +function cloneResponse (response) { + // To clone a response response, run these steps: + + // 1. If response is a filtered response, then return a new identical + // filtered response whose internal response is a clone of response’s + // internal response. + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ) + } + + // 2. Let newResponse be a copy of response, except for its body. + const newResponse = makeResponse({ ...response, body: null }) + + // 3. If response’s body is non-null, then set newResponse’s body to the + // result of cloning response’s body. + if (response.body != null) { + newResponse.body = cloneBody(response.body) + } + + // 4. Return newResponse. + return newResponse +} + +function makeResponse (init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + } +} + +function makeNetworkError (reason) { + const isError = isErrorLike(reason) + return makeResponse({ + type: 'error', + status: 0, + error: isError + ? reason + : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }) +} + +function makeFilteredResponse (response, state) { + state = { + internalResponse: response, + ...state + } + + return new Proxy(response, { + get (target, p) { + return p in state ? state[p] : target[p] + }, + set (target, p, value) { + assert(!(p in state)) + target[p] = value + return true + } + }) +} + +// https://fetch.spec.whatwg.org/#concept-filtered-response +function filterResponse (response, type) { + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (type === 'basic') { + // A basic filtered response is a filtered response whose type is "basic" + // and header list excludes any headers in internal response’s header list + // whose name is a forbidden response-header name. + + // Note: undici does not implement forbidden response-header names + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }) + } else if (type === 'cors') { + // A CORS filtered response is a filtered response whose type is "cors" + // and header list excludes any headers in internal response’s header + // list whose name is not a CORS-safelisted response-header name, given + // internal response’s CORS-exposed header-name list. + + // Note: undici does not implement CORS-safelisted response-header names + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }) + } else if (type === 'opaque') { + // An opaque filtered response is a filtered response whose type is + // "opaque", URL list is the empty list, status is 0, status message + // is the empty byte sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }) + } else if (type === 'opaqueredirect') { + // An opaque-redirect filtered response is a filtered response whose type + // is "opaqueredirect", status is 0, status message is the empty byte + // sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }) + } else { + assert(false) + } +} + +// https://fetch.spec.whatwg.org/#appropriate-network-error +function makeAppropriateNetworkError (fetchParams, err = null) { + // 1. Assert: fetchParams is canceled. + assert(isCancelled(fetchParams)) + + // 2. Return an aborted network error if fetchParams is aborted; + // otherwise return a network error. + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })) +} + +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse (response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') + } + + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText') + } + } + + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status + } + + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText + } + + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers) + } + + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code ' + response.status + }) + } + + // 2. Set response's body to body's body. + response[kState].body = body.body + + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.contains('Content-Type')) { + response[kState].headersList.append('content-type', body.type) + } + } +} + +webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream +) + +webidl.converters.FormData = webidl.interfaceConverter( + FormData +) + +webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams +) + +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V) + } + + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }) + } + + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V) + } + + return webidl.converters.DOMString(V) +} + +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V) + } + + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V?.[Symbol.asyncIterator]) { + return V + } + + return webidl.converters.XMLHttpRequestBodyInit(V) +} + +webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + } +]) + +module.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse +} + + +/***/ }), + +/***/ 9710: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kGuard: Symbol('guard'), + kRealm: Symbol('realm') +} + + +/***/ }), + +/***/ 5523: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = __nccwpck_require__(7326) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { performance } = __nccwpck_require__(2987) +const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3440) +const assert = __nccwpck_require__(2613) +const { isUint8Array } = __nccwpck_require__(8253) + +let supportedHashes = [] + +// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable +/** @type {import('crypto')|undefined} */ +let crypto + +try { + crypto = __nccwpck_require__(6982) + const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] + supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) +/* c8 ignore next 3 */ +} catch { +} + +function responseURL (response) { + // https://fetch.spec.whatwg.org/#responses + // A response has an associated URL. It is a pointer to the last URL + // in response’s URL list and null if response’s URL list is empty. + const urlList = response.urlList + const length = urlList.length + return length === 0 ? null : urlList[length - 1].toString() +} + +// https://fetch.spec.whatwg.org/#concept-response-location-url +function responseLocationURL (response, requestFragment) { + // 1. If response’s status is not a redirect status, then return null. + if (!redirectStatusSet.has(response.status)) { + return null + } + + // 2. Let location be the result of extracting header list values given + // `Location` and response’s header list. + let location = response.headersList.get('location') + + // 3. If location is a header value, then set location to the result of + // parsing location with response’s URL. + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)) + } + + // 4. If location is a URL whose fragment is null, then set location’s + // fragment to requestFragment. + if (location && !location.hash) { + location.hash = requestFragment + } + + // 5. Return location. + return location +} + +/** @returns {URL} */ +function requestCurrentURL (request) { + return request.urlList[request.urlList.length - 1] +} + +function requestBadPort (request) { + // 1. Let url be request’s current URL. + const url = requestCurrentURL(request) + + // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, + // then return blocked. + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked' + } + + // 3. Return allowed. + return 'allowed' +} + +function isErrorLike (object) { + return object instanceof Error || ( + object?.constructor?.name === 'Error' || + object?.constructor?.name === 'DOMException' + ) +} + +// Check whether |statusText| is a ByteString and +// matches the Reason-Phrase token production. +// RFC 2616: https://tools.ietf.org/html/rfc2616 +// RFC 7230: https://tools.ietf.org/html/rfc7230 +// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" +// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 +function isValidReasonPhrase (statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i) + if ( + !( + ( + c === 0x09 || // HTAB + (c >= 0x20 && c <= 0x7e) || // SP / VCHAR + (c >= 0x80 && c <= 0xff) + ) // obs-text + ) + ) { + return false + } + } + return true +} + +/** + * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 + * @param {number} c + */ +function isTokenCharCode (c) { + switch (c) { + case 0x22: + case 0x28: + case 0x29: + case 0x2c: + case 0x2f: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x40: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x7b: + case 0x7d: + // DQUOTE and "(),/:;<=>?@[\]{}" + return false + default: + // VCHAR %x21-7E + return c >= 0x21 && c <= 0x7e + } +} + +/** + * @param {string} characters + */ +function isValidHTTPToken (characters) { + if (characters.length === 0) { + return false + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false + } + } + return true +} + +/** + * @see https://fetch.spec.whatwg.org/#header-name + * @param {string} potentialValue + */ +function isValidHeaderName (potentialValue) { + return isValidHTTPToken(potentialValue) +} + +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue (potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + if ( + potentialValue.startsWith('\t') || + potentialValue.startsWith(' ') || + potentialValue.endsWith('\t') || + potentialValue.endsWith(' ') + ) { + return false + } + + if ( + potentialValue.includes('\0') || + potentialValue.includes('\r') || + potentialValue.includes('\n') + ) { + return false + } + + return true +} + +// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect +function setRequestReferrerPolicyOnRedirect (request, actualResponse) { + // Given a request request and a response actualResponse, this algorithm + // updates request’s referrer policy according to the Referrer-Policy + // header (if any) in actualResponse. + + // 1. Let policy be the result of executing § 8.1 Parse a referrer policy + // from a Referrer-Policy header on actualResponse. + + // 8.1 Parse a referrer policy from a Referrer-Policy header + // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. + const { headersList } = actualResponse + // 2. Let policy be the empty string. + // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. + // 4. Return policy. + const policyHeader = (headersList.get('referrer-policy') ?? '').split(',') + + // Note: As the referrer-policy can contain multiple policies + // separated by comma, we need to loop through all of them + // and pick the first valid one. + // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy + let policy = '' + if (policyHeader.length > 0) { + // The right-most policy takes precedence. + // The left-most policy is the fallback. + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim() + if (referrerPolicyTokens.has(token)) { + policy = token + break + } + } + } + + // 2. If policy is not the empty string, then set request’s referrer policy to policy. + if (policy !== '') { + request.referrerPolicy = policy + } +} + +// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check +function crossOriginResourcePolicyCheck () { + // TODO + return 'allowed' +} + +// https://fetch.spec.whatwg.org/#concept-cors-check +function corsCheck () { + // TODO + return 'success' +} + +// https://fetch.spec.whatwg.org/#concept-tao-check +function TAOCheck () { + // TODO + return 'success' +} + +function appendFetchMetadata (httpRequest) { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + + // 1. Assert: r’s url is a potentially trustworthy URL. + // TODO + + // 2. Let header be a Structured Header whose value is a token. + let header = null + + // 3. Set header’s value to r’s mode. + header = httpRequest.mode + + // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. + httpRequest.headersList.set('sec-fetch-mode', header) + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header + // TODO +} + +// https://fetch.spec.whatwg.org/#append-a-request-origin-header +function appendRequestOriginHeader (request) { + // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. + let serializedOrigin = request.origin + + // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin) + } + + // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + // 1. Switch on request’s referrer policy: + switch (request.referrerPolicy) { + case 'no-referrer': + // Set serializedOrigin to `null`. + serializedOrigin = null + break + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null + } + break + case 'same-origin': + // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null + } + break + default: + // Do nothing. + } + + if (serializedOrigin) { + // 2. Append (`Origin`, serializedOrigin) to request’s header list. + request.headersList.append('origin', serializedOrigin) + } + } +} + +function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { + // TODO + return performance.now() +} + +// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info +function createOpaqueTimingInfo (timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#policy-container +function makePolicyContainer () { + // Note: the fetch spec doesn't make use of embedder policy or CSP list + return { + referrerPolicy: 'strict-origin-when-cross-origin' + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container +function clonePolicyContainer (policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + } +} + +// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer +function determineRequestsReferrer (request) { + // 1. Let policy be request's referrer policy. + const policy = request.referrerPolicy + + // Note: policy cannot (shouldn't) be null or an empty string. + assert(policy) + + // 2. Let environment be request’s client. + + let referrerSource = null + + // 3. Switch on request’s referrer: + if (request.referrer === 'client') { + // Note: node isn't a browser and doesn't implement document/iframes, + // so we bypass this step and replace it with our own. + + const globalOrigin = getGlobalOrigin() + + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer' + } + + // note: we need to clone it as it's mutated + referrerSource = new URL(globalOrigin) + } else if (request.referrer instanceof URL) { + // Let referrerSource be request’s referrer. + referrerSource = request.referrer + } + + // 4. Let request’s referrerURL be the result of stripping referrerSource for + // use as a referrer. + let referrerURL = stripURLForReferrer(referrerSource) + + // 5. Let referrerOrigin be the result of stripping referrerSource for use as + // a referrer, with the origin-only flag set to true. + const referrerOrigin = stripURLForReferrer(referrerSource, true) + + // 6. If the result of serializing referrerURL is a string whose length is + // greater than 4096, set referrerURL to referrerOrigin. + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin + } + + const areSameOrigin = sameOrigin(request, referrerURL) + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && + !isURLPotentiallyTrustworthy(request.url) + + // 8. Execute the switch statements corresponding to the value of policy: + switch (policy) { + case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true) + case 'unsafe-url': return referrerURL + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer' + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request) + + // 1. If the origin of referrerURL and the origin of request’s current + // URL are the same, then return referrerURL. + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL + } + + // 2. If referrerURL is a potentially trustworthy URL and request’s + // current URL is not a potentially trustworthy URL, then return no + // referrer. + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer' + } + + // 3. Return referrerOrigin. + return referrerOrigin + } + case 'strict-origin': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + case 'no-referrer-when-downgrade': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + + default: // eslint-disable-line + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin + } +} + +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url + * @param {URL} url + * @param {boolean|undefined} originOnly + */ +function stripURLForReferrer (url, originOnly) { + // 1. Assert: url is a URL. + assert(url instanceof URL) + + // 2. If url’s scheme is a local scheme, then return no referrer. + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer' + } + + // 3. Set url’s username to the empty string. + url.username = '' + + // 4. Set url’s password to the empty string. + url.password = '' + + // 5. Set url’s fragment to null. + url.hash = '' + + // 6. If the origin-only flag is true, then: + if (originOnly) { + // 1. Set url’s path to « the empty string ». + url.pathname = '' + + // 2. Set url’s query to null. + url.search = '' + } + + // 7. Return url. + return url +} + +function isURLPotentiallyTrustworthy (url) { + if (!(url instanceof URL)) { + return false + } + + // If child of about, return true + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true + } + + // If scheme is data, return true + if (url.protocol === 'data:') return true + + // If file, return true + if (url.protocol === 'file:') return true + + return isOriginPotentiallyTrustworthy(url.origin) + + function isOriginPotentiallyTrustworthy (origin) { + // If origin is explicitly null, return false + if (origin == null || origin === 'null') return false + + const originAsURL = new URL(origin) + + // If secure, return true + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true + } + + // If localhost or variants, return true + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) || + (originAsURL.hostname.endsWith('.localhost'))) { + return true + } + + // If any other, return false + return false + } +} + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist + * @param {Uint8Array} bytes + * @param {string} metadataList + */ +function bytesMatch (bytes, metadataList) { + // If node is not built with OpenSSL support, we cannot check + // a request's integrity, so allow it by default (the spec will + // allow requests if an invalid hash is given, as precedence). + /* istanbul ignore if: only if node is built with --without-ssl */ + if (crypto === undefined) { + return true + } + + // 1. Let parsedMetadata be the result of parsing metadataList. + const parsedMetadata = parseMetadata(metadataList) + + // 2. If parsedMetadata is no metadata, return true. + if (parsedMetadata === 'no metadata') { + return true + } + + // 3. If response is not eligible for integrity validation, return false. + // TODO + + // 4. If parsedMetadata is the empty set, return true. + if (parsedMetadata.length === 0) { + return true + } + + // 5. Let metadata be the result of getting the strongest + // metadata from parsedMetadata. + const strongest = getStrongestMetadata(parsedMetadata) + const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) + + // 6. For each item in metadata: + for (const item of metadata) { + // 1. Let algorithm be the alg component of item. + const algorithm = item.algo + + // 2. Let expectedValue be the val component of item. + const expectedValue = item.hash + + // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e + // "be liberal with padding". This is annoying, and it's not even in the spec. + + // 3. Let actualValue be the result of applying algorithm to bytes. + let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') + + if (actualValue[actualValue.length - 1] === '=') { + if (actualValue[actualValue.length - 2] === '=') { + actualValue = actualValue.slice(0, -2) + } else { + actualValue = actualValue.slice(0, -1) + } + } + + // 4. If actualValue is a case-sensitive match for expectedValue, + // return true. + if (compareBase64Mixed(actualValue, expectedValue)) { + return true + } + } + + // 7. Return false. + return false +} + +// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options +// https://www.w3.org/TR/CSP2/#source-list-syntax +// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 +const parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + * @param {string} metadata + */ +function parseMetadata (metadata) { + // 1. Let result be the empty set. + /** @type {{ algo: string, hash: string }[]} */ + const result = [] + + // 2. Let empty be equal to true. + let empty = true + + // 3. For each token returned by splitting metadata on spaces: + for (const token of metadata.split(' ')) { + // 1. Set empty to false. + empty = false + + // 2. Parse token as a hash-with-options. + const parsedToken = parseHashWithOptions.exec(token) + + // 3. If token does not parse, continue to the next token. + if ( + parsedToken === null || + parsedToken.groups === undefined || + parsedToken.groups.algo === undefined + ) { + // Note: Chromium blocks the request at this point, but Firefox + // gives a warning that an invalid integrity was given. The + // correct behavior is to ignore these, and subsequently not + // check the integrity of the resource. + continue + } + + // 4. Let algorithm be the hash-algo component of token. + const algorithm = parsedToken.groups.algo.toLowerCase() + + // 5. If algorithm is a hash function recognized by the user + // agent, add the parsed token to result. + if (supportedHashes.includes(algorithm)) { + result.push(parsedToken.groups) + } + } + + // 4. Return no metadata if empty is true, otherwise return result. + if (empty === true) { + return 'no metadata' + } + + return result +} + +/** + * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList + */ +function getStrongestMetadata (metadataList) { + // Let algorithm be the algo component of the first item in metadataList. + // Can be sha256 + let algorithm = metadataList[0].algo + // If the algorithm is sha512, then it is the strongest + // and we can return immediately + if (algorithm[3] === '5') { + return algorithm + } + + for (let i = 1; i < metadataList.length; ++i) { + const metadata = metadataList[i] + // If the algorithm is sha512, then it is the strongest + // and we can break the loop immediately + if (metadata.algo[3] === '5') { + algorithm = 'sha512' + break + // If the algorithm is sha384, then a potential sha256 or sha384 is ignored + } else if (algorithm[3] === '3') { + continue + // algorithm is sha256, check if algorithm is sha384 and if so, set it as + // the strongest + } else if (metadata.algo[3] === '3') { + algorithm = 'sha384' + } + } + return algorithm +} + +function filterMetadataListByAlgorithm (metadataList, algorithm) { + if (metadataList.length === 1) { + return metadataList + } + + let pos = 0 + for (let i = 0; i < metadataList.length; ++i) { + if (metadataList[i].algo === algorithm) { + metadataList[pos++] = metadataList[i] + } + } + + metadataList.length = pos + + return metadataList +} + +/** + * Compares two base64 strings, allowing for base64url + * in the second string. + * +* @param {string} actualValue always base64 + * @param {string} expectedValue base64 or base64url + * @returns {boolean} + */ +function compareBase64Mixed (actualValue, expectedValue) { + if (actualValue.length !== expectedValue.length) { + return false + } + for (let i = 0; i < actualValue.length; ++i) { + if (actualValue[i] !== expectedValue[i]) { + if ( + (actualValue[i] === '+' && expectedValue[i] === '-') || + (actualValue[i] === '/' && expectedValue[i] === '_') + ) { + continue + } + return false + } + } + + return true +} + +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request +function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { + // TODO +} + +/** + * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} + * @param {URL} A + * @param {URL} B + */ +function sameOrigin (A, B) { + // 1. If A and B are the same opaque origin, then return true. + if (A.origin === B.origin && A.origin === 'null') { + return true + } + + // 2. If A and B are both tuple origins and their schemes, + // hosts, and port are identical, then return true. + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true + } + + // 3. Return false. + return false +} + +function createDeferredPromise () { + let res + let rej + const promise = new Promise((resolve, reject) => { + res = resolve + rej = reject + }) + + return { promise, resolve: res, reject: rej } +} + +function isAborted (fetchParams) { + return fetchParams.controller.state === 'aborted' +} + +function isCancelled (fetchParams) { + return fetchParams.controller.state === 'aborted' || + fetchParams.controller.state === 'terminated' +} + +const normalizeMethodRecord = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(normalizeMethodRecord, null) + +/** + * @see https://fetch.spec.whatwg.org/#concept-method-normalize + * @param {string} method + */ +function normalizeMethod (method) { + return normalizeMethodRecord[method.toLowerCase()] ?? method +} + +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString (value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + const result = JSON.stringify(value) + + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable') + } + + // 3. Assert: result is a string. + assert(typeof result === 'string') + + // 4. Return result. + return result +} + +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {() => unknown[]} iterator + * @param {string} name name of the instance + * @param {'key'|'value'|'key+value'} kind + */ +function makeIterator (iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + } + + const i = { + next () { + // 1. Let interface be the interface for which the iterator prototype object exists. + + // 2. Let thisValue be the this value. + + // 3. Let object be ? ToObject(thisValue). + + // 4. If object is a platform object, then perform a security + // check, passing: + + // 5. If object is not a default iterator object for interface, + // then throw a TypeError. + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ) + } + + // 6. Let index be object’s index. + // 7. Let kind be object’s kind. + // 8. Let values be object’s target's value pairs to iterate over. + const { index, kind, target } = object + const values = target() + + // 9. Let len be the length of values. + const len = values.length + + // 10. If index is greater than or equal to len, then return + // CreateIterResultObject(undefined, true). + if (index >= len) { + return { value: undefined, done: true } + } + + // 11. Let pair be the entry in values at index index. + const pair = values[index] + + // 12. Set object’s index to index + 1. + object.index = index + 1 + + // 13. Return the iterator result for pair and kind. + return iteratorResult(pair, kind) + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + } + + // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. + Object.setPrototypeOf(i, esIteratorPrototype) + // esIteratorPrototype needs to be the prototype of i + // which is the prototype of an empty object. Yes, it's confusing. + return Object.setPrototypeOf({}, i) +} + +// https://webidl.spec.whatwg.org/#iterator-result +function iteratorResult (pair, kind) { + let result + + // 1. Let result be a value determined by the value of kind: + switch (kind) { + case 'key': { + // 1. Let idlKey be pair’s key. + // 2. Let key be the result of converting idlKey to an + // ECMAScript value. + // 3. result is key. + result = pair[0] + break + } + case 'value': { + // 1. Let idlValue be pair’s value. + // 2. Let value be the result of converting idlValue to + // an ECMAScript value. + // 3. result is value. + result = pair[1] + break + } + case 'key+value': { + // 1. Let idlKey be pair’s key. + // 2. Let idlValue be pair’s value. + // 3. Let key be the result of converting idlKey to an + // ECMAScript value. + // 4. Let value be the result of converting idlValue to + // an ECMAScript value. + // 5. Let array be ! ArrayCreate(2). + // 6. Call ! CreateDataProperty(array, "0", key). + // 7. Call ! CreateDataProperty(array, "1", value). + // 8. result is array. + result = pair + break + } + } + + // 2. Return CreateIterResultObject(result, false). + return { value: result, done: false } +} + +/** + * @see https://fetch.spec.whatwg.org/#body-fully-read + */ +async function fullyReadBody (body, processBody, processBodyError) { + // 1. If taskDestination is null, then set taskDestination to + // the result of starting a new parallel queue. + + // 2. Let successSteps given a byte sequence bytes be to queue a + // fetch task to run processBody given bytes, with taskDestination. + const successSteps = processBody + + // 3. Let errorSteps be to queue a fetch task to run processBodyError, + // with taskDestination. + const errorSteps = processBodyError + + // 4. Let reader be the result of getting a reader for body’s stream. + // If that threw an exception, then run errorSteps with that + // exception and return. + let reader + + try { + reader = body.stream.getReader() + } catch (e) { + errorSteps(e) + return + } + + // 5. Read all bytes from reader, given successSteps and errorSteps. + try { + const result = await readAllBytes(reader) + successSteps(result) + } catch (e) { + errorSteps(e) + } +} + +/** @type {ReadableStream} */ +let ReadableStream = globalThis.ReadableStream + +function isReadableStreamLike (stream) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(3774).ReadableStream) + } + + return stream instanceof ReadableStream || ( + stream[Symbol.toStringTag] === 'ReadableStream' && + typeof stream.tee === 'function' + ) +} + +const MAXIMUM_ARGUMENT_LENGTH = 65535 + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-decode + * @param {number[]|Uint8Array} input + */ +function isomorphicDecode (input) { + // 1. To isomorphic decode a byte sequence input, return a string whose code point + // length is equal to input’s length and whose code points have the same values + // as the values of input’s bytes, in the same order. + + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input) + } + + return input.reduce((previous, current) => previous + String.fromCharCode(current), '') +} + +/** + * @param {ReadableStreamController} controller + */ +function readableStreamClose (controller) { + try { + controller.close() + } catch (err) { + // TODO: add comment explaining why this error occurs. + if (!err.message.includes('Controller is already closed')) { + throw err + } + } +} + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-encode + * @param {string} input + */ +function isomorphicEncode (input) { + // 1. Assert: input contains no code points greater than U+00FF. + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 0xFF) + } + + // 2. Return a byte sequence whose length is equal to input’s code + // point length and whose bytes have the same values as the + // values of input’s code points, in the same order + return input +} + +/** + * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes + * @see https://streams.spec.whatwg.org/#read-loop + * @param {ReadableStreamDefaultReader} reader + */ +async function readAllBytes (reader) { + const bytes = [] + let byteLength = 0 + + while (true) { + const { done, value: chunk } = await reader.read() + + if (done) { + // 1. Call successSteps with bytes. + return Buffer.concat(bytes, byteLength) + } + + // 1. If chunk is not a Uint8Array object, call failureSteps + // with a TypeError and abort these steps. + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk') + } + + // 2. Append the bytes represented by chunk to bytes. + bytes.push(chunk) + byteLength += chunk.length + + // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + } +} + +/** + * @see https://fetch.spec.whatwg.org/#is-local + * @param {URL} url + */ +function urlIsLocal (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:' +} + +/** + * @param {string|URL} url + */ +function urlHasHttpsScheme (url) { + if (typeof url === 'string') { + return url.startsWith('https:') + } + + return url.protocol === 'https:' +} + +/** + * @see https://fetch.spec.whatwg.org/#http-scheme + * @param {URL} url + */ +function urlIsHttpHttpsScheme (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'http:' || protocol === 'https:' +} + +/** + * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. + */ +const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)) + +module.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + normalizeMethodRecord, + parseMetadata +} + + +/***/ }), + +/***/ 4222: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { types } = __nccwpck_require__(9023) +const { hasOwn, toUSVString } = __nccwpck_require__(5523) + +/** @type {import('../../types/webidl').Webidl} */ +const webidl = {} +webidl.converters = {} +webidl.util = {} +webidl.errors = {} + +webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`) +} + +webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of' + const message = + `${context.argument} could not be converted to` + + `${plural}: ${context.types.join(', ')}.` + + return webidl.errors.exception({ + header: context.prefix, + message + }) +} + +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }) +} + +// https://webidl.spec.whatwg.org/#implements +webidl.brandCheck = function (V, I, opts = undefined) { + if (opts?.strict !== false && !(V instanceof I)) { + throw new TypeError('Illegal invocation') + } else { + return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag] + } +} + +webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, ` + + `but${length ? ' only' : ''} ${length} found.`, + ...ctx + }) + } +} + +webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }) +} + +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': return 'Undefined' + case 'boolean': return 'Boolean' + case 'string': return 'String' + case 'symbol': return 'Symbol' + case 'number': return 'Number' + case 'bigint': return 'BigInt' + case 'function': + case 'object': { + if (V === null) { + return 'Null' + } + + return 'Object' + } + } +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { + let upperBound + let lowerBound + + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1 + + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0 + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1 + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: + + // 1. Let lowerBound be 0. + lowerBound = 0 + + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1 + } else { + // 3. Otherwise: + + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1 + + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1 + } + + // 4. Let x be ? ToNumber(V). + let x = Number(V) + + // 5. If x is −0, then set x to +0. + if (x === 0) { + x = 0 + } + + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if ( + Number.isNaN(x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${V} to an integer.` + }) + } + + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }) + } + + // 4. Return x. + return x + } + + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound) + + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x) + } else { + x = Math.ceil(x) + } + + // 3. Return x. + return x + } + + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if ( + Number.isNaN(x) || + (x === 0 && Object.is(0, x)) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0 + } + + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength) + + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength) + } + + // 12. Otherwise, return x. + return x +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + const r = Math.floor(Math.abs(n)) + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r + } + + // 3. Otherwise, return r. + return r +} + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return (V) => { + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: 'Sequence', + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }) + } + + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + const method = V?.[Symbol.iterator]?.() + const seq = [] + + // 3. If method is undefined, throw a TypeError. + if ( + method === undefined || + typeof method.next !== 'function' + ) { + throw webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }) + } + + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + const { done, value } = method.next() + + if (done) { + break + } + + seq.push(converter(value)) + } + + return seq + } +} + +// https://webidl.spec.whatwg.org/#es-to-record +webidl.recordConverter = function (keyConverter, valueConverter) { + return (O) => { + // 1. If Type(O) is not Object, throw a TypeError. + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: 'Record', + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }) + } + + // 2. Let result be a new empty instance of record. + const result = {} + + if (!types.isProxy(O)) { + // Object.keys only returns enumerable properties + const keys = Object.keys(O) + + for (const key of keys) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + + // 5. Return result. + return result + } + + // 3. Let keys be ? O.[[OwnPropertyKeys]](). + const keys = Reflect.ownKeys(O) + + // 4. For each key of keys. + for (const key of keys) { + // 1. Let desc be ? O.[[GetOwnProperty]](key). + const desc = Reflect.getOwnPropertyDescriptor(O, key) + + // 2. If desc is not undefined and desc.[[Enumerable]] is true: + if (desc?.enumerable) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + } + + // 5. Return result. + return result + } +} + +webidl.interfaceConverter = function (i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }) + } + + return V + } +} + +webidl.dictionaryConverter = function (converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary) + const dict = {} + + if (type === 'Null' || type === 'Undefined') { + return dict + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }) + } + + for (const options of converters) { + const { key, defaultValue, required, converter } = options + + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Missing required key "${key}".` + }) + } + } + + let value = dictionary[key] + const hasDefault = hasOwn(options, 'defaultValue') + + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + value = value ?? defaultValue + } + + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value) + + if ( + options.allowedValues && + !options.allowedValues.includes(value) + ) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }) + } + + dict[key] = value + } + } + + return dict + } +} + +webidl.nullableConverter = function (converter) { + return (V) => { + if (V === null) { + return V + } + + return converter(V) + } +} + +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V, opts = {}) { + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts.legacyNullToEmptyString) { + return '' + } + + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.') + } + + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V) +} + +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + const x = webidl.converters.DOMString(V) + + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + 'Cannot convert argument to a ByteString because the character at ' + + `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + ) + } + } + + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x +} + +// https://webidl.spec.whatwg.org/#es-USVString +webidl.converters.USVString = toUSVString + +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters.boolean = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + const x = Boolean(V) + + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x +} + +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V +} + +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + const x = webidl.util.ConvertToInt(V, 64, 'signed') + + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long-long +webidl.converters['unsigned long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). + const x = webidl.util.ConvertToInt(V, 64, 'unsigned') + + // 2. Return the IDL unsigned long long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long +webidl.converters['unsigned long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). + const x = webidl.util.ConvertToInt(V, 32, 'unsigned') + + // 2. Return the IDL unsigned long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V, opts) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts) + + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if ( + webidl.util.Type(V) !== 'Object' || + !types.isAnyArrayBuffer(V) + ) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ['ArrayBuffer'] + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + // Note: resizable ArrayBuffers are currently a proposal. + + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V +} + +webidl.converters.TypedArray = function (V, T, opts = {}) { + // 1. Let T be the IDL type V is being converted to. + + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if ( + webidl.util.Type(V) !== 'Object' || + !types.isTypedArray(V) || + V.constructor.name !== T.name + ) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable array buffers are currently a proposal + + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V +} + +webidl.converters.DataView = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable ArrayBuffers are currently a proposal + + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V +} + +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts) + } + + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor) + } + + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts) + } + + throw new TypeError(`Could not convert ${V} to a BufferSource.`) +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.ByteString +) + +webidl.converters['sequence>'] = webidl.sequenceConverter( + webidl.converters['sequence'] +) + +webidl.converters['record'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString +) + +module.exports = { + webidl +} + + +/***/ }), + +/***/ 396: +/***/ ((module) => { + +"use strict"; + + +/** + * @see https://encoding.spec.whatwg.org/#concept-encoding-get + * @param {string|undefined} label + */ +function getEncoding (label) { + if (!label) { + return 'failure' + } + + // 1. Remove any leading and trailing ASCII whitespace from label. + // 2. If label is an ASCII case-insensitive match for any of the + // labels listed in the table below, then return the + // corresponding encoding; otherwise return failure. + switch (label.trim().toLowerCase()) { + case 'unicode-1-1-utf-8': + case 'unicode11utf8': + case 'unicode20utf8': + case 'utf-8': + case 'utf8': + case 'x-unicode20utf8': + return 'UTF-8' + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866' + case 'csisolatin2': + case 'iso-8859-2': + case 'iso-ir-101': + case 'iso8859-2': + case 'iso88592': + case 'iso_8859-2': + case 'iso_8859-2:1987': + case 'l2': + case 'latin2': + return 'ISO-8859-2' + case 'csisolatin3': + case 'iso-8859-3': + case 'iso-ir-109': + case 'iso8859-3': + case 'iso88593': + case 'iso_8859-3': + case 'iso_8859-3:1988': + case 'l3': + case 'latin3': + return 'ISO-8859-3' + case 'csisolatin4': + case 'iso-8859-4': + case 'iso-ir-110': + case 'iso8859-4': + case 'iso88594': + case 'iso_8859-4': + case 'iso_8859-4:1988': + case 'l4': + case 'latin4': + return 'ISO-8859-4' + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso-8859-5': + case 'iso-ir-144': + case 'iso8859-5': + case 'iso88595': + case 'iso_8859-5': + case 'iso_8859-5:1988': + return 'ISO-8859-5' + case 'arabic': + case 'asmo-708': + case 'csiso88596e': + case 'csiso88596i': + case 'csisolatinarabic': + case 'ecma-114': + case 'iso-8859-6': + case 'iso-8859-6-e': + case 'iso-8859-6-i': + case 'iso-ir-127': + case 'iso8859-6': + case 'iso88596': + case 'iso_8859-6': + case 'iso_8859-6:1987': + return 'ISO-8859-6' + case 'csisolatingreek': + case 'ecma-118': + case 'elot_928': + case 'greek': + case 'greek8': + case 'iso-8859-7': + case 'iso-ir-126': + case 'iso8859-7': + case 'iso88597': + case 'iso_8859-7': + case 'iso_8859-7:1987': + case 'sun_eu_greek': + return 'ISO-8859-7' + case 'csiso88598e': + case 'csisolatinhebrew': + case 'hebrew': + case 'iso-8859-8': + case 'iso-8859-8-e': + case 'iso-ir-138': + case 'iso8859-8': + case 'iso88598': + case 'iso_8859-8': + case 'iso_8859-8:1988': + case 'visual': + return 'ISO-8859-8' + case 'csiso88598i': + case 'iso-8859-8-i': + case 'logical': + return 'ISO-8859-8-I' + case 'csisolatin6': + case 'iso-8859-10': + case 'iso-ir-157': + case 'iso8859-10': + case 'iso885910': + case 'l6': + case 'latin6': + return 'ISO-8859-10' + case 'iso-8859-13': + case 'iso8859-13': + case 'iso885913': + return 'ISO-8859-13' + case 'iso-8859-14': + case 'iso8859-14': + case 'iso885914': + return 'ISO-8859-14' + case 'csisolatin9': + case 'iso-8859-15': + case 'iso8859-15': + case 'iso885915': + case 'iso_8859-15': + case 'l9': + return 'ISO-8859-15' + case 'iso-8859-16': + return 'ISO-8859-16' + case 'cskoi8r': + case 'koi': + case 'koi8': + case 'koi8-r': + case 'koi8_r': + return 'KOI8-R' + case 'koi8-ru': + case 'koi8-u': + return 'KOI8-U' + case 'csmacintosh': + case 'mac': + case 'macintosh': + case 'x-mac-roman': + return 'macintosh' + case 'iso-8859-11': + case 'iso8859-11': + case 'iso885911': + case 'tis-620': + case 'windows-874': + return 'windows-874' + case 'cp1250': + case 'windows-1250': + case 'x-cp1250': + return 'windows-1250' + case 'cp1251': + case 'windows-1251': + case 'x-cp1251': + return 'windows-1251' + case 'ansi_x3.4-1968': + case 'ascii': + case 'cp1252': + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso-8859-1': + case 'iso-ir-100': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'iso_8859-1:1987': + case 'l1': + case 'latin1': + case 'us-ascii': + case 'windows-1252': + case 'x-cp1252': + return 'windows-1252' + case 'cp1253': + case 'windows-1253': + case 'x-cp1253': + return 'windows-1253' + case 'cp1254': + case 'csisolatin5': + case 'iso-8859-9': + case 'iso-ir-148': + case 'iso8859-9': + case 'iso88599': + case 'iso_8859-9': + case 'iso_8859-9:1989': + case 'l5': + case 'latin5': + case 'windows-1254': + case 'x-cp1254': + return 'windows-1254' + case 'cp1255': + case 'windows-1255': + case 'x-cp1255': + return 'windows-1255' + case 'cp1256': + case 'windows-1256': + case 'x-cp1256': + return 'windows-1256' + case 'cp1257': + case 'windows-1257': + case 'x-cp1257': + return 'windows-1257' + case 'cp1258': + case 'windows-1258': + case 'x-cp1258': + return 'windows-1258' + case 'x-mac-cyrillic': + case 'x-mac-ukrainian': + return 'x-mac-cyrillic' + case 'chinese': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb_2312': + case 'gb_2312-80': + case 'gbk': + case 'iso-ir-58': + case 'x-gbk': + return 'GBK' + case 'gb18030': + return 'gb18030' + case 'big5': + case 'big5-hkscs': + case 'cn-big5': + case 'csbig5': + case 'x-x-big5': + return 'Big5' + case 'cseucpkdfmtjapanese': + case 'euc-jp': + case 'x-euc-jp': + return 'EUC-JP' + case 'csiso2022jp': + case 'iso-2022-jp': + return 'ISO-2022-JP' + case 'csshiftjis': + case 'ms932': + case 'ms_kanji': + case 'shift-jis': + case 'shift_jis': + case 'sjis': + case 'windows-31j': + case 'x-sjis': + return 'Shift_JIS' + case 'cseuckr': + case 'csksc56011987': + case 'euc-kr': + case 'iso-ir-149': + case 'korean': + case 'ks_c_5601-1987': + case 'ks_c_5601-1989': + case 'ksc5601': + case 'ksc_5601': + case 'windows-949': + return 'EUC-KR' + case 'csiso2022kr': + case 'hz-gb-2312': + case 'iso-2022-cn': + case 'iso-2022-cn-ext': + case 'iso-2022-kr': + case 'replacement': + return 'replacement' + case 'unicodefffe': + case 'utf-16be': + return 'UTF-16BE' + case 'csunicode': + case 'iso-10646-ucs-2': + case 'ucs-2': + case 'unicode': + case 'unicodefeff': + case 'utf-16': + case 'utf-16le': + return 'UTF-16LE' + case 'x-user-defined': + return 'x-user-defined' + default: return 'failure' + } +} + +module.exports = { + getEncoding +} + + +/***/ }), + +/***/ 2160: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} = __nccwpck_require__(165) +const { + kState, + kError, + kResult, + kEvents, + kAborted +} = __nccwpck_require__(6812) +const { webidl } = __nccwpck_require__(4222) +const { kEnumerableProperty } = __nccwpck_require__(3440) + +class FileReader extends EventTarget { + constructor () { + super() + + this[kState] = 'empty' + this[kResult] = null + this[kError] = null + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsArrayBuffer(blob) method, when invoked, + // must initiate a read operation for blob with ArrayBuffer. + readOperation(this, blob, 'ArrayBuffer') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsBinaryString(blob) method, when invoked, + // must initiate a read operation for blob with BinaryString. + readOperation(this, blob, 'BinaryString') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText (blob, encoding = undefined) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + if (encoding !== undefined) { + encoding = webidl.converters.DOMString(encoding) + } + + // The readAsText(blob, encoding) method, when invoked, + // must initiate a read operation for blob with Text and encoding. + readOperation(this, blob, 'Text', encoding) + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsDataURL(blob) method, when invoked, must + // initiate a read operation for blob with DataURL. + readOperation(this, blob, 'DataURL') + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort () { + // 1. If this's state is "empty" or if this's state is + // "done" set this's result to null and terminate + // this algorithm. + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null + return + } + + // 2. If this's state is "loading" set this's state to + // "done" and set this's result to null. + if (this[kState] === 'loading') { + this[kState] = 'done' + this[kResult] = null + } + + // 3. If there are any tasks from this on the file reading + // task source in an affiliated task queue, then remove + // those tasks from that task queue. + this[kAborted] = true + + // 4. Terminate the algorithm for the read method being processed. + // TODO + + // 5. Fire a progress event called abort at this. + fireAProgressEvent('abort', this) + + // 6. If this's state is not "loading", fire a progress + // event called loadend at this. + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this) + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState () { + webidl.brandCheck(this, FileReader) + + switch (this[kState]) { + case 'empty': return this.EMPTY + case 'loading': return this.LOADING + case 'done': return this.DONE + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result () { + webidl.brandCheck(this, FileReader) + + // The result attribute’s getter, when invoked, must return + // this's result. + return this[kResult] + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error () { + webidl.brandCheck(this, FileReader) + + // The error attribute’s getter, when invoked, must return + // this's error. + return this[kError] + } + + get onloadend () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadend + } + + set onloadend (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend) + } + + if (typeof fn === 'function') { + this[kEvents].loadend = fn + this.addEventListener('loadend', fn) + } else { + this[kEvents].loadend = null + } + } + + get onerror () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].error + } + + set onerror (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error) + } + + if (typeof fn === 'function') { + this[kEvents].error = fn + this.addEventListener('error', fn) + } else { + this[kEvents].error = null + } + } + + get onloadstart () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadstart + } + + set onloadstart (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart) + } + + if (typeof fn === 'function') { + this[kEvents].loadstart = fn + this.addEventListener('loadstart', fn) + } else { + this[kEvents].loadstart = null + } + } + + get onprogress () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].progress + } + + set onprogress (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress) + } + + if (typeof fn === 'function') { + this[kEvents].progress = fn + this.addEventListener('progress', fn) + } else { + this[kEvents].progress = null + } + } + + get onload () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].load + } + + set onload (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load) + } + + if (typeof fn === 'function') { + this[kEvents].load = fn + this.addEventListener('load', fn) + } else { + this[kEvents].load = null + } + } + + get onabort () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].abort + } + + set onabort (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort) + } + + if (typeof fn === 'function') { + this[kEvents].abort = fn + this.addEventListener('abort', fn) + } else { + this[kEvents].abort = null + } + } +} + +// https://w3c.github.io/FileAPI/#dom-filereader-empty +FileReader.EMPTY = FileReader.prototype.EMPTY = 0 +// https://w3c.github.io/FileAPI/#dom-filereader-loading +FileReader.LOADING = FileReader.prototype.LOADING = 1 +// https://w3c.github.io/FileAPI/#dom-filereader-done +FileReader.DONE = FileReader.prototype.DONE = 2 + +Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors +}) + +module.exports = { + FileReader +} + + +/***/ }), + +/***/ 5976: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(4222) + +const kState = Symbol('ProgressEvent state') + +/** + * @see https://xhr.spec.whatwg.org/#progressevent + */ +class ProgressEvent extends Event { + constructor (type, eventInitDict = {}) { + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}) + + super(type, eventInitDict) + + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + } + } + + get lengthComputable () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].lengthComputable + } + + get loaded () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].loaded + } + + get total () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].total + } +} + +webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } +]) + +module.exports = { + ProgressEvent +} + + +/***/ }), + +/***/ 6812: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kState: Symbol('FileReader state'), + kResult: Symbol('FileReader result'), + kError: Symbol('FileReader error'), + kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), + kEvents: Symbol('FileReader events'), + kAborted: Symbol('FileReader aborted') +} + + +/***/ }), + +/***/ 165: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired +} = __nccwpck_require__(6812) +const { ProgressEvent } = __nccwpck_require__(5976) +const { getEncoding } = __nccwpck_require__(396) +const { DOMException } = __nccwpck_require__(7326) +const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(4322) +const { types } = __nccwpck_require__(9023) +const { StringDecoder } = __nccwpck_require__(3193) +const { btoa } = __nccwpck_require__(181) + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +/** + * @see https://w3c.github.io/FileAPI/#readOperation + * @param {import('./filereader').FileReader} fr + * @param {import('buffer').Blob} blob + * @param {string} type + * @param {string?} encodingName + */ +function readOperation (fr, blob, type, encodingName) { + // 1. If fr’s state is "loading", throw an InvalidStateError + // DOMException. + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError') + } + + // 2. Set fr’s state to "loading". + fr[kState] = 'loading' + + // 3. Set fr’s result to null. + fr[kResult] = null + + // 4. Set fr’s error to null. + fr[kError] = null + + // 5. Let stream be the result of calling get stream on blob. + /** @type {import('stream/web').ReadableStream} */ + const stream = blob.stream() + + // 6. Let reader be the result of getting a reader from stream. + const reader = stream.getReader() + + // 7. Let bytes be an empty byte sequence. + /** @type {Uint8Array[]} */ + const bytes = [] + + // 8. Let chunkPromise be the result of reading a chunk from + // stream with reader. + let chunkPromise = reader.read() + + // 9. Let isFirstChunk be true. + let isFirstChunk = true + + // 10. In parallel, while true: + // Note: "In parallel" just means non-blocking + // Note 2: readOperation itself cannot be async as double + // reading the body would then reject the promise, instead + // of throwing an error. + ;(async () => { + while (!fr[kAborted]) { + // 1. Wait for chunkPromise to be fulfilled or rejected. + try { + const { done, value } = await chunkPromise + + // 2. If chunkPromise is fulfilled, and isFirstChunk is + // true, queue a task to fire a progress event called + // loadstart at fr. + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr) + }) + } + + // 3. Set isFirstChunk to false. + isFirstChunk = false + + // 4. If chunkPromise is fulfilled with an object whose + // done property is false and whose value property is + // a Uint8Array object, run these steps: + if (!done && types.isUint8Array(value)) { + // 1. Let bs be the byte sequence represented by the + // Uint8Array object. + + // 2. Append bs to bytes. + bytes.push(value) + + // 3. If roughly 50ms have passed since these steps + // were last invoked, queue a task to fire a + // progress event called progress at fr. + if ( + ( + fr[kLastProgressEventFired] === undefined || + Date.now() - fr[kLastProgressEventFired] >= 50 + ) && + !fr[kAborted] + ) { + fr[kLastProgressEventFired] = Date.now() + queueMicrotask(() => { + fireAProgressEvent('progress', fr) + }) + } + + // 4. Set chunkPromise to the result of reading a + // chunk from stream with reader. + chunkPromise = reader.read() + } else if (done) { + // 5. Otherwise, if chunkPromise is fulfilled with an + // object whose done property is true, queue a task + // to run the following steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Let result be the result of package data given + // bytes, type, blob’s type, and encodingName. + try { + const result = packageData(bytes, type, blob.type, encodingName) + + // 4. Else: + + if (fr[kAborted]) { + return + } + + // 1. Set fr’s result to result. + fr[kResult] = result + + // 2. Fire a progress event called load at the fr. + fireAProgressEvent('load', fr) + } catch (error) { + // 3. If package data threw an exception error: + + // 1. Set fr’s error to error. + fr[kError] = error + + // 2. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + } + + // 5. If fr’s state is not "loading", fire a progress + // event called loadend at the fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } catch (error) { + if (fr[kAborted]) { + return + } + + // 6. Otherwise, if chunkPromise is rejected with an + // error error, queue a task to run the following + // steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Set fr’s error to error. + fr[kError] = error + + // 3. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + + // 4. If fr’s state is not "loading", fire a progress + // event called loadend at fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } + })() +} + +/** + * @see https://w3c.github.io/FileAPI/#fire-a-progress-event + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e The name of the event + * @param {import('./filereader').FileReader} reader + */ +function fireAProgressEvent (e, reader) { + // The progress event e does not bubble. e.bubbles must be false + // The progress event e is NOT cancelable. e.cancelable must be false + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }) + + reader.dispatchEvent(event) +} + +/** + * @see https://w3c.github.io/FileAPI/#blob-package-data + * @param {Uint8Array[]} bytes + * @param {string} type + * @param {string?} mimeType + * @param {string?} encodingName + */ +function packageData (bytes, type, mimeType, encodingName) { + // 1. A Blob has an associated package data algorithm, given + // bytes, a type, a optional mimeType, and a optional + // encodingName, which switches on type and runs the + // associated steps: + + switch (type) { + case 'DataURL': { + // 1. Return bytes as a DataURL [RFC2397] subject to + // the considerations below: + // * Use mimeType as part of the Data URL if it is + // available in keeping with the Data URL + // specification [RFC2397]. + // * If mimeType is not available return a Data URL + // without a media-type. [RFC2397]. + + // https://datatracker.ietf.org/doc/html/rfc2397#section-3 + // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data + // mediatype := [ type "/" subtype ] *( ";" parameter ) + // data := *urlchar + // parameter := attribute "=" value + let dataURL = 'data:' + + const parsed = parseMIMEType(mimeType || 'application/octet-stream') + + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed) + } + + dataURL += ';base64,' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)) + } + + dataURL += btoa(decoder.end()) + + return dataURL + } + case 'Text': { + // 1. Let encoding be failure + let encoding = 'failure' + + // 2. If the encodingName is present, set encoding to the + // result of getting an encoding from encodingName. + if (encodingName) { + encoding = getEncoding(encodingName) + } + + // 3. If encoding is failure, and mimeType is present: + if (encoding === 'failure' && mimeType) { + // 1. Let type be the result of parse a MIME type + // given mimeType. + const type = parseMIMEType(mimeType) + + // 2. If type is not failure, set encoding to the result + // of getting an encoding from type’s parameters["charset"]. + if (type !== 'failure') { + encoding = getEncoding(type.parameters.get('charset')) + } + } + + // 4. If encoding is failure, then set encoding to UTF-8. + if (encoding === 'failure') { + encoding = 'UTF-8' + } + + // 5. Decode bytes using fallback encoding encoding, and + // return the result. + return decode(bytes, encoding) + } + case 'ArrayBuffer': { + // Return a new ArrayBuffer whose contents are bytes. + const sequence = combineByteSequences(bytes) + + return sequence.buffer + } + case 'BinaryString': { + // Return bytes as a binary string, in which every byte + // is represented by a code unit of equal value [0..255]. + let binaryString = '' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + binaryString += decoder.write(chunk) + } + + binaryString += decoder.end() + + return binaryString + } + } +} + +/** + * @see https://encoding.spec.whatwg.org/#decode + * @param {Uint8Array[]} ioQueue + * @param {string} encoding + */ +function decode (ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue) + + // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. + const BOMEncoding = BOMSniffing(bytes) + + let slice = 0 + + // 2. If BOMEncoding is non-null: + if (BOMEncoding !== null) { + // 1. Set encoding to BOMEncoding. + encoding = BOMEncoding + + // 2. Read three bytes from ioQueue, if BOMEncoding is + // UTF-8; otherwise read two bytes. + // (Do nothing with those bytes.) + slice = BOMEncoding === 'UTF-8' ? 3 : 2 + } + + // 3. Process a queue with an instance of encoding’s + // decoder, ioQueue, output, and "replacement". + + // 4. Return output. + + const sliced = bytes.slice(slice) + return new TextDecoder(encoding).decode(sliced) +} + +/** + * @see https://encoding.spec.whatwg.org/#bom-sniff + * @param {Uint8Array} ioQueue + */ +function BOMSniffing (ioQueue) { + // 1. Let BOM be the result of peeking 3 bytes from ioQueue, + // converted to a byte sequence. + const [a, b, c] = ioQueue + + // 2. For each of the rows in the table below, starting with + // the first one and going down, if BOM starts with the + // bytes given in the first column, then return the + // encoding given in the cell in the second column of that + // row. Otherwise, return null. + if (a === 0xEF && b === 0xBB && c === 0xBF) { + return 'UTF-8' + } else if (a === 0xFE && b === 0xFF) { + return 'UTF-16BE' + } else if (a === 0xFF && b === 0xFE) { + return 'UTF-16LE' + } + + return null +} + +/** + * @param {Uint8Array[]} sequences + */ +function combineByteSequences (sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength + }, 0) + + let offset = 0 + + return sequences.reduce((a, b) => { + a.set(b, offset) + offset += b.byteLength + return a + }, new Uint8Array(size)) +} + +module.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} + + +/***/ }), + +/***/ 2581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +const globalDispatcher = Symbol.for('undici.globalDispatcher.1') +const { InvalidArgumentError } = __nccwpck_require__(8707) +const Agent = __nccwpck_require__(9965) + +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()) +} + +function setGlobalDispatcher (agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent') + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }) +} + +function getGlobalDispatcher () { + return globalThis[globalDispatcher] +} + +module.exports = { + setGlobalDispatcher, + getGlobalDispatcher +} + + +/***/ }), + +/***/ 8840: +/***/ ((module) => { + +"use strict"; + + +module.exports = class DecoratorHandler { + constructor (handler) { + this.handler = handler + } + + onConnect (...args) { + return this.handler.onConnect(...args) + } + + onError (...args) { + return this.handler.onError(...args) + } + + onUpgrade (...args) { + return this.handler.onUpgrade(...args) + } + + onHeaders (...args) { + return this.handler.onHeaders(...args) + } + + onData (...args) { + return this.handler.onData(...args) + } + + onComplete (...args) { + return this.handler.onComplete(...args) + } + + onBodySent (...args) { + return this.handler.onBodySent(...args) + } +} + + +/***/ }), + +/***/ 8299: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const util = __nccwpck_require__(3440) +const { kBodyUsed } = __nccwpck_require__(6443) +const assert = __nccwpck_require__(2613) +const { InvalidArgumentError } = __nccwpck_require__(8707) +const EE = __nccwpck_require__(4434) + +const redirectableStatusCodes = [300, 301, 302, 303, 307, 308] + +const kBody = Symbol('body') + +class BodyAsyncIterable { + constructor (body) { + this[kBody] = body + this[kBodyUsed] = false + } + + async * [Symbol.asyncIterator] () { + assert(!this[kBodyUsed], 'disturbed') + this[kBodyUsed] = true + yield * this[kBody] + } +} + +class RedirectHandler { + constructor (dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + util.validateHandler(handler, opts.method, opts.upgrade) + + this.dispatch = dispatch + this.location = null + this.abort = null + this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy + this.maxRedirections = maxRedirections + this.handler = handler + this.history = [] + + if (util.isStream(this.opts.body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body + .on('data', function () { + assert(false) + }) + } + + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = true + }) + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + this.opts.body = new BodyAsyncIterable(this.opts.body) + } else if ( + this.opts.body && + typeof this.opts.body !== 'string' && + !ArrayBuffer.isView(this.opts.body) && + util.isIterable(this.opts.body) + ) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + this.opts.body = new BodyAsyncIterable(this.opts.body) + } + } + + onConnect (abort) { + this.abort = abort + this.handler.onConnect(abort, { history: this.history }) + } + + onUpgrade (statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket) + } + + onError (error) { + this.handler.onError(error) + } + + onHeaders (statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers) + + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)) + } + + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText) + } + + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) + const path = search ? `${pathname}${search}` : pathname + + // Remove headers referring to the original URL. + // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. + // https://tools.ietf.org/html/rfc7231#section-6.4 + this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin) + this.opts.path = path + this.opts.origin = origin + this.opts.maxRedirections = 0 + this.opts.query = null + + // https://tools.ietf.org/html/rfc7231#section-6.4.4 + // In case of HTTP 303, always replace method to be either HEAD or GET + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET' + this.opts.body = null + } + } + + onData (chunk) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response bodies. + + Redirection is used to serve the requested resource from another URL, so it is assumes that + no body is generated (and thus can be ignored). Even though generating a body is not prohibited. + + For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually + (which means it's optional and not mandated) contain just an hyperlink to the value of + the Location response header, so the body can be ignored safely. + + For status 300, which is "Multiple Choices", the spec mentions both generating a Location + response header AND a response body with the other possible location to follow. + Since the spec explicitily chooses not to specify a format for such body and leave it to + servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. + */ + } else { + return this.handler.onData(chunk) + } + } + + onComplete (trailers) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections + and neither are useful if present. + + See comment on onData method above for more detailed informations. + */ + + this.location = null + this.abort = null + + this.dispatch(this.opts, this) + } else { + this.handler.onComplete(trailers) + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk) + } + } +} + +function parseLocation (statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null + } + + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === 'location') { + return headers[i + 1] + } + } +} + +// https://tools.ietf.org/html/rfc7231#section-6.4.4 +function shouldRemoveHeader (header, removeContent, unknownOrigin) { + if (header.length === 4) { + return util.headerNameToString(header) === 'host' + } + if (removeContent && util.headerNameToString(header).startsWith('content-')) { + return true + } + if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { + const name = util.headerNameToString(header) + return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' + } + return false +} + +// https://tools.ietf.org/html/rfc7231#section-6.4 +function cleanRequestHeaders (headers, removeContent, unknownOrigin) { + const ret = [] + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]) + } + } + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]) + } + } + } else { + assert(headers == null, 'headers must be an object or an array') + } + return ret +} + +module.exports = RedirectHandler + + +/***/ }), + +/***/ 3573: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(2613) + +const { kRetryHandlerDefaultRetry } = __nccwpck_require__(6443) +const { RequestRetryError } = __nccwpck_require__(8707) +const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3440) + +function calculateRetryAfterHeader (retryAfter) { + const current = Date.now() + const diff = new Date(retryAfter).getTime() - current + + return diff +} + +class RetryHandler { + constructor (opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {} + + this.dispatch = handlers.dispatch + this.handler = handlers.handler + this.opts = dispatchOpts + this.abort = null + this.aborted = false + this.retryOpts = { + retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1000, // 30s, + timeout: minTimeout ?? 500, // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE' + ] + } + + this.retryCount = 0 + this.start = 0 + this.end = null + this.etag = null + this.resume = null + + // Handle possible onConnect duplication + this.handler.onConnect(reason => { + this.aborted = true + if (this.abort) { + this.abort(reason) + } else { + this.reason = reason + } + }) + } + + onRequestSent () { + if (this.handler.onRequestSent) { + this.handler.onRequestSent() + } + } + + onUpgrade (statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket) + } + } + + onConnect (abort) { + if (this.aborted) { + abort(this.reason) + } else { + this.abort = abort + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk) + } + + static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) { + const { statusCode, code, headers } = err + const { method, retryOptions } = opts + const { + maxRetries, + timeout, + maxTimeout, + timeoutFactor, + statusCodes, + errorCodes, + methods + } = retryOptions + let { counter, currentTimeout } = state + + currentTimeout = + currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout + + // Any code that is not a Undici's originated and allowed to retry + if ( + code && + code !== 'UND_ERR_REQ_RETRY' && + code !== 'UND_ERR_SOCKET' && + !errorCodes.includes(code) + ) { + cb(err) + return + } + + // If a set of method are provided and the current method is not in the list + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err) + return + } + + // If a set of status code are provided and the current status code is not in the list + if ( + statusCode != null && + Array.isArray(statusCodes) && + !statusCodes.includes(statusCode) + ) { + cb(err) + return + } + + // If we reached the max number of retries + if (counter > maxRetries) { + cb(err) + return + } + + let retryAfterHeader = headers != null && headers['retry-after'] + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader) + retryAfterHeader = isNaN(retryAfterHeader) + ? calculateRetryAfterHeader(retryAfterHeader) + : retryAfterHeader * 1e3 // Retry-After is in seconds + } + + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout) + + state.currentTimeout = retryTimeout + + setTimeout(() => cb(null), retryTimeout) + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders) + + this.retryCount += 1 + + if (statusCode >= 300) { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + // Checkpoint for resume from where we left it + if (this.resume != null) { + this.resume = null + + if (statusCode !== 206) { + return true + } + + const contentRange = parseRangeHeader(headers['content-range']) + // If no content range + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + // Let's start with a weak etag check + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + const { start, size, end = size } = contentRange + + assert(this.start === start, 'content-range mismatch') + assert(this.end == null || this.end === end, 'content-range mismatch') + + this.resume = resume + return true + } + + if (this.end == null) { + if (statusCode === 206) { + // First time we receive 206 + const range = parseRangeHeader(headers['content-range']) + + if (range == null) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const { start, size, end = size } = range + + assert( + start != null && Number.isFinite(start) && this.start !== start, + 'content-range mismatch' + ) + assert(Number.isFinite(start)) + assert( + end != null && Number.isFinite(end) && this.end !== end, + 'invalid content-length' + ) + + this.start = start + this.end = end + } + + // We make our best to checkpoint the body for further range headers + if (this.end == null) { + const contentLength = headers['content-length'] + this.end = contentLength != null ? Number(contentLength) : null + } + + assert(Number.isFinite(this.start)) + assert( + this.end == null || Number.isFinite(this.end), + 'invalid content-length' + ) + + this.resume = resume + this.etag = headers.etag != null ? headers.etag : null + + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const err = new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + + this.abort(err) + + return false + } + + onData (chunk) { + this.start += chunk.length + + return this.handler.onData(chunk) + } + + onComplete (rawTrailers) { + this.retryCount = 0 + return this.handler.onComplete(rawTrailers) + } + + onError (err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ) + + function onRetry (err) { + if (err != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + if (this.start !== 0) { + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + range: `bytes=${this.start}-${this.end ?? ''}` + } + } + } + + try { + this.dispatch(this.opts, this) + } catch (err) { + this.handler.onError(err) + } + } + } +} + +module.exports = RetryHandler + + +/***/ }), + +/***/ 4415: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const RedirectHandler = __nccwpck_require__(8299) + +function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept (opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler) + opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler) + } + } +} + +module.exports = createRedirectInterceptor + + +/***/ }), + +/***/ 2824: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; +const utils_1 = __nccwpck_require__(172); +// C headers +var ERROR; +(function (ERROR) { + ERROR[ERROR["OK"] = 0] = "OK"; + ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; + ERROR[ERROR["STRICT"] = 2] = "STRICT"; + ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; + ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR[ERROR["USER"] = 24] = "USER"; +})(ERROR = exports.ERROR || (exports.ERROR = {})); +var TYPE; +(function (TYPE) { + TYPE[TYPE["BOTH"] = 0] = "BOTH"; + TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; + TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; +})(TYPE = exports.TYPE || (exports.TYPE = {})); +var FLAGS; +(function (FLAGS) { + FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; + FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; + FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; + // 1 << 8 is unused + FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; +})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); +var LENIENT_FLAGS; +(function (LENIENT_FLAGS) { + LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; +})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); +var METHODS; +(function (METHODS) { + METHODS[METHODS["DELETE"] = 0] = "DELETE"; + METHODS[METHODS["GET"] = 1] = "GET"; + METHODS[METHODS["HEAD"] = 2] = "HEAD"; + METHODS[METHODS["POST"] = 3] = "POST"; + METHODS[METHODS["PUT"] = 4] = "PUT"; + /* pathological */ + METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; + METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; + METHODS[METHODS["TRACE"] = 7] = "TRACE"; + /* WebDAV */ + METHODS[METHODS["COPY"] = 8] = "COPY"; + METHODS[METHODS["LOCK"] = 9] = "LOCK"; + METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; + METHODS[METHODS["MOVE"] = 11] = "MOVE"; + METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; + METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; + METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; + METHODS[METHODS["BIND"] = 16] = "BIND"; + METHODS[METHODS["REBIND"] = 17] = "REBIND"; + METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; + METHODS[METHODS["ACL"] = 19] = "ACL"; + /* subversion */ + METHODS[METHODS["REPORT"] = 20] = "REPORT"; + METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS[METHODS["MERGE"] = 23] = "MERGE"; + /* upnp */ + METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; + METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + /* RFC-5789 */ + METHODS[METHODS["PATCH"] = 28] = "PATCH"; + METHODS[METHODS["PURGE"] = 29] = "PURGE"; + /* CalDAV */ + METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; + /* RFC-2068, section 19.6.1.2 */ + METHODS[METHODS["LINK"] = 31] = "LINK"; + METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; + /* icecast */ + METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; + /* RFC-7540, section 11.6 */ + METHODS[METHODS["PRI"] = 34] = "PRI"; + /* RFC-2326 RTSP */ + METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS[METHODS["SETUP"] = 37] = "SETUP"; + METHODS[METHODS["PLAY"] = 38] = "PLAY"; + METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; + METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; + METHODS[METHODS["RECORD"] = 44] = "RECORD"; + /* RAOP */ + METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; +})(METHODS = exports.METHODS || (exports.METHODS = {})); +exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE, +]; +exports.METHODS_ICE = [ + METHODS.SOURCE, +]; +exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST, +]; +exports.METHOD_MAP = utils_1.enumToMap(METHODS); +exports.H_METHOD_MAP = {}; +Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } +}); +var FINISH; +(function (FINISH) { + FINISH[FINISH["SAFE"] = 0] = "SAFE"; + FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; +})(FINISH = exports.FINISH || (exports.FINISH = {})); +exports.ALPHA = []; +for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + // Upper case + exports.ALPHA.push(String.fromCharCode(i)); + // Lower case + exports.ALPHA.push(String.fromCharCode(i + 0x20)); +} +exports.NUM_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, +}; +exports.HEX_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, + A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, + a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, +}; +exports.NUM = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', +]; +exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); +exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; +exports.USERINFO_CHARS = exports.ALPHANUM + .concat(exports.MARK) + .concat(['%', ';', ':', '&', '=', '+', '$', ',']); +// TODO(indutny): use RFC +exports.STRICT_URL_CHAR = [ + '!', '"', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + ':', ';', '<', '=', '>', + '@', '[', '\\', ']', '^', '_', + '`', + '{', '|', '}', '~', +].concat(exports.ALPHANUM); +exports.URL_CHAR = exports.STRICT_URL_CHAR + .concat(['\t', '\f']); +// All characters with 0x80 bit set to 1 +for (let i = 0x80; i <= 0xff; i++) { + exports.URL_CHAR.push(i); +} +exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +exports.STRICT_TOKEN = [ + '!', '#', '$', '%', '&', '\'', + '*', '+', '-', '.', + '^', '_', '`', + '|', '~', +].concat(exports.ALPHANUM); +exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); +/* + * Verify that a char is a valid visible (printable) US-ASCII + * character or %x80-FF + */ +exports.HEADER_CHARS = ['\t']; +for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } +} +// ',' = \x44 +exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); +exports.MAJOR = exports.NUM_MAP; +exports.MINOR = exports.MAJOR; +var HEADER_STATE; +(function (HEADER_STATE) { + HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; +})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); +exports.SPECIAL_HEADERS = { + 'connection': HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + 'upgrade': HEADER_STATE.UPGRADE, +}; +//# sourceMappingURL=constants.js.map + +/***/ }), + +/***/ 3870: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=' + + +/***/ }), + +/***/ 3434: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==' + + +/***/ }), + +/***/ 172: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.enumToMap = void 0; +function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; +} +exports.enumToMap = enumToMap; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 7501: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kClients } = __nccwpck_require__(6443) +const Agent = __nccwpck_require__(9965) +const { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory +} = __nccwpck_require__(1117) +const MockClient = __nccwpck_require__(7365) +const MockPool = __nccwpck_require__(4004) +const { matchValue, buildMockOptions } = __nccwpck_require__(3397) +const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8707) +const Dispatcher = __nccwpck_require__(992) +const Pluralizer = __nccwpck_require__(1529) +const PendingInterceptorsFormatter = __nccwpck_require__(6142) + +class FakeWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value + } +} + +class MockAgent extends Dispatcher { + constructor (opts) { + super(opts) + + this[kNetConnect] = true + this[kIsMockActive] = true + + // Instantiate Agent and encapsulate + if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts) + this[kAgent] = agent + + this[kClients] = agent[kClients] + this[kOptions] = buildMockOptions(opts) + } + + get (origin) { + let dispatcher = this[kMockAgentGet](origin) + + if (!dispatcher) { + dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + } + return dispatcher + } + + dispatch (opts, handler) { + // Call MockAgent.get to perform additional setup before dispatching as normal + this.get(opts.origin) + return this[kAgent].dispatch(opts, handler) + } + + async close () { + await this[kAgent].close() + this[kClients].clear() + } + + deactivate () { + this[kIsMockActive] = false + } + + activate () { + this[kIsMockActive] = true + } + + enableNetConnect (matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher) + } else { + this[kNetConnect] = [matcher] + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') + } + } + + disableNetConnect () { + this[kNetConnect] = false + } + + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive () { + return this[kIsMockActive] + } + + [kMockAgentSet] (origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)) + } + + [kFactory] (origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]) + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions) + } + + [kMockAgentGet] (origin) { + // First check if we can immediately find it + const ref = this[kClients].get(origin) + if (ref) { + return ref.deref() + } + + // If the origin is not a string create a dummy parent pool and return to user + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999') + this[kMockAgentSet](origin, dispatcher) + return dispatcher + } + + // If we match, create a pool and assign the same dispatches + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref() + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] + return dispatcher + } + } + } + + [kGetNetConnect] () { + return this[kNetConnect] + } + + pendingInterceptors () { + const mockAgentClients = this[kClients] + + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending) + } + + assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors() + + if (pending.length === 0) { + return + } + + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) + + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()) + } +} + +module.exports = MockAgent + + +/***/ }), + +/***/ 7365: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { promisify } = __nccwpck_require__(9023) +const Client = __nccwpck_require__(6197) +const { buildMockDispatch } = __nccwpck_require__(3397) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(1117) +const { MockInterceptor } = __nccwpck_require__(1511) +const Symbols = __nccwpck_require__(6443) +const { InvalidArgumentError } = __nccwpck_require__(8707) + +/** + * MockClient provides an API that extends the Client to influence the mockDispatches. + */ +class MockClient extends Client { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockClient + + +/***/ }), + +/***/ 2429: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { UndiciError } = __nccwpck_require__(8707) + +class MockNotMatchedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, MockNotMatchedError) + this.name = 'MockNotMatchedError' + this.message = message || 'The request does not match any registered mock dispatches' + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED' + } +} + +module.exports = { + MockNotMatchedError +} + + +/***/ }), + +/***/ 1511: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(3397) +const { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch +} = __nccwpck_require__(1117) +const { InvalidArgumentError } = __nccwpck_require__(8707) +const { buildURL } = __nccwpck_require__(3440) + +/** + * Defines the scope API for an interceptor reply + */ +class MockScope { + constructor (mockDispatch) { + this[kMockDispatch] = mockDispatch + } + + /** + * Delay a reply by a set amount in ms. + */ + delay (waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0') + } + + this[kMockDispatch].delay = waitInMs + return this + } + + /** + * For a defined reply, never mark as consumed. + */ + persist () { + this[kMockDispatch].persist = true + return this + } + + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times (repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') + } + + this[kMockDispatch].times = repeatTimes + return this + } +} + +/** + * Defines an interceptor for a Mock + */ +class MockInterceptor { + constructor (opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object') + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined') + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET' + } + // See https://github.com/nodejs/undici/issues/1245 + // As per RFC 3986, clients are not supposed to send URI + // fragments to servers when they retrieve a document, + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query) + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 + const parsedURL = new URL(opts.path, 'data://') + opts.path = parsedURL.pathname + parsedURL.search + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase() + } + + this[kDispatchKey] = buildKey(opts) + this[kDispatches] = mockDispatches + this[kDefaultHeaders] = {} + this[kDefaultTrailers] = {} + this[kContentLength] = false + } + + createMockScopeDispatchData (statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data) + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {} + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers } + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers } + + return { statusCode, data, headers, trailers } + } + + validateReplyParameters (statusCode, data, responseOptions) { + if (typeof statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined') + } + if (typeof data === 'undefined') { + throw new InvalidArgumentError('data must be defined') + } + if (typeof responseOptions !== 'object') { + throw new InvalidArgumentError('responseOptions must be an object') + } + } + + /** + * Mock an undici request with a defined reply. + */ + reply (replyData) { + // Values of reply aren't available right now as they + // can only be available when the reply callback is invoked. + if (typeof replyData === 'function') { + // We'll first wrap the provided callback in another function, + // this function will properly resolve the data from the callback + // when invoked. + const wrappedDefaultsCallback = (opts) => { + // Our reply options callback contains the parameter for statusCode, data and options. + const resolvedData = replyData(opts) + + // Check if it is in the right format + if (typeof resolvedData !== 'object') { + throw new InvalidArgumentError('reply options callback must return an object') + } + + const { statusCode, data = '', responseOptions = {} } = resolvedData + this.validateReplyParameters(statusCode, data, responseOptions) + // Since the values can be obtained immediately we return them + // from this higher order function that will be resolved later. + return { + ...this.createMockScopeDispatchData(statusCode, data, responseOptions) + } + } + + // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback) + return new MockScope(newMockDispatch) + } + + // We can have either one or three parameters, if we get here, + // we should have 1-3 parameters. So we spread the arguments of + // this function to obtain the parameters, since replyData will always + // just be the statusCode. + const [statusCode, data = '', responseOptions = {}] = [...arguments] + this.validateReplyParameters(statusCode, data, responseOptions) + + // Send in-already provided data like usual + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions) + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData) + return new MockScope(newMockDispatch) + } + + /** + * Mock an undici request with a defined error. + */ + replyWithError (error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined') + } + + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }) + return new MockScope(newMockDispatch) + } + + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders (headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined') + } + + this[kDefaultHeaders] = headers + return this + } + + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers (trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined') + } + + this[kDefaultTrailers] = trailers + return this + } + + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength () { + this[kContentLength] = true + return this + } +} + +module.exports.MockInterceptor = MockInterceptor +module.exports.MockScope = MockScope + + +/***/ }), + +/***/ 4004: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { promisify } = __nccwpck_require__(9023) +const Pool = __nccwpck_require__(5076) +const { buildMockDispatch } = __nccwpck_require__(3397) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(1117) +const { MockInterceptor } = __nccwpck_require__(1511) +const Symbols = __nccwpck_require__(6443) +const { InvalidArgumentError } = __nccwpck_require__(8707) + +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +class MockPool extends Pool { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockPool + + +/***/ }), + +/***/ 1117: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kAgent: Symbol('agent'), + kOptions: Symbol('options'), + kFactory: Symbol('factory'), + kDispatches: Symbol('dispatches'), + kDispatchKey: Symbol('dispatch key'), + kDefaultHeaders: Symbol('default headers'), + kDefaultTrailers: Symbol('default trailers'), + kContentLength: Symbol('content length'), + kMockAgent: Symbol('mock agent'), + kMockAgentSet: Symbol('mock agent set'), + kMockAgentGet: Symbol('mock agent get'), + kMockDispatch: Symbol('mock dispatch'), + kClose: Symbol('close'), + kOriginalClose: Symbol('original agent close'), + kOrigin: Symbol('origin'), + kIsMockActive: Symbol('is mock active'), + kNetConnect: Symbol('net connect'), + kGetNetConnect: Symbol('get net connect'), + kConnected: Symbol('connected') +} + + +/***/ }), + +/***/ 3397: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { MockNotMatchedError } = __nccwpck_require__(2429) +const { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect +} = __nccwpck_require__(1117) +const { buildURL, nop } = __nccwpck_require__(3440) +const { STATUS_CODES } = __nccwpck_require__(8611) +const { + types: { + isPromise + } +} = __nccwpck_require__(9023) + +function matchValue (match, value) { + if (typeof match === 'string') { + return match === value + } + if (match instanceof RegExp) { + return match.test(value) + } + if (typeof match === 'function') { + return match(value) === true + } + return false +} + +function lowerCaseEntries (headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue] + }) + ) +} + +/** + * @param {import('../../index').Headers|string[]|Record} headers + * @param {string} key + */ +function getHeaderByName (headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1] + } + } + + return undefined + } else if (typeof headers.get === 'function') { + return headers.get(key) + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()] + } +} + +/** @param {string[]} headers */ +function buildHeadersFromArray (headers) { // fetch HeadersList + const clone = headers.slice() + const entries = [] + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]) + } + return Object.fromEntries(entries) +} + +function matchHeaders (mockDispatch, headers) { + if (typeof mockDispatch.headers === 'function') { + if (Array.isArray(headers)) { // fetch HeadersList + headers = buildHeadersFromArray(headers) + } + return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) + } + if (typeof mockDispatch.headers === 'undefined') { + return true + } + if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { + return false + } + + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName) + + if (!matchValue(matchHeaderValue, headerValue)) { + return false + } + } + return true +} + +function safeUrl (path) { + if (typeof path !== 'string') { + return path + } + + const pathSegments = path.split('?') + + if (pathSegments.length !== 2) { + return path + } + + const qp = new URLSearchParams(pathSegments.pop()) + qp.sort() + return [...pathSegments, qp.toString()].join('?') +} + +function matchKey (mockDispatch, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch.path, path) + const methodMatch = matchValue(mockDispatch.method, method) + const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true + const headersMatch = matchHeaders(mockDispatch, headers) + return pathMatch && methodMatch && bodyMatch && headersMatch +} + +function getResponseData (data) { + if (Buffer.isBuffer(data)) { + return data + } else if (typeof data === 'object') { + return JSON.stringify(data) + } else { + return data.toString() + } +} + +function getMockDispatch (mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath + + // Match path + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) + } + + // Match method + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`) + } + + // Match body + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`) + } + + // Match headers + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`) + } + + return matchedMockDispatches[0] +} + +function addMockDispatch (mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } + const replyData = typeof data === 'function' ? { callback: data } : { ...data } + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } + mockDispatches.push(newMockDispatch) + return newMockDispatch +} + +function deleteMockDispatch (mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false + } + return matchKey(dispatch, key) + }) + if (index !== -1) { + mockDispatches.splice(index, 1) + } +} + +function buildKey (opts) { + const { path, method, body, headers, query } = opts + return { + path, + method, + body, + headers, + query + } +} + +function generateKeyValues (data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []) +} + +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText (statusCode) { + return STATUS_CODES[statusCode] || 'unknown' +} + +async function getResponse (body) { + const buffers = [] + for await (const data of body) { + buffers.push(data) + } + return Buffer.concat(buffers).toString('utf8') +} + +/** + * Mock dispatch function used to simulate undici dispatches + */ +function mockDispatch (opts, handler) { + // Get mock dispatch from built key + const key = buildKey(opts) + const mockDispatch = getMockDispatch(this[kDispatches], key) + + mockDispatch.timesInvoked++ + + // Here's where we resolve a callback if a callback is present for the dispatch data. + if (mockDispatch.data.callback) { + mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } + } + + // Parse mockDispatch data + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch + const { timesInvoked, times } = mockDispatch + + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times + mockDispatch.pending = timesInvoked < times + + // If specified, trigger dispatch error + if (error !== null) { + deleteMockDispatch(this[kDispatches], key) + handler.onError(error) + return true + } + + // Handle the request with a delay if necessary + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]) + }, delay) + } else { + handleReply(this[kDispatches]) + } + + function handleReply (mockDispatches, _data = data) { + // fetch's HeadersList is a 1D string array + const optsHeaders = Array.isArray(opts.headers) + ? buildHeadersFromArray(opts.headers) + : opts.headers + const body = typeof _data === 'function' + ? _data({ ...opts, headers: optsHeaders }) + : _data + + // util.types.isPromise is likely needed for jest. + if (isPromise(body)) { + // If handleReply is asynchronous, throwing an error + // in the callback will reject the promise, rather than + // synchronously throw the error, which breaks some tests. + // Rather, we wait for the callback to resolve if it is a + // promise, and then re-run handleReply with the new body. + body.then((newData) => handleReply(mockDispatches, newData)) + return + } + + const responseData = getResponseData(body) + const responseHeaders = generateKeyValues(headers) + const responseTrailers = generateKeyValues(trailers) + + handler.abort = nop + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)) + handler.onData(Buffer.from(responseData)) + handler.onComplete(responseTrailers) + deleteMockDispatch(mockDispatches, key) + } + + function resume () {} + + return true +} + +function buildMockDispatch () { + const agent = this[kMockAgent] + const origin = this[kOrigin] + const originalDispatch = this[kOriginalDispatch] + + return function dispatch (opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler) + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect]() + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler) + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) + } + } else { + throw error + } + } + } else { + originalDispatch.call(this, opts, handler) + } + } +} + +function checkNetConnect (netConnect, origin) { + const url = new URL(origin) + if (netConnect === true) { + return true + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true + } + return false +} + +function buildMockOptions (opts) { + if (opts) { + const { agent, ...mockOptions } = opts + return mockOptions + } +} + +module.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName +} + + +/***/ }), + +/***/ 6142: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Transform } = __nccwpck_require__(2203) +const { Console } = __nccwpck_require__(4236) + +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = class PendingInterceptorsFormatter { + constructor ({ disableColors } = {}) { + this.transform = new Transform({ + transform (chunk, _enc, cb) { + cb(null, chunk) + } + }) + + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }) + } + + format (pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '✅' : '❌', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + })) + + this.logger.table(withPrettyHeaders) + return this.transform.read().toString() + } +} + + +/***/ }), + +/***/ 1529: +/***/ ((module) => { + +"use strict"; + + +const singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' +} + +const plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' +} + +module.exports = class Pluralizer { + constructor (singular, plural) { + this.singular = singular + this.plural = plural + } + + pluralize (count) { + const one = count === 1 + const keys = one ? singulars : plurals + const noun = one ? this.singular : this.plural + return { ...keys, count, noun } + } +} + + +/***/ }), + +/***/ 4869: +/***/ ((module) => { + +"use strict"; +/* eslint-disable */ + + + +// Extracted from node/lib/internal/fixed_queue.js + +// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. +const kSize = 2048; +const kMask = kSize - 1; + +// The FixedQueue is implemented as a singly-linked list of fixed-size +// circular buffers. It looks something like this: +// +// head tail +// | | +// v v +// +-----------+ <-----\ +-----------+ <------\ +-----------+ +// | [null] | \----- | next | \------- | next | +// +-----------+ +-----------+ +-----------+ +// | item | <-- bottom | item | <-- bottom | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | bottom --> | item | +// | item | | item | | item | +// | ... | | ... | | ... | +// | item | | item | | item | +// | item | | item | | item | +// | [empty] | <-- top | item | | item | +// | [empty] | | item | | item | +// | [empty] | | [empty] | <-- top top --> | [empty] | +// +-----------+ +-----------+ +-----------+ +// +// Or, if there is only one circular buffer, it looks something +// like either of these: +// +// head tail head tail +// | | | | +// v v v v +// +-----------+ +-----------+ +// | [null] | | [null] | +// +-----------+ +-----------+ +// | [empty] | | item | +// | [empty] | | item | +// | item | <-- bottom top --> | [empty] | +// | item | | [empty] | +// | [empty] | <-- top bottom --> | item | +// | [empty] | | item | +// +-----------+ +-----------+ +// +// Adding a value means moving `top` forward by one, removing means +// moving `bottom` forward by one. After reaching the end, the queue +// wraps around. +// +// When `top === bottom` the current queue is empty and when +// `top + 1 === bottom` it's full. This wastes a single space of storage +// but allows much quicker checks. + +class FixedCircularBuffer { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + + isEmpty() { + return this.top === this.bottom; + } + + isFull() { + return ((this.top + 1) & kMask) === this.bottom; + } + + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } + + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === undefined) + return null; + this.list[this.bottom] = undefined; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; + } +} + +module.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + + isEmpty() { + return this.head.isEmpty(); + } + + push(data) { + if (this.head.isFull()) { + // Head is full: Creates a new queue, sets the old queue's `.next` to it, + // and sets it as the new main queue. + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + // If there is another queue, it forms the new tail. + this.tail = tail.next; + } + return next; + } +}; + + +/***/ }), + +/***/ 8640: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const DispatcherBase = __nccwpck_require__(1) +const FixedQueue = __nccwpck_require__(4869) +const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(6443) +const PoolStats = __nccwpck_require__(4622) + +const kClients = Symbol('clients') +const kNeedDrain = Symbol('needDrain') +const kQueue = Symbol('queue') +const kClosedResolve = Symbol('closed resolve') +const kOnDrain = Symbol('onDrain') +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kGetDispatcher = Symbol('get dispatcher') +const kAddClient = Symbol('add client') +const kRemoveClient = Symbol('remove client') +const kStats = Symbol('stats') + +class PoolBase extends DispatcherBase { + constructor () { + super() + + this[kQueue] = new FixedQueue() + this[kClients] = [] + this[kQueued] = 0 + + const pool = this + + this[kOnDrain] = function onDrain (origin, targets) { + const queue = pool[kQueue] + + let needDrain = false + + while (!needDrain) { + const item = queue.shift() + if (!item) { + break + } + pool[kQueued]-- + needDrain = !this.dispatch(item.opts, item.handler) + } + + this[kNeedDrain] = needDrain + + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false + pool.emit('drain', origin, [pool, ...targets]) + } + + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise + .all(pool[kClients].map(c => c.close())) + .then(pool[kClosedResolve]) + } + } + + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err) + } + + this[kStats] = new PoolStats(this) + } + + get [kBusy] () { + return this[kNeedDrain] + } + + get [kConnected] () { + return this[kClients].filter(client => client[kConnected]).length + } + + get [kFree] () { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length + } + + get [kPending] () { + let ret = this[kQueued] + for (const { [kPending]: pending } of this[kClients]) { + ret += pending + } + return ret + } + + get [kRunning] () { + let ret = 0 + for (const { [kRunning]: running } of this[kClients]) { + ret += running + } + return ret + } + + get [kSize] () { + let ret = this[kQueued] + for (const { [kSize]: size } of this[kClients]) { + ret += size + } + return ret + } + + get stats () { + return this[kStats] + } + + async [kClose] () { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map(c => c.close())) + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve + }) + } + } + + async [kDestroy] (err) { + while (true) { + const item = this[kQueue].shift() + if (!item) { + break + } + item.handler.onError(err) + } + + return Promise.all(this[kClients].map(c => c.destroy(err))) + } + + [kDispatch] (opts, handler) { + const dispatcher = this[kGetDispatcher]() + + if (!dispatcher) { + this[kNeedDrain] = true + this[kQueue].push({ opts, handler }) + this[kQueued]++ + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true + this[kNeedDrain] = !this[kGetDispatcher]() + } + + return !this[kNeedDrain] + } + + [kAddClient] (client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + this[kClients].push(client) + + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]) + } + }) + } + + return this + } + + [kRemoveClient] (client) { + client.close(() => { + const idx = this[kClients].indexOf(client) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + }) + + this[kNeedDrain] = this[kClients].some(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + } +} + +module.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} + + +/***/ }), + +/***/ 4622: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(6443) +const kPool = Symbol('pool') + +class PoolStats { + constructor (pool) { + this[kPool] = pool + } + + get connected () { + return this[kPool][kConnected] + } + + get free () { + return this[kPool][kFree] + } + + get pending () { + return this[kPool][kPending] + } + + get queued () { + return this[kPool][kQueued] + } + + get running () { + return this[kPool][kRunning] + } + + get size () { + return this[kPool][kSize] + } +} + +module.exports = PoolStats + + +/***/ }), + +/***/ 5076: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher +} = __nccwpck_require__(8640) +const Client = __nccwpck_require__(6197) +const { + InvalidArgumentError +} = __nccwpck_require__(8707) +const util = __nccwpck_require__(3440) +const { kUrl, kInterceptors } = __nccwpck_require__(6443) +const buildConnector = __nccwpck_require__(9136) + +const kOptions = Symbol('options') +const kConnections = Symbol('connections') +const kFactory = Symbol('factory') + +function defaultFactory (origin, opts) { + return new Client(origin, opts) +} + +class Pool extends PoolBase { + constructor (origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super() + + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) + ? options.interceptors.Pool + : [] + this[kConnections] = connections || null + this[kUrl] = util.parseOrigin(origin) + this[kOptions] = { ...util.deepClone(options), connect, allowH2 } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kFactory] = factory + } + + [kGetDispatcher] () { + let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain]) + + if (dispatcher) { + return dispatcher + } + + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]) + this[kAddClient](dispatcher) + } + + return dispatcher + } +} + +module.exports = Pool + + +/***/ }), + +/***/ 2720: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(6443) +const { URL } = __nccwpck_require__(7016) +const Agent = __nccwpck_require__(9965) +const Pool = __nccwpck_require__(5076) +const DispatcherBase = __nccwpck_require__(1) +const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8707) +const buildConnector = __nccwpck_require__(9136) + +const kAgent = Symbol('proxy agent') +const kClient = Symbol('proxy client') +const kProxyHeaders = Symbol('proxy headers') +const kRequestTls = Symbol('request tls settings') +const kProxyTls = Symbol('proxy tls settings') +const kConnectEndpoint = Symbol('connect endpoint function') + +function defaultProtocolPort (protocol) { + return protocol === 'https:' ? 443 : 80 +} + +function buildProxyOptions (opts) { + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + return { + uri: opts.uri, + protocol: opts.protocol || 'https' + } +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class ProxyAgent extends DispatcherBase { + constructor (opts) { + super(opts) + this[kProxy] = buildProxyOptions(opts) + this[kAgent] = new Agent(opts) + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) + ? opts.interceptors.ProxyAgent + : [] + + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + const { clientFactory = defaultFactory } = opts + + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') + } + + this[kRequestTls] = opts.requestTls + this[kProxyTls] = opts.proxyTls + this[kProxyHeaders] = opts.headers || {} + + const resolvedUrl = new URL(opts.uri) + const { origin, port, host, username, password } = resolvedUrl + + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token') + } else if (opts.auth) { + /* @deprecated in favour of opts.token */ + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` + } + + const connect = buildConnector({ ...opts.proxyTls }) + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) + this[kClient] = clientFactory(resolvedUrl, { connect }) + this[kAgent] = new Agent({ + ...opts, + connect: async (opts, callback) => { + let requestedHost = opts.host + if (!opts.port) { + requestedHost += `:${defaultProtocolPort(opts.protocol)}` + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts.signal, + headers: { + ...this[kProxyHeaders], + host + } + }) + if (statusCode !== 200) { + socket.on('error', () => {}).destroy() + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)) + } + if (opts.protocol !== 'https:') { + callback(null, socket) + return + } + let servername + if (this[kRequestTls]) { + servername = this[kRequestTls].servername + } else { + servername = opts.servername + } + this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) + } catch (err) { + callback(err) + } + } + }) + } + + dispatch (opts, handler) { + const { host } = new URL(opts.origin) + const headers = buildHeaders(opts.headers) + throwIfProxyAuthIsSent(headers) + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ) + } + + async [kClose] () { + await this[kAgent].close() + await this[kClient].close() + } + + async [kDestroy] () { + await this[kAgent].destroy() + await this[kClient].destroy() + } +} + +/** + * @param {string[] | Record} headers + * @returns {Record} + */ +function buildHeaders (headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record} */ + const headersPair = {} + + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1] + } + + return headersPair + } + + return headers +} + +/** + * @param {Record} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent (headers) { + const existProxyAuth = headers && Object.keys(headers) + .find((key) => key.toLowerCase() === 'proxy-authorization') + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') + } +} + +module.exports = ProxyAgent + + +/***/ }), + +/***/ 8804: +/***/ ((module) => { + +"use strict"; + + +let fastNow = Date.now() +let fastNowTimeout + +const fastTimers = [] + +function onTimeout () { + fastNow = Date.now() + + let len = fastTimers.length + let idx = 0 + while (idx < len) { + const timer = fastTimers[idx] + + if (timer.state === 0) { + timer.state = fastNow + timer.delay + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1 + timer.callback(timer.opaque) + } + + if (timer.state === -1) { + timer.state = -2 + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop() + } else { + fastTimers.pop() + } + len -= 1 + } else { + idx += 1 + } + } + + if (fastTimers.length > 0) { + refreshTimeout() + } +} + +function refreshTimeout () { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh() + } else { + clearTimeout(fastNowTimeout) + fastNowTimeout = setTimeout(onTimeout, 1e3) + if (fastNowTimeout.unref) { + fastNowTimeout.unref() + } + } +} + +class Timeout { + constructor (callback, delay, opaque) { + this.callback = callback + this.delay = delay + this.opaque = opaque + + // -2 not in timer list + // -1 in timer list but inactive + // 0 in timer list waiting for time + // > 0 in timer list waiting for time to expire + this.state = -2 + + this.refresh() + } + + refresh () { + if (this.state === -2) { + fastTimers.push(this) + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout() + } + } + + this.state = 0 + } + + clear () { + this.state = -1 + } +} + +module.exports = { + setTimeout (callback, delay, opaque) { + return delay < 1e3 + ? setTimeout(callback, delay, opaque) + : new Timeout(callback, delay, opaque) + }, + clearTimeout (timeout) { + if (timeout instanceof Timeout) { + timeout.clear() + } else { + clearTimeout(timeout) + } + } +} + + +/***/ }), + +/***/ 8550: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const diagnosticsChannel = __nccwpck_require__(1637) +const { uid, states } = __nccwpck_require__(5913) +const { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose +} = __nccwpck_require__(2933) +const { fireEvent, failWebsocketConnection } = __nccwpck_require__(3574) +const { CloseEvent } = __nccwpck_require__(6255) +const { makeRequest } = __nccwpck_require__(5194) +const { fetching } = __nccwpck_require__(2315) +const { Headers } = __nccwpck_require__(6349) +const { getGlobalDispatcher } = __nccwpck_require__(2581) +const { kHeadersList } = __nccwpck_require__(6443) + +const channels = {} +channels.open = diagnosticsChannel.channel('undici:websocket:open') +channels.close = diagnosticsChannel.channel('undici:websocket:close') +channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error') + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(6982) +} catch { + +} + +/** + * @see https://websockets.spec.whatwg.org/#concept-websocket-establish + * @param {URL} url + * @param {string|string[]} protocols + * @param {import('./websocket').WebSocket} ws + * @param {(response: any) => void} onEstablish + * @param {Partial} options + */ +function establishWebSocketConnection (url, protocols, ws, onEstablish, options) { + // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s + // scheme is "ws", and to "https" otherwise. + const requestURL = url + + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:' + + // 2. Let request be a new request, whose URL is requestURL, client is client, + // service-workers mode is "none", referrer is "no-referrer", mode is + // "websocket", credentials mode is "include", cache mode is "no-store" , + // and redirect mode is "error". + const request = makeRequest({ + urlList: [requestURL], + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }) + + // Note: undici extension, allow setting custom headers. + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList] + + request.headersList = headersList + } + + // 3. Append (`Upgrade`, `websocket`) to request’s header list. + // 4. Append (`Connection`, `Upgrade`) to request’s header list. + // Note: both of these are handled by undici currently. + // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 + + // 5. Let keyValue be a nonce consisting of a randomly selected + // 16-byte value that has been forgiving-base64-encoded and + // isomorphic encoded. + const keyValue = crypto.randomBytes(16).toString('base64') + + // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s + // header list. + request.headersList.append('sec-websocket-key', keyValue) + + // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s + // header list. + request.headersList.append('sec-websocket-version', '13') + + // 8. For each protocol in protocols, combine + // (`Sec-WebSocket-Protocol`, protocol) in request’s header + // list. + for (const protocol of protocols) { + request.headersList.append('sec-websocket-protocol', protocol) + } + + // 9. Let permessageDeflate be a user-agent defined + // "permessage-deflate" extension header value. + // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 + // TODO: enable once permessage-deflate is supported + const permessageDeflate = '' // 'permessage-deflate; 15' + + // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to + // request’s header list. + // request.headersList.append('sec-websocket-extensions', permessageDeflate) + + // 11. Fetch request with useParallelQueue set to true, and + // processResponse given response being these steps: + const controller = fetching({ + request, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse (response) { + // 1. If response is a network error or its status is not 101, + // fail the WebSocket connection. + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.') + return + } + + // 2. If protocols is not the empty list and extracting header + // list values given `Sec-WebSocket-Protocol` and response’s + // header list results in null, failure, or the empty byte + // sequence, then fail the WebSocket connection. + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.') + return + } + + // 3. Follow the requirements stated step 2 to step 6, inclusive, + // of the last set of steps in section 4.1 of The WebSocket + // Protocol to validate response. This either results in fail + // the WebSocket connection or the WebSocket connection is + // established. + + // 2. If the response lacks an |Upgrade| header field or the |Upgrade| + // header field contains a value that is not an ASCII case- + // insensitive match for the value "websocket", the client MUST + // _Fail the WebSocket Connection_. + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".') + return + } + + // 3. If the response lacks a |Connection| header field or the + // |Connection| header field doesn't contain a token that is an + // ASCII case-insensitive match for the value "Upgrade", the client + // MUST _Fail the WebSocket Connection_. + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".') + return + } + + // 4. If the response lacks a |Sec-WebSocket-Accept| header field or + // the |Sec-WebSocket-Accept| contains a value other than the + // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- + // Key| (as a string, not base64-decoded) with the string "258EAFA5- + // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and + // trailing whitespace, the client MUST _Fail the WebSocket + // Connection_. + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept') + const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64') + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.') + return + } + + // 5. If the response includes a |Sec-WebSocket-Extensions| header + // field and this header field indicates the use of an extension + // that was not present in the client's handshake (the server has + // indicated an extension not requested by the client), the client + // MUST _Fail the WebSocket Connection_. (The parsing of this + // header field to determine which extensions are requested is + // discussed in Section 9.1.) + const secExtension = response.headersList.get('Sec-WebSocket-Extensions') + + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.') + return + } + + // 6. If the response includes a |Sec-WebSocket-Protocol| header field + // and this header field indicates the use of a subprotocol that was + // not present in the client's handshake (the server has indicated a + // subprotocol not requested by the client), the client MUST _Fail + // the WebSocket Connection_. + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol') + + if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.') + return + } + + response.socket.on('data', onSocketData) + response.socket.on('close', onSocketClose) + response.socket.on('error', onSocketError) + + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }) + } + + onEstablish(response) + } + }) + + return controller +} + +/** + * @param {Buffer} chunk + */ +function onSocketData (chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause() + } +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ +function onSocketClose () { + const { ws } = this + + // If the TCP connection was closed after the + // WebSocket closing handshake was completed, the WebSocket connection + // is said to have been closed _cleanly_. + const wasClean = ws[kSentClose] && ws[kReceivedClose] + + let code = 1005 + let reason = '' + + const result = ws[kByteParser].closingInfo + + if (result) { + code = result.code ?? 1005 + reason = result.reason + } else if (!ws[kSentClose]) { + // If _The WebSocket + // Connection is Closed_ and no Close control frame was received by the + // endpoint (such as could occur if the underlying transport connection + // is lost), _The WebSocket Connection Close Code_ is considered to be + // 1006. + code = 1006 + } + + // 1. Change the ready state to CLOSED (3). + ws[kReadyState] = states.CLOSED + + // 2. If the user agent was required to fail the WebSocket + // connection, or if the WebSocket connection was closed + // after being flagged as full, fire an event named error + // at the WebSocket object. + // TODO + + // 3. Fire an event named close at the WebSocket object, + // using CloseEvent, with the wasClean attribute + // initialized to true if the connection closed cleanly + // and false otherwise, the code attribute initialized to + // the WebSocket connection close code, and the reason + // attribute initialized to the result of applying UTF-8 + // decode without BOM to the WebSocket connection close + // reason. + fireEvent('close', ws, CloseEvent, { + wasClean, code, reason + }) + + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }) + } +} + +function onSocketError (error) { + const { ws } = this + + ws[kReadyState] = states.CLOSING + + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error) + } + + this.destroy() +} + +module.exports = { + establishWebSocketConnection +} + + +/***/ }), + +/***/ 5913: +/***/ ((module) => { + +"use strict"; + + +// This is a Globally Unique Identifier unique used +// to validate that the endpoint accepts websocket +// connections. +// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 +const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +const states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 +} + +const opcodes = { + CONTINUATION: 0x0, + TEXT: 0x1, + BINARY: 0x2, + CLOSE: 0x8, + PING: 0x9, + PONG: 0xA +} + +const maxUnsigned16Bit = 2 ** 16 - 1 // 65535 + +const parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 +} + +const emptyBuffer = Buffer.allocUnsafe(0) + +module.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer +} + + +/***/ }), + +/***/ 6255: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(4222) +const { kEnumerableProperty } = __nccwpck_require__(3440) +const { MessagePort } = __nccwpck_require__(8167) + +/** + * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent + */ +class MessageEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.MessageEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + } + + get data () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.data + } + + get origin () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.origin + } + + get lastEventId () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.lastEventId + } + + get source () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.source + } + + get ports () { + webidl.brandCheck(this, MessageEvent) + + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports) + } + + return this.#eventInit.ports + } + + initMessageEvent ( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, MessageEvent) + + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }) + + return new MessageEvent(type, { + bubbles, cancelable, data, origin, lastEventId, source, ports + }) + } +} + +/** + * @see https://websockets.spec.whatwg.org/#the-closeevent-interface + */ +class CloseEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.CloseEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + } + + get wasClean () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.wasClean + } + + get code () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.code + } + + get reason () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.reason + } +} + +// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface +class ErrorEvent extends Event { + #eventInit + + constructor (type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }) + + super(type, eventInitDict) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}) + + this.#eventInit = eventInitDict + } + + get message () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.message + } + + get filename () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.filename + } + + get lineno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.lineno + } + + get colno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.colno + } + + get error () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.error + } +} + +Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty +}) + +Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty +}) + +Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty +}) + +webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.MessagePort +) + +const eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } +] + +webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: 'ports', + converter: webidl.converters['sequence'], + get defaultValue () { + return [] + } + } +]) + +webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: '' + } +]) + +webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'error', + converter: webidl.converters.any + } +]) + +module.exports = { + MessageEvent, + CloseEvent, + ErrorEvent +} + + +/***/ }), + +/***/ 1237: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { maxUnsigned16Bit } = __nccwpck_require__(5913) + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(6982) +} catch { + +} + +class WebsocketFrameSend { + /** + * @param {Buffer|undefined} data + */ + constructor (data) { + this.frameData = data + this.maskKey = crypto.randomBytes(4) + } + + createFrame (opcode) { + const bodyLength = this.frameData?.byteLength ?? 0 + + /** @type {number} */ + let payloadLength = bodyLength // 0-125 + let offset = 6 + + if (bodyLength > maxUnsigned16Bit) { + offset += 8 // payload length is next 8 bytes + payloadLength = 127 + } else if (bodyLength > 125) { + offset += 2 // payload length is next 2 bytes + payloadLength = 126 + } + + const buffer = Buffer.allocUnsafe(bodyLength + offset) + + // Clear first 2 bytes, everything else is overwritten + buffer[0] = buffer[1] = 0 + buffer[0] |= 0x80 // FIN + buffer[0] = (buffer[0] & 0xF0) + opcode // opcode + + /*! ws. MIT License. Einar Otto Stangvik */ + buffer[offset - 4] = this.maskKey[0] + buffer[offset - 3] = this.maskKey[1] + buffer[offset - 2] = this.maskKey[2] + buffer[offset - 1] = this.maskKey[3] + + buffer[1] = payloadLength + + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2) + } else if (payloadLength === 127) { + // Clear extended payload length + buffer[2] = buffer[3] = 0 + buffer.writeUIntBE(bodyLength, 4, 6) + } + + buffer[1] |= 0x80 // MASK + + // mask body + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4] + } + + return buffer + } +} + +module.exports = { + WebsocketFrameSend +} + + +/***/ }), + +/***/ 3171: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Writable } = __nccwpck_require__(2203) +const diagnosticsChannel = __nccwpck_require__(1637) +const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(5913) +const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(2933) +const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = __nccwpck_require__(3574) +const { WebsocketFrameSend } = __nccwpck_require__(1237) + +// This code was influenced by ws released under the MIT license. +// Copyright (c) 2011 Einar Otto Stangvik +// Copyright (c) 2013 Arnout Kazemier and contributors +// Copyright (c) 2016 Luigi Pinca and contributors + +const channels = {} +channels.ping = diagnosticsChannel.channel('undici:websocket:ping') +channels.pong = diagnosticsChannel.channel('undici:websocket:pong') + +class ByteParser extends Writable { + #buffers = [] + #byteOffset = 0 + + #state = parserStates.INFO + + #info = {} + #fragments = [] + + constructor (ws) { + super() + + this.ws = ws + } + + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write (chunk, _, callback) { + this.#buffers.push(chunk) + this.#byteOffset += chunk.length + + this.run(callback) + } + + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run (callback) { + while (true) { + if (this.#state === parserStates.INFO) { + // If there aren't enough bytes to parse the payload length, etc. + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.fin = (buffer[0] & 0x80) !== 0 + this.#info.opcode = buffer[0] & 0x0F + + // If we receive a fragmented message, we use the type of the first + // frame to parse the full message as binary/text, when it's terminated + this.#info.originalOpcode ??= this.#info.opcode + + this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION + + if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { + // Only text and binary frames can be fragmented + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.') + return + } + + const payloadLength = buffer[1] & 0x7F + + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength + this.#state = parserStates.READ_DATA + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16 + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64 + } + + if (this.#info.fragmented && payloadLength > 125) { + // A fragmented frame can't be fragmented itself + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.') + return + } else if ( + (this.#info.opcode === opcodes.PING || + this.#info.opcode === opcodes.PONG || + this.#info.opcode === opcodes.CLOSE) && + payloadLength > 125 + ) { + // Control frames can have a payload length of 125 bytes MAX + failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.') + return + } else if (this.#info.opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.') + return + } + + const body = this.consume(payloadLength) + + this.#info.closeInfo = this.parseCloseBody(false, body) + + if (!this.ws[kSentClose]) { + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) + const body = Buffer.allocUnsafe(2) + body.writeUInt16BE(this.#info.closeInfo.code, 0) + const closeFrame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true + } + } + ) + } + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this.ws[kReadyState] = states.CLOSING + this.ws[kReceivedClose] = true + + this.end() + + return + } else if (this.#info.opcode === opcodes.PING) { + // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in + // response, unless it already received a Close frame. + // A Pong frame sent in response to a Ping frame must have identical + // "Application data" + + const body = this.consume(payloadLength) + + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)) + + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }) + } + } + + this.#state = parserStates.INFO + + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } + } else if (this.#info.opcode === opcodes.PONG) { + // A Pong frame MAY be sent unsolicited. This serves as a + // unidirectional heartbeat. A response to an unsolicited Pong frame is + // not expected. + + const body = this.consume(payloadLength) + + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }) + } + + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } + } + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.payloadLength = buffer.readUInt16BE(0) + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback() + } + + const buffer = this.consume(8) + const upper = buffer.readUInt32BE(0) + + // 2^31 is the maxinimum bytes an arraybuffer can contain + // on 32-bit systems. Although, on 64-bit systems, this is + // 2^53-1 bytes. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.') + return + } + + const lower = buffer.readUInt32BE(4) + + this.#info.payloadLength = (upper << 8) + lower + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + // If there is still more data in this chunk that needs to be read + return callback() + } else if (this.#byteOffset >= this.#info.payloadLength) { + // If the server sent multiple frames in a single chunk + + const body = this.consume(this.#info.payloadLength) + + this.#fragments.push(body) + + // If the frame is unfragmented, or a fragmented frame was terminated, + // a message was received + if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { + const fullMessage = Buffer.concat(this.#fragments) + + websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage) + + this.#info = {} + this.#fragments.length = 0 + } + + this.#state = parserStates.INFO + } + } + + if (this.#byteOffset > 0) { + continue + } else { + callback() + break + } + } + } + + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume (n) { + if (n > this.#byteOffset) { + return null + } else if (n === 0) { + return emptyBuffer + } + + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length + return this.#buffers.shift() + } + + const buffer = Buffer.allocUnsafe(n) + let offset = 0 + + while (offset !== n) { + const next = this.#buffers[0] + const { length } = next + + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset) + break + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset) + this.#buffers[0] = next.subarray(n - offset) + break + } else { + buffer.set(this.#buffers.shift(), offset) + offset += next.length + } + } + + this.#byteOffset -= n + + return buffer + } + + parseCloseBody (onlyCode, data) { + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 + /** @type {number|undefined} */ + let code + + if (data.length >= 2) { + // _The WebSocket Connection Close Code_ is + // defined as the status code (Section 7.4) contained in the first Close + // control frame received by the application + code = data.readUInt16BE(0) + } + + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null + } + + return { code } + } + + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 + /** @type {Buffer} */ + let reason = data.subarray(2) + + // Remove BOM + if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { + reason = reason.subarray(3) + } + + if (code !== undefined && !isValidStatusCode(code)) { + return null + } + + try { + // TODO: optimize this + reason = new TextDecoder('utf-8', { fatal: true }).decode(reason) + } catch { + return null + } + + return { code, reason } + } + + get closingInfo () { + return this.#info.closeInfo + } +} + +module.exports = { + ByteParser +} + + +/***/ }), + +/***/ 2933: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kWebSocketURL: Symbol('url'), + kReadyState: Symbol('ready state'), + kController: Symbol('controller'), + kResponse: Symbol('response'), + kBinaryType: Symbol('binary type'), + kSentClose: Symbol('sent close'), + kReceivedClose: Symbol('received close'), + kByteParser: Symbol('byte parser') +} + + +/***/ }), + +/***/ 3574: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = __nccwpck_require__(2933) +const { states, opcodes } = __nccwpck_require__(5913) +const { MessageEvent, ErrorEvent } = __nccwpck_require__(6255) + +/* globals Blob */ + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isEstablished (ws) { + // If the server's response is validated as provided for above, it is + // said that _The WebSocket Connection is Established_ and that the + // WebSocket Connection is in the OPEN state. + return ws[kReadyState] === states.OPEN +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosing (ws) { + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + return ws[kReadyState] === states.CLOSING +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosed (ws) { + return ws[kReadyState] === states.CLOSED +} + +/** + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e + * @param {EventTarget} target + * @param {EventInit | undefined} eventInitDict + */ +function fireEvent (e, target, eventConstructor = Event, eventInitDict) { + // 1. If eventConstructor is not given, then let eventConstructor be Event. + + // 2. Let event be the result of creating an event given eventConstructor, + // in the relevant realm of target. + // 3. Initialize event’s type attribute to e. + const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap + + // 4. Initialize any other IDL attributes of event as described in the + // invocation of this algorithm. + + // 5. Return the result of dispatching event at target, with legacy target + // override flag set if set. + target.dispatchEvent(event) +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @param {import('./websocket').WebSocket} ws + * @param {number} type Opcode + * @param {Buffer} data application data + */ +function websocketMessageReceived (ws, type, data) { + // 1. If ready state is not OPEN (1), then return. + if (ws[kReadyState] !== states.OPEN) { + return + } + + // 2. Let dataForEvent be determined by switching on type and binary type: + let dataForEvent + + if (type === opcodes.TEXT) { + // -> type indicates that the data is Text + // a new DOMString containing data + try { + dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data) + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.') + return + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + // -> type indicates that the data is Binary and binary type is "blob" + // a new Blob object, created in the relevant Realm of the WebSocket + // object, that represents data as its raw data + dataForEvent = new Blob([data]) + } else { + // -> type indicates that the data is Binary and binary type is "arraybuffer" + // a new ArrayBuffer object, created in the relevant Realm of the + // WebSocket object, whose contents are data + dataForEvent = new Uint8Array(data).buffer + } + } + + // 3. Fire an event named message at the WebSocket object, using MessageEvent, + // with the origin attribute initialized to the serialization of the WebSocket + // object’s url's origin, and the data attribute initialized to dataForEvent. + fireEvent('message', ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }) +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455 + * @see https://datatracker.ietf.org/doc/html/rfc2616 + * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 + * @param {string} protocol + */ +function isValidSubprotocol (protocol) { + // If present, this value indicates one + // or more comma-separated subprotocol the client wishes to speak, + // ordered by preference. The elements that comprise this value + // MUST be non-empty strings with characters in the range U+0021 to + // U+007E not including separator characters as defined in + // [RFC2616] and MUST all be unique strings. + if (protocol.length === 0) { + return false + } + + for (const char of protocol) { + const code = char.charCodeAt(0) + + if ( + code < 0x21 || + code > 0x7E || + char === '(' || + char === ')' || + char === '<' || + char === '>' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' || + code === 32 || // SP + code === 9 // HT + ) { + return false + } + } + + return true +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 + * @param {number} code + */ +function isValidStatusCode (code) { + if (code >= 1000 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 // "MUST NOT be set as a status code" + ) + } + + return code >= 3000 && code <= 4999 +} + +/** + * @param {import('./websocket').WebSocket} ws + * @param {string|undefined} reason + */ +function failWebsocketConnection (ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws + + controller.abort() + + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy() + } + + if (reason) { + fireEvent('error', ws, ErrorEvent, { + error: new Error(reason) + }) + } +} + +module.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived +} + + +/***/ }), + +/***/ 5171: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(4222) +const { DOMException } = __nccwpck_require__(7326) +const { URLSerializer } = __nccwpck_require__(4322) +const { getGlobalOrigin } = __nccwpck_require__(5628) +const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(5913) +const { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser +} = __nccwpck_require__(2933) +const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = __nccwpck_require__(3574) +const { establishWebSocketConnection } = __nccwpck_require__(8550) +const { WebsocketFrameSend } = __nccwpck_require__(1237) +const { ByteParser } = __nccwpck_require__(3171) +const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3440) +const { getGlobalDispatcher } = __nccwpck_require__(2581) +const { types } = __nccwpck_require__(9023) + +let experimentalWarned = false + +// https://websockets.spec.whatwg.org/#interface-definition +class WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + } + + #bufferedAmount = 0 + #protocol = '' + #extensions = '' + + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor (url, protocols = []) { + super() + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }) + + if (!experimentalWarned) { + experimentalWarned = true + process.emitWarning('WebSockets are experimental, expect them to change at any time.', { + code: 'UNDICI-WS' + }) + } + + const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols) + + url = webidl.converters.USVString(url) + protocols = options.protocols + + // 1. Let baseURL be this's relevant settings object's API base URL. + const baseURL = getGlobalOrigin() + + // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. + let urlRecord + + try { + urlRecord = new URL(url, baseURL) + } catch (e) { + // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError') + } + + // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:' + } else if (urlRecord.protocol === 'https:') { + // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". + urlRecord.protocol = 'wss:' + } + + // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + 'SyntaxError' + ) + } + + // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" + // DOMException. + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError') + } + + // 8. If protocols is a string, set protocols to a sequence consisting + // of just that string. + if (typeof protocols === 'string') { + protocols = [protocols] + } + + // 9. If any of the values in protocols occur more than once or otherwise + // fail to match the requirements for elements that comprise the value + // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket + // protocol, then throw a "SyntaxError" DOMException. + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + // 10. Set this's url to urlRecord. + this[kWebSocketURL] = new URL(urlRecord.href) + + // 11. Let client be this's relevant settings object. + + // 12. Run this step in parallel: + + // 1. Establish a WebSocket connection given urlRecord, protocols, + // and client. + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => this.#onConnectionEstablished(response), + options + ) + + // Each WebSocket object has an associated ready state, which is a + // number representing the state of the connection. Initially it must + // be CONNECTING (0). + this[kReadyState] = WebSocket.CONNECTING + + // The extensions attribute must initially return the empty string. + + // The protocol attribute must initially return the empty string. + + // Each WebSocket object has an associated binary type, which is a + // BinaryType. Initially it must be "blob". + this[kBinaryType] = 'blob' + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close (code = undefined, reason = undefined) { + webidl.brandCheck(this, WebSocket) + + if (code !== undefined) { + code = webidl.converters['unsigned short'](code, { clamp: true }) + } + + if (reason !== undefined) { + reason = webidl.converters.USVString(reason) + } + + // 1. If code is present, but is neither an integer equal to 1000 nor an + // integer in the range 3000 to 4999, inclusive, throw an + // "InvalidAccessError" DOMException. + if (code !== undefined) { + if (code !== 1000 && (code < 3000 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError') + } + } + + let reasonByteLength = 0 + + // 2. If reason is present, then run these substeps: + if (reason !== undefined) { + // 1. Let reasonBytes be the result of encoding reason. + // 2. If reasonBytes is longer than 123 bytes, then throw a + // "SyntaxError" DOMException. + reasonByteLength = Buffer.byteLength(reason) + + if (reasonByteLength > 123) { + throw new DOMException( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + 'SyntaxError' + ) + } + } + + // 3. Run the first matching steps from the following list: + if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { + // If this's ready state is CLOSING (2) or CLOSED (3) + // Do nothing. + } else if (!isEstablished(this)) { + // If the WebSocket connection is not yet established + // Fail the WebSocket connection and set this's ready state + // to CLOSING (2). + failWebsocketConnection(this, 'Connection was closed before it was established.') + this[kReadyState] = WebSocket.CLOSING + } else if (!isClosing(this)) { + // If the WebSocket closing handshake has not yet been started + // Start the WebSocket closing handshake and set this's ready + // state to CLOSING (2). + // - If neither code nor reason is present, the WebSocket Close + // message must not have a body. + // - If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + // - If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + + const frame = new WebsocketFrameSend() + + // If neither code nor reason is present, the WebSocket Close + // message must not have a body. + + // If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + if (code !== undefined && reason === undefined) { + frame.frameData = Buffer.allocUnsafe(2) + frame.frameData.writeUInt16BE(code, 0) + } else if (code !== undefined && reason !== undefined) { + // If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength) + frame.frameData.writeUInt16BE(code, 0) + // the body MAY contain UTF-8-encoded data with value /reason/ + frame.frameData.write(reason, 2, 'utf-8') + } else { + frame.frameData = emptyBuffer + } + + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true + } + }) + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this[kReadyState] = states.CLOSING + } else { + // Otherwise + // Set this's ready state to CLOSING (2). + this[kReadyState] = WebSocket.CLOSING + } + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send (data) { + webidl.brandCheck(this, WebSocket) + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }) + + data = webidl.converters.WebSocketSendData(data) + + // 1. If this's ready state is CONNECTING, then throw an + // "InvalidStateError" DOMException. + if (this[kReadyState] === WebSocket.CONNECTING) { + throw new DOMException('Sent before connected.', 'InvalidStateError') + } + + // 2. Run the appropriate set of steps from the following list: + // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 + // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 + + if (!isEstablished(this) || isClosing(this)) { + return + } + + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + // If data is a string + if (typeof data === 'string') { + // If the WebSocket connection is established and the WebSocket + // closing handshake has not yet started, then the user agent + // must send a WebSocket Message comprised of the data argument + // using a text frame opcode; if the data cannot be sent, e.g. + // because it would need to be buffered but the buffer is full, + // the user agent must flag the WebSocket as full and then close + // the WebSocket connection. Any invocation of this method with a + // string argument that does not throw an exception must increase + // the bufferedAmount attribute by the number of bytes needed to + // express the argument as UTF-8. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.TEXT) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (types.isArrayBuffer(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need + // to be buffered but the buffer is full, the user agent must flag + // the WebSocket as full and then close the WebSocket connection. + // The data to be sent is the data stored in the buffer described + // by the ArrayBuffer object. Any invocation of this method with an + // ArrayBuffer argument that does not throw an exception must + // increase the bufferedAmount attribute by the length of the + // ArrayBuffer in bytes. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (ArrayBuffer.isView(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The + // data to be sent is the data stored in the section of the buffer + // described by the ArrayBuffer object that data references. Any + // invocation of this method with this kind of argument that does + // not throw an exception must increase the bufferedAmount attribute + // by the length of data’s buffer in bytes. + + const ab = Buffer.from(data, data.byteOffset, data.byteLength) + + const frame = new WebsocketFrameSend(ab) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += ab.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= ab.byteLength + }) + } else if (isBlobLike(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The data + // to be sent is the raw data represented by the Blob object. Any + // invocation of this method with a Blob argument that does not throw + // an exception must increase the bufferedAmount attribute by the size + // of the Blob object’s raw data, in bytes. + + const frame = new WebsocketFrameSend() + + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab) + frame.frameData = value + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + }) + } + } + + get readyState () { + webidl.brandCheck(this, WebSocket) + + // The readyState getter steps are to return this's ready state. + return this[kReadyState] + } + + get bufferedAmount () { + webidl.brandCheck(this, WebSocket) + + return this.#bufferedAmount + } + + get url () { + webidl.brandCheck(this, WebSocket) + + // The url getter steps are to return this's url, serialized. + return URLSerializer(this[kWebSocketURL]) + } + + get extensions () { + webidl.brandCheck(this, WebSocket) + + return this.#extensions + } + + get protocol () { + webidl.brandCheck(this, WebSocket) + + return this.#protocol + } + + get onopen () { + webidl.brandCheck(this, WebSocket) + + return this.#events.open + } + + set onopen (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.open) { + this.removeEventListener('open', this.#events.open) + } + + if (typeof fn === 'function') { + this.#events.open = fn + this.addEventListener('open', fn) + } else { + this.#events.open = null + } + } + + get onerror () { + webidl.brandCheck(this, WebSocket) + + return this.#events.error + } + + set onerror (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.error) { + this.removeEventListener('error', this.#events.error) + } + + if (typeof fn === 'function') { + this.#events.error = fn + this.addEventListener('error', fn) + } else { + this.#events.error = null + } + } + + get onclose () { + webidl.brandCheck(this, WebSocket) + + return this.#events.close + } + + set onclose (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.close) { + this.removeEventListener('close', this.#events.close) + } + + if (typeof fn === 'function') { + this.#events.close = fn + this.addEventListener('close', fn) + } else { + this.#events.close = null + } + } + + get onmessage () { + webidl.brandCheck(this, WebSocket) + + return this.#events.message + } + + set onmessage (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.message) { + this.removeEventListener('message', this.#events.message) + } + + if (typeof fn === 'function') { + this.#events.message = fn + this.addEventListener('message', fn) + } else { + this.#events.message = null + } + } + + get binaryType () { + webidl.brandCheck(this, WebSocket) + + return this[kBinaryType] + } + + set binaryType (type) { + webidl.brandCheck(this, WebSocket) + + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob' + } else { + this[kBinaryType] = type + } + } + + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished (response) { + // processResponse is called when the "response’s header list has been received and initialized." + // once this happens, the connection is open + this[kResponse] = response + + const parser = new ByteParser(this) + parser.on('drain', function onParserDrain () { + this.ws[kResponse].socket.resume() + }) + + response.socket.ws = this + this[kByteParser] = parser + + // 1. Change the ready state to OPEN (1). + this[kReadyState] = states.OPEN + + // 2. Change the extensions attribute’s value to the extensions in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 + const extensions = response.headersList.get('sec-websocket-extensions') + + if (extensions !== null) { + this.#extensions = extensions + } + + // 3. Change the protocol attribute’s value to the subprotocol in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 + const protocol = response.headersList.get('sec-websocket-protocol') + + if (protocol !== null) { + this.#protocol = protocol + } + + // 4. Fire an event named open at the WebSocket object. + fireEvent('open', this) + } +} + +// https://websockets.spec.whatwg.org/#dom-websocket-connecting +WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING +// https://websockets.spec.whatwg.org/#dom-websocket-open +WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN +// https://websockets.spec.whatwg.org/#dom-websocket-closing +WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING +// https://websockets.spec.whatwg.org/#dom-websocket-closed +WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED + +Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors +}) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.DOMString +) + +webidl.converters['DOMString or sequence'] = function (V) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence'](V) + } + + return webidl.converters.DOMString(V) +} + +// This implements the propsal made in https://github.com/whatwg/websockets/issues/42 +webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.converters['DOMString or sequence'], + get defaultValue () { + return [] + } + }, + { + key: 'dispatcher', + converter: (V) => V, + get defaultValue () { + return getGlobalDispatcher() + } + }, + { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } +]) + +webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V) + } + + return { protocols: webidl.converters['DOMString or sequence'](V) } +} + +webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V) + } + } + + return webidl.converters.USVString(V) +} + +module.exports = { + WebSocket +} + + +/***/ }), + +/***/ 7125: +/***/ ((module) => { + +"use strict"; + + +var conversions = {}; +module.exports = conversions; + +function sign(x) { + return x < 0 ? -1 : 1; +} + +function evenRound(x) { + // Round x to the nearest integer, choosing the even integer if it lies halfway between two. + if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) + return Math.floor(x); + } else { + return Math.round(x); + } +} + +function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); + const upperBound = Math.pow(2, bitLength) - 1; + + const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); + const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); + + return function(V, opts) { + if (!opts) opts = {}; + + let x = +V; + + if (opts.enforceRange) { + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite number"); + } + + x = sign(x) * Math.floor(Math.abs(x)); + if (x < lowerBound || x > upperBound) { + throw new TypeError("Argument is not in byte range"); + } + + return x; + } + + if (!isNaN(x) && opts.clamp) { + x = evenRound(x); + + if (x < lowerBound) x = lowerBound; + if (x > upperBound) x = upperBound; + return x; + } + + if (!Number.isFinite(x) || x === 0) { + return 0; + } + + x = sign(x) * Math.floor(Math.abs(x)); + x = x % moduloVal; + + if (!typeOpts.unsigned && x >= moduloBound) { + return x - moduloVal; + } else if (typeOpts.unsigned) { + if (x < 0) { + x += moduloVal; + } else if (x === -0) { // don't return negative zero + return 0; + } + } + + return x; + } +} + +conversions["void"] = function () { + return undefined; +}; + +conversions["boolean"] = function (val) { + return !!val; +}; + +conversions["byte"] = createNumberConversion(8, { unsigned: false }); +conversions["octet"] = createNumberConversion(8, { unsigned: true }); + +conversions["short"] = createNumberConversion(16, { unsigned: false }); +conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); + +conversions["long"] = createNumberConversion(32, { unsigned: false }); +conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); + +conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); +conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); + +conversions["double"] = function (V) { + const x = +V; + + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite floating-point value"); + } + + return x; +}; + +conversions["unrestricted double"] = function (V) { + const x = +V; + + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } + + return x; +}; + +// not quite valid, but good enough for JS +conversions["float"] = conversions["double"]; +conversions["unrestricted float"] = conversions["unrestricted double"]; + +conversions["DOMString"] = function (V, opts) { + if (!opts) opts = {}; + + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } + + return String(V); +}; + +conversions["ByteString"] = function (V, opts) { + const x = String(V); + let c = undefined; + for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } + + return x; +}; + +conversions["USVString"] = function (V) { + const S = String(V); + const n = S.length; + const U = []; + for (let i = 0; i < n; ++i) { + const c = S.charCodeAt(i); + if (c < 0xD800 || c > 0xDFFF) { + U.push(String.fromCodePoint(c)); + } else if (0xDC00 <= c && c <= 0xDFFF) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + const d = S.charCodeAt(i + 1); + if (0xDC00 <= d && d <= 0xDFFF) { + const a = c & 0x3FF; + const b = d & 0x3FF; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(0xFFFD)); + } + } + } + } + + return U.join(''); +}; + +conversions["Date"] = function (V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return undefined; + } + + return V; +}; + +conversions["RegExp"] = function (V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + + return V; +}; + + +/***/ }), + +/***/ 3184: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +const usm = __nccwpck_require__(905); + +exports.implementation = class URLImpl { + constructor(constructorArgs) { + const url = constructorArgs[0]; + const base = constructorArgs[1]; + + let parsedBase = null; + if (base !== undefined) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } + + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + + this._url = parsedURL; + + // TODO: query stuff + } + + get href() { + return usm.serializeURL(this._url); + } + + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + + this._url = parsedURL; + } + + get origin() { + return usm.serializeURLOrigin(this._url); + } + + get protocol() { + return this._url.scheme + ":"; + } + + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + + get username() { + return this._url.username; + } + + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + usm.setTheUsername(this._url, v); + } + + get password() { + return this._url.password; + } + + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + usm.setThePassword(this._url, v); + } + + get host() { + const url = this._url; + + if (url.host === null) { + return ""; + } + + if (url.port === null) { + return usm.serializeHost(url.host); + } + + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); + } + + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + + get hostname() { + if (this._url.host === null) { + return ""; + } + + return usm.serializeHost(this._url.host); + } + + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + + get port() { + if (this._url.port === null) { + return ""; + } + + return usm.serializeInteger(this._url.port); + } + + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + + if (this._url.path.length === 0) { + return ""; + } + + return "/" + this._url.path.join("/"); + } + + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + + return "?" + this._url.query; + } + + set search(v) { + // TODO: query stuff + + const url = this._url; + + if (v === "") { + url.query = null; + return; + } + + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + + return "#" + this._url.fragment; + } + + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + + toJSON() { + return this.href; + } +}; + + +/***/ }), + +/***/ 6633: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const conversions = __nccwpck_require__(7125); +const utils = __nccwpck_require__(9857); +const Impl = __nccwpck_require__(3184); + +const impl = utils.implSymbol; + +function URL(url) { + if (!this || this[impl] || !(this instanceof URL)) { + throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); + } + if (arguments.length < 1) { + throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); + } + const args = []; + for (let i = 0; i < arguments.length && i < 2; ++i) { + args[i] = arguments[i]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== undefined) { + args[1] = conversions["USVString"](args[1]); + } + + module.exports.setup(this, args); +} + +URL.prototype.toJSON = function toJSON() { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); +}; +Object.defineProperty(URL.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true +}); + +URL.prototype.toString = function () { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; +}; + +Object.defineProperty(URL.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true +}); + + +module.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL.prototype); + this.setup(obj, constructorArgs, privateData); + return obj; + }, + setup(obj, constructorArgs, privateData) { + if (!privateData) privateData = {}; + privateData.wrapper = obj; + + obj[impl] = new Impl.implementation(constructorArgs, privateData); + obj[impl][utils.wrapperSymbol] = obj; + }, + interface: URL, + expose: { + Window: { URL: URL }, + Worker: { URL: URL } + } +}; + + + +/***/ }), + +/***/ 2686: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +exports.URL = __nccwpck_require__(6633)["interface"]; +exports.serializeURL = __nccwpck_require__(905).serializeURL; +exports.serializeURLOrigin = __nccwpck_require__(905).serializeURLOrigin; +exports.basicURLParse = __nccwpck_require__(905).basicURLParse; +exports.setTheUsername = __nccwpck_require__(905).setTheUsername; +exports.setThePassword = __nccwpck_require__(905).setThePassword; +exports.serializeHost = __nccwpck_require__(905).serializeHost; +exports.serializeInteger = __nccwpck_require__(905).serializeInteger; +exports.parseURL = __nccwpck_require__(905).parseURL; + + +/***/ }), + +/***/ 905: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +const punycode = __nccwpck_require__(4876); +const tr46 = __nccwpck_require__(1552); + +const specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +const failure = Symbol("failure"); + +function countSymbols(str) { + return punycode.ucs2.decode(str).length; +} + +function at(input, idx) { + const c = input[idx]; + return isNaN(c) ? undefined : String.fromCodePoint(c); +} + +function isASCIIDigit(c) { + return c >= 0x30 && c <= 0x39; +} + +function isASCIIAlpha(c) { + return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A); +} + +function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); +} + +function isASCIIHex(c) { + return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66); +} + +function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; +} + +function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; +} + +function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); +} + +function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); +} + +function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; +} + +function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; +} + +function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; +} + +function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== undefined; +} + +function isSpecial(url) { + return isSpecialScheme(url.scheme); +} + +function defaultPort(scheme) { + return specialSchemes[scheme]; +} + +function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + + return "%" + hex; +} + +function utf8PercentEncode(c) { + const buf = new Buffer(c); + + let str = ""; + + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + + return str; +} + +function utf8PercentDecode(str) { + const input = new Buffer(str); + const output = []; + for (let i = 0; i < input.length; ++i) { + if (input[i] !== 37) { + output.push(input[i]); + } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { + output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); + i += 2; + } else { + output.push(input[i]); + } + } + return new Buffer(output).toString(); +} + +function isC0ControlPercentEncode(c) { + return c <= 0x1F || c > 0x7E; +} + +const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); +function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); +} + +const extraUserinfoPercentEncodeSet = + new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); +function isUserinfoPercentEncode(c) { + return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); +} + +function percentEncodeChar(c, encodeSetPredicate) { + const cStr = String.fromCodePoint(c); + + if (encodeSetPredicate(c)) { + return utf8PercentEncode(cStr); + } + + return cStr; +} + +function parseIPv4Number(input) { + let R = 10; + + if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { + input = input.substring(2); + R = 16; + } else if (input.length >= 2 && input.charAt(0) === "0") { + input = input.substring(1); + R = 8; + } + + if (input === "") { + return 0; + } + + const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/); + if (regex.test(input)) { + return failure; + } + + return parseInt(input, R); +} + +function parseIPv4(input) { + const parts = input.split("."); + if (parts[parts.length - 1] === "") { + if (parts.length > 1) { + parts.pop(); + } + } + + if (parts.length > 4) { + return input; + } + + const numbers = []; + for (const part of parts) { + if (part === "") { + return input; + } + const n = parseIPv4Number(part); + if (n === failure) { + return input; + } + + numbers.push(n); + } + + for (let i = 0; i < numbers.length - 1; ++i) { + if (numbers[i] > 255) { + return failure; + } + } + if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { + return failure; + } + + let ipv4 = numbers.pop(); + let counter = 0; + + for (const n of numbers) { + ipv4 += n * Math.pow(256, 3 - counter); + ++counter; + } + + return ipv4; +} + +function serializeIPv4(address) { + let output = ""; + let n = address; + + for (let i = 1; i <= 4; ++i) { + output = String(n % 256) + output; + if (i !== 4) { + output = "." + output; + } + n = Math.floor(n / 256); + } + + return output; +} + +function parseIPv6(input) { + const address = [0, 0, 0, 0, 0, 0, 0, 0]; + let pieceIndex = 0; + let compress = null; + let pointer = 0; + + input = punycode.ucs2.decode(input); + + if (input[pointer] === 58) { + if (input[pointer + 1] !== 58) { + return failure; + } + + pointer += 2; + ++pieceIndex; + compress = pieceIndex; + } + + while (pointer < input.length) { + if (pieceIndex === 8) { + return failure; + } + + if (input[pointer] === 58) { + if (compress !== null) { + return failure; + } + ++pointer; + ++pieceIndex; + compress = pieceIndex; + continue; + } + + let value = 0; + let length = 0; + + while (length < 4 && isASCIIHex(input[pointer])) { + value = value * 0x10 + parseInt(at(input, pointer), 16); + ++pointer; + ++length; + } + + if (input[pointer] === 46) { + if (length === 0) { + return failure; + } + + pointer -= length; + + if (pieceIndex > 6) { + return failure; + } + + let numbersSeen = 0; + + while (input[pointer] !== undefined) { + let ipv4Piece = null; + + if (numbersSeen > 0) { + if (input[pointer] === 46 && numbersSeen < 4) { + ++pointer; + } else { + return failure; + } + } + + if (!isASCIIDigit(input[pointer])) { + return failure; + } + + while (isASCIIDigit(input[pointer])) { + const number = parseInt(at(input, pointer)); + if (ipv4Piece === null) { + ipv4Piece = number; + } else if (ipv4Piece === 0) { + return failure; + } else { + ipv4Piece = ipv4Piece * 10 + number; + } + if (ipv4Piece > 255) { + return failure; + } + ++pointer; + } + + address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece; + + ++numbersSeen; + + if (numbersSeen === 2 || numbersSeen === 4) { + ++pieceIndex; + } + } + + if (numbersSeen !== 4) { + return failure; + } + + break; + } else if (input[pointer] === 58) { + ++pointer; + if (input[pointer] === undefined) { + return failure; + } + } else if (input[pointer] !== undefined) { + return failure; + } + + address[pieceIndex] = value; + ++pieceIndex; + } + + if (compress !== null) { + let swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + const temp = address[compress + swaps - 1]; + address[compress + swaps - 1] = address[pieceIndex]; + address[pieceIndex] = temp; + --pieceIndex; + --swaps; + } + } else if (compress === null && pieceIndex !== 8) { + return failure; + } + + return address; +} + +function serializeIPv6(address) { + let output = ""; + const seqResult = findLongestZeroSequence(address); + const compress = seqResult.idx; + let ignore0 = false; + + for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { + if (ignore0 && address[pieceIndex] === 0) { + continue; + } else if (ignore0) { + ignore0 = false; + } + + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + + output += address[pieceIndex].toString(16); + + if (pieceIndex !== 7) { + output += ":"; + } + } + + return output; +} + +function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + + return parseIPv6(input.substring(1, input.length - 1)); + } + + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + + return asciiDomain; +} + +function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; +} + +function findLongestZeroSequence(arr) { + let maxIdx = null; + let maxLen = 1; // only find elements > 1 + let currStart = null; + let currLen = 0; + + for (let i = 0; i < arr.length; ++i) { + if (arr[i] !== 0) { + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + + currStart = null; + currLen = 0; + } else { + if (currStart === null) { + currStart = i; + } + ++currLen; + } + } + + // if trailing zeros + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + + return { + idx: maxIdx, + len: maxLen + }; +} + +function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + + // IPv6 serializer + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + + return host; +} + +function trimControlChars(url) { + return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); +} + +function trimTabAndNewline(url) { + return url.replace(/\u0009|\u000A|\u000D/g, ""); +} + +function shortenPath(url) { + const path = url.path; + if (path.length === 0) { + return; + } + if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { + return; + } + + path.pop(); +} + +function includesCredentials(url) { + return url.username !== "" || url.password !== ""; +} + +function cannotHaveAUsernamePasswordPort(url) { + return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; +} + +function isNormalizedWindowsDriveLetter(string) { + return /^[A-Za-z]:$/.test(string); +} + +function URLStateMachine(input, base, encodingOverride, url, stateOverride) { + this.pointer = 0; + this.input = input; + this.base = base || null; + this.encodingOverride = encodingOverride || "utf-8"; + this.stateOverride = stateOverride; + this.url = url; + this.failure = false; + this.parseError = false; + + if (!this.url) { + this.url = { + scheme: "", + username: "", + password: "", + host: null, + port: null, + path: [], + query: null, + fragment: null, + + cannotBeABaseURL: false + }; + + const res = trimControlChars(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + } + + const res = trimTabAndNewline(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + + this.state = stateOverride || "scheme start"; + + this.buffer = ""; + this.atFlag = false; + this.arrFlag = false; + this.passwordTokenSeenFlag = false; + + this.input = punycode.ucs2.decode(this.input); + + for (; this.pointer <= this.input.length; ++this.pointer) { + const c = this.input[this.pointer]; + const cStr = isNaN(c) ? undefined : String.fromCodePoint(c); + + // exec state machine + const ret = this["parse " + this.state](c, cStr); + if (!ret) { + break; // terminate algorithm + } else if (ret === failure) { + this.failure = true; + break; + } + } +} + +URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { + if (isASCIIAlpha(c)) { + this.buffer += cStr.toLowerCase(); + this.state = "scheme"; + } else if (!this.stateOverride) { + this.state = "no scheme"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { + if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { + this.buffer += cStr.toLowerCase(); + } else if (c === 58) { + if (this.stateOverride) { + if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { + return false; + } + + if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { + return false; + } + + if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { + return false; + } + + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + if (this.url.scheme === "file") { + if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { + this.parseError = true; + } + this.state = "file"; + } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { + this.state = "special relative or authority"; + } else if (isSpecial(this.url)) { + this.state = "special authority slashes"; + } else if (this.input[this.pointer + 1] === 47) { + this.state = "path or authority"; + ++this.pointer; + } else { + this.url.cannotBeABaseURL = true; + this.url.path.push(""); + this.state = "cannot-be-a-base-URL path"; + } + } else if (!this.stateOverride) { + this.buffer = ""; + this.state = "no scheme"; + this.pointer = -1; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { + if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) { + return failure; + } else if (this.base.cannotBeABaseURL && c === 35) { + this.url.scheme = this.base.scheme; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.url.cannotBeABaseURL = true; + this.state = "fragment"; + } else if (this.base.scheme === "file") { + this.state = "file"; + --this.pointer; + } else { + this.state = "relative"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "relative"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse relative"] = function parseRelative(c) { + this.url.scheme = this.base.scheme; + if (isNaN(c)) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 47) { + this.state = "relative slash"; + } else if (c === 63) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else if (isSpecial(this.url) && c === 92) { + this.parseError = true; + this.state = "relative slash"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(0, this.base.path.length - 1); + + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { + if (isSpecial(this.url) && (c === 47 || c === 92)) { + if (c === 92) { + this.parseError = true; + } + this.state = "special authority ignore slashes"; + } else if (c === 47) { + this.state = "authority"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "special authority ignore slashes"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { + if (c !== 47 && c !== 92) { + this.state = "authority"; + --this.pointer; + } else { + this.parseError = true; + } + + return true; +}; + +URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { + if (c === 64) { + this.parseError = true; + if (this.atFlag) { + this.buffer = "%40" + this.buffer; + } + this.atFlag = true; + + // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars + const len = countSymbols(this.buffer); + for (let pointer = 0; pointer < len; ++pointer) { + const codePoint = this.buffer.codePointAt(pointer); + + if (codePoint === 58 && !this.passwordTokenSeenFlag) { + this.passwordTokenSeenFlag = true; + continue; + } + const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); + if (this.passwordTokenSeenFlag) { + this.url.password += encodedCodePoints; + } else { + this.url.username += encodedCodePoints; + } + } + this.buffer = ""; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || + (isSpecial(this.url) && c === 92)) { + if (this.atFlag && this.buffer === "") { + this.parseError = true; + return failure; + } + this.pointer -= countSymbols(this.buffer) + 1; + this.buffer = ""; + this.state = "host"; + } else { + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse hostname"] = +URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { + if (this.stateOverride && this.url.scheme === "file") { + --this.pointer; + this.state = "file host"; + } else if (c === 58 && !this.arrFlag) { + if (this.buffer === "") { + this.parseError = true; + return failure; + } + + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + + this.url.host = host; + this.buffer = ""; + this.state = "port"; + if (this.stateOverride === "hostname") { + return false; + } + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || + (isSpecial(this.url) && c === 92)) { + --this.pointer; + if (isSpecial(this.url) && this.buffer === "") { + this.parseError = true; + return failure; + } else if (this.stateOverride && this.buffer === "" && + (includesCredentials(this.url) || this.url.port !== null)) { + this.parseError = true; + return false; + } + + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + + this.url.host = host; + this.buffer = ""; + this.state = "path start"; + if (this.stateOverride) { + return false; + } + } else { + if (c === 91) { + this.arrFlag = true; + } else if (c === 93) { + this.arrFlag = false; + } + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { + if (isASCIIDigit(c)) { + this.buffer += cStr; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || + (isSpecial(this.url) && c === 92) || + this.stateOverride) { + if (this.buffer !== "") { + const port = parseInt(this.buffer); + if (port > Math.pow(2, 16) - 1) { + this.parseError = true; + return failure; + } + this.url.port = port === defaultPort(this.url.scheme) ? null : port; + this.buffer = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + + return true; +}; + +const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]); + +URLStateMachine.prototype["parse file"] = function parseFile(c) { + this.url.scheme = "file"; + + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file slash"; + } else if (this.base !== null && this.base.scheme === "file") { + if (isNaN(c)) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 63) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || + (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file host"; + } else { + if (this.base !== null && this.base.scheme === "file") { + if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { + this.url.path.push(this.base.path[0]); + } else { + this.url.host = this.base.host; + } + } + this.state = "path"; + --this.pointer; + } + + return true; +}; + +URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { + if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { + --this.pointer; + if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { + this.parseError = true; + this.state = "path"; + } else if (this.buffer === "") { + this.url.host = ""; + if (this.stateOverride) { + return false; + } + this.state = "path start"; + } else { + let host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + if (host === "localhost") { + host = ""; + } + this.url.host = host; + + if (this.stateOverride) { + return false; + } + + this.buffer = ""; + this.state = "path start"; + } + } else { + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { + if (isSpecial(this.url)) { + if (c === 92) { + this.parseError = true; + } + this.state = "path"; + + if (c !== 47 && c !== 92) { + --this.pointer; + } + } else if (!this.stateOverride && c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (!this.stateOverride && c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else if (c !== undefined) { + this.state = "path"; + if (c !== 47) { + --this.pointer; + } + } + + return true; +}; + +URLStateMachine.prototype["parse path"] = function parsePath(c) { + if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) || + (!this.stateOverride && (c === 63 || c === 35))) { + if (isSpecial(this.url) && c === 92) { + this.parseError = true; + } + + if (isDoubleDot(this.buffer)) { + shortenPath(this.url); + if (c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } + } else if (isSingleDot(this.buffer) && c !== 47 && + !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } else if (!isSingleDot(this.buffer)) { + if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { + if (this.url.host !== "" && this.url.host !== null) { + this.parseError = true; + this.url.host = ""; + } + this.buffer = this.buffer[0] + ":"; + } + this.url.path.push(this.buffer); + } + this.buffer = ""; + if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) { + while (this.url.path.length > 1 && this.url.path[0] === "") { + this.parseError = true; + this.url.path.shift(); + } + } + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + // TODO: If c is not a URL code point and not "%", parse error. + + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + + return true; +}; + +URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else { + // TODO: Add: not a URL code point + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + if (!isNaN(c)) { + this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + } + } + + return true; +}; + +URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { + if (isNaN(c) || (!this.stateOverride && c === 35)) { + if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { + this.encodingOverride = "utf-8"; + } + + const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 || + buffer[i] === 0x3C || buffer[i] === 0x3E) { + this.url.query += percentEncode(buffer[i]); + } else { + this.url.query += String.fromCodePoint(buffer[i]); + } + } + + this.buffer = ""; + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + // TODO: If c is not a URL code point and not "%", parse error. + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.buffer += cStr; + } + + return true; +}; + +URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { + if (isNaN(c)) { // do nothing + } else if (c === 0x0) { + this.parseError = true; + } else { + // TODO: If c is not a URL code point and not "%", parse error. + if (c === 37 && + (!isASCIIHex(this.input[this.pointer + 1]) || + !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + + this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); + } + + return true; +}; + +function serializeURL(url, excludeFragment) { + let output = url.scheme + ":"; + if (url.host !== null) { + output += "//"; + + if (url.username !== "" || url.password !== "") { + output += url.username; + if (url.password !== "") { + output += ":" + url.password; + } + output += "@"; + } + + output += serializeHost(url.host); + + if (url.port !== null) { + output += ":" + url.port; + } + } else if (url.host === null && url.scheme === "file") { + output += "//"; + } + + if (url.cannotBeABaseURL) { + output += url.path[0]; + } else { + for (const string of url.path) { + output += "/" + string; + } + } + + if (url.query !== null) { + output += "?" + url.query; + } + + if (!excludeFragment && url.fragment !== null) { + output += "#" + url.fragment; + } + + return output; +} + +function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + + if (tuple.port !== null) { + result += ":" + tuple.port; + } + + return result; +} + +module.exports.serializeURL = serializeURL; + +module.exports.serializeURLOrigin = function (url) { + // https://url.spec.whatwg.org/#concept-url-origin + switch (url.scheme) { + case "blob": + try { + return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0])); + } catch (e) { + // serializing an opaque origin returns "null" + return "null"; + } + case "ftp": + case "gopher": + case "http": + case "https": + case "ws": + case "wss": + return serializeOrigin({ + scheme: url.scheme, + host: url.host, + port: url.port + }); + case "file": + // spec says "exercise to the reader", chrome says "file://" + return "file://"; + default: + // serializing an opaque origin returns "null" + return "null"; + } +}; + +module.exports.basicURLParse = function (input, options) { + if (options === undefined) { + options = {}; + } + + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + + return usm.url; +}; + +module.exports.setTheUsername = function (url, username) { + url.username = ""; + const decoded = punycode.ucs2.decode(username); + for (let i = 0; i < decoded.length; ++i) { + url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } +}; + +module.exports.setThePassword = function (url, password) { + url.password = ""; + const decoded = punycode.ucs2.decode(password); + for (let i = 0; i < decoded.length; ++i) { + url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } +}; + +module.exports.serializeHost = serializeHost; + +module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; + +module.exports.serializeInteger = function (integer) { + return String(integer); +}; + +module.exports.parseURL = function (input, options) { + if (options === undefined) { + options = {}; + } + + // We don't handle blobs, so this just delegates: + return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); +}; + + +/***/ }), + +/***/ 9857: +/***/ ((module) => { + +"use strict"; + + +module.exports.mixin = function mixin(target, source) { + const keys = Object.getOwnPropertyNames(source); + for (let i = 0; i < keys.length; ++i) { + Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + } +}; + +module.exports.wrapperSymbol = Symbol("wrapper"); +module.exports.implSymbol = Symbol("impl"); + +module.exports.wrapperForImpl = function (impl) { + return impl[module.exports.wrapperSymbol]; +}; + +module.exports.implForWrapper = function (wrapper) { + return wrapper[module.exports.implSymbol]; +}; + + + +/***/ }), + +/***/ 4572: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var iconvLite = __nccwpck_require__(6249); + +// Expose to the world +module.exports.C = convert; + +/** + * Convert encoding of an UTF-8 string or a buffer + * + * @param {String|Buffer} str String to be converted + * @param {String} to Encoding to be converted to + * @param {String} [from='UTF-8'] Encoding to be converted from + * @return {Buffer} Encoded string + */ +function convert(str, to, from) { + from = checkEncoding(from || 'UTF-8'); + to = checkEncoding(to || 'UTF-8'); + str = str || ''; + + var result; + + if (from !== 'UTF-8' && typeof str === 'string') { + str = Buffer.from(str, 'binary'); + } + + if (from === to) { + if (typeof str === 'string') { + result = Buffer.from(str); + } else { + result = str; + } + } else { + try { + result = convertIconvLite(str, to, from); + } catch (E) { + console.error(E); + result = str; + } + } + + if (typeof result === 'string') { + result = Buffer.from(result, 'utf-8'); + } + + return result; +} + +/** + * Convert encoding of astring with iconv-lite + * + * @param {String|Buffer} str String to be converted + * @param {String} to Encoding to be converted to + * @param {String} [from='UTF-8'] Encoding to be converted from + * @return {Buffer} Encoded string + */ +function convertIconvLite(str, to, from) { + if (to === 'UTF-8') { + return iconvLite.decode(str, from); + } else if (from === 'UTF-8') { + return iconvLite.encode(str, to); + } else { + return iconvLite.encode(iconvLite.decode(str, from), to); + } +} + +/** + * Converts charset name if needed + * + * @param {String} name Character set + * @return {String} Character set name + */ +function checkEncoding(name) { + return (name || '') + .toString() + .trim() + .replace(/^latin[\-_]?(\d+)$/i, 'ISO-8859-$1') + .replace(/^win(?:dows)?[\-_]?(\d+)$/i, 'WINDOWS-$1') + .replace(/^utf[\-_]?(\d+)$/i, 'UTF-$1') + .replace(/^ks_c_5601\-1987$/i, 'CP949') + .replace(/^us[\-_]?ascii$/i, 'ASCII') + .toUpperCase(); +} + + +/***/ }), + +/***/ 2417: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. +// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. +// To save memory and loading time, we read table files only when requested. + +exports._dbcs = DBCSCodec; + +var UNASSIGNED = -1, + GB18030_CODE = -2, + SEQ_START = -10, + NODE_START = -1000, + UNASSIGNED_NODE = new Array(0x100), + DEF_CHAR = -1; + +for (var i = 0; i < 0x100; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; + + +// Class DBCSCodec reads and initializes mapping tables. +function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data.") + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); + + // Load tables. + var mappingTable = codecOptions.table(); + + + // Decode tables: MBCS -> Unicode. + + // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. + // Trie root is decodeTables[0]. + // Values: >= 0 -> unicode character code. can be > 0xFFFF + // == UNASSIGNED -> unknown/unassigned sequence. + // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. + // <= NODE_START -> index of the next node in our trie to process next byte. + // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. + + // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. + this.decodeTableSeq = []; + + // Actual mapping tables consist of chunks. Use them to fill up decode tables. + for (var i = 0; i < mappingTable.length; i++) + this._addDecodeChunk(mappingTable[i]); + + // Load & create GB18030 tables when needed. + if (typeof codecOptions.gb18030 === 'function') { + this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. + + // Add GB18030 common decode nodes. + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + + // Fill out the tree + var firstByteNode = this.decodeTables[0]; + for (var i = 0x81; i <= 0xFE; i++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]; + for (var j = 0x30; j <= 0x39; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 0x81; k <= 0xFE; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 0x30; l <= 0x39; l++) { + if (fourthByteNode[l] === UNASSIGNED) + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + + this.defaultCharUnicode = iconv.defaultCharUnicode; + + + // Encode tables: Unicode -> DBCS. + + // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. + // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. + // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). + // == UNASSIGNED -> no conversion found. Output a default char. + // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. + this.encodeTable = []; + + // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of + // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key + // means end of sequence (needed when one sequence is a strict subsequence of another). + // Objects are kept separately from encodeTable to increase performance. + this.encodeTableSeq = []; + + // Some chars can be decoded, but need not be encoded. + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { + var val = codecOptions.encodeSkipVals[i]; + if (typeof val === 'number') + skipEncodeChars[val] = true; + else + for (var j = val.from; j <= val.to; j++) + skipEncodeChars[j] = true; + } + + // Use decode trie to recursively fill out encode tables. + this._fillEncodeTable(0, 0, skipEncodeChars); + + // Add more encoding pairs when needed. + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); +} + +DBCSCodec.prototype.encoder = DBCSEncoder; +DBCSCodec.prototype.decoder = DBCSDecoder; + +// Decoder helpers +DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>>= 8) + bytes.push(addr & 0xFF); + if (bytes.length == 0) + bytes.push(0); + + var node = this.decodeTables[0]; + for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. + var val = node[bytes[i]]; + + if (val == UNASSIGNED) { // Create new node. + node[bytes[i]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } + else if (val <= NODE_START) { // Existing node. + node = this.decodeTables[NODE_START - val]; + } + else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; +} + + +DBCSCodec.prototype._addDecodeChunk = function(chunk) { + // First element of chunk is the hex mbcs code where we start. + var curAddr = parseInt(chunk[0], 16); + + // Choose the decoding node where we'll write our chars. + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 0xFF; + + // Write all other elements of the chunk to the table. + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { // String, write as-is. + for (var l = 0; l < part.length;) { + var code = part.charCodeAt(l++); + if (0xD800 <= code && code < 0xDC00) { // Decode surrogate + var codeTrail = part.charCodeAt(l++); + if (0xDC00 <= codeTrail && codeTrail < 0xE000) + writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } + else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) + var len = 0xFFF - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. + + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } + else + writeTable[curAddr++] = code; // Basic char + } + } + else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } + else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + if (curAddr > 0xFF) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); +} + +// Encoder helpers +DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; // This could be > 0xFF because of astral characters. + if (this.encodeTable[high] === undefined) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. + return this.encodeTable[high]; +} + +DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; +} + +DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + + // Get the root of character tree according to first character of the sequence. + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + + var node; + if (bucket[low] <= SEQ_START) { + // There's already a sequence with - use it. + node = this.encodeTableSeq[SEQ_START-bucket[low]]; + } + else { + // There was no sequence object - allocate a new one. + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + + // Traverse the character tree, allocating new nodes as needed. + for (var j = 1; j < seq.length-1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === 'object') + node = oldVal; + else { + node = node[uCode] = {} + if (oldVal !== undefined) + node[DEF_CHAR] = oldVal + } + } + + // Set the leaf to given dbcsCode. + uCode = seq[seq.length-1]; + node[uCode] = dbcsCode; +} + +DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; + for (var i = 0; i < 0x100; i++) { + var uCode = node[i]; + var mbCode = prefix + i; + if (skipEncodeChars[mbCode]) + continue; + + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode); + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). + var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive. + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) + hasValues = true; + else + subNodeEmpty[subNodeIdx] = true; + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } + } + return hasValues; +} + + + +// == Encoder ================================================================== + +function DBCSEncoder(options, codec) { + // Encoder state + this.leadSurrogate = -1; + this.seqObj = undefined; + + // Static data + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; +} + +DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), + leadSurrogate = this.leadSurrogate, + seqObj = this.seqObj, nextChar = -1, + i = 0, j = 0; + + while (true) { + // 0. Get next character. + if (nextChar === -1) { + if (i == str.length) break; + var uCode = str.charCodeAt(i++); + } + else { + var uCode = nextChar; + nextChar = -1; + } + + // 1. Handle surrogates. + if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. + if (uCode < 0xDC00) { // We've got lead surrogate. + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + // Double lead surrogate found. + uCode = UNASSIGNED; + } + } else { // We've got trail surrogate. + if (leadSurrogate !== -1) { + uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); + leadSurrogate = -1; + } else { + // Incomplete surrogate pair - only trail surrogate found. + uCode = UNASSIGNED; + } + + } + } + else if (leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. + leadSurrogate = -1; + } + + // 2. Convert uCode character. + var dbcsCode = UNASSIGNED; + if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence + var resCode = seqObj[uCode]; + if (typeof resCode === 'object') { // Sequence continues. + seqObj = resCode; + continue; + + } else if (typeof resCode == 'number') { // Sequence finished. Write it. + dbcsCode = resCode; + + } else if (resCode == undefined) { // Current character is not part of the sequence. + + // Try default character for this sequence + resCode = seqObj[DEF_CHAR]; + if (resCode !== undefined) { + dbcsCode = resCode; // Found. Write it. + nextChar = uCode; // Current character will be written too in the next iteration. + + } else { + // TODO: What if we have no default? (resCode == undefined) + // Then, we should write first char of the sequence as-is and try the rest recursively. + // Didn't do it for now because no encoding has this situation yet. + // Currently, just skip the sequence and write current char. + } + } + seqObj = undefined; + } + else if (uCode >= 0) { // Regular character + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== undefined) + dbcsCode = subtable[uCode & 0xFF]; + + if (dbcsCode <= SEQ_START) { // Sequence start + seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; + continue; + } + + if (dbcsCode == UNASSIGNED && this.gb18030) { + // Use GB18030 algorithm to find character(s) to write. + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; + newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; + newBuf[j++] = 0x30 + dbcsCode; + continue; + } + } + } + + // 3. Write dbcsCode character. + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else if (dbcsCode < 0x10000) { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + else if (dbcsCode < 0x1000000) { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = (dbcsCode >> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = (dbcsCode >>> 16) & 0xFF; + newBuf[j++] = (dbcsCode >>> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; + } + } + + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); +} + +DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === undefined) + return; // All clean. Most often case. + + var newBuf = Buffer.alloc(10), j = 0; + + if (this.seqObj) { // We're in the sequence. + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== undefined) { // Write beginning of the sequence. + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + } else { + // See todo above. + } + this.seqObj = undefined; + } + + if (this.leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + + return newBuf.slice(0, j); +} + +// Export for testing +DBCSEncoder.prototype.findIdx = findIdx; + + +// == Decoder ================================================================== + +function DBCSDecoder(options, codec) { + // Decoder state + this.nodeIdx = 0; + this.prevBytes = []; + + // Static data + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; +} + +DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer.alloc(buf.length*2), + nodeIdx = this.nodeIdx, + prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, + seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence. + uCode; + + for (var i = 0, j = 0; i < buf.length; i++) { + var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]; + + // Lookup in current trie node. + var uCode = this.decodeTables[nodeIdx][curByte]; + + if (uCode >= 0) { + // Normal character, just use it. + } + else if (uCode === UNASSIGNED) { // Unknown char. + // TODO: Callback with seq. + uCode = this.defaultCharUnicode.charCodeAt(0); + i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again. + } + else if (uCode === GB18030_CODE) { + if (i >= 3) { + var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30); + } else { + var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + + (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + + (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + + (curByte-0x30); + } + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } + else if (uCode <= NODE_START) { // Go to next trie node. + nodeIdx = NODE_START - uCode; + continue; + } + else if (uCode <= SEQ_START) { // Output a sequence of chars. + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length-1]; + } + else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + + // Write the character to buffer, handling higher planes using surrogate pair. + if (uCode >= 0x10000) { + uCode -= 0x10000; + var uCodeLead = 0xD800 | (uCode >> 10); + newBuf[j++] = uCodeLead & 0xFF; + newBuf[j++] = uCodeLead >> 8; + + uCode = 0xDC00 | (uCode & 0x3FF); + } + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + + // Reset trie node. + nodeIdx = 0; seqStart = i+1; + } + + this.nodeIdx = nodeIdx; + this.prevBytes = (seqStart >= 0) + ? Array.prototype.slice.call(buf, seqStart) + : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + + return newBuf.slice(0, j).toString('ucs2'); +} + +DBCSDecoder.prototype.end = function() { + var ret = ''; + + // Try to parse all remaining chars. + while (this.prevBytes.length > 0) { + // Skip 1 character in the buffer. + ret += this.defaultCharUnicode; + var bytesArr = this.prevBytes.slice(1); + + // Parse remaining as usual. + this.prevBytes = []; + this.nodeIdx = 0; + if (bytesArr.length > 0) + ret += this.write(bytesArr); + } + + this.prevBytes = []; + this.nodeIdx = 0; + return ret; +} + +// Binary search for GB18030. Returns largest i such that table[i] <= val. +function findIdx(table, val) { + if (table[0] > val) + return -1; + + var l = 0, r = table.length; + while (l < r-1) { // always table[l] <= val < table[r] + var mid = l + ((r-l+1) >> 1); + if (table[mid] <= val) + l = mid; + else + r = mid; + } + return l; +} + + + +/***/ }), + +/***/ 2435: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// Description of supported double byte encodings and aliases. +// Tables are not require()-d until they are needed to speed up library load. +// require()-s are direct to support Browserify. + +module.exports = { + + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + + 'shiftjis': { + type: '_dbcs', + table: function() { return __nccwpck_require__(7572) }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + encodeSkipVals: [{from: 0xED40, to: 0xF940}], + }, + 'csshiftjis': 'shiftjis', + 'mskanji': 'shiftjis', + 'sjis': 'shiftjis', + 'windows31j': 'shiftjis', + 'ms31j': 'shiftjis', + 'xsjis': 'shiftjis', + 'windows932': 'shiftjis', + 'ms932': 'shiftjis', + '932': 'shiftjis', + 'cp932': 'shiftjis', + + 'eucjp': { + type: '_dbcs', + table: function() { return __nccwpck_require__(4231) }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + }, + + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + + + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + 'gb2312': 'cp936', + 'gb231280': 'cp936', + 'gb23121980': 'cp936', + 'csgb2312': 'cp936', + 'csiso58gb231280': 'cp936', + 'euccn': 'cp936', + + // Microsoft's CP936 is a subset and approximation of GBK. + 'windows936': 'cp936', + 'ms936': 'cp936', + '936': 'cp936', + 'cp936': { + type: '_dbcs', + table: function() { return __nccwpck_require__(8949) }, + }, + + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + 'gbk': { + type: '_dbcs', + table: function() { return (__nccwpck_require__(8949).concat)(__nccwpck_require__(9603)) }, + }, + 'xgbk': 'gbk', + 'isoir58': 'gbk', + + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + 'gb18030': { + type: '_dbcs', + table: function() { return (__nccwpck_require__(8949).concat)(__nccwpck_require__(9603)) }, + gb18030: function() { return __nccwpck_require__(7302) }, + encodeSkipVals: [0x80], + encodeAdd: {'€': 0xA2E3}, + }, + + 'chinese': 'gb18030', + + + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + 'windows949': 'cp949', + 'ms949': 'cp949', + '949': 'cp949', + 'cp949': { + type: '_dbcs', + table: function() { return __nccwpck_require__(5923) }, + }, + + 'cseuckr': 'cp949', + 'csksc56011987': 'cp949', + 'euckr': 'cp949', + 'isoir149': 'cp949', + 'korean': 'cp949', + 'ksc56011987': 'cp949', + 'ksc56011989': 'cp949', + 'ksc5601': 'cp949', + + + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + + 'windows950': 'cp950', + 'ms950': 'cp950', + '950': 'cp950', + 'cp950': { + type: '_dbcs', + table: function() { return __nccwpck_require__(6517) }, + }, + + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + 'big5': 'big5hkscs', + 'big5hkscs': { + type: '_dbcs', + table: function() { return (__nccwpck_require__(6517).concat)(__nccwpck_require__(4244)) }, + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, + 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, + 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, + 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, + 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, + + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce, + ], + }, + + 'cnbig5': 'big5hkscs', + 'csbig5': 'big5hkscs', + 'xxbig5': 'big5hkscs', +}; + + +/***/ }), + +/***/ 5424: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +// Update this array if you add/rename/remove files in this directory. +// We support Browserify by skipping automatic module discovery and requiring modules directly. +var modules = [ + __nccwpck_require__(7799), + __nccwpck_require__(8015), + __nccwpck_require__(2402), + __nccwpck_require__(3152), + __nccwpck_require__(6146), + __nccwpck_require__(4818), + __nccwpck_require__(1566), + __nccwpck_require__(2417), + __nccwpck_require__(2435), +]; + +// Put all encoding/alias/codec definitions to single object and export it. +for (var i = 0; i < modules.length; i++) { + var module = modules[i]; + for (var enc in module) + if (Object.prototype.hasOwnProperty.call(module, enc)) + exports[enc] = module[enc]; +} + + +/***/ }), + +/***/ 7799: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// Export Node.js internal encodings. + +module.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true}, + cesu8: { type: "_internal", bomAware: true}, + unicode11utf8: "utf8", + + ucs2: { type: "_internal", bomAware: true}, + utf16le: "ucs2", + + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + + // Codec. + _internal: InternalCodec, +}; + +//------------------------------------------------------------------------------ + +function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; // Use utf8 for decoding. + this.encoder = InternalEncoderCesu8; + + // Add decoder for versions of Node not supporting CESU-8 + if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } +} + +InternalCodec.prototype.encoder = InternalEncoder; +InternalCodec.prototype.decoder = InternalDecoder; + +//------------------------------------------------------------------------------ + +// We use node.js internal decoder. Its signature is the same as ours. +var StringDecoder = (__nccwpck_require__(3193).StringDecoder); + +if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. + StringDecoder.prototype.end = function() {}; + + +function InternalDecoder(options, codec) { + this.decoder = new StringDecoder(codec.enc); +} + +InternalDecoder.prototype.write = function(buf) { + if (!Buffer.isBuffer(buf)) { + buf = Buffer.from(buf); + } + + return this.decoder.write(buf); +} + +InternalDecoder.prototype.end = function() { + return this.decoder.end(); +} + + +//------------------------------------------------------------------------------ +// Encoder is mostly trivial + +function InternalEncoder(options, codec) { + this.enc = codec.enc; +} + +InternalEncoder.prototype.write = function(str) { + return Buffer.from(str, this.enc); +} + +InternalEncoder.prototype.end = function() { +} + + +//------------------------------------------------------------------------------ +// Except base64 encoder, which must keep its state. + +function InternalEncoderBase64(options, codec) { + this.prevStr = ''; +} + +InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - (str.length % 4); + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + + return Buffer.from(str, "base64"); +} + +InternalEncoderBase64.prototype.end = function() { + return Buffer.from(this.prevStr, "base64"); +} + + +//------------------------------------------------------------------------------ +// CESU-8 encoder is also special. + +function InternalEncoderCesu8(options, codec) { +} + +InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + // Naive implementation, but it works because CESU-8 is especially easy + // to convert from UTF-16 (which all JS strings are encoded in). + if (charCode < 0x80) + buf[bufIdx++] = charCode; + else if (charCode < 0x800) { + buf[bufIdx++] = 0xC0 + (charCode >>> 6); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); + } + else { // charCode will always be < 0x10000 in javascript. + buf[bufIdx++] = 0xE0 + (charCode >>> 12); + buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); + } + } + return buf.slice(0, bufIdx); +} + +InternalEncoderCesu8.prototype.end = function() { +} + +//------------------------------------------------------------------------------ +// CESU-8 decoder is not implemented in Node v4.0+ + +function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; +} + +InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, + res = ''; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 0xC0) !== 0x80) { // Leading byte + if (contBytes > 0) { // Previous code is invalid + res += this.defaultCharUnicode; + contBytes = 0; + } + + if (curByte < 0x80) { // Single-byte code + res += String.fromCharCode(curByte); + } else if (curByte < 0xE0) { // Two-byte code + acc = curByte & 0x1F; + contBytes = 1; accBytes = 1; + } else if (curByte < 0xF0) { // Three-byte code + acc = curByte & 0x0F; + contBytes = 2; accBytes = 1; + } else { // Four or more are not supported for CESU-8. + res += this.defaultCharUnicode; + } + } else { // Continuation byte + if (contBytes > 0) { // We're waiting for it. + acc = (acc << 6) | (curByte & 0x3f); + contBytes--; accBytes++; + if (contBytes === 0) { + // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) + if (accBytes === 2 && acc < 0x80 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 0x800) + res += this.defaultCharUnicode; + else + // Actually add character. + res += String.fromCharCode(acc); + } + } else { // Unexpected continuation byte + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; + return res; +} + +InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; +} + + +/***/ }), + +/***/ 6146: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that +// correspond to encoded bytes (if 128 - then lower half is ASCII). + +exports._sbcs = SBCSCodec; +function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data.") + + // Prepare char buffer for decoding. + if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) + throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); + + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; + } + + this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); + + // Encoding buffer. + var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + + this.encodeBuf = encodeBuf; +} + +SBCSCodec.prototype.encoder = SBCSEncoder; +SBCSCodec.prototype.decoder = SBCSDecoder; + + +function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; +} + +SBCSEncoder.prototype.write = function(str) { + var buf = Buffer.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + + return buf; +} + +SBCSEncoder.prototype.end = function() { +} + + +function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; +} + +SBCSDecoder.prototype.write = function(buf) { + // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. + var decodeBuf = this.decodeBuf; + var newBuf = Buffer.alloc(buf.length*2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i]*2; idx2 = i*2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2+1] = decodeBuf[idx1+1]; + } + return newBuf.toString('ucs2'); +} + +SBCSDecoder.prototype.end = function() { +} + + +/***/ }), + +/***/ 1566: +/***/ ((module) => { + +"use strict"; + + +// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. +module.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "macgreek": { + "type": "_sbcs", + "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" + }, + "maciceland": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macroman": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macromania": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macthai": { + "type": "_sbcs", + "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" + }, + "macturkish": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macukraine": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "koi8r": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8u": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8t": { + "type": "_sbcs", + "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "armscii8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" + }, + "rk1048": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "georgianps": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "pt154": { + "type": "_sbcs", + "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "viscii": { + "type": "_sbcs", + "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "hproman8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" + }, + "macintosh": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "ascii": { + "type": "_sbcs", + "chars": "��������������������������������������������������������������������������������������������������������������������������������" + }, + "tis620": { + "type": "_sbcs", + "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + } +} + +/***/ }), + +/***/ 4818: +/***/ ((module) => { + +"use strict"; + + +// Manually added data to be used by sbcs codec in addition to generated one. + +module.exports = { + // Not supported by iconv, not sure why. + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" + }, + + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " + }, + + "mik": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + + "cp720": { + "type": "_sbcs", + "chars": "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0" + }, + + // Aliases of generated encodings. + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", + + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", + + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek" : "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", + + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", + + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", + + "cp819": "iso88591", + "ibm819": "iso88591", + + "cyrillic": "iso88595", + + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", + + "greek" : "iso88597", + "greek8" : "iso88597", + "ecma118" : "iso88597", + "elot928" : "iso88597", + + "hebrew": "iso88598", + "hebrew8": "iso88598", + + "turkish": "iso88599", + "turkish8": "iso88599", + + "thai": "iso885911", + "thai8": "iso885911", + + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", + + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", + + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", + + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", + + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", + + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", + + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", + + "strk10482002": "rk1048", + + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", + + "gb198880": "iso646cn", + "cn": "iso646cn", + + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", + + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", + + "mac": "macintosh", + "csmacintosh": "macintosh", +}; + + + +/***/ }), + +/***/ 2402: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js + +// == UTF16-BE codec. ========================================================== + +exports.utf16be = Utf16BECodec; +function Utf16BECodec() { +} + +Utf16BECodec.prototype.encoder = Utf16BEEncoder; +Utf16BECodec.prototype.decoder = Utf16BEDecoder; +Utf16BECodec.prototype.bomAware = true; + + +// -- Encoding + +function Utf16BEEncoder() { +} + +Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer.from(str, 'ucs2'); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; + } + return buf; +} + +Utf16BEEncoder.prototype.end = function() { +} + + +// -- Decoding + +function Utf16BEDecoder() { + this.overflowByte = -1; +} + +Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ''; + + var buf2 = Buffer.alloc(buf.length + 1), + i = 0, j = 0; + + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; j = 2; + } + + for (; i < buf.length-1; i += 2, j+= 2) { + buf2[j] = buf[i+1]; + buf2[j+1] = buf[i]; + } + + this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; + + return buf2.slice(0, j).toString('ucs2'); +} + +Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; +} + + +// == UTF-16 codec ============================================================= +// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. +// Defaults to UTF-16LE, as it's prevalent and default in Node. +// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le +// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); + +// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). + +exports.utf16 = Utf16Codec; +function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; +} + +Utf16Codec.prototype.encoder = Utf16Encoder; +Utf16Codec.prototype.decoder = Utf16Decoder; + + +// -- Encoding (pass-through) + +function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === undefined) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder('utf-16le', options); +} + +Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); +} + +Utf16Encoder.prototype.end = function() { + return this.encoder.end(); +} + + +// -- Decoding + +function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + + this.options = options || {}; + this.iconv = codec.iconv; +} + +Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + + if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) + return ''; + + // We have enough bytes -> detect endianness. + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + + return this.decoder.write(buf); +} + +Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + var trail = this.decoder.end(); + if (trail) + resStr += trail; + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); +} + +function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE. + + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le'; + if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be'; + } + + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; + + b.length = 0; + charsProcessed++; + + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + + // Make decisions. + // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. + // So, we count ASCII as if it was LE or BE, and decide from that. + if (asciiCharsBE > asciiCharsLE) return 'utf-16be'; + if (asciiCharsBE < asciiCharsLE) return 'utf-16le'; + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || 'utf-16le'; +} + + + + +/***/ }), + +/***/ 8015: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// == UTF32-LE/BE codec. ========================================================== + +exports._utf32 = Utf32Codec; + +function Utf32Codec(codecOptions, iconv) { + this.iconv = iconv; + this.bomAware = true; + this.isLE = codecOptions.isLE; +} + +exports.utf32le = { type: '_utf32', isLE: true }; +exports.utf32be = { type: '_utf32', isLE: false }; + +// Aliases +exports.ucs4le = 'utf32le'; +exports.ucs4be = 'utf32be'; + +Utf32Codec.prototype.encoder = Utf32Encoder; +Utf32Codec.prototype.decoder = Utf32Decoder; + +// -- Encoding + +function Utf32Encoder(options, codec) { + this.isLE = codec.isLE; + this.highSurrogate = 0; +} + +Utf32Encoder.prototype.write = function(str) { + var src = Buffer.from(str, 'ucs2'); + var dst = Buffer.alloc(src.length * 2); + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; + var offset = 0; + + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i); + var isHighSurrogate = (0xD800 <= code && code < 0xDC00); + var isLowSurrogate = (0xDC00 <= code && code < 0xE000); + + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low + // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character + // (technically wrong, but expected by some applications, like Windows file names). + write32.call(dst, this.highSurrogate, offset); + offset += 4; + } + else { + // Create 32-bit value from high and low surrogates; + var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000; + + write32.call(dst, codepoint, offset); + offset += 4; + this.highSurrogate = 0; + + continue; + } + } + + if (isHighSurrogate) + this.highSurrogate = code; + else { + // Even if the current character is a low surrogate, with no previous high surrogate, we'll + // encode it as a semi-invalid stand-alone character for the same reasons expressed above for + // unpaired high surrogates. + write32.call(dst, code, offset); + offset += 4; + this.highSurrogate = 0; + } + } + + if (offset < dst.length) + dst = dst.slice(0, offset); + + return dst; +}; + +Utf32Encoder.prototype.end = function() { + // Treat any leftover high surrogate as a semi-valid independent character. + if (!this.highSurrogate) + return; + + var buf = Buffer.alloc(4); + + if (this.isLE) + buf.writeUInt32LE(this.highSurrogate, 0); + else + buf.writeUInt32BE(this.highSurrogate, 0); + + this.highSurrogate = 0; + + return buf; +}; + +// -- Decoding + +function Utf32Decoder(options, codec) { + this.isLE = codec.isLE; + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); + this.overflow = []; +} + +Utf32Decoder.prototype.write = function(src) { + if (src.length === 0) + return ''; + + var i = 0; + var codepoint = 0; + var dst = Buffer.alloc(src.length + 4); + var offset = 0; + var isLE = this.isLE; + var overflow = this.overflow; + var badChar = this.badChar; + + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) + overflow.push(src[i]); + + if (overflow.length === 4) { + // NOTE: codepoint is a signed int32 and can be negative. + // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). + if (isLE) { + codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24); + } else { + codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24); + } + overflow.length = 0; + + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + } + + // Main loop. Should be as optimized as possible. + for (; i < src.length - 3; i += 4) { + // NOTE: codepoint is a signed int32 and can be negative. + if (isLE) { + codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24); + } else { + codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24); + } + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + + // Keep overflowing bytes. + for (; i < src.length; i++) { + overflow.push(src[i]); + } + + return dst.slice(0, offset).toString('ucs2'); +}; + +function _writeCodepoint(dst, offset, codepoint, badChar) { + // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. + if (codepoint < 0 || codepoint > 0x10FFFF) { + // Not a valid Unicode codepoint + codepoint = badChar; + } + + // Ephemeral Planes: Write high surrogate. + if (codepoint >= 0x10000) { + codepoint -= 0x10000; + + var high = 0xD800 | (codepoint >> 10); + dst[offset++] = high & 0xff; + dst[offset++] = high >> 8; + + // Low surrogate is written below. + var codepoint = 0xDC00 | (codepoint & 0x3FF); + } + + // Write BMP char or low surrogate. + dst[offset++] = codepoint & 0xff; + dst[offset++] = codepoint >> 8; + + return offset; +}; + +Utf32Decoder.prototype.end = function() { + this.overflow.length = 0; +}; + +// == UTF-32 Auto codec ============================================================= +// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. +// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 +// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); + +// Encoder prepends BOM (which can be overridden with (addBOM: false}). + +exports.utf32 = Utf32AutoCodec; +exports.ucs4 = 'utf32'; + +function Utf32AutoCodec(options, iconv) { + this.iconv = iconv; +} + +Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; +Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; + +// -- Encoding + +function Utf32AutoEncoder(options, codec) { + options = options || {}; + + if (options.addBOM === undefined) + options.addBOM = true; + + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options); +} + +Utf32AutoEncoder.prototype.write = function(str) { + return this.encoder.write(str); +}; + +Utf32AutoEncoder.prototype.end = function() { + return this.encoder.end(); +}; + +// -- Decoding + +function Utf32AutoDecoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; +} + +Utf32AutoDecoder.prototype.write = function(buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + + if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) + return ''; + + // We have enough bytes -> detect endianness. + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + + return this.decoder.write(buf); +}; + +Utf32AutoDecoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + var trail = this.decoder.end(); + if (trail) + resStr += trail; + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + + return this.decoder.end(); +}; + +function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE. + var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE. + + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 4) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { + return 'utf-32le'; + } + if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { + return 'utf-32be'; + } + } + + if (b[0] !== 0 || b[1] > 0x10) invalidBE++; + if (b[3] !== 0 || b[2] > 0x10) invalidLE++; + + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; + + b.length = 0; + charsProcessed++; + + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + + // Make decisions. + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be'; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le'; + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || 'utf-32le'; +} + + +/***/ }), + +/***/ 3152: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 +// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 + +exports.utf7 = Utf7Codec; +exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 +function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; +}; + +Utf7Codec.prototype.encoder = Utf7Encoder; +Utf7Codec.prototype.decoder = Utf7Decoder; +Utf7Codec.prototype.bomAware = true; + + +// -- Encoding + +var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + +function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; +} + +Utf7Encoder.prototype.write = function(str) { + // Naive implementation. + // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". + return Buffer.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === '+' ? '' : + this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) + + "-"; + }.bind(this))); +} + +Utf7Encoder.prototype.end = function() { +} + + +// -- Decoding + +function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; +} + +var base64Regex = /[A-Za-z0-9\/+]/; +var base64Chars = []; +for (var i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + +var plusChar = '+'.charCodeAt(0), + minusChar = '-'.charCodeAt(0), + andChar = '&'.charCodeAt(0); + +Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; + + // The decoder is more involved as we must handle chunks in stream. + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '+' + if (buf[i] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64Chars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" + res += "+"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii"); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + if (buf[i] != minusChar) // Minus is absorbed after base64. + i--; + + lastI = i+1; + inBase64 = false; + base64Accum = ''; + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); + + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); + + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + + return res; +} + +Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + + this.inBase64 = false; + this.base64Accum = ''; + return res; +} + + +// UTF-7-IMAP codec. +// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) +// Differences: +// * Base64 part is started by "&" instead of "+" +// * Direct characters are 0x20-0x7E, except "&" (0x26) +// * In Base64, "," is used instead of "/" +// * Base64 must not be used to represent direct characters. +// * No implicit shift back from Base64 (should always end with '-') +// * String must end in non-shifted position. +// * "-&" while in base64 is not allowed. + + +exports.utf7imap = Utf7IMAPCodec; +function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; +}; + +Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; +Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; +Utf7IMAPCodec.prototype.bomAware = true; + + +// -- Encoding + +function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer.alloc(6); + this.base64AccumIdx = 0; +} + +Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, + base64Accum = this.base64Accum, + base64AccumIdx = this.base64AccumIdx, + buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; + + for (var i = 0; i < str.length; i++) { + var uChar = str.charCodeAt(i); + if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + base64AccumIdx = 0; + } + + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + inBase64 = false; + } + + if (!inBase64) { + buf[bufIdx++] = uChar; // Write direct character + + if (uChar === andChar) // Ampersand -> '&-' + buf[bufIdx++] = minusChar; + } + + } else { // Non-direct character + if (!inBase64) { + buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 0xFF; + + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); + base64AccumIdx = 0; + } + } + } + } + + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + + return buf.slice(0, bufIdx); +} + +Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + this.base64AccumIdx = 0; + } + + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + this.inBase64 = false; + } + + return buf.slice(0, bufIdx); +} + + +// -- Decoding + +function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; +} + +var base64IMAPChars = base64Chars.slice(); +base64IMAPChars[','.charCodeAt(0)] = true; + +Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; + + // The decoder is more involved as we must handle chunks in stream. + // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '&' + if (buf[i] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64IMAPChars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" + res += "&"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/'); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + if (buf[i] != minusChar) // Minus may be absorbed after base64. + i--; + + lastI = i+1; + inBase64 = false; + base64Accum = ''; + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/'); + + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); + + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + + return res; +} + +Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + + this.inBase64 = false; + this.base64Accum = ''; + return res; +} + + + + +/***/ }), + +/***/ 4277: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +var BOMChar = '\uFEFF'; + +exports.PrependBOM = PrependBOMWrapper +function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; +} + +PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + + return this.encoder.write(str); +} + +PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); +} + + +//------------------------------------------------------------------------------ + +exports.StripBOM = StripBOMWrapper; +function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; +} + +StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === 'function') + this.options.stripBOM(); + } + + this.pass = true; + return res; +} + +StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); +} + + + +/***/ }), + +/***/ 6249: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Buffer = (__nccwpck_require__(4199).Buffer); + +var bomHandling = __nccwpck_require__(4277), + iconv = module.exports; + +// All codecs and aliases are kept here, keyed by encoding name/alias. +// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. +iconv.encodings = null; + +// Characters emitted in case of error. +iconv.defaultCharUnicode = '�'; +iconv.defaultCharSingleByte = '?'; + +// Public API. +iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); // Ensure string. + + var encoder = iconv.getEncoder(encoding, options); + + var res = encoder.write(str); + var trail = encoder.end(); + + return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; +} + +iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === 'string') { + if (!iconv.skipDecodeWarning) { + console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); + iconv.skipDecodeWarning = true; + } + + buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. + } + + var decoder = iconv.getDecoder(encoding, options); + + var res = decoder.write(buf); + var trail = decoder.end(); + + return trail ? (res + trail) : res; +} + +iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; + } +} + +// Legacy aliases to convert functions +iconv.toEncoding = iconv.encode; +iconv.fromEncoding = iconv.decode; + +// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. +iconv._codecDataCache = {}; +iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = __nccwpck_require__(5424); // Lazy load all encoding definitions. + + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + var enc = iconv._canonicalizeEncoding(encoding); + + // Traverse iconv.encodings to find actual codec. + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; + + var codecDef = iconv.encodings[enc]; + + switch (typeof codecDef) { + case "string": // Direct alias to other encoding. + enc = codecDef; + break; + + case "object": // Alias with options. Can be layered. + for (var key in codecDef) + codecOptions[key] = codecDef[key]; + + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + enc = codecDef.type; + break; + + case "function": // Codec itself. + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + // The codec function must load all tables and return object with .encoder and .decoder methods. + // It'll be called only once (for each different options object). + codec = new codecDef(codecOptions, iconv); + + iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. + return codec; + + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); + } + } +} + +iconv._canonicalizeEncoding = function(encoding) { + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); +} + +iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), + encoder = new codec.encoder(options, codec); + + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); + + return encoder; +} + +iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), + decoder = new codec.decoder(options, codec); + + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); + + return decoder; +} + +// Streaming API +// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add +// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. +// If you would like to enable it explicitly, please add the following code to your app: +// > iconv.enableStreamingAPI(require('stream')); +iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) { + if (iconv.supportsStreams) + return; + + // Dependency-inject stream module to create IconvLite stream classes. + var streams = __nccwpck_require__(3208)(stream_module); + + // Not public API yet, but expose the stream classes. + iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + + // Streaming API. + iconv.encodeStream = function encodeStream(encoding, options) { + return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + } + + iconv.decodeStream = function decodeStream(encoding, options) { + return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + } + + iconv.supportsStreams = true; +} + +// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). +var stream_module; +try { + stream_module = __nccwpck_require__(2203); +} catch (e) {} + +if (stream_module && stream_module.Transform) { + iconv.enableStreamingAPI(stream_module); + +} else { + // In rare cases where 'stream' module is not available by default, throw a helpful exception. + iconv.encodeStream = iconv.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; +} + +if (false) {} + + +/***/ }), + +/***/ 3208: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var Buffer = (__nccwpck_require__(4199).Buffer); + +// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), +// we opt to dependency-inject it instead of creating a hard dependency. +module.exports = function(stream_module) { + var Transform = stream_module.Transform; + + // == Encoder stream ======================================================= + + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; // We accept only strings, so we don't need to decode them. + Transform.call(this, options); + } + + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != 'string') + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on('error', cb); + this.on('data', function(chunk) { chunks.push(chunk); }); + this.on('end', function() { + cb(null, Buffer.concat(chunks)); + }); + return this; + } + + + // == Decoder stream ======================================================= + + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = 'utf8'; // We output strings. + Transform.call(this, options); + } + + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ''; + this.on('error', cb); + this.on('data', function(chunk) { res += chunk; }); + this.on('end', function() { + cb(null, res); + }); + return this; + } + + return { + IconvLiteEncoderStream: IconvLiteEncoderStream, + IconvLiteDecoderStream: IconvLiteDecoderStream, + }; +}; + + +/***/ }), + +/***/ 4199: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* eslint-disable node/no-deprecated-api */ + + + +var buffer = __nccwpck_require__(181) +var Buffer = buffer.Buffer + +var safer = {} + +var key + +for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue + if (key === 'SlowBuffer' || key === 'Buffer') continue + safer[key] = buffer[key] +} + +var Safer = safer.Buffer = {} +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue + Safer[key] = Buffer[key] +} + +safer.Buffer.prototype = Buffer.prototype + +if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) + } + if (value && typeof value.length === 'undefined') { + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) + } + return Buffer(value, encodingOrOffset, length) + } +} + +if (!Safer.alloc) { + Safer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + var buf = Buffer(size) + if (!fill || fill.length === 0) { + buf.fill(0) + } else if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + return buf + } +} + +if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding('buffer').kStringMaxLength + } catch (e) { + // we can't determine kStringMaxLength in environments where process.binding + // is unsupported, so let's not set it + } +} + +if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + } + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength + } +} + +module.exports = safer + + +/***/ }), + +/***/ 2613: +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ 290: +/***/ ((module) => { + +"use strict"; +module.exports = require("async_hooks"); + +/***/ }), + +/***/ 181: +/***/ ((module) => { + +"use strict"; +module.exports = require("buffer"); + +/***/ }), + +/***/ 5317: +/***/ ((module) => { + +"use strict"; +module.exports = require("child_process"); + +/***/ }), + +/***/ 4236: +/***/ ((module) => { + +"use strict"; +module.exports = require("console"); + +/***/ }), + +/***/ 6982: +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto"); + +/***/ }), + +/***/ 1637: +/***/ ((module) => { + +"use strict"; +module.exports = require("diagnostics_channel"); + +/***/ }), + +/***/ 4434: +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ 9896: +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ 8611: +/***/ ((module) => { + +"use strict"; +module.exports = require("http"); + +/***/ }), + +/***/ 5675: +/***/ ((module) => { + +"use strict"; +module.exports = require("http2"); + +/***/ }), + +/***/ 5692: +/***/ ((module) => { + +"use strict"; +module.exports = require("https"); + +/***/ }), + +/***/ 9278: +/***/ ((module) => { + +"use strict"; +module.exports = require("net"); + +/***/ }), + +/***/ 8474: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:events"); + +/***/ }), + +/***/ 7075: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:stream"); + +/***/ }), + +/***/ 7975: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:util"); + +/***/ }), + +/***/ 857: +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ 6928: +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ 2987: +/***/ ((module) => { + +"use strict"; +module.exports = require("perf_hooks"); + +/***/ }), + +/***/ 4876: +/***/ ((module) => { + +"use strict"; +module.exports = require("punycode"); + +/***/ }), + +/***/ 3480: +/***/ ((module) => { + +"use strict"; +module.exports = require("querystring"); + +/***/ }), + +/***/ 2203: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 3774: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream/web"); + +/***/ }), + +/***/ 3193: +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ 3557: +/***/ ((module) => { + +"use strict"; +module.exports = require("timers"); + +/***/ }), + +/***/ 4756: +/***/ ((module) => { + +"use strict"; +module.exports = require("tls"); + +/***/ }), + +/***/ 7016: +/***/ ((module) => { + +"use strict"; +module.exports = require("url"); + +/***/ }), + +/***/ 9023: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 8253: +/***/ ((module) => { + +"use strict"; +module.exports = require("util/types"); + +/***/ }), + +/***/ 8167: +/***/ ((module) => { + +"use strict"; +module.exports = require("worker_threads"); + +/***/ }), + +/***/ 3106: +/***/ ((module) => { + +"use strict"; +module.exports = require("zlib"); + +/***/ }), + +/***/ 7182: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const WritableStream = (__nccwpck_require__(7075).Writable) +const inherits = (__nccwpck_require__(7975).inherits) + +const StreamSearch = __nccwpck_require__(4136) + +const PartStream = __nccwpck_require__(612) +const HeaderParser = __nccwpck_require__(2271) + +const DASH = 45 +const B_ONEDASH = Buffer.from('-') +const B_CRLF = Buffer.from('\r\n') +const EMPTY_FN = function () {} + +function Dicer (cfg) { + if (!(this instanceof Dicer)) { return new Dicer(cfg) } + WritableStream.call(this, cfg) + + if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') } + + if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined } + + this._headerFirst = cfg.headerFirst + + this._dashes = 0 + this._parts = 0 + this._finished = false + this._realFinish = false + this._isPreamble = true + this._justMatched = false + this._firstWrite = true + this._inHeader = true + this._part = undefined + this._cb = undefined + this._ignoreData = false + this._partOpts = { highWaterMark: cfg.partHwm } + this._pause = false + + const self = this + this._hparser = new HeaderParser(cfg) + this._hparser.on('header', function (header) { + self._inHeader = false + self._part.emit('header', header) + }) +} +inherits(Dicer, WritableStream) + +Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + const self = this + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')) + if (self._part && !self._ignoreData) { + const type = (self._isPreamble ? 'Preamble' : 'Part') + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')) + self._part.push(null) + process.nextTick(function () { + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + return + } + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + } + } else { WritableStream.prototype.emit.apply(this, arguments) } +} + +Dicer.prototype._write = function (data, encoding, cb) { + // ignore unexpected data (e.g. extra trailer data after finished) + if (!this._hparser && !this._bparser) { return cb() } + + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts) + if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() } + } + const r = this._hparser.push(data) + if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() } + } + + // allows for "easier" testing + if (this._firstWrite) { + this._bparser.push(B_CRLF) + this._firstWrite = false + } + + this._bparser.push(data) + + if (this._pause) { this._cb = cb } else { cb() } +} + +Dicer.prototype.reset = function () { + this._part = undefined + this._bparser = undefined + this._hparser = undefined +} + +Dicer.prototype.setBoundary = function (boundary) { + const self = this + this._bparser = new StreamSearch('\r\n--' + boundary) + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end) + }) +} + +Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true + this._part.on('error', EMPTY_FN) + // we must perform some kind of read on the stream even though we are + // ignoring the data, otherwise node's Readable stream will not emit 'end' + // after pushing null to the stream + this._part.resume() + } +} + +Dicer.prototype._oninfo = function (isMatch, data, start, end) { + let buf; const self = this; let i = 0; let r; let shouldWriteMore = true + + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && (start + i) < end) { + if (data[start + i] === DASH) { + ++i + ++this._dashes + } else { + if (this._dashes) { buf = B_ONEDASH } + this._dashes = 0 + break + } + } + if (this._dashes === 2) { + if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) } + this.reset() + this._finished = true + // no more parts will be added + if (self._parts === 0) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } + } + if (this._dashes) { return } + } + if (this._justMatched) { this._justMatched = false } + if (!this._part) { + this._part = new PartStream(this._partOpts) + this._part._read = function (n) { + self._unpause() + } + if (this._isPreamble && this.listenerCount('preamble') !== 0) { + this.emit('preamble', this._part) + } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) { + this.emit('part', this._part) + } else { + this._ignore() + } + if (!this._isPreamble) { this._inHeader = true } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { shouldWriteMore = this._part.push(buf) } + shouldWriteMore = this._part.push(data.slice(start, end)) + if (!shouldWriteMore) { this._pause = true } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { this._hparser.push(buf) } + r = this._hparser.push(data.slice(start, end)) + if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) } + } + } + if (isMatch) { + this._hparser.reset() + if (this._isPreamble) { this._isPreamble = false } else { + if (start !== end) { + ++this._parts + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } else { + self._unpause() + } + } + }) + } + } + this._part.push(null) + this._part = undefined + this._ignoreData = false + this._justMatched = true + this._dashes = 0 + } +} + +Dicer.prototype._unpause = function () { + if (!this._pause) { return } + + this._pause = false + if (this._cb) { + const cb = this._cb + this._cb = undefined + cb() + } +} + +module.exports = Dicer + + +/***/ }), + +/***/ 2271: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const EventEmitter = (__nccwpck_require__(8474).EventEmitter) +const inherits = (__nccwpck_require__(7975).inherits) +const getLimit = __nccwpck_require__(2393) + +const StreamSearch = __nccwpck_require__(4136) + +const B_DCRLF = Buffer.from('\r\n\r\n') +const RE_CRLF = /\r\n/g +const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex + +function HeaderParser (cfg) { + EventEmitter.call(this) + + cfg = cfg || {} + const self = this + this.nread = 0 + this.maxed = false + this.npairs = 0 + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000) + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024) + this.buffer = '' + this.header = {} + this.finished = false + this.ss = new StreamSearch(B_DCRLF) + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start + self.nread = self.maxHeaderSize + self.maxed = true + } else { self.nread += (end - start) } + + self.buffer += data.toString('binary', start, end) + } + if (isMatch) { self._finish() } + }) +} +inherits(HeaderParser, EventEmitter) + +HeaderParser.prototype.push = function (data) { + const r = this.ss.push(data) + if (this.finished) { return r } +} + +HeaderParser.prototype.reset = function () { + this.finished = false + this.buffer = '' + this.header = {} + this.ss.reset() +} + +HeaderParser.prototype._finish = function () { + if (this.buffer) { this._parseHeader() } + this.ss.matches = this.ss.maxMatches + const header = this.header + this.header = {} + this.buffer = '' + this.finished = true + this.nread = this.npairs = 0 + this.maxed = false + this.emit('header', header) +} + +HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { return } + + const lines = this.buffer.split(RE_CRLF) + const len = lines.length + let m, h + + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (lines[i].length === 0) { continue } + if (lines[i][0] === '\t' || lines[i][0] === ' ') { + // folded header content + // RFC2822 says to just remove the CRLF and not the whitespace following + // it, so we follow the RFC and include the leading whitespace ... + if (h) { + this.header[h][this.header[h].length - 1] += lines[i] + continue + } + } + + const posColon = lines[i].indexOf(':') + if ( + posColon === -1 || + posColon === 0 + ) { + return + } + m = RE_HDR.exec(lines[i]) + h = m[1].toLowerCase() + this.header[h] = this.header[h] || [] + this.header[h].push((m[2] || '')) + if (++this.npairs === this.maxHeaderPairs) { break } + } +} + +module.exports = HeaderParser + + +/***/ }), + +/***/ 612: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const inherits = (__nccwpck_require__(7975).inherits) +const ReadableStream = (__nccwpck_require__(7075).Readable) + +function PartStream (opts) { + ReadableStream.call(this, opts) +} +inherits(PartStream, ReadableStream) + +PartStream.prototype._read = function (n) {} + +module.exports = PartStream + + +/***/ }), + +/***/ 4136: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/** + * Copyright Brian White. All rights reserved. + * + * @see https://github.com/mscdex/streamsearch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool + */ +const EventEmitter = (__nccwpck_require__(8474).EventEmitter) +const inherits = (__nccwpck_require__(7975).inherits) + +function SBMH (needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle) + } + + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.') + } + + const needleLength = needle.length + + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.') + } + + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.') + } + + this.maxMatches = Infinity + this.matches = 0 + + this._occ = new Array(256) + .fill(needleLength) // Initialize occurrence table. + this._lookbehind_size = 0 + this._needle = needle + this._bufpos = 0 + + this._lookbehind = Buffer.alloc(needleLength) + + // Populate occurrence table with analysis of the needle, + // ignoring last letter. + for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var + this._occ[needle[i]] = needleLength - 1 - i + } +} +inherits(SBMH, EventEmitter) + +SBMH.prototype.reset = function () { + this._lookbehind_size = 0 + this.matches = 0 + this._bufpos = 0 +} + +SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary') + } + const chlen = chunk.length + this._bufpos = pos || 0 + let r + while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) } + return r +} + +SBMH.prototype._sbmh_feed = function (data) { + const len = data.length + const needle = this._needle + const needleLength = needle.length + const lastNeedleChar = needle[needleLength - 1] + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehind_size - 2] + let pos = -this._lookbehind_size + let ch + + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1) + + if ( + ch === lastNeedleChar && + this._sbmh_memcmp(data, pos, needleLength - 1) + ) { + this._lookbehind_size = 0 + ++this.matches + this.emit('info', true) + + return (this._bufpos = pos + needleLength) + } + pos += this._occ[ch] + } + + // No match. + + if (pos < 0) { + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos } + } + + if (pos >= 0) { + // Discard lookbehind buffer. + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size) + this._lookbehind_size = 0 + } else { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = this._lookbehind_size + pos + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + this.emit('info', false, this._lookbehind, 0, bytesToCutOff) + } + + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, + this._lookbehind_size - bytesToCutOff) + this._lookbehind_size -= bytesToCutOff + + data.copy(this._lookbehind, this._lookbehind_size) + this._lookbehind_size += len + + this._bufpos = len + return len + } + } + + pos += (pos >= 0) * this._bufpos + + // Lookbehind buffer is now empty. We only need to check if the + // needle is in the haystack. + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos) + ++this.matches + if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) } + + return (this._bufpos = pos + needleLength) + } else { + pos = len - needleLength + } + + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while ( + pos < len && + ( + data[pos] !== needle[0] || + ( + (Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0) + ) + ) + ) { + ++pos + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)) + this._lookbehind_size = len - pos + } + + // Everything until pos is guaranteed not to contain needle data. + if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) } + + this._bufpos = len + return len +} + +SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return (pos < 0) + ? this._lookbehind[this._lookbehind_size + pos] + : data[pos] +} + +SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false } + } + return true +} + +module.exports = SBMH + + +/***/ }), + +/***/ 9581: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const WritableStream = (__nccwpck_require__(7075).Writable) +const { inherits } = __nccwpck_require__(7975) +const Dicer = __nccwpck_require__(7182) + +const MultipartParser = __nccwpck_require__(1192) +const UrlencodedParser = __nccwpck_require__(855) +const parseParams = __nccwpck_require__(8929) + +function Busboy (opts) { + if (!(this instanceof Busboy)) { return new Busboy(opts) } + + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.') + } + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.') + } + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.') + } + + const { + headers, + ...streamOptions + } = opts + + this.opts = { + autoDestroy: false, + ...streamOptions + } + WritableStream.call(this, this.opts) + + this._done = false + this._parser = this.getParserByHeaders(headers) + this._finished = false +} +inherits(Busboy, WritableStream) + +Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + this._parser?.end() + return + } else if (this._finished) { + return + } + this._finished = true + } + WritableStream.prototype.emit.apply(this, arguments) +} + +Busboy.prototype.getParserByHeaders = function (headers) { + const parsed = parseParams(headers['content-type']) + + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + } + + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg) + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg) + } + throw new Error('Unsupported Content-Type.') +} + +Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb) +} + +module.exports = Busboy +module.exports["default"] = Busboy +module.exports.Busboy = Busboy + +module.exports.Dicer = Dicer + + +/***/ }), + +/***/ 1192: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// TODO: +// * support 1 nested multipart level +// (see second multipart example here: +// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) +// * support limits.fieldNameSize +// -- this will require modifications to utils.parseParams + +const { Readable } = __nccwpck_require__(7075) +const { inherits } = __nccwpck_require__(7975) + +const Dicer = __nccwpck_require__(7182) + +const parseParams = __nccwpck_require__(8929) +const decodeText = __nccwpck_require__(2747) +const basename = __nccwpck_require__(692) +const getLimit = __nccwpck_require__(2393) + +const RE_BOUNDARY = /^boundary$/i +const RE_FIELD = /^form-data$/i +const RE_CHARSET = /^charset$/i +const RE_FILENAME = /^filename$/i +const RE_NAME = /^name$/i + +Multipart.detect = /^multipart\/form-data/i +function Multipart (boy, cfg) { + let i + let len + const self = this + let boundary + const limits = cfg.limits + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)) + const parsedConType = cfg.parsedConType || [] + const defCharset = cfg.defCharset || 'utf8' + const preservePath = cfg.preservePath + const fileOpts = { highWaterMark: cfg.fileHwm } + + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && + RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1] + break + } + } + + function checkFinished () { + if (nends === 0 && finished && !boy._done) { + finished = false + self.end() + } + } + + if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') } + + const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + const fileSizeLimit = getLimit(limits, 'fileSize', Infinity) + const filesLimit = getLimit(limits, 'files', Infinity) + const fieldsLimit = getLimit(limits, 'fields', Infinity) + const partsLimit = getLimit(limits, 'parts', Infinity) + const headerPairsLimit = getLimit(limits, 'headerPairs', 2000) + const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024) + + let nfiles = 0 + let nfields = 0 + let nends = 0 + let curFile + let curField + let finished = false + + this._needDrain = false + this._pause = false + this._cb = undefined + this._nparts = 0 + this._boy = boy + + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + } + + this.parser = new Dicer(parserCfg) + this.parser.on('drain', function () { + self._needDrain = false + if (self._cb && !self._pause) { + const cb = self._cb + self._cb = undefined + cb() + } + }).on('part', function onPart (part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart) + self.parser.on('part', skipPart) + boy.hitPartsLimit = true + boy.emit('partsLimit') + return skipPart(part) + } + + // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let + // us emit 'end' early since we know the part has ended if we are already + // seeing the next part + if (curField) { + const field = curField + field.emit('end') + field.removeAllListeners('end') + } + + part.on('header', function (header) { + let contype + let fieldname + let parsed + let charset + let encoding + let filename + let nsize = 0 + + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]) + if (parsed[0]) { + contype = parsed[0].toLowerCase() + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase() + break + } + } + } + } + + if (contype === undefined) { contype = 'text/plain' } + if (charset === undefined) { charset = defCharset } + + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]) + if (!RE_FIELD.test(parsed[0])) { return skipPart(part) } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1] + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1] + if (!preservePath) { filename = basename(filename) } + } + } + } else { return skipPart(part) } + + if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' } + + let onData, + onEnd + + if (isPartAFile(fieldname, contype, filename)) { + // file/binary field + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true + boy.emit('filesLimit') + } + return skipPart(part) + } + + ++nfiles + + if (boy.listenerCount('file') === 0) { + self.parser._ignore() + return + } + + ++nends + const file = new FileStream(fileOpts) + curFile = file + file.on('end', function () { + --nends + self._pause = false + checkFinished() + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + }) + file._read = function (n) { + if (!self._pause) { return } + self._pause = false + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + } + boy.emit('file', fieldname, file, filename, encoding, contype) + + onData = function (data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length + if (extralen > 0) { file.push(data.slice(0, extralen)) } + file.truncated = true + file.bytesRead = fileSizeLimit + part.removeAllListeners('data') + file.emit('limit') + return + } else if (!file.push(data)) { self._pause = true } + + file.bytesRead = nsize + } + + onEnd = function () { + curFile = undefined + file.push(null) + } + } else { + // non-file field + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true + boy.emit('fieldsLimit') + } + return skipPart(part) + } + + ++nfields + ++nends + let buffer = '' + let truncated = false + curField = part + + onData = function (data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = (fieldSizeLimit - (nsize - data.length)) + buffer += data.toString('binary', 0, extralen) + truncated = true + part.removeAllListeners('data') + } else { buffer += data.toString('binary') } + } + + onEnd = function () { + curField = undefined + if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype) + --nends + checkFinished() + } + } + + /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become + broken. Streams2/streams3 is a huge black box of confusion, but + somehow overriding the sync state seems to fix things again (and still + seems to work for previous node versions). + */ + part._readableState.sync = false + + part.on('data', onData) + part.on('end', onEnd) + }).on('error', function (err) { + if (curFile) { curFile.emit('error', err) } + }) + }).on('error', function (err) { + boy.emit('error', err) + }).on('finish', function () { + finished = true + checkFinished() + }) +} + +Multipart.prototype.write = function (chunk, cb) { + const r = this.parser.write(chunk) + if (r && !this._pause) { + cb() + } else { + this._needDrain = !r + this._cb = cb + } +} + +Multipart.prototype.end = function () { + const self = this + + if (self.parser.writable) { + self.parser.end() + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true + self._boy.emit('finish') + }) + } +} + +function skipPart (part) { + part.resume() +} + +function FileStream (opts) { + Readable.call(this, opts) + + this.bytesRead = 0 + + this.truncated = false +} + +inherits(FileStream, Readable) + +FileStream.prototype._read = function (n) {} + +module.exports = Multipart + + +/***/ }), + +/***/ 855: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Decoder = __nccwpck_require__(1496) +const decodeText = __nccwpck_require__(2747) +const getLimit = __nccwpck_require__(2393) + +const RE_CHARSET = /^charset$/i + +UrlEncoded.detect = /^application\/x-www-form-urlencoded/i +function UrlEncoded (boy, cfg) { + const limits = cfg.limits + const parsedConType = cfg.parsedConType + this.boy = boy + + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100) + this.fieldsLimit = getLimit(limits, 'fields', Infinity) + + let charset + for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var + if (Array.isArray(parsedConType[i]) && + RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase() + break + } + } + + if (charset === undefined) { charset = cfg.defCharset || 'utf8' } + + this.decoder = new Decoder() + this.charset = charset + this._fields = 0 + this._state = 'key' + this._checkingBytes = true + this._bytesKey = 0 + this._bytesVal = 0 + this._key = '' + this._val = '' + this._keyTrunc = false + this._valTrunc = false + this._hitLimit = false +} + +UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true + this.boy.emit('fieldsLimit') + } + return cb() + } + + let idxeq; let idxamp; let i; let p = 0; const len = data.length + + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x3D/* = */) { + idxeq = i + break + } else if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesKey } + } + + if (idxeq !== undefined) { + // key with assignment + if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) } + this._state = 'val' + + this._hitLimit = false + this._checkingBytes = true + this._val = '' + this._bytesVal = 0 + this._valTrunc = false + this.decoder.reset() + + p = idxeq + 1 + } else if (idxamp !== undefined) { + // key with no assignment + ++this._fields + let key; const keyTrunc = this._keyTrunc + if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key } + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), + '', + keyTrunc, + false) + } + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._keyTrunc = true + } + } else { + if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) } + p = len + } + } else { + idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesVal } + } + + if (idxamp !== undefined) { + ++this._fields + if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) } + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + this._state = 'key' + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._val === '' && this.fieldSizeLimit === 0) || + (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._valTrunc = true + } + } else { + if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) } + p = len + } + } + } + cb() +} + +UrlEncoded.prototype.end = function () { + if (this.boy._done) { return } + + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + '', + this._keyTrunc, + false) + } else if (this._state === 'val') { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + } + this.boy._done = true + this.boy.emit('finish') +} + +module.exports = UrlEncoded + + +/***/ }), + +/***/ 1496: +/***/ ((module) => { + +"use strict"; + + +const RE_PLUS = /\+/g + +const HEX = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +] + +function Decoder () { + this.buffer = undefined +} +Decoder.prototype.write = function (str) { + // Replace '+' with ' ' before decoding + str = str.replace(RE_PLUS, ' ') + let res = '' + let i = 0; let p = 0; const len = str.length + for (; i < len; ++i) { + if (this.buffer !== undefined) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer + this.buffer = undefined + --i // retry character + } else { + this.buffer += str[i] + ++p + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)) + this.buffer = undefined + } + } + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i) + p = i + } + this.buffer = '' + ++p + } + } + if (p < len && this.buffer === undefined) { res += str.substring(p) } + return res +} +Decoder.prototype.reset = function () { + this.buffer = undefined +} + +module.exports = Decoder + + +/***/ }), + +/***/ 692: +/***/ ((module) => { + +"use strict"; + + +module.exports = function basename (path) { + if (typeof path !== 'string') { return '' } + for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1) + return (path === '..' || path === '.' ? '' : path) + } + } + return (path === '..' || path === '.' ? '' : path) +} + + +/***/ }), + +/***/ 2747: +/***/ (function(module) { + +"use strict"; + + +// Node has always utf-8 +const utf8Decoder = new TextDecoder('utf-8') +const textDecoders = new Map([ + ['utf-8', utf8Decoder], + ['utf8', utf8Decoder] +]) + +function getDecoder (charset) { + let lc + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8 + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1 + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le + case 'base64': + return decoders.base64 + default: + if (lc === undefined) { + lc = true + charset = charset.toLowerCase() + continue + } + return decoders.other.bind(charset) + } + } +} + +const decoders = { + utf8: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.utf8Slice(0, data.length) + }, + + latin1: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + return data + } + return data.latin1Slice(0, data.length) + }, + + utf16le: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.ucs2Slice(0, data.length) + }, + + base64: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.base64Slice(0, data.length) + }, + + other: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + + if (textDecoders.has(this.toString())) { + try { + return textDecoders.get(this).decode(data) + } catch {} + } + return typeof data === 'string' + ? data + : data.toString() + } +} + +function decodeText (text, sourceEncoding, destEncoding) { + if (text) { + return getDecoder(destEncoding)(text, sourceEncoding) + } + return text +} + +module.exports = decodeText + + +/***/ }), + +/***/ 2393: +/***/ ((module) => { + +"use strict"; + + +module.exports = function getLimit (limits, name, defaultLimit) { + if ( + !limits || + limits[name] === undefined || + limits[name] === null + ) { return defaultLimit } + + if ( + typeof limits[name] !== 'number' || + isNaN(limits[name]) + ) { throw new TypeError('Limit ' + name + ' is not a valid number') } + + return limits[name] +} + + +/***/ }), + +/***/ 8929: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* eslint-disable object-property-newline */ + + +const decodeText = __nccwpck_require__(2747) + +const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g + +const EncodedLookup = { + '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04', + '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09', + '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c', + '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e', + '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12', + '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17', + '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b', + '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d', + '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20', + '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25', + '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a', + '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c', + '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f', + '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33', + '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38', + '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b', + '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e', + '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41', + '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46', + '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a', + '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d', + '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f', + '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54', + '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59', + '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c', + '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e', + '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62', + '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67', + '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b', + '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d', + '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70', + '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75', + '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a', + '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c', + '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f', + '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83', + '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88', + '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b', + '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e', + '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91', + '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96', + '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a', + '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d', + '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f', + '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2', + '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4', + '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7', + '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9', + '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab', + '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac', + '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad', + '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae', + '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0', + '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2', + '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5', + '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7', + '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba', + '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb', + '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc', + '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd', + '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf', + '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0', + '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3', + '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5', + '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8', + '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca', + '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb', + '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc', + '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce', + '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf', + '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1', + '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3', + '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6', + '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8', + '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda', + '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb', + '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd', + '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde', + '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf', + '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1', + '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4', + '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6', + '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9', + '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea', + '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec', + '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed', + '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee', + '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef', + '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2', + '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4', + '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7', + '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9', + '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb', + '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc', + '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd', + '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe', + '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff' +} + +function encodedReplacer (match) { + return EncodedLookup[match] +} + +const STATE_KEY = 0 +const STATE_VALUE = 1 +const STATE_CHARSET = 2 +const STATE_LANG = 3 + +function parseParams (str) { + const res = [] + let state = STATE_KEY + let charset = '' + let inquote = false + let escaping = false + let p = 0 + let tmp = '' + const len = str.length + + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + const char = str[i] + if (char === '\\' && inquote) { + if (escaping) { escaping = false } else { + escaping = true + continue + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false + state = STATE_KEY + } else { inquote = true } + continue + } else { escaping = false } + } else { + if (escaping && inquote) { tmp += '\\' } + escaping = false + if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { + if (state === STATE_CHARSET) { + state = STATE_LANG + charset = tmp.substring(1) + } else { state = STATE_VALUE } + tmp = '' + continue + } else if (state === STATE_KEY && + (char === '*' || char === '=') && + res.length) { + state = char === '*' + ? STATE_CHARSET + : STATE_VALUE + res[p] = [tmp, undefined] + tmp = '' + continue + } else if (!inquote && char === ';') { + state = STATE_KEY + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } + charset = '' + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp } + tmp = '' + ++p + continue + } else if (!inquote && (char === ' ' || char === '\t')) { continue } + } + tmp += char + } + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + + if (res[p] === undefined) { + if (tmp) { res[p] = tmp } + } else { res[p][1] = tmp } + + return res +} + +module.exports = parseParams + + +/***/ }), + +/***/ 2472: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]'); + +/***/ }), + +/***/ 4244: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]'); + +/***/ }), + +/***/ 8949: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["0","\\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]'); + +/***/ }), + +/***/ 5923: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["0","\\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆЪĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]'); + +/***/ }), + +/***/ 6517: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["0","\\u0000",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]'); + +/***/ }), + +/***/ 4231: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["0","\\u0000",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]'); + +/***/ }), + +/***/ 7302: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}'); + +/***/ }), + +/***/ 9603: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc","ḿ"],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93],["8135f437",""]]'); + +/***/ }), + +/***/ 7572: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('[["0","\\u0000",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]'); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +const core = __nccwpck_require__(7484) +const { analyzeMemoryTrendsAcrossVersions } = __nccwpck_require__(1548) + +async function run() { + try { + const mixpanelUser = core.getInput('mixpanel-user', { required: true }) + const mixpanelSecret = core.getInput('mixpanel-secret', { required: true }) + const mixpanelProjectId = core.getInput('mixpanel-project-id', { + required: true, + }) + const previousVersionCount = parseInt( + core.getInput('previous-version-count') || '2' + ) + + core.info('Beginning analysis...') + const memoryAnalysis = await analyzeMemoryTrendsAcrossVersions({ + previousVersionCount, + uname: mixpanelUser, + pwd: mixpanelSecret, + projectId: mixpanelProjectId, + }) + + console.log( + 'ODD Available Memory and Processes with Increasing Memory Trend or Selectively Observed by Version (Rolling 1 Month Analysis Window):' + ) + console.log(JSON.stringify(memoryAnalysis, null, 2)) + + const outputText = + 'ODD Available Memory and Processes with Increasing Memory Trend or Selectively Observed by Version (Rolling 1 Month Analysis Window):\n' + + Object.entries(memoryAnalysis) + .map( + ([version, analysis]) => + `\n${version}: ${JSON.stringify(analysis, null, 2)}` + ) + .join('\n') + + core.setOutput('analysis-results', JSON.stringify(memoryAnalysis)) + + await core.summary + .addHeading('ODD Memory Usage Results') + .addCodeBlock(outputText, 'json') + .write() + } catch (error) { + core.setFailed(error.message) + } +} + +run() + +module.exports = __webpack_exports__; +/******/ })() +; \ No newline at end of file diff --git a/.github/actions/odd-resource-analysis/package-lock.json b/.github/actions/odd-resource-analysis/package-lock.json new file mode 100644 index 00000000000..f7f21ad07d0 --- /dev/null +++ b/.github/actions/odd-resource-analysis/package-lock.json @@ -0,0 +1,331 @@ +{ + "name": "odd-memory-analysis", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "odd-memory-analysis", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@actions/core": "1.11.1", + "@actions/github": "6.0.0", + "calculate-correlation": "^1.2.3", + "node-fetch": "2.6.9" + }, + "devDependencies": { + "@vercel/ncc": "0.38.3", + "prettier": "2.7.1" + } + }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/github": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", + "dependencies": { + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "dependencies": { + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "dependencies": { + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz", + "integrity": "sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==", + "dependencies": { + "@octokit/openapi-types": "^22.2.0" + } + }, + "node_modules/@vercel/ncc": { + "version": "0.38.3", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.3.tgz", + "integrity": "sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==", + "dev": true, + "bin": { + "ncc": "dist/ncc/cli.js" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + }, + "node_modules/calculate-correlation": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/calculate-correlation/-/calculate-correlation-1.2.3.tgz", + "integrity": "sha512-WLoM4ZXJcFcnqhiYtTCBoKaNoWM6O0daL/7jbctM+ZJU2tNdUHH+mvxeLSc11Kgd/jsNHtnVW6lGlxA0H+MmiQ==" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/.github/actions/odd-resource-analysis/package.json b/.github/actions/odd-resource-analysis/package.json new file mode 100644 index 00000000000..30a28ac529d --- /dev/null +++ b/.github/actions/odd-resource-analysis/package.json @@ -0,0 +1,22 @@ +{ + "name": "odd-memory-analysis", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "ncc build action/index.js -o dist" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@actions/core": "1.11.1", + "@actions/github": "6.0.0", + "calculate-correlation": "^1.2.3", + "node-fetch": "2.6.9" + }, + "devDependencies": { + "@vercel/ncc": "0.38.3", + "prettier": "2.7.1" + } +} diff --git a/.github/workflows/odd-memory-usage-test.yaml b/.github/workflows/odd-memory-usage-test.yaml new file mode 100644 index 00000000000..3302ec0203a --- /dev/null +++ b/.github/workflows/odd-memory-usage-test.yaml @@ -0,0 +1,24 @@ +name: 'ODD Memory Usage Test' + +on: + schedule: + - cron: '30 12 * * *' + workflow_dispatch: + +jobs: + analyze-memory: + name: 'ODD Memory Usage Test' + runs-on: 'ubuntu-latest' + timeout-minutes: 15 + + steps: + - name: Checkout repository + uses: 'actions/checkout@v4' + + - name: Run memory analysis + uses: ./.github/actions/odd-resource-analysis + with: + mixpanel-user: ${{ secrets.MIXPANEL_INGEST_USER }} + mixpanel-secret: ${{ secrets.MIXPANEL_INGEST_SECRET }} + mixpanel-project-id: ${{ secrets.OT_APP_MIXPANEL_ID }} + previous-version-count: '2' \ No newline at end of file From 2b4eecb7d4f65aa35d01435966f1977c03a697ae Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:04:52 -0500 Subject: [PATCH 132/220] fix(components, protocol-designer): fix logic for disabling advanced transfer settings (#16996) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update logic for disabling mix/blowout settings depending on transfer path. - If path is consolidate, aspirate mix field should be disabled. - If path is distribute, dispense mix field should be disabled, and blowout field should be disabled if disposal volume field is enabled. Side effect of enabling disposal volume field is to disable and collapse blowout field. These changes implicate that Check and ListItem components accommodate disabled state. Note that I don't love this fix— it breaks pattern with how we handle tooltips, but it looks like we haven't had to deal with multiple disabled tooltips on the same form field in the past. I am open to ideas on how to migrate this to a more sustainable pattern moving forward. --- components/src/atoms/Checkbox/index.tsx | 5 ++- components/src/atoms/ListItem/index.tsx | 14 ++++++- .../src/assets/localization/en/tooltip.json | 6 ++- .../CheckboxExpandStepFormField/index.tsx | 11 ++++- .../StepTools/MoveLiquidTools/index.tsx | 40 ++++++++++++++++++- 5 files changed, 66 insertions(+), 10 deletions(-) diff --git a/components/src/atoms/Checkbox/index.tsx b/components/src/atoms/Checkbox/index.tsx index 44c2ba8ee04..f4ae61dee1f 100644 --- a/components/src/atoms/Checkbox/index.tsx +++ b/components/src/atoms/Checkbox/index.tsx @@ -100,9 +100,10 @@ export function Checkbox(props: CheckboxProps): JSX.Element { interface CheckProps { isChecked: boolean color?: string + disabled?: boolean } export function Check(props: CheckProps): JSX.Element { - const { isChecked, color = COLORS.white } = props + const { isChecked, color = COLORS.white, disabled = false } = props return isChecked ? ( @@ -110,7 +111,7 @@ export function Check(props: CheckProps): JSX.Element { ) : ( ) diff --git a/components/src/atoms/ListItem/index.tsx b/components/src/atoms/ListItem/index.tsx index 31beea0040c..5a47c614ea8 100644 --- a/components/src/atoms/ListItem/index.tsx +++ b/components/src/atoms/ListItem/index.tsx @@ -8,7 +8,12 @@ import type { StyleProps } from '../../primitives' export * from './ListItemChildren' -export type ListItemType = 'error' | 'noActive' | 'success' | 'warning' +export type ListItemType = + | 'error' + | 'noActive' + | 'success' + | 'warning' + | 'unavailable' interface ListItemProps extends StyleProps { /** ListItem state type */ @@ -22,7 +27,7 @@ interface ListItemProps extends StyleProps { const LISTITEM_PROPS_BY_TYPE: Record< ListItemType, - { backgroundColor: string } + { backgroundColor: string; color?: string } > = { error: { backgroundColor: COLORS.red35, @@ -36,6 +41,10 @@ const LISTITEM_PROPS_BY_TYPE: Record< warning: { backgroundColor: COLORS.yellow35, }, + unavailable: { + backgroundColor: COLORS.grey20, + color: COLORS.grey40, + }, } /* @@ -54,6 +63,7 @@ export function ListItem(props: ListItemProps): JSX.Element { const LIST_ITEM_STYLE = css` background-color: ${listItemProps.backgroundColor}; + color: ${listItemProps.color ?? COLORS.black90}; width: 100%; height: ${FLEX_MAX_CONTENT}; border-radius: ${BORDERS.borderRadius4}; diff --git a/protocol-designer/src/assets/localization/en/tooltip.json b/protocol-designer/src/assets/localization/en/tooltip.json index d9e60e485a5..86f5f6e8197 100644 --- a/protocol-designer/src/assets/localization/en/tooltip.json +++ b/protocol-designer/src/assets/localization/en/tooltip.json @@ -92,9 +92,11 @@ "disabled": { "$generic": "Incompatible with current path", "aspirate_wells": "Select a source labware in order to select wells", + "aspirate_mix_checkbox": "Advanced setting not compatible with pipette path", "aspirate_touchTip_checkbox": "Touch tip is not supported", - "blowout_checkbox": "Redundant with disposal volume", - "dispense_mix_checkbox": "Unable to mix in a waste chute or trash bin", + "blowout_checkbox": "Blowout already set with disposal volume", + "dispense_mix_checkbox": "Can’t mix in trash container", + "dispense_mix_checkbox_2": "Can’t mix after dispense when distributing", "dropTip_location": "Choose where you would like to drop tip", "dispense_wells": "Select a destination labware in order to select wells", "aspirate_mmFromBottom": "Tip position adjustment is not supported", diff --git a/protocol-designer/src/molecules/CheckboxExpandStepFormField/index.tsx b/protocol-designer/src/molecules/CheckboxExpandStepFormField/index.tsx index e10ddd6c444..5c4d749d228 100644 --- a/protocol-designer/src/molecules/CheckboxExpandStepFormField/index.tsx +++ b/protocol-designer/src/molecules/CheckboxExpandStepFormField/index.tsx @@ -20,6 +20,7 @@ interface CheckboxExpandStepFormFieldProps { isChecked: boolean children?: React.ReactNode tooltipText?: string | null + disabled?: boolean } export function CheckboxExpandStepFormField( props: CheckboxExpandStepFormFieldProps @@ -31,12 +32,13 @@ export function CheckboxExpandStepFormField( isChecked, title, tooltipText, + disabled = false, } = props const [targetProps, tooltipProps] = useHoverTooltip() return ( <> - + { checkboxUpdateValue(!checkboxValue) }} + disabled={disabled} > - + {children} diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx index 813dc5ba022..fcb64ff8834 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/index.tsx @@ -1,3 +1,4 @@ +import { useEffect } from 'react' import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { @@ -8,6 +9,7 @@ import { StyledText, Tabs, } from '@opentrons/components' +import { getTrashOrLabware } from '@opentrons/step-generation' import { getEnableReturnTip } from '../../../../../../feature-flags/selectors' import { getAdditionalEquipmentEntities, @@ -60,7 +62,7 @@ export function MoveLiquidTools(props: StepFormProps): JSX.Element { tab, setTab, } = props - const { t, i18n } = useTranslation(['protocol_steps', 'form']) + const { t, i18n } = useTranslation(['protocol_steps', 'form', 'tooltip']) const { path } = formData const additionalEquipmentEntities = useSelector( getAdditionalEquipmentEntities @@ -96,6 +98,20 @@ export function MoveLiquidTools(props: StepFormProps): JSX.Element { additionalEquipmentEntities[String(propsForFields.dispense_labware.value)] ?.name === 'trashBin' + const destinationLabwareType = getTrashOrLabware( + labwares, + additionalEquipmentEntities, + formData.dispense_labware as string + ) + const isDestinationTrash = + destinationLabwareType != null + ? ['trashBin', 'wasteChute'].includes(destinationLabwareType) + : false + const dispenseMixDisabledTooltipText = t( + `tooltip:step_fields.moveLiquid.disabled.${ + isDestinationTrash ? 'dispense_mix_checkbox' : 'dispense_mix_checkbox_2' + }` + ) const aspirateTab = { text: t('aspirate'), isActive: tab === 'aspirate', @@ -118,6 +134,13 @@ export function MoveLiquidTools(props: StepFormProps): JSX.Element { const mappedErrorsToField = getFormErrorsMappedToField(visibleFormErrors) + // auto-collapse blowout field if disposal volume is checked + useEffect(() => { + if (formData.disposalVolume_checkbox) { + propsForFields.blowout_checkbox.updateValue(false) + } + }, [formData.disposalVolume_checkbox]) + return toolboxStep === 0 ? ( {formData[`${tab}_mix_checkbox`] === true ? ( {formData.blowout_checkbox === true ? ( Date: Mon, 2 Dec 2024 13:15:37 -0500 Subject: [PATCH 133/220] =?UTF-8?q?fix(protocol-designer):=20display=20cor?= =?UTF-8?q?rect=20z-value=20position=20in=20tip=20posit=E2=80=A6=20(#17005?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ion field closes RQA-3723 --- .../ProtocolSteps/StepForm/PipetteFields/PositionField.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx index f9c3707f4bf..393e0087f37 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/PipetteFields/PositionField.tsx @@ -108,12 +108,13 @@ export function PositionField(props: PositionFieldProps): JSX.Element { zValue = mmFromBottom ?? getDefaultMmFromBottom({ name: zName, wellDepthMm }) } + let modal = ( @@ -133,7 +134,7 @@ export function PositionField(props: PositionFieldProps): JSX.Element { const specs: PositionSpecs = { z: { name: zName, - value: mmFromBottom, + value: zValue as number, updateValue: zUpdateValue, }, x: { @@ -198,7 +199,7 @@ export function PositionField(props: PositionFieldProps): JSX.Element { propsForFields[yField].value != null ? Number(propsForFields[yField].value) : 0, - z: mmFromBottom ?? 0, + z: zValue, })} From bc28c517d167202bbf4a7b2964efa1deb98a28de Mon Sep 17 00:00:00 2001 From: koji Date: Mon, 2 Dec 2024 13:29:20 -0500 Subject: [PATCH 134/220] fix(protocol-designer) hide view details item from Step Overflow Menu 96-channel (#17006) * fix(protocol-designer) hide view details item from Step Overflow Menu 96-channel --- .../Timeline/StepOverflowMenu.tsx | 8 ++++- .../__tests__/StepOverflowMenu.test.tsx | 34 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx index 3dd7f529743..c26460fe472 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/StepOverflowMenu.tsx @@ -21,6 +21,7 @@ import { OPEN_STEP_DETAILS_EVENT } from '../../../../analytics/constants' import { getBatchEditFormHasUnsavedChanges, getCurrentFormHasUnsavedChanges, + getPipetteEntities, getSavedStepForms, getUnsavedForm, } from '../../../../step-forms/selectors' @@ -61,12 +62,16 @@ export function StepOverflowMenu(props: StepOverflowMenuProps): JSX.Element { const dispatch = useDispatch>() const formData = useSelector(getUnsavedForm) const savedStepFormData = useSelector(getSavedStepForms)[stepId] + const pipetteEntities = useSelector(getPipetteEntities) + const isPipetteStep = savedStepFormData.stepType === 'moveLiquid' || savedStepFormData.stepType === 'mix' const isThermocyclerProfile = savedStepFormData.stepType === 'thermocycler' && savedStepFormData.thermocyclerFormType === 'thermocyclerProfile' + const is96Channel = + pipetteEntities[savedStepFormData.pipette]?.name === 'p1000_96' const duplicateStep = ( stepId: StepIdType @@ -132,7 +137,8 @@ export function StepOverflowMenu(props: StepOverflowMenuProps): JSX.Element { {formData != null ? null : ( {t('edit_step')} )} - {isPipetteStep || isThermocyclerProfile ? ( + {/* Note the following 96-channel check is temp */} + {(isPipetteStep && !is96Channel) || isThermocyclerProfile ? ( { diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx index d283468dc33..9c1de4044d0 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/StepOverflowMenu.test.tsx @@ -11,6 +11,7 @@ import { analyticsEvent } from '../../../../../analytics/actions' import { getCurrentFormHasUnsavedChanges, getCurrentFormIsPresaved, + getPipetteEntities, getSavedStepForms, getUnsavedForm, } from '../../../../../step-forms/selectors' @@ -24,6 +25,8 @@ import type * as OpentronsComponents from '@opentrons/components' const mockConfirm = vi.fn() const mockCancel = vi.fn() +const mockId = 'mockId' +const mockId96 = '96MockId' vi.mock('../../../../../ui/steps') vi.mock('../../../../../step-forms/selectors') @@ -72,6 +75,16 @@ describe('StepOverflowMenu', () => { [moveLiquidStepId]: { stepType: 'moveLiquid', id: moveLiquidStepId, + pipette: mockId, + }, + }) + vi.mocked(getPipetteEntities).mockReturnValue({ + [mockId]: { + name: 'p50_single_flex', + spec: {} as any, + id: mockId, + tiprackLabwareDef: [], + tiprackDefURI: ['mockDefURI1', 'mockDefURI2'], }, }) }) @@ -94,4 +107,25 @@ describe('StepOverflowMenu', () => { screen.getByText('Duplicate steps') screen.getByText('Delete steps') }) + + it('should not render view details button if pipette is 96-channel', () => { + vi.mocked(getSavedStepForms).mockReturnValue({ + [moveLiquidStepId]: { + stepType: 'moveLiquid', + id: moveLiquidStepId, + pipette: mockId96, + }, + }) + vi.mocked(getPipetteEntities).mockReturnValue({ + [mockId96]: { + name: 'p1000_96', + spec: {} as any, + id: mockId96, + tiprackLabwareDef: [], + tiprackDefURI: ['mockDefURI1_96'], + }, + }) + render(props) + expect(screen.queryByText('View details')).not.toBeInTheDocument() + }) }) From 2a4a3c6fb135d301c8aacc3a6b3889c04f0db0f1 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:35:57 -0500 Subject: [PATCH 135/220] fix(protocol-designer): various select pipette bug in onboarding flow (#17001) closes RQA-3721 RQA-3716 --- .../localization/en/create_new_protocol.json | 1 + .../SelectPipettes.tsx | 57 +++++++++---------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/create_new_protocol.json b/protocol-designer/src/assets/localization/en/create_new_protocol.json index 5d81a9ef2fd..d5d447c2d09 100644 --- a/protocol-designer/src/assets/localization/en/create_new_protocol.json +++ b/protocol-designer/src/assets/localization/en/create_new_protocol.json @@ -46,5 +46,6 @@ "which_fixtures": "Which fixtures will you be using?", "which_modules": "Select modules to use in your protocol.", "which_pipette": "Pick your first pipette. If you need a second pipette, you can add it next.", + "which_pipette_second": "Now add your second pipette", "your_pipettes": "Your pipettes" } diff --git a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx index 72cc6338526..bae902d4153 100644 --- a/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx +++ b/protocol-designer/src/pages/CreateNewProtocolWizard/SelectPipettes.tsx @@ -67,7 +67,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { const { makeSnackbar } = useKitchen() const allLabware = useSelector(getLabwareDefsByURI) const dispatch = useDispatch>() - const [mount, setMount] = useState(null) + const [mount, setMount] = useState('left') const [page, setPage] = useState<'add' | 'overview'>('add') const [pipetteType, setPipetteType] = useState(null) const [showIncompatibleTip, setIncompatibleTip] = useState(false) @@ -76,14 +76,13 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { const allowAllTipracks = useSelector(getAllowAllTipracks) const allPipetteOptions = getAllPipetteNames('maxVolume', 'channels') const robotType = fields.robotType - const defaultMount = mount ?? 'left' const has96Channel = pipettesByMount.left.pipetteName === 'p1000_96' const selectedPipetteName = pipetteType === '96' || pipetteGen === 'GEN1' ? `${pipetteVolume}_${pipetteType}` : `${pipetteVolume}_${pipetteType}_${pipetteGen.toLowerCase()}` - const selectedValues = pipettesByMount[defaultMount].tiprackDefURI ?? [] + const selectedValues = pipettesByMount[mount].tiprackDefURI ?? [] const resetFields = (): void => { setPipetteType(null) @@ -101,20 +100,6 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { }) } } - // initialize pipette name once all fields are filled out - useEffect(() => { - if ( - (pipetteType != null && - pipetteVolume != null && - robotType === FLEX_ROBOT_TYPE) || - (robotType === OT2_ROBOT_TYPE && pipetteGen != null) - ) { - setValue( - `pipettesByMount.${defaultMount}.pipetteName`, - selectedPipetteName - ) - } - }, [pipetteType, pipetteGen, pipetteVolume, selectedPipetteName]) useEffect(() => { handleScrollToBottom() @@ -127,9 +112,11 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { pipettesByMount.right.tiprackDefURI == null) const isDisabled = - (page === 'add' && pipettesByMount[defaultMount].tiprackDefURI == null) || - noPipette || - selectedValues.length === 0 + (page === 'add' && + pipettesByMount[mount].tiprackDefURI == null && + noPipette) || + (pipettesByMount.left.tiprackDefURI == null && + pipettesByMount.right.tiprackDefURI == null) const targetPipetteMount = pipettesByMount.left.pipetteName == null || @@ -143,6 +130,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { proceed(1) } else { setPage('overview') + setValue(`pipettesByMount.${mount}.pipetteName`, selectedPipetteName) } } } @@ -150,8 +138,8 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { const handleGoBack = (): void => { if (page === 'add') { resetFields() - setValue(`pipettesByMount.${defaultMount}.pipetteName`, undefined) - setValue(`pipettesByMount.${defaultMount}.tiprackDefURI`, undefined) + setValue(`pipettesByMount.${mount}.pipetteName`, undefined) + setValue(`pipettesByMount.${mount}.tiprackDefURI`, undefined) if ( pipettesByMount.left.pipetteName != null || pipettesByMount.left.tiprackDefURI != null || @@ -174,6 +162,16 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { } }, [location]) + const hasAPipette = + (mount === 'left' && pipettesByMount.right.pipetteName != null) || + (mount === 'right' && pipettesByMount.left.pipetteName != null) + let subHeader + if (page === 'add' && noPipette) { + subHeader = t('which_pipette') + } else if (page === 'add' && hasAPipette) { + subHeader = t('which_pipette_second') + } + return ( <> {showIncompatibleTip ? ( @@ -188,7 +186,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { robotType={robotType} stepNumber={2} header={page === 'add' ? t('add_pipette') : t('robot_pipettes')} - subHeader={page === 'add' ? t('which_pipette') : undefined} + subHeader={subHeader} proceed={handleProceed} goBack={() => { handleGoBack() @@ -213,8 +211,9 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { {PIPETTE_TYPES[robotType].map(type => { return type.value === '96' && - (pipettesByMount.left.pipetteName != null || - pipettesByMount.right.pipetteName != null) ? null : ( + (mount === 'right' || + (mount === 'left' && + pipettesByMount.right.pipetteName != null)) ? null : ( { @@ -222,11 +221,11 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { setPipetteGen('flex') setPipetteVolume(null) setValue( - `pipettesByMount.${defaultMount}.pipetteName`, + `pipettesByMount.${mount}.pipetteName`, undefined ) setValue( - `pipettesByMount.${defaultMount}.tiprackDefURI`, + `pipettesByMount.${mount}.tiprackDefURI`, undefined ) }} @@ -362,7 +361,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { if (isCurrentlySelected) { setValue( - `pipettesByMount.${defaultMount}.tiprackDefURI`, + `pipettesByMount.${mount}.tiprackDefURI`, selectedValues.filter(v => v !== value) ) } else { @@ -375,7 +374,7 @@ export function SelectPipettes(props: WizardTileProps): JSX.Element | null { ) } else { setValue( - `pipettesByMount.${defaultMount}.tiprackDefURI`, + `pipettesByMount.${mount}.tiprackDefURI`, [...selectedValues, value] ) } From 89834d5e1b5739ca454574aeb44211a43be1ba0a Mon Sep 17 00:00:00 2001 From: Seth Foster Date: Mon, 2 Dec 2024 14:34:07 -0500 Subject: [PATCH 136/220] feat(app): implement stall recoveries (#17002) Adds recovery from stall or collision errors to the app. This should implement these flows: https://www.figma.com/design/OGssKRmCOvuXSqUpK2qXrV/Feature%3A-Error-Recovery-November-Release?node-id=9765-66609&t=65NkMVGZlPdCG7z6-4 When there's a stall, which can happen on pretty much any command, we should now prompt the user to home and retry. To home, they have to make sure the machine is safe, so we will go through DTWiz. ## Reviews - [ ] did i miss anything ## Testing - [x] stalls should get you the home and retry button - [x] you should enter the DTWiz if >0 pipettes have a tip - [x] if 0 pipettes have a tip the DTwiz should be skipped (or if there are no pipettes) - [x] Retrying should in fact work Closes EXEC-725 --- api/src/opentrons/hardware_control/api.py | 10 ++ api/src/opentrons/hardware_control/ot3api.py | 7 +- .../protocols/hardware_manager.py | 6 +- .../commands/unsafe/unsafe_engage_axes.py | 5 +- .../unsafe/update_position_estimators.py | 5 +- .../protocol_engine/execution/gantry_mover.py | 26 +++ .../commands/unsafe/test_engage_axes.py | 33 ++-- .../unsafe/test_update_position_estimators.py | 32 ++-- .../localization/en/error_recovery.json | 10 ++ .../ErrorRecoveryWizard.tsx | 7 + .../RecoveryOptions/CancelRun.tsx | 4 +- .../RecoveryOptions/FillWellAndSkip.tsx | 4 +- .../RecoveryOptions/HomeAndRetry.tsx | 147 +++++++++++++++++ .../RecoveryOptions/IgnoreErrorSkipStep.tsx | 4 +- .../RecoveryOptions/ManageTips.tsx | 55 ++++++- .../RecoveryOptions/ManualMoveLwAndSkip.tsx | 4 +- .../ManualReplaceLwAndRetry.tsx | 4 +- .../RecoveryOptions/RetryNewTips.tsx | 4 +- .../RecoveryOptions/RetrySameTips.tsx | 4 +- .../RecoveryOptions/RetryStep.tsx | 4 +- .../RecoveryOptions/SelectRecoveryOption.tsx | 7 + .../RecoveryOptions/SkipStepNewTips.tsx | 4 +- .../RecoveryOptions/SkipStepSameTips.tsx | 4 +- .../__tests__/HomeAndRetry.test.tsx | 154 ++++++++++++++++++ .../__tests__/SelectRecoveryOptions.test.tsx | 41 +++++ .../RecoveryOptions/index.ts | 1 + .../__tests__/ErrorRecoveryWizard.test.tsx | 16 ++ .../organisms/ErrorRecoveryFlows/constants.ts | 33 ++++ .../__tests__/useRecoveryOptionCopy.test.tsx | 5 + .../ErrorRecoveryFlows/hooks/useErrorName.ts | 2 + .../hooks/useFailedLabwareUtils.ts | 3 +- .../hooks/useRecoveryCommands.ts | 12 ++ .../hooks/useRecoveryOptionCopy.tsx | 2 + .../hooks/useRecoveryToasts.ts | 1 + .../shared/ErrorDetailsModal.tsx | 15 ++ .../shared/RecoveryDoorOpenSpecial.tsx | 17 ++ .../shared/RetryStepInfo.tsx | 4 +- .../shared/TwoColLwInfoAndDeck.tsx | 9 +- .../__tests__/ErrorDetailsModal.test.tsx | 23 +++ .../utils/__tests__/getErrorKind.test.ts | 15 ++ .../ErrorRecoveryFlows/utils/getErrorKind.ts | 2 + 41 files changed, 689 insertions(+), 56 deletions(-) create mode 100644 app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/HomeAndRetry.tsx create mode 100644 app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/HomeAndRetry.test.tsx diff --git a/api/src/opentrons/hardware_control/api.py b/api/src/opentrons/hardware_control/api.py index 2e2bbfef116..c52fae64131 100644 --- a/api/src/opentrons/hardware_control/api.py +++ b/api/src/opentrons/hardware_control/api.py @@ -921,6 +921,16 @@ def engaged_axes(self) -> Dict[Axis, bool]: async def disengage_axes(self, which: List[Axis]) -> None: await self._backend.disengage_axes([ot2_axis_to_string(ax) for ax in which]) + def axis_is_present(self, axis: Axis) -> bool: + is_ot2 = axis in Axis.ot2_axes() + if not is_ot2: + return False + if axis in Axis.pipette_axes(): + mount = Axis.to_ot2_mount(axis) + if self.attached_pipettes.get(mount) is None: + return False + return True + @ExecutionManagerProvider.wait_for_running async def _fast_home(self, axes: Sequence[str], margin: float) -> Dict[str, float]: converted_axes = "".join(axes) diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index 1b3275f4c7e..6c4b4f291bc 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -1674,7 +1674,12 @@ async def disengage_axes(self, which: List[Axis]) -> None: await self._backend.disengage_axes(which) async def engage_axes(self, which: List[Axis]) -> None: - await self._backend.engage_axes(which) + await self._backend.engage_axes( + [axis for axis in which if self._backend.axis_is_present(axis)] + ) + + def axis_is_present(self, axis: Axis) -> bool: + return self._backend.axis_is_present(axis) async def get_limit_switches(self) -> Dict[Axis, bool]: res = await self._backend.get_limit_switches() diff --git a/api/src/opentrons/hardware_control/protocols/hardware_manager.py b/api/src/opentrons/hardware_control/protocols/hardware_manager.py index ee0228ae3b8..d2bfd94a06b 100644 --- a/api/src/opentrons/hardware_control/protocols/hardware_manager.py +++ b/api/src/opentrons/hardware_control/protocols/hardware_manager.py @@ -1,7 +1,7 @@ from typing import Dict, Optional from typing_extensions import Protocol -from ..types import SubSystem, SubSystemState +from ..types import SubSystem, SubSystemState, Axis class HardwareManager(Protocol): @@ -45,3 +45,7 @@ def attached_subsystems(self) -> Dict[SubSystem, SubSystemState]: async def get_serial_number(self) -> Optional[str]: """Get the robot serial number, if provisioned. If not provisioned, will be None.""" ... + + def axis_is_present(self, axis: Axis) -> bool: + """Get whether a motor axis is present on the machine.""" + ... diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py index 02bc22b0396..4f80db24f42 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/unsafe_engage_axes.py @@ -52,10 +52,7 @@ async def execute( """Enable exes.""" ot3_hardware_api = ensure_ot3_hardware(self._hardware_api) await ot3_hardware_api.engage_axes( - [ - self._gantry_mover.motor_axis_to_hardware_axis(axis) - for axis in params.axes - ] + self._gantry_mover.motor_axes_to_present_hardware_axes(params.axes) ) return SuccessData( public=UnsafeEngageAxesResult(), diff --git a/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py b/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py index ff06b6c22ed..6b050d6472f 100644 --- a/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py +++ b/api/src/opentrons/protocol_engine/commands/unsafe/update_position_estimators.py @@ -58,10 +58,7 @@ async def execute( """Update axis position estimators from their encoders.""" ot3_hardware_api = ensure_ot3_hardware(self._hardware_api) await ot3_hardware_api.update_axis_position_estimations( - [ - self._gantry_mover.motor_axis_to_hardware_axis(axis) - for axis in params.axes - ] + self._gantry_mover.motor_axes_to_present_hardware_axes(params.axes) ) return SuccessData( public=UpdatePositionEstimatorsResult(), diff --git a/api/src/opentrons/protocol_engine/execution/gantry_mover.py b/api/src/opentrons/protocol_engine/execution/gantry_mover.py index c77a9e1bad2..5413de8741c 100644 --- a/api/src/opentrons/protocol_engine/execution/gantry_mover.py +++ b/api/src/opentrons/protocol_engine/execution/gantry_mover.py @@ -159,6 +159,12 @@ def pick_mount_from_axis_map(self, axis_map: Dict[MotorAxis, float]) -> Mount: """Find a mount axis in the axis_map if it exists otherwise default to left mount.""" ... + def motor_axes_to_present_hardware_axes( + self, motor_axes: List[MotorAxis] + ) -> List[HardwareAxis]: + """Transform a list of engine axes into a list of hardware axes, filtering out non-present axes.""" + ... + class HardwareGantryMover(GantryMover): """Hardware API based gantry movement handler.""" @@ -167,6 +173,18 @@ def __init__(self, hardware_api: HardwareControlAPI, state_view: StateView) -> N self._hardware_api = hardware_api self._state_view = state_view + def motor_axes_to_present_hardware_axes( + self, motor_axes: List[MotorAxis] + ) -> List[HardwareAxis]: + """Get hardware axes from engine axes while filtering out non-present axes.""" + return [ + self.motor_axis_to_hardware_axis(motor_axis) + for motor_axis in motor_axes + if self._hardware_api.axis_is_present( + self.motor_axis_to_hardware_axis(motor_axis) + ) + ] + def motor_axis_to_hardware_axis(self, motor_axis: MotorAxis) -> HardwareAxis: """Transform an engine motor axis into a hardware axis.""" return _MOTOR_AXIS_TO_HARDWARE_AXIS[motor_axis] @@ -643,6 +661,14 @@ async def prepare_for_mount_movement(self, mount: Mount) -> None: """Retract the 'idle' mount if necessary.""" pass + def motor_axes_to_present_hardware_axes( + self, motor_axes: List[MotorAxis] + ) -> List[HardwareAxis]: + """Get present hardware axes from a list of engine axes. In simulation, all axes are present.""" + return [ + self.motor_axis_to_hardware_axis(motor_axis) for motor_axis in motor_axes + ] + def create_gantry_mover( state_view: StateView, hardware_api: HardwareControlAPI diff --git a/api/tests/opentrons/protocol_engine/commands/unsafe/test_engage_axes.py b/api/tests/opentrons/protocol_engine/commands/unsafe/test_engage_axes.py index 72fb761ad23..1f40523e4e1 100644 --- a/api/tests/opentrons/protocol_engine/commands/unsafe/test_engage_axes.py +++ b/api/tests/opentrons/protocol_engine/commands/unsafe/test_engage_axes.py @@ -22,21 +22,28 @@ async def test_engage_axes_implementation( ) data = UnsafeEngageAxesParams( - axes=[MotorAxis.LEFT_Z, MotorAxis.LEFT_PLUNGER, MotorAxis.X, MotorAxis.Y] - ) - - decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.LEFT_Z)).then_return( - Axis.Z_L + axes=[ + MotorAxis.LEFT_Z, + MotorAxis.LEFT_PLUNGER, + MotorAxis.X, + MotorAxis.Y, + MotorAxis.RIGHT_Z, + MotorAxis.RIGHT_PLUNGER, + ] ) decoy.when( - gantry_mover.motor_axis_to_hardware_axis(MotorAxis.LEFT_PLUNGER) - ).then_return(Axis.P_L) - decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.X)).then_return( - Axis.X - ) - decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.Y)).then_return( - Axis.Y - ) + gantry_mover.motor_axes_to_present_hardware_axes( + [ + MotorAxis.LEFT_Z, + MotorAxis.LEFT_PLUNGER, + MotorAxis.X, + MotorAxis.Y, + MotorAxis.RIGHT_Z, + MotorAxis.RIGHT_PLUNGER, + ] + ) + ).then_return([Axis.Z_L, Axis.P_L, Axis.X, Axis.Y]) + decoy.when( await ot3_hardware_api.update_axis_position_estimations( [Axis.Z_L, Axis.P_L, Axis.X, Axis.Y] diff --git a/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py b/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py index da381635ce3..e281502308c 100644 --- a/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py +++ b/api/tests/opentrons/protocol_engine/commands/unsafe/test_update_position_estimators.py @@ -22,21 +22,27 @@ async def test_update_position_estimators_implementation( ) data = UpdatePositionEstimatorsParams( - axes=[MotorAxis.LEFT_Z, MotorAxis.LEFT_PLUNGER, MotorAxis.X, MotorAxis.Y] - ) - - decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.LEFT_Z)).then_return( - Axis.Z_L + axes=[ + MotorAxis.LEFT_Z, + MotorAxis.LEFT_PLUNGER, + MotorAxis.X, + MotorAxis.Y, + MotorAxis.RIGHT_Z, + MotorAxis.RIGHT_PLUNGER, + ] ) decoy.when( - gantry_mover.motor_axis_to_hardware_axis(MotorAxis.LEFT_PLUNGER) - ).then_return(Axis.P_L) - decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.X)).then_return( - Axis.X - ) - decoy.when(gantry_mover.motor_axis_to_hardware_axis(MotorAxis.Y)).then_return( - Axis.Y - ) + gantry_mover.motor_axes_to_present_hardware_axes( + [ + MotorAxis.LEFT_Z, + MotorAxis.LEFT_PLUNGER, + MotorAxis.X, + MotorAxis.Y, + MotorAxis.RIGHT_Z, + MotorAxis.RIGHT_PLUNGER, + ] + ) + ).then_return([Axis.Z_L, Axis.P_L, Axis.X, Axis.Y]) result = await subject.execute(data) diff --git a/app/src/assets/localization/en/error_recovery.json b/app/src/assets/localization/en/error_recovery.json index b46e276c48b..e4e1b5164eb 100644 --- a/app/src/assets/localization/en/error_recovery.json +++ b/app/src/assets/localization/en/error_recovery.json @@ -8,6 +8,7 @@ "blowout_failed": "Blowout failed", "cancel_run": "Cancel run", "canceling_run": "Canceling run", + "carefully_move_labware": "Carefully move any misplaced labware and clean up any spilled liquid.Close the robot door before proceeding.", "change_location": "Change location", "change_tip_pickup_location": "Change tip pick-up location", "choose_a_recovery_action": "Choose a recovery action", @@ -32,6 +33,9 @@ "gripper_errors_occur_when": "Gripper errors occur when the gripper stalls or collides with another object on the deck and are usually caused by improperly placed labware or inaccurate labware offsets", "gripper_releasing_labware": "Gripper releasing labware", "gripper_will_release_in_s": "Gripper will release labware in {{seconds}} seconds", + "home_and_retry": "Home gantry and retry step", + "home_gantry": "Home gantry", + "home_now": "Home now", "homing_pipette_dangerous": "Homing the {{mount}} pipette with liquid in the tips may damage it. You must remove all tips before using the pipette again.", "if_issue_persists_gripper_error": " If the issue persists, cancel the run and rerun gripper calibration", "if_issue_persists_overpressure": " If the issue persists, cancel the run and make the necessary changes to the protocol", @@ -57,7 +61,9 @@ "overpressure_is_usually_caused": "Overpressure is usually caused by a tip contacting labware, a clog, or moving viscous liquid too quickly", "pick_up_tips": "Pick up tips", "pipette_overpressure": "Pipette overpressure", + "prepare_deck_for_homing": "Prepare deck for homing", "proceed_to_cancel": "Proceed to cancel", + "proceed_to_home": "Proceed to home", "proceed_to_tip_selection": "Proceed to tip selection", "recovery_action_failed": "{{action}} failed", "recovery_mode": "Recovery mode", @@ -96,6 +102,8 @@ "skip_to_next_step_same_tips": "Skip to next step with same tips", "skipping_to_step_succeeded": "Skipping to step {{step}} succeeded.", "skipping_to_step_succeeded_na": "Skipping to next step succeeded.", + "stall_or_collision_detected_when": "A stall or collision is detected when the robot's motors are blocked", + "stall_or_collision_error": "Stall or collision", "stand_back": "Stand back, robot is in motion", "stand_back_picking_up_tips": "Stand back, picking up tips", "stand_back_resuming": "Stand back, resuming current step", @@ -105,7 +113,9 @@ "take_necessary_actions": "First, take any necessary actions to prepare the robot to retry the failed step.Then, close the robot door before proceeding.", "take_necessary_actions_failed_pickup": "First, take any necessary actions to prepare the robot to retry the failed tip pickup.Then, close the robot door before proceeding.", "take_necessary_actions_failed_tip_drop": "First, take any necessary actions to prepare the robot to retry the failed tip drop.Then, close the robot door before proceeding.", + "take_necessary_actions_home": "Take any necessary actions to prepare the robot to move the gantry to its home position.Close the robot door before proceeding.", "terminate_remote_activity": "Terminate remote activity", + "the_robot_must_return_to_home_position": "The robot must return to its home position before proceeding", "tip_drop_failed": "Tip drop failed", "tip_not_detected": "Tip not detected", "tip_presence_errors_are_caused": "Tip presence errors are usually caused by improperly placed labware or inaccurate labware offsets", diff --git a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx index 2c6f047f80d..bd52195faf8 100644 --- a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryWizard.tsx @@ -19,6 +19,7 @@ import { IgnoreErrorSkipStep, ManualMoveLwAndSkip, ManualReplaceLwAndRetry, + HomeAndRetry, } from './RecoveryOptions' import { useErrorDetailsModal, @@ -225,6 +226,10 @@ export function ErrorRecoveryContent(props: RecoveryContentProps): JSX.Element { return } + const buildHomeAndRetry = (): JSX.Element => { + return + } + switch (props.recoveryMap.route) { case RECOVERY_MAP.OPTION_SELECTION.ROUTE: return buildSelectRecoveryOption() @@ -264,6 +269,8 @@ export function ErrorRecoveryContent(props: RecoveryContentProps): JSX.Element { return buildRecoveryInProgress() case RECOVERY_MAP.ROBOT_DOOR_OPEN.ROUTE: return buildManuallyRouteToDoorOpen() + case RECOVERY_MAP.HOME_AND_RETRY.ROUTE: + return buildHomeAndRetry() default: return buildSelectRecoveryOption() } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/CancelRun.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/CancelRun.tsx index b3cdd5fe257..fa66d614011 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/CancelRun.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/CancelRun.tsx @@ -35,7 +35,9 @@ export function CancelRun(props: RecoveryContentProps): JSX.Element { case CANCEL_RUN.STEPS.CONFIRM_CANCEL: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `CancelRun: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/FillWellAndSkip.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/FillWellAndSkip.tsx index dc74ed7e529..d01ea7dfe4e 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/FillWellAndSkip.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/FillWellAndSkip.tsx @@ -34,7 +34,9 @@ export function FillWellAndSkip(props: RecoveryContentProps): JSX.Element { case CANCEL_RUN.STEPS.CONFIRM_CANCEL: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `FillWellAndSkip: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/HomeAndRetry.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/HomeAndRetry.tsx new file mode 100644 index 00000000000..00ebdfb35ee --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/HomeAndRetry.tsx @@ -0,0 +1,147 @@ +import { Trans, useTranslation } from 'react-i18next' +import { LegacyStyledText } from '@opentrons/components' +import { RECOVERY_MAP } from '../constants' +import { + TwoColTextAndFailedStepNextStep, + TwoColLwInfoAndDeck, + SelectTips, + RecoveryDoorOpenSpecial, + RetryStepInfo, +} from '../shared' +import { ManageTips } from './ManageTips' +import { SelectRecoveryOption } from './SelectRecoveryOption' + +import type { RecoveryContentProps } from '../types' + +const { HOME_AND_RETRY } = RECOVERY_MAP +export function HomeAndRetry(props: RecoveryContentProps): JSX.Element { + const { recoveryMap } = props + const { route, step } = recoveryMap + switch (step) { + case HOME_AND_RETRY.STEPS.PREPARE_DECK_FOR_HOME: { + return + } + case HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE: { + // TODO: Make this work the same way as e.g. RetryNewTips by changing one of them. Or both of them. + return + } + case HOME_AND_RETRY.STEPS.REPLACE_TIPS: { + return + } + case HOME_AND_RETRY.STEPS.SELECT_TIPS: { + return + } + case HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY: { + return + } + case HOME_AND_RETRY.STEPS.CLOSE_DOOR_AND_HOME: { + return + } + case HOME_AND_RETRY.STEPS.CONFIRM_RETRY: { + return + } + default: + console.warn( + `HomeAndRetry: ${step} in ${route} not explicitly handled. Rerouting.}` + ) + return + } +} + +export function RetryAfterHome(props: RecoveryContentProps): JSX.Element { + const { recoveryMap, routeUpdateActions } = props + const { step, route } = recoveryMap + const { HOME_AND_RETRY } = RECOVERY_MAP + const { proceedToRouteAndStep } = routeUpdateActions + + const buildContent = (): JSX.Element => { + switch (step) { + case HOME_AND_RETRY.STEPS.CONFIRM_RETRY: + return ( + + proceedToRouteAndStep( + HOME_AND_RETRY.ROUTE, + HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY + ) + } + /> + ) + default: + console.warn( + `RetryStep: ${step} in ${route} not explicitly handled. Rerouting.` + ) + return + } + } + return buildContent() +} + +export function PrepareDeckForHome(props: RecoveryContentProps): JSX.Element { + const { t } = useTranslation('error_recovery') + const { routeUpdateActions, tipStatusUtils } = props + const { proceedToRouteAndStep } = routeUpdateActions + const primaryBtnOnClick = (): Promise => + proceedToRouteAndStep( + RECOVERY_MAP.HOME_AND_RETRY.ROUTE, + tipStatusUtils.areTipsAttached + ? RECOVERY_MAP.HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE + : RECOVERY_MAP.HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY + ) + const buildBodyText = (): JSX.Element => ( + }} + /> + ) + return ( + + ) +} + +export function HomeGantryBeforeRetry( + props: RecoveryContentProps +): JSX.Element { + const { t } = useTranslation('error_recovery') + const { routeUpdateActions, tipStatusUtils } = props + const { proceedToRouteAndStep } = routeUpdateActions + const { HOME_AND_RETRY } = RECOVERY_MAP + const buildBodyText = (): JSX.Element => ( + }} + /> + ) + const secondaryBtnOnClick = (): Promise => + proceedToRouteAndStep( + RECOVERY_MAP.HOME_AND_RETRY.ROUTE, + tipStatusUtils.areTipsAttached + ? RECOVERY_MAP.HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE + : RECOVERY_MAP.HOME_AND_RETRY.STEPS.PREPARE_DECK_FOR_HOME + ) + + const primaryBtnOnClick = (): Promise => + proceedToRouteAndStep( + HOME_AND_RETRY.ROUTE, + HOME_AND_RETRY.STEPS.CLOSE_DOOR_AND_HOME + ) + return ( + + ) +} diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/IgnoreErrorSkipStep.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/IgnoreErrorSkipStep.tsx index c17e947853b..16cb755d4da 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/IgnoreErrorSkipStep.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/IgnoreErrorSkipStep.tsx @@ -41,7 +41,9 @@ export function IgnoreErrorSkipStep(props: RecoveryContentProps): JSX.Element { case IGNORE_AND_SKIP.STEPS.SKIP_STEP: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `IgnoreErrorAndSkipStep: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx index 1609acfa0ca..9061ba9b638 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManageTips.tsx @@ -34,7 +34,7 @@ export function ManageTips(props: RecoveryContentProps): JSX.Element { routeAlternativelyIfNoPipette(props) const buildContent = (): JSX.Element => { - const { DROP_TIP_FLOWS } = RECOVERY_MAP + const { DROP_TIP_FLOWS, HOME_AND_RETRY } = RECOVERY_MAP const { step, route } = recoveryMap switch (step) { @@ -44,8 +44,12 @@ export function ManageTips(props: RecoveryContentProps): JSX.Element { case DROP_TIP_FLOWS.STEPS.CHOOSE_BLOWOUT: case DROP_TIP_FLOWS.STEPS.CHOOSE_TIP_DROP: return + case HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE: + return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `ManageTips: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } @@ -68,11 +72,23 @@ export function BeginRemoval({ } = routeUpdateActions const { cancelRun } = recoveryCommands const { selectedRecoveryOption } = currentRecoveryOptionUtils - const { ROBOT_CANCELING, RETRY_NEW_TIPS } = RECOVERY_MAP + const { + ROBOT_CANCELING, + RETRY_NEW_TIPS, + HOME_AND_RETRY, + DROP_TIP_FLOWS, + } = RECOVERY_MAP const mount = aPipetteWithTip?.mount const primaryOnClick = (): void => { - void proceedNextStep() + if (selectedRecoveryOption === HOME_AND_RETRY.ROUTE) { + void proceedToRouteAndStep( + DROP_TIP_FLOWS.ROUTE, + DROP_TIP_FLOWS.STEPS.BEFORE_BEGINNING + ) + } else { + void proceedNextStep() + } } const secondaryOnClick = (): void => { @@ -81,6 +97,11 @@ export function BeginRemoval({ RETRY_NEW_TIPS.ROUTE, RETRY_NEW_TIPS.STEPS.REPLACE_TIPS ) + } else if (selectedRecoveryOption === HOME_AND_RETRY.ROUTE) { + void proceedToRouteAndStep( + HOME_AND_RETRY.ROUTE, + HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY + ) } else { void handleMotionRouting(true, ROBOT_CANCELING.ROUTE).then(() => { cancelRun() @@ -149,7 +170,12 @@ function DropTipFlowsContainer( recoveryCommands, currentRecoveryOptionUtils, } = props - const { DROP_TIP_FLOWS, ROBOT_CANCELING, RETRY_NEW_TIPS } = RECOVERY_MAP + const { + DROP_TIP_FLOWS, + ROBOT_CANCELING, + RETRY_NEW_TIPS, + HOME_AND_RETRY, + } = RECOVERY_MAP const { proceedToRouteAndStep, handleMotionRouting } = routeUpdateActions const { selectedRecoveryOption } = currentRecoveryOptionUtils const { setTipStatusResolved } = tipStatusUtils @@ -163,6 +189,11 @@ function DropTipFlowsContainer( RETRY_NEW_TIPS.ROUTE, RETRY_NEW_TIPS.STEPS.REPLACE_TIPS ) + } else if (selectedRecoveryOption === HOME_AND_RETRY.ROUTE) { + void proceedToRouteAndStep( + HOME_AND_RETRY.ROUTE, + HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY + ) } else { void setTipStatusResolved(onEmptyCache, onTipsDetected) } @@ -208,6 +239,7 @@ export function useDropTipFlowUtils({ SKIP_STEP_WITH_NEW_TIPS, ERROR_WHILE_RECOVERING, DROP_TIP_FLOWS, + HOME_AND_RETRY, } = RECOVERY_MAP const { runId, gripperErrorFirstPipetteWithTip } = tipStatusUtils const { step } = recoveryMap @@ -220,6 +252,7 @@ export function useDropTipFlowUtils({ switch (selectedRecoveryOption) { case RETRY_NEW_TIPS.ROUTE: case SKIP_STEP_WITH_NEW_TIPS.ROUTE: + case HOME_AND_RETRY.ROUTE: return t('proceed_to_tip_selection') default: return t('proceed_to_cancel') @@ -243,6 +276,10 @@ export function useDropTipFlowUtils({ SKIP_STEP_WITH_NEW_TIPS.STEPS.REPLACE_TIPS ) } + case HOME_AND_RETRY.ROUTE: + return () => { + routeTo(selectedRecoveryOption, HOME_AND_RETRY.STEPS.REPLACE_TIPS) + } default: return null } @@ -336,6 +373,7 @@ function routeAlternativelyIfNoPipette(props: RecoveryContentProps): void { RETRY_NEW_TIPS, SKIP_STEP_WITH_NEW_TIPS, OPTION_SELECTION, + HOME_AND_RETRY, } = RECOVERY_MAP if (tipStatusUtils.aPipetteWithTip == null) @@ -354,6 +392,13 @@ function routeAlternativelyIfNoPipette(props: RecoveryContentProps): void { ) break } + case HOME_AND_RETRY.ROUTE: { + proceedToRouteAndStep( + selectedRecoveryOption, + HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY + ) + break + } default: { proceedToRouteAndStep(OPTION_SELECTION.ROUTE) } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualMoveLwAndSkip.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualMoveLwAndSkip.tsx index 123493480f7..5cf8ef81a65 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualMoveLwAndSkip.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualMoveLwAndSkip.tsx @@ -28,7 +28,9 @@ export function ManualMoveLwAndSkip(props: RecoveryContentProps): JSX.Element { case MANUAL_MOVE_AND_SKIP.STEPS.SKIP: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `ManualMoveLwAndSkipStep: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualReplaceLwAndRetry.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualReplaceLwAndRetry.tsx index 11ffe783d42..313d3d1f086 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualReplaceLwAndRetry.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ManualReplaceLwAndRetry.tsx @@ -30,7 +30,9 @@ export function ManualReplaceLwAndRetry( case MANUAL_REPLACE_AND_RETRY.STEPS.RETRY: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `ManualReplaceLwAndRetry: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryNewTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryNewTips.tsx index f6e86cd6923..003e776824d 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryNewTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryNewTips.tsx @@ -35,7 +35,9 @@ export function RetryNewTips(props: RecoveryContentProps): JSX.Element { case RETRY_NEW_TIPS.STEPS.RETRY: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `RetryNewTips: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetrySameTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetrySameTips.tsx index 93a0d84689d..0c28eb2a2da 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetrySameTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetrySameTips.tsx @@ -18,7 +18,9 @@ export function RetrySameTips(props: RecoveryContentProps): JSX.Element { case RETRY_SAME_TIPS.STEPS.RETRY: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `RetrySameTips: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryStep.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryStep.tsx index 9b1f4d2c85a..a30b68d4358 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryStep.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/RetryStep.tsx @@ -14,7 +14,9 @@ export function RetryStep(props: RecoveryContentProps): JSX.Element { case RETRY_STEP.STEPS.CONFIRM_RETRY: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `RetryStep: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx index 59888c39c42..e271cc3be23 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx @@ -168,9 +168,16 @@ export function getRecoveryOptions(errorKind: ErrorKind): RecoveryRoute[] { return GRIPPER_ERROR_OPTIONS case ERROR_KINDS.GENERAL_ERROR: return GENERAL_ERROR_OPTIONS + case ERROR_KINDS.STALL_OR_COLLISION: + return STALL_OR_COLLISION_OPTIONS } } +export const STALL_OR_COLLISION_OPTIONS: RecoveryRoute[] = [ + RECOVERY_MAP.HOME_AND_RETRY.ROUTE, + RECOVERY_MAP.CANCEL_RUN.ROUTE, +] + export const NO_LIQUID_DETECTED_OPTIONS: RecoveryRoute[] = [ RECOVERY_MAP.MANUAL_FILL_AND_SKIP.ROUTE, RECOVERY_MAP.IGNORE_AND_SKIP.ROUTE, diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepNewTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepNewTips.tsx index 647bded71e1..b237afd82f0 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepNewTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepNewTips.tsx @@ -29,7 +29,9 @@ export function SkipStepNewTips( case SKIP_STEP_WITH_NEW_TIPS.STEPS.SKIP: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `SkipStepNewTips: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepSameTips.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepSameTips.tsx index 2b56012d5ab..9990d94171a 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepSameTips.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SkipStepSameTips.tsx @@ -14,7 +14,9 @@ export function SkipStepSameTips(props: RecoveryContentProps): JSX.Element { case SKIP_STEP_WITH_SAME_TIPS.STEPS.SKIP: return default: - console.warn(`${step} in ${route} not explicitly handled. Rerouting.`) + console.warn( + `SkipStepSameTips: ${step} in ${route} not explicitly handled. Rerouting.` + ) return } } diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/HomeAndRetry.test.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/HomeAndRetry.test.tsx new file mode 100644 index 00000000000..3286041b7fb --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/HomeAndRetry.test.tsx @@ -0,0 +1,154 @@ +import type * as React from 'react' +import { describe, it, vi, beforeEach, afterEach } from 'vitest' +import { screen } from '@testing-library/react' + +import { mockRecoveryContentProps } from '../../__fixtures__' +import { renderWithProviders } from '/app/__testing-utils__' +import { i18n } from '/app/i18n' +import { RECOVERY_MAP } from '../../constants' +import { SelectRecoveryOption } from '../SelectRecoveryOption' +import { HomeAndRetry } from '../HomeAndRetry' +import { TipSelection } from '../../shared/TipSelection' + +vi.mock('../SelectRecoveryOption') +vi.mock('../../shared/TipSelection') + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('HomeAndRetry', () => { + let props: React.ComponentProps + beforeEach(() => { + props = { + ...mockRecoveryContentProps, + currentRecoveryOptionUtils: { + ...mockRecoveryContentProps.currentRecoveryOptionUtils, + selectedRecoveryOption: RECOVERY_MAP.HOME_AND_RETRY.ROUTE, + }, + } + vi.mocked(SelectRecoveryOption).mockReturnValue( +
MOCK_SELECT_RECOVERY_OPTION
+ ) + vi.mocked(TipSelection).mockReturnValue(
WELL_SELECTION
) + }) + afterEach(() => { + vi.resetAllMocks() + }) + it(`renders PrepareDeckForHome when step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.PREPARE_DECK_FOR_HOME}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.PREPARE_DECK_FOR_HOME, + }, + } + render(props) + screen.getByText('Prepare deck for homing') + }) + it(`renders ManageTips when step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE, + }, + tipStatusUtils: { + ...props.tipStatusUtils, + aPipetteWithTip: { + mount: 'left', + } as any, + }, + } + render(props) + screen.getByText('Remove any attached tips') + }) + it(`renders labware info when step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.REPLACE_TIPS}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.REPLACE_TIPS, + }, + failedLabwareUtils: { + ...props.failedLabwareUtils, + relevantWellName: 'A2', + failedLabwareLocations: { + ...props.failedLabwareUtils.failedLabwareLocations, + displayNameCurrentLoc: 'B2', + }, + }, + } + + render(props) + screen.getByText('Replace used tips in rack location A2 in B2') + }) + it(`renders SelectTips when step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.SELECT_TIPS}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.SELECT_TIPS, + }, + failedLabwareUtils: { + ...props.failedLabwareUtils, + failedLabwareLocations: { + ...props.failedLabwareUtils.failedLabwareLocations, + displayNameCurrentLoc: 'B2', + }, + }, + } + render(props) + screen.getByText('Select tip pick-up location') + }) + it(`renders HomeGantryBeforeRetry when step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY, + }, + } + render(props) + screen.getByText('Home gantry') + }) + it(`renders the special door open handler when step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.CLOSE_DOOR_AND_HOME}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.CLOSE_DOOR_AND_HOME, + }, + doorStatusUtils: { + ...props.doorStatusUtils, + isDoorOpen: true, + }, + } + render(props) + screen.getByText('Close the robot door') + }) + it(`renders RetryAfterHome awhen step is ${RECOVERY_MAP.HOME_AND_RETRY.STEPS.CONFIRM_RETRY}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: RECOVERY_MAP.HOME_AND_RETRY.STEPS.CONFIRM_RETRY, + }, + } + render(props) + screen.getByText('Retry step') + }) + it(`renders SelectRecoveryOption as a fallback`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + step: 'UNKNOWN_STEP' as any, + }, + } + render(props) + screen.getByText('MOCK_SELECT_RECOVERY_OPTION') + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx index a0dd0c778ca..62fe8eea3c8 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx @@ -18,6 +18,7 @@ import { TIP_NOT_DETECTED_OPTIONS, TIP_DROP_FAILED_OPTIONS, GRIPPER_ERROR_OPTIONS, + STALL_OR_COLLISION_OPTIONS, } from '../SelectRecoveryOption' import { RECOVERY_MAP, ERROR_KINDS } from '../../constants' import { clickButtonLabeled } from '../../__tests__/util' @@ -95,6 +96,9 @@ describe('SelectRecoveryOption', () => { expect.any(String) ) .thenReturn('Skip to next step with same tips') + when(mockGetRecoveryOptionCopy) + .calledWith(RECOVERY_MAP.HOME_AND_RETRY.ROUTE, expect.any(String)) + .thenReturn('Home gantry and retry') }) it('sets the selected recovery option when clicking continue', () => { @@ -231,6 +235,22 @@ describe('SelectRecoveryOption', () => { RECOVERY_MAP.RETRY_STEP.ROUTE ) }) + it('renders appropriate "Stall or collision" copy and click behavior', () => { + props = { + ...props, + errorKind: ERROR_KINDS.STALL_OR_COLLISION, + } + renderSelectRecoveryOption(props) + screen.getByText('Choose a recovery action') + const homeGantryAndRetry = screen.getAllByRole('label', { + name: 'Home gantry and retry', + }) + fireEvent.click(homeGantryAndRetry[0]) + clickButtonLabeled('Continue') + expect(mockProceedToRouteAndStep).toHaveBeenCalledWith( + RECOVERY_MAP.HOME_AND_RETRY.ROUTE + ) + }) }) describe('RecoveryOptions', () => { let props: React.ComponentProps @@ -292,6 +312,9 @@ describe('RecoveryOptions', () => { expect.any(String) ) .thenReturn('Manually replace labware on deck and retry step') + when(mockGetRecoveryOptionCopy) + .calledWith(RECOVERY_MAP.HOME_AND_RETRY.ROUTE, expect.any(String)) + .thenReturn('Home gantry and retry') }) it('renders valid recovery options for a general error errorKind', () => { @@ -415,6 +438,17 @@ describe('RecoveryOptions', () => { }) screen.getByRole('label', { name: 'Cancel run' }) }) + it(`renders valid recovery options for a ${ERROR_KINDS.STALL_OR_COLLISION} errorKind`, () => { + props = { + ...props, + validRecoveryOptions: STALL_OR_COLLISION_OPTIONS, + } + renderRecoveryOptions(props) + screen.getByRole('label', { + name: 'Home gantry and retry', + }) + screen.getByRole('label', { name: 'Cancel run' }) + }) }) describe('getRecoveryOptions', () => { @@ -475,4 +509,11 @@ describe('getRecoveryOptions', () => { ) expect(overpressureWhileDispensingOptions).toBe(GRIPPER_ERROR_OPTIONS) }) + + it(`returns valid options when the errorKind is ${ERROR_KINDS.STALL_OR_COLLISION}`, () => { + const stallOrCollisionOptions = getRecoveryOptions( + ERROR_KINDS.STALL_OR_COLLISION + ) + expect(stallOrCollisionOptions).toBe(STALL_OR_COLLISION_OPTIONS) + }) }) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts index 0e50d054523..0ad8f530709 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts @@ -10,3 +10,4 @@ export { SkipStepNewTips } from './SkipStepNewTips' export { IgnoreErrorSkipStep } from './IgnoreErrorSkipStep' export { ManualMoveLwAndSkip } from './ManualMoveLwAndSkip' export { ManualReplaceLwAndRetry } from './ManualReplaceLwAndRetry' +export { HomeAndRetry } from './HomeAndRetry' diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx index dd915b72afb..d97072e45f3 100644 --- a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryWizard.test.tsx @@ -24,6 +24,7 @@ import { IgnoreErrorSkipStep, ManualReplaceLwAndRetry, ManualMoveLwAndSkip, + HomeAndRetry, } from '../RecoveryOptions' import { RecoveryInProgress } from '../RecoveryInProgress' import { RecoveryError } from '../RecoveryError' @@ -188,6 +189,7 @@ describe('ErrorRecoveryContent', () => { ROBOT_RELEASING_LABWARE, MANUAL_REPLACE_AND_RETRY, MANUAL_MOVE_AND_SKIP, + HOME_AND_RETRY, } = RECOVERY_MAP let props: React.ComponentProps @@ -225,6 +227,7 @@ describe('ErrorRecoveryContent', () => { vi.mocked(RecoveryDoorOpenSpecial).mockReturnValue(
MOCK_DOOR_OPEN_SPECIAL
) + vi.mocked(HomeAndRetry).mockReturnValue(
MOCK_HOME_AND_RETRY
) }) it(`returns SelectRecoveryOption when the route is ${OPTION_SELECTION.ROUTE}`, () => { @@ -505,4 +508,17 @@ describe('ErrorRecoveryContent', () => { screen.getByText('MOCK_DOOR_OPEN_SPECIAL') }) + + it(`returns HomeAndRetry when the route is ${HOME_AND_RETRY.ROUTE}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + route: HOME_AND_RETRY.ROUTE, + }, + } + renderRecoveryContent(props) + + screen.getByText('MOCK_HOME_AND_RETRY') + }) }) diff --git a/app/src/organisms/ErrorRecoveryFlows/constants.ts b/app/src/organisms/ErrorRecoveryFlows/constants.ts index 75835fd29f3..8be1b6adbe1 100644 --- a/app/src/organisms/ErrorRecoveryFlows/constants.ts +++ b/app/src/organisms/ErrorRecoveryFlows/constants.ts @@ -20,6 +20,7 @@ export const DEFINED_ERROR_TYPES = { TIP_PHYSICALLY_MISSING: 'tipPhysicallyMissing', TIP_PHYSICALLY_ATTACHED: 'tipPhysicallyAttached', GRIPPER_MOVEMENT: 'gripperMovement', + STALL_OR_COLLISION: 'stallOrCollision', } // Client-defined error-handling flows. @@ -32,6 +33,7 @@ export const ERROR_KINDS = { TIP_NOT_DETECTED: 'TIP_NOT_DETECTED', TIP_DROP_FAILED: 'TIP_DROP_FAILED', GRIPPER_ERROR: 'GRIPPER_ERROR', + STALL_OR_COLLISION: 'STALL_OR_COLLISION', } as const // TODO(jh, 06-14-24): Consolidate motion routes to a single route with several steps. @@ -55,6 +57,18 @@ export const RECOVERY_MAP = { DROP_TIP_GENERAL_ERROR: 'drop-tip-general-error', }, }, + HOME_AND_RETRY: { + ROUTE: 'home-and-retry', + STEPS: { + PREPARE_DECK_FOR_HOME: 'prepare-deck-for-home', + REMOVE_TIPS_FROM_PIPETTE: 'remove-tips-from-pipette', + REPLACE_TIPS: 'replace-tips', + SELECT_TIPS: 'select-tips', + HOME_BEFORE_RETRY: 'home-before-retry', + CLOSE_DOOR_AND_HOME: 'close-door-and-home', + CONFIRM_RETRY: 'confirm-retry', + }, + }, ROBOT_CANCELING: { ROUTE: 'robot-cancel-run', STEPS: { @@ -210,6 +224,7 @@ const { MANUAL_REPLACE_AND_RETRY, SKIP_STEP_WITH_NEW_TIPS, SKIP_STEP_WITH_SAME_TIPS, + HOME_AND_RETRY, } = RECOVERY_MAP // The deterministic ordering of steps for a given route. @@ -277,6 +292,15 @@ export const STEP_ORDER: StepOrder = { ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_TIP_DROP_FAILED, ERROR_WHILE_RECOVERING.STEPS.DROP_TIP_BLOWOUT_FAILED, ], + [HOME_AND_RETRY.ROUTE]: [ + HOME_AND_RETRY.STEPS.PREPARE_DECK_FOR_HOME, + HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE, + HOME_AND_RETRY.STEPS.REPLACE_TIPS, + HOME_AND_RETRY.STEPS.SELECT_TIPS, + HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY, + HOME_AND_RETRY.STEPS.CLOSE_DOOR_AND_HOME, + HOME_AND_RETRY.STEPS.CONFIRM_RETRY, + ], } // Contains metadata specific to all routes and/or steps. @@ -333,6 +357,15 @@ export const RECOVERY_MAP_METADATA: RecoveryRouteStepMetadata = { [ROBOT_DOOR_OPEN.ROUTE]: { [ROBOT_DOOR_OPEN.STEPS.DOOR_OPEN]: { allowDoorOpen: false }, }, + [HOME_AND_RETRY.ROUTE]: { + [HOME_AND_RETRY.STEPS.PREPARE_DECK_FOR_HOME]: { allowDoorOpen: true }, + [HOME_AND_RETRY.STEPS.REMOVE_TIPS_FROM_PIPETTE]: { allowDoorOpen: true }, + [HOME_AND_RETRY.STEPS.REPLACE_TIPS]: { allowDoorOpen: true }, + [HOME_AND_RETRY.STEPS.SELECT_TIPS]: { allowDoorOpen: true }, + [HOME_AND_RETRY.STEPS.HOME_BEFORE_RETRY]: { allowDoorOpen: true }, + [HOME_AND_RETRY.STEPS.CLOSE_DOOR_AND_HOME]: { allowDoorOpen: true }, + [HOME_AND_RETRY.STEPS.CONFIRM_RETRY]: { allowDoorOpen: true }, + }, [ROBOT_DOOR_OPEN_SPECIAL.ROUTE]: { [ROBOT_DOOR_OPEN_SPECIAL.STEPS.DOOR_OPEN]: { allowDoorOpen: true }, }, diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryOptionCopy.test.tsx b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryOptionCopy.test.tsx index 62a810cd96e..11e8a574246 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryOptionCopy.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/__tests__/useRecoveryOptionCopy.test.tsx @@ -111,6 +111,11 @@ describe('useRecoveryOptionCopy', () => { screen.getByText('Manually replace labware on deck and retry step') }) + it(`renders the correct copy for ${RECOVERY_MAP.HOME_AND_RETRY.ROUTE}`, () => { + render({ route: RECOVERY_MAP.HOME_AND_RETRY.ROUTE }) + screen.getByText('Home gantry and retry step') + }) + it('renders "Unknown action" for an unknown recovery option', () => { render({ route: 'unknown_route' as RecoveryRoute }) diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useErrorName.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useErrorName.ts index 6acd0df2f45..0279b8b675a 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useErrorName.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useErrorName.ts @@ -23,6 +23,8 @@ export function useErrorName(errorKind: ErrorKind): string { return t('tip_drop_failed') case ERROR_KINDS.GRIPPER_ERROR: return t('gripper_error') + case ERROR_KINDS.STALL_OR_COLLISION: + return t('stall_or_collision_error') default: return t('error') } diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useFailedLabwareUtils.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useFailedLabwareUtils.ts index bc077d4c624..f1a57aa965f 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useFailedLabwareUtils.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useFailedLabwareUtils.ts @@ -148,6 +148,7 @@ export function getRelevantFailedLabwareCmdFrom({ case ERROR_KINDS.OVERPRESSURE_PREPARE_TO_ASPIRATE: case ERROR_KINDS.OVERPRESSURE_WHILE_ASPIRATING: case ERROR_KINDS.OVERPRESSURE_WHILE_DISPENSING: + case ERROR_KINDS.STALL_OR_COLLISION: return getRelevantPickUpTipCommand(failedCommandByRunRecord, runCommands) case ERROR_KINDS.GRIPPER_ERROR: return failedCommandByRunRecord as MoveLabwareRunTimeCommand @@ -155,7 +156,7 @@ export function getRelevantFailedLabwareCmdFrom({ return null default: console.error( - 'No labware associated with failed command. Handle case explicitly.' + `useFailedLabwareUtils: No labware associated with error kind ${errorKind}. Handle case explicitly.` ) return null } diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts index 3e4b20225c5..01f5c4a7c94 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryCommands.ts @@ -70,6 +70,8 @@ export interface UseRecoveryCommandsResult { homeExceptPlungers: () => Promise /* A non-terminal recovery command */ moveLabwareWithoutPause: () => Promise + /* A non-terminal recovery-command */ + homeAll: () => Promise } // TODO(jh, 07-24-24): Create tighter abstractions for terminal vs. non-terminal commands. @@ -307,6 +309,10 @@ export function useRecoveryCommands({ return chainRunRecoveryCommands([HOME_EXCEPT_PLUNGERS]) }, [chainRunRecoveryCommands]) + const homeAll = useCallback((): Promise => { + return chainRunRecoveryCommands([HOME_ALL]) + }, [chainRunRecoveryCommands]) + const moveLabwareWithoutPause = useCallback((): Promise => { const moveLabwareCmd = buildMoveLabwareWithoutPause( unvalidatedFailedCommand @@ -329,6 +335,7 @@ export function useRecoveryCommands({ moveLabwareWithoutPause, skipFailedCommand, ignoreErrorKindThisRun, + homeAll, } } @@ -371,6 +378,11 @@ export const HOME_EXCEPT_PLUNGERS: CreateCommand = { }, } +export const HOME_ALL: CreateCommand = { + commandType: 'home', + params: {}, +} + const buildMoveLabwareWithoutPause = ( failedCommand: FailedCommand | null ): CreateCommand | null => { diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryOptionCopy.tsx b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryOptionCopy.tsx index b364af7f9d5..6c7f2f8fc94 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryOptionCopy.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryOptionCopy.tsx @@ -26,6 +26,8 @@ export function useRecoveryOptionCopy(): ( } case RECOVERY_MAP.CANCEL_RUN.ROUTE: return t('cancel_run') + case RECOVERY_MAP.HOME_AND_RETRY.ROUTE: + return t('home_and_retry') case RECOVERY_MAP.RETRY_NEW_TIPS.ROUTE: return t('retry_with_new_tips') case RECOVERY_MAP.RETRY_SAME_TIPS.ROUTE: diff --git a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts index 9fef84caca9..533b9877f72 100644 --- a/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts +++ b/app/src/organisms/ErrorRecoveryFlows/hooks/useRecoveryToasts.ts @@ -171,6 +171,7 @@ function handleRecoveryOptionAction( case RECOVERY_MAP.RETRY_NEW_TIPS.ROUTE: case RECOVERY_MAP.RETRY_STEP.ROUTE: case RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE: + case RECOVERY_MAP.HOME_AND_RETRY.ROUTE: return currentStepReturnVal default: { return null diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx index 7eb207a9fe7..603ac5af6c3 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx @@ -67,6 +67,7 @@ export function ErrorDetailsModal(props: ErrorDetailsModalProps): JSX.Element { case ERROR_KINDS.OVERPRESSURE_WHILE_DISPENSING: case ERROR_KINDS.TIP_NOT_DETECTED: case ERROR_KINDS.GRIPPER_ERROR: + case ERROR_KINDS.STALL_OR_COLLISION: return true default: return false @@ -213,6 +214,8 @@ export function NotificationBanner({ return case ERROR_KINDS.GRIPPER_ERROR: return + case ERROR_KINDS.STALL_OR_COLLISION: + return default: console.error('Handle error kind notification banners explicitly.') return
@@ -258,6 +261,18 @@ export function GripperErrorBanner(): JSX.Element { ) } +export function StallErrorBanner(): JSX.Element { + const { t } = useTranslation('error_recovery') + + return ( + + ) +} + // TODO(jh, 07-24-24): Using shared height/width constants for intervention modal sizing and the ErrorDetailsModal sizing // would be ideal. const DESKTOP_STEP_INFO_STYLE = css` diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx index 98744985225..00b64839b90 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/RecoveryDoorOpenSpecial.tsx @@ -52,6 +52,7 @@ export function RecoveryDoorOpenSpecial({ switch (selectedRecoveryOption) { case RECOVERY_MAP.MANUAL_REPLACE_AND_RETRY.ROUTE: case RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.ROUTE: + case RECOVERY_MAP.HOME_AND_RETRY.ROUTE: return t('door_open_robot_home') default: { console.error( @@ -62,6 +63,16 @@ export function RecoveryDoorOpenSpecial({ } } + const handleHomeAllAndRoute = ( + route: RecoveryRoute, + step?: RouteStep + ): void => { + void handleMotionRouting(true, RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE) + .then(() => recoveryCommands.homeAll()) + .finally(() => handleMotionRouting(false)) + .then(() => proceedToRouteAndStep(route, step)) + } + const handleHomeExceptPlungersAndRoute = ( route: RecoveryRoute, step?: RouteStep @@ -87,6 +98,12 @@ export function RecoveryDoorOpenSpecial({ RECOVERY_MAP.MANUAL_MOVE_AND_SKIP.STEPS.MANUAL_MOVE ) break + case RECOVERY_MAP.HOME_AND_RETRY.ROUTE: + handleHomeAllAndRoute( + RECOVERY_MAP.HOME_AND_RETRY.ROUTE, + RECOVERY_MAP.HOME_AND_RETRY.STEPS.CONFIRM_RETRY + ) + break default: { console.error( `Unhandled special-cased door open on route ${selectedRecoveryOption}.` diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/RetryStepInfo.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/RetryStepInfo.tsx index c9f7567ee94..fd7a1dbaf5f 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/RetryStepInfo.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/RetryStepInfo.tsx @@ -7,7 +7,9 @@ import { TwoColTextAndFailedStepNextStep } from './TwoColTextAndFailedStepNextSt import type { RecoveryContentProps } from '../types' -export function RetryStepInfo(props: RecoveryContentProps): JSX.Element { +export function RetryStepInfo( + props: RecoveryContentProps & { secondaryBtnOnClickOverride?: () => void } +): JSX.Element { const { routeUpdateActions, recoveryCommands, errorKind } = props const { ROBOT_RETRYING_STEP } = RECOVERY_MAP const { t } = useTranslation('error_recovery') diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx index 00fa95072c1..9bf8f12bc22 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/TwoColLwInfoAndDeck.tsx @@ -34,6 +34,7 @@ export function TwoColLwInfoAndDeck( SKIP_STEP_WITH_NEW_TIPS, MANUAL_MOVE_AND_SKIP, MANUAL_REPLACE_AND_RETRY, + HOME_AND_RETRY, } = RECOVERY_MAP const { selectedRecoveryOption } = currentRecoveryOptionUtils const { relevantWellName, failedLabware } = failedLabwareUtils @@ -55,6 +56,7 @@ export function TwoColLwInfoAndDeck( return t('manually_move_lw_on_deck') case MANUAL_REPLACE_AND_RETRY.ROUTE: return t('manually_replace_lw_on_deck') + case HOME_AND_RETRY.ROUTE: case RETRY_NEW_TIPS.ROUTE: case SKIP_STEP_WITH_NEW_TIPS.ROUTE: { // Only special case the "full" 96-channel nozzle config. @@ -72,7 +74,7 @@ export function TwoColLwInfoAndDeck( } default: console.error( - 'Unexpected recovery option. Handle retry step copy explicitly.' + `TwoColLwInfoAndDeck: Unexpected recovery option: ${selectedRecoveryOption}. Handle retry step copy explicitly.` ) return 'UNEXPECTED RECOVERY OPTION' } @@ -84,14 +86,15 @@ export function TwoColLwInfoAndDeck( case MANUAL_REPLACE_AND_RETRY.ROUTE: return t('ensure_lw_is_accurately_placed') case RETRY_NEW_TIPS.ROUTE: - case SKIP_STEP_WITH_NEW_TIPS.ROUTE: { + case SKIP_STEP_WITH_NEW_TIPS.ROUTE: + case HOME_AND_RETRY.ROUTE: { return isPartialTipConfigValid ? t('replace_tips_and_select_loc_partial_tip') : t('replace_tips_and_select_location') } default: console.error( - 'Unexpected recovery option. Handle retry step copy explicitly.' + `TwoColLwInfoAndDeck:buildBannerText: Unexpected recovery option ${selectedRecoveryOption}. Handle retry step copy explicitly.` ) return 'UNEXPECTED RECOVERY OPTION' } diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/ErrorDetailsModal.test.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/ErrorDetailsModal.test.tsx index d759aaf3d78..ce754df9cfa 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/ErrorDetailsModal.test.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/__tests__/ErrorDetailsModal.test.tsx @@ -14,6 +14,7 @@ import { OverpressureBanner, TipNotDetectedBanner, GripperErrorBanner, + StallErrorBanner, } from '../ErrorDetailsModal' vi.mock('react-dom', () => ({ @@ -201,3 +202,25 @@ describe('GripperErrorBanner', () => { ) }) }) + +describe('StallErrorBanner', () => { + beforeEach(() => { + vi.mocked(InlineNotification).mockReturnValue( +
MOCK_INLINE_NOTIFICATION
+ ) + }) + it('renders the InlineNotification', () => { + renderWithProviders(, { + i18nInstance: i18n, + }) + expect(vi.mocked(InlineNotification)).toHaveBeenCalledWith( + expect.objectContaining({ + type: 'alert', + heading: + "A stall or collision is detected when the robot's motors are blocked", + message: 'The robot must return to its home position before proceeding', + }), + {} + ) + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/utils/__tests__/getErrorKind.test.ts b/app/src/organisms/ErrorRecoveryFlows/utils/__tests__/getErrorKind.test.ts index e9b5722ffa8..fb3637c0eb5 100644 --- a/app/src/organisms/ErrorRecoveryFlows/utils/__tests__/getErrorKind.test.ts +++ b/app/src/organisms/ErrorRecoveryFlows/utils/__tests__/getErrorKind.test.ts @@ -68,6 +68,21 @@ describe('getErrorKind', () => { errorType: 'someHithertoUnknownDefinedErrorType', expectedError: ERROR_KINDS.GENERAL_ERROR, }, + ...([ + 'aspirate', + 'dispense', + 'blowOut', + 'moveToWell', + 'moveToAddressableArea', + 'dropTip', + 'pickUpTip', + 'prepareToAspirate', + ] as const).map(cmd => ({ + commandType: cmd, + errorType: DEFINED_ERROR_TYPES.STALL_OR_COLLISION, + expectedError: ERROR_KINDS.STALL_OR_COLLISION, + isDefined: true, + })), ])( 'returns $expectedError for $commandType with errorType $errorType', ({ commandType, errorType, expectedError, isDefined = true }) => { diff --git a/app/src/organisms/ErrorRecoveryFlows/utils/getErrorKind.ts b/app/src/organisms/ErrorRecoveryFlows/utils/getErrorKind.ts index 1dc5e023a6c..73fe862eb3b 100644 --- a/app/src/organisms/ErrorRecoveryFlows/utils/getErrorKind.ts +++ b/app/src/organisms/ErrorRecoveryFlows/utils/getErrorKind.ts @@ -54,6 +54,8 @@ export function getErrorKind( errorType === DEFINED_ERROR_TYPES.GRIPPER_MOVEMENT ) { return ERROR_KINDS.GRIPPER_ERROR + } else if (errorType === DEFINED_ERROR_TYPES.STALL_OR_COLLISION) { + return ERROR_KINDS.STALL_OR_COLLISION } } From 690fcc31496fc4a29d4b965c97623c970c32e031 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 2 Dec 2024 14:55:22 -0500 Subject: [PATCH 137/220] fix(app): Properly truncate ODD command text (#17003) --- .../ErrorRecoveryFlows/RecoverySplash.tsx | 15 ++++++++++++ .../CurrentRunningProtocolCommand.tsx | 23 +++++++++---------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx index cd31843f834..153d8c12931 100644 --- a/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/RecoverySplash.tsx @@ -6,6 +6,7 @@ import { ALIGN_CENTER, COLORS, DIRECTION_COLUMN, + RESPONSIVENESS, DISPLAY_FLEX, Flex, Icon, @@ -200,6 +201,7 @@ export function RecoverySplash(props: RecoverySplashProps): JSX.Element | null { overflowWrap={OVERFLOW_WRAP_BREAK_WORD} color={COLORS.white} textAlign={TEXT_ALIGN_CENTER} + css={TEXT_TRUNCATION_STYLE} /> @@ -253,6 +255,7 @@ export function RecoverySplash(props: RecoverySplashProps): JSX.Element | null { overflow="hidden" overflowWrap={OVERFLOW_WRAP_BREAK_WORD} textAlign={TEXT_ALIGN_CENTER} + css={TEXT_TRUNCATION_STYLE} /> @@ -301,6 +304,18 @@ const SplashFrame = styled(Flex)` padding-bottom: 0px; ` +const TEXT_TRUNCATION_STYLE = css` + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + + @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { + font-size: ${TYPOGRAPHY.fontSize22}; + } +` + const SHARED_BUTTON_STYLE_ODD = css` width: 29rem; height: 13.5rem; diff --git a/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx b/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx index 92c1d1f5733..d25e356ad0d 100644 --- a/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx +++ b/app/src/organisms/ODD/RunningProtocol/CurrentRunningProtocolCommand.tsx @@ -75,32 +75,31 @@ const RUN_TIMER_STYLE = css` color: ${COLORS.black90}; ` -const COMMAND_ROW_STYLE_ANIMATED = css` +const COMMAND_ROW_STYLE_BASE = css` font-size: 1.375rem; line-height: 1.75rem; font-weight: ${TYPOGRAPHY.fontWeightRegular}; text-align: center; - width: fit-content; + width: 100%; + max-width: 100%; margin: auto; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; + max-height: 4.6rem; // This ensures we don't show any extra text after truncating. + word-break: break-word; + white-space: normal; +` + +const COMMAND_ROW_STYLE_ANIMATED = css` + ${COMMAND_ROW_STYLE_BASE} animation: ${fadeIn} 1.5s ease-in-out; ${ODD_ANIMATION_OPTIMIZATIONS} ` const COMMAND_ROW_STYLE = css` - font-size: 1.375rem; - line-height: 1.75rem; - font-weight: ${TYPOGRAPHY.fontWeightRegular}; - text-align: center; - width: fit-content; - margin: auto; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; + ${COMMAND_ROW_STYLE_BASE} ` interface RunTimerInfo { From 985d6bc0f6660cdcde48c968a751873c426fb72f Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 2 Dec 2024 15:06:10 -0500 Subject: [PATCH 138/220] refactor(app): update pinned protocol copy (#17007) Closes RQA-3708 --- app/src/assets/localization/en/protocol_info.json | 2 ++ .../pages/ODD/ProtocolDashboard/PinnedProtocol.tsx | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/assets/localization/en/protocol_info.json b/app/src/assets/localization/en/protocol_info.json index 3307c45363f..66c2fc9aa89 100644 --- a/app/src/assets/localization/en/protocol_info.json +++ b/app/src/assets/localization/en/protocol_info.json @@ -10,6 +10,7 @@ "creation_method": "Creation Method", "custom_labware_not_supported": "Robot doesn't support custom labware", "date_added": "Date Added", + "date_added_date": "Date added {{date}}", "delete_protocol": "Delete protocol", "description": "Description", "drag_file_here": "Drag and drop protocol file here", @@ -41,6 +42,7 @@ "labware_position_check_complete_toast_with_offsets": "Labware Position Check complete. {{count}} Labware Offset created.", "labware_title": "Required Labware", "last_run": "Last Run", + "last_run_time": "Last run {{time}}", "last_updated": "Last Updated", "launch_protocol_designer": "Open Protocol Designer", "manual_steps_learn_more": "Learn more about manual steps", diff --git a/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx b/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx index 226000381ad..2620bd6de52 100644 --- a/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx +++ b/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' -import { formatDistance } from 'date-fns' import styled, { css } from 'styled-components' import { @@ -22,6 +21,7 @@ import { import { LongPressModal } from './LongPressModal' import { formatTimeWithUtcLabel } from '/app/resources/runs' +import { useUpdatedLastRunTime } from './hooks' import type { UseLongPressResult } from '@opentrons/components' import type { ProtocolResource } from '@opentrons/shared-data' @@ -87,6 +87,8 @@ export function PinnedProtocol(props: PinnedProtocolProps): JSX.Element { const protocolName = protocol.metadata.protocolName ?? protocol.files[0].name const { t } = useTranslation('protocol_info') + const updatedLastRun = useUpdatedLastRunTime(lastRun) + // ToDo (kk:06/18/2024) this will be removed later const handleProtocolClick = ( longpress: UseLongPressResult, @@ -155,14 +157,12 @@ export function PinnedProtocol(props: PinnedProtocolProps): JSX.Element { color={COLORS.grey60} > - {lastRun !== undefined - ? `${formatDistance(new Date(lastRun), new Date(), { - addSuffix: true, - }).replace('about ', '')}` - : t('no_history')} + {t('last_run_time', { time: updatedLastRun })} - {formatTimeWithUtcLabel(protocol.createdAt)} + {t('date_added_date', { + date: formatTimeWithUtcLabel(protocol.createdAt), + })} {longpress.isLongPressed && ( From 8873008d84df9dc23ad6b8c1defe84fe9aeb2b76 Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Mon, 2 Dec 2024 15:06:47 -0500 Subject: [PATCH 139/220] fix(actions): Fix memory script (#17004) Looks like this is behaving differently on CI than my local docker container tests. Luckily, the error is pretty straightforward: Error: Mixpanel request failed: 401, Unauthorized, Expected project_id parameter to be a number when specified --- .github/actions/.gitattributes | 2 +- .../odd-resource-analysis/action/lib/helpers/mixpanel.js | 2 +- .github/actions/odd-resource-analysis/dist/index.js | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/actions/.gitattributes b/.github/actions/.gitattributes index a0e3fe76dd7..72f4684a29d 100644 --- a/.github/actions/.gitattributes +++ b/.github/actions/.gitattributes @@ -1 +1 @@ -.github/actions/odd-resource-analysis/dist/* binary \ No newline at end of file +odd-resource-analysis/dist/* binary \ No newline at end of file diff --git a/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js b/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js index a518d1f4b40..f7a6b01767b 100644 --- a/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js +++ b/.github/actions/odd-resource-analysis/action/lib/helpers/mixpanel.js @@ -33,7 +33,7 @@ async function getMixpanelResourceMonitorDataFor({ where, }) { const params = new URLSearchParams({ - project_id: projectId, + project_id: Number(projectId), from_date: fromDate, to_date: toDate, event: '["resourceMonitorReport"]', diff --git a/.github/actions/odd-resource-analysis/dist/index.js b/.github/actions/odd-resource-analysis/dist/index.js index cca88b8a17d..f122c0d5702 100644 --- a/.github/actions/odd-resource-analysis/dist/index.js +++ b/.github/actions/odd-resource-analysis/dist/index.js @@ -88,8 +88,11 @@ function processMixpanelData(data) { const systemMemory = [] data.forEach(entry => { - const { systemUptimeHrs, systemAvailMemMb, processesDetails } = - entry.properties + const { + systemUptimeHrs, + systemAvailMemMb, + processesDetails, + } = entry.properties const uptime = parseFloat(systemUptimeHrs) // Validate uptime before adding any measurements @@ -582,7 +585,7 @@ async function getMixpanelResourceMonitorDataFor({ where, }) { const params = new URLSearchParams({ - project_id: projectId, + project_id: Number(projectId), from_date: fromDate, to_date: toDate, event: '["resourceMonitorReport"]', From 5009d3c8ec9ceec99401abf14d615f976670fbeb Mon Sep 17 00:00:00 2001 From: koji Date: Mon, 2 Dec 2024 15:26:57 -0500 Subject: [PATCH 140/220] refactor(app): clean up react import statements (#16998) * refactor(app): clean up react import statements (#16998) --- app/src/App/Navbar.tsx | 4 +- app/src/atoms/Slideout/index.tsx | 10 ++-- .../__tests__/CustomKeyboard.test.tsx | 16 ++++--- .../AlphanumericKeyboard/index.tsx | 4 +- .../__tests__/FullKeyboard.test.tsx | 16 ++++--- .../SoftwareKeyboard/FullKeyboard/index.tsx | 8 ++-- .../__tests__/IndividualKey.test.tsx | 10 ++-- .../__tests__/NumericalKeyboard.test.tsx | 20 ++++---- .../molecules/CollapsibleSection/index.tsx | 8 ++-- .../molecules/InstrumentCard/MenuOverlay.tsx | 13 ++--- .../InterventionModal/DeckMapContent.tsx | 7 +-- .../ModalContentOneColSimpleButtons.tsx | 10 ++-- .../JogControls/DirectionControl.tsx | 11 +++-- app/src/molecules/JogControls/index.tsx | 11 ++--- .../molecules/ToggleGroup/useToggleGroup.tsx | 8 ++-- app/src/molecules/UploadInput/index.tsx | 28 ++++++----- .../organisms/ApplyHistoricOffsets/index.tsx | 8 ++-- .../Desktop/Alerts/AlertsProvider.tsx | 10 ++-- .../organisms/Desktop/CalibrateDeck/index.tsx | 7 +-- .../Desktop/CalibratePipetteOffset/index.tsx | 7 +-- .../AskForCalibrationBlockModal.tsx | 9 ++-- .../Desktop/CalibrateTipLength/index.tsx | 7 +-- .../Desktop/CalibrationPanels/SaveZPoint.tsx | 7 +-- .../Desktop/CheckCalibration/index.tsx | 10 ++-- .../Desktop/ChooseProtocolSlideout/index.tsx | 36 +++++++------- .../AvailableRobotOption.tsx | 9 ++-- .../index.tsx | 25 +++++----- .../ChangePipette/CheckPipettesButton.tsx | 8 ++-- .../Desktop/Devices/GripperCard/index.tsx | 19 ++++---- .../Devices/PipetteCard/FlexPipetteCard.tsx | 26 +++++----- .../ProtocolAnalysisErrorBanner.tsx | 7 +-- .../modals/ConfirmCancelModal.tsx | 12 +++-- .../modals/RunFailedModal.tsx | 7 +-- .../ProtocolRun/ProtocolRunHeader/index.tsx | 10 ++-- .../Devices/ProtocolRun/ProtocolRunSetup.tsx | 13 +++-- .../Desktop/Devices/RobotOverflowMenu.tsx | 15 +++--- .../Devices/RobotOverviewOverflowMenu.tsx | 20 ++++---- .../DeviceResetSlideout.tsx | 11 +++-- .../FactoryModeSlideout.tsx | 21 ++++---- .../RenameRobotSlideout.tsx | 10 ++-- .../AdvancedTab/Troubleshooting.tsx | 16 +++---- .../AdvancedTab/UpdateRobotSoftware.tsx | 9 ++-- .../ConnectModal/UploadKeyInput.tsx | 20 ++++---- .../RobotSettings/RobotSettingsAdvanced.tsx | 28 +++++------ .../RobotSettingsFeatureFlags.tsx | 8 ++-- .../RobotUpdateProgressModal.tsx | 29 ++++++----- .../__tests__/useLPCSuccessToast.test.ts | 9 ++-- .../LabwareCard/CustomLabwareOverflowMenu.tsx | 15 +++--- .../Desktop/Labware/LabwareCard/hooks.tsx | 7 +-- .../StyledComponents/ExpandingTitle.tsx | 15 +++--- .../Desktop/ProtocolAnalysisFailure/index.tsx | 17 +++---- .../ProtocolLabwareDetails.tsx | 7 +-- .../RobotConfigurationDetails.tsx | 13 ++--- .../Desktop/ProtocolsLanding/ProtocolList.tsx | 15 +++--- .../CalibrationDetails/OverflowMenu.tsx | 25 +++++----- .../AddFixtureModal.tsx | 19 ++++---- .../EmergencyStop/EstopPressedModal.tsx | 11 +++-- .../shared/ErrorDetailsModal.tsx | 19 ++++---- .../LabwarePositionCheck/AttachProbe.tsx | 11 ++--- .../LabwarePositionCheck/CheckItem.tsx | 7 +-- .../LabwarePositionCheck/DetachProbe.tsx | 9 ++-- .../IntroScreen/index.tsx | 7 +-- .../LabwarePositionCheck/JogToWell.tsx | 17 +++---- .../LabwarePositionCheck/PickUpTip.tsx | 7 +-- .../organisms/LabwarePositionCheck/index.tsx | 10 ++-- .../ModuleCard/ConfirmAttachmentModal.tsx | 8 ++-- .../ModuleCard/HeaterShakerSlideout.tsx | 7 +-- app/src/organisms/ModuleWizardFlows/index.tsx | 27 +++++------ .../organisms/ODD/InstrumentInfo/index.tsx | 17 +++---- .../AttachedInstrumentMountItem.tsx | 18 ++++--- .../ProtocolInstrumentMountItem.tsx | 37 +++++++------- .../ODD/Navigation/NavigationMenu.tsx | 7 +-- app/src/organisms/ODD/Navigation/index.tsx | 12 +++-- .../SelectAuthenticationType.tsx | 9 ++-- .../ODD/NetworkSettings/SetWifiSsid.tsx | 8 ++-- .../ProtocolSetupDeckConfiguration/index.tsx | 19 ++++---- .../ProtocolSetupLabware/index.tsx | 13 ++--- .../ProtocolSetupLiquids/index.tsx | 12 +++-- .../FixtureTable.tsx | 17 +++---- .../ModuleTable.tsx | 11 +++-- .../ProtocolSetupModulesAndDeck.tsx | 13 ++--- .../QuickTransferAdvancedSettings/AirGap.tsx | 13 ++--- .../BaseSettings.tsx | 9 ++-- .../QuickTransferAdvancedSettings/BlowOut.tsx | 11 +++-- .../QuickTransferAdvancedSettings/Delay.tsx | 17 +++---- .../FlowRate.tsx | 9 ++-- .../QuickTransferAdvancedSettings/Mix.tsx | 21 ++++---- .../PipettePath.tsx | 21 ++++---- .../TipPosition.tsx | 9 ++-- .../TouchTip.tsx | 15 +++--- .../QuickTransferAdvancedSettings/index.tsx | 11 ++--- .../QuickTransferFlow/SelectDestLabware.tsx | 13 +++-- .../ODD/QuickTransferFlow/SelectDestWells.tsx | 31 ++++++------ .../ODD/QuickTransferFlow/SelectPipette.tsx | 19 ++++---- .../QuickTransferFlow/SelectSourceLabware.tsx | 13 +++-- .../QuickTransferFlow/SelectSourceWells.tsx | 13 ++--- .../ODD/QuickTransferFlow/SelectTipRack.tsx | 13 ++--- .../QuickTransferFlow/SummaryAndSettings.tsx | 15 +++--- .../TipManagement/ChangeTip.tsx | 7 +-- .../TipManagement/TipDropLocation.tsx | 7 +-- .../QuickTransferFlow/TipManagement/index.tsx | 11 ++--- .../ODD/QuickTransferFlow/VolumeEntry.tsx | 11 +++-- .../organisms/ODD/QuickTransferFlow/index.tsx | 15 +++--- .../LanguageSetting.tsx | 9 ++-- .../RobotSettingsJoinOtherNetwork.tsx | 9 ++-- .../TouchScreenSleep.tsx | 11 +++-- .../RobotSettingsDashboard/UpdateChannel.tsx | 9 ++-- .../PipetteWizardFlows/ChoosePipette.tsx | 14 +++--- .../PipetteWizardFlows/DetachPipette.tsx | 19 ++++---- .../organisms/PipetteWizardFlows/Results.tsx | 7 +-- .../MaintenanceRunStatusProvider.tsx | 15 +++--- .../TakeoverModal/MaintenanceRunTakeover.tsx | 14 +++--- app/src/organisms/ToasterOven/ToasterOven.tsx | 9 ++-- .../WellSelection/Selection384Wells.tsx | 27 ++++++----- .../organisms/WellSelection/SelectionRect.tsx | 19 ++++---- .../ODD/ConnectViaWifi/JoinOtherNetwork.tsx | 9 ++-- app/src/pages/ODD/DeckConfiguration/index.tsx | 14 +++--- .../InstrumentDetailOverflowMenu.tsx | 13 ++--- .../ODD/ProtocolDashboard/PinnedProtocol.tsx | 7 +-- app/src/pages/ODD/ProtocolSetup/index.tsx | 48 +++++++++---------- .../QuickTransferDashboard/PinnedTransfer.tsx | 7 +-- .../QuickTransferCard.tsx | 11 +++-- .../resources/deck_configuration/hooks.tsx | 9 ++-- 123 files changed, 874 insertions(+), 793 deletions(-) diff --git a/app/src/App/Navbar.tsx b/app/src/App/Navbar.tsx index db8a4acd005..1471ca4c593 100644 --- a/app/src/App/Navbar.tsx +++ b/app/src/App/Navbar.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import { NavLink, useNavigate } from 'react-router-dom' import styled from 'styled-components' @@ -118,7 +118,7 @@ export function Navbar({ routes }: { routes: RouteProps[] }): JSX.Element { ({ navLinkTo }: RouteProps) => navLinkTo != null ) - const debouncedNavigate = React.useCallback( + const debouncedNavigate = useCallback( debounce((path: string) => { navigate(path) }, DEBOUNCE_DURATION_MS), diff --git a/app/src/atoms/Slideout/index.tsx b/app/src/atoms/Slideout/index.tsx index b834bd1c6e5..53a6888efa0 100644 --- a/app/src/atoms/Slideout/index.tsx +++ b/app/src/atoms/Slideout/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useRef, useState, useEffect } from 'react' import { css } from 'styled-components' import { useTranslation } from 'react-i18next' @@ -124,9 +124,9 @@ export const Slideout = (props: SlideoutProps): JSX.Element => { multiSlideoutSpecs, } = props const { t } = useTranslation('shared') - const slideOutRef = React.useRef(null) - const [isReachedBottom, setIsReachedBottom] = React.useState(false) - const hasBeenExpanded = React.useRef(isExpanded ?? false) + const slideOutRef = useRef(null) + const [isReachedBottom, setIsReachedBottom] = useState(false) + const hasBeenExpanded = useRef(isExpanded ?? false) const handleScroll = (): void => { if (slideOutRef.current == null) return const { scrollTop, scrollHeight, clientHeight } = slideOutRef.current @@ -137,7 +137,7 @@ export const Slideout = (props: SlideoutProps): JSX.Element => { } } - React.useEffect(() => { + useEffect(() => { handleScroll() }, [slideOutRef]) diff --git a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/__tests__/CustomKeyboard.test.tsx b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/__tests__/CustomKeyboard.test.tsx index b4a9abaae89..2fdf2e30b7e 100644 --- a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/__tests__/CustomKeyboard.test.tsx +++ b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/__tests__/CustomKeyboard.test.tsx @@ -1,17 +1,19 @@ -import * as React from 'react' +import { useRef } from 'react' import { describe, it, expect, vi } from 'vitest' import '@testing-library/jest-dom/vitest' import { fireEvent, renderHook, screen } from '@testing-library/react' import { renderWithProviders } from '/app/__testing-utils__' import { AlphanumericKeyboard } from '..' -const render = (props: React.ComponentProps) => { +import type { ComponentProps } from 'react' + +const render = (props: ComponentProps) => { return renderWithProviders()[0] } describe('AlphanumericKeyboard', () => { it('should render alphanumeric keyboard - lower case', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -55,7 +57,7 @@ describe('AlphanumericKeyboard', () => { }) }) it('should render alphanumeric keyboard - upper case, when clicking ABC key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -103,7 +105,7 @@ describe('AlphanumericKeyboard', () => { }) it('should render alphanumeric keyboard - numbers, when clicking number key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -133,7 +135,7 @@ describe('AlphanumericKeyboard', () => { }) it('should render alphanumeric keyboard - lower case when layout is numbers and clicking abc ', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -182,7 +184,7 @@ describe('AlphanumericKeyboard', () => { }) it('should switch each alphanumeric keyboard properly', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, diff --git a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx index 4ab8dab1274..73ec9306fee 100644 --- a/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx +++ b/app/src/atoms/SoftwareKeyboard/AlphanumericKeyboard/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import Keyboard from 'react-simple-keyboard' import { useSelector } from 'react-redux' import { getAppLanguage } from '/app/redux/config' @@ -24,7 +24,7 @@ export function AlphanumericKeyboard({ keyboardRef, debug = false, // If true, will input a \n }: AlphanumericKeyboardProps): JSX.Element { - const [layoutName, setLayoutName] = React.useState('default') + const [layoutName, setLayoutName] = useState('default') const appLanguage = useSelector(getAppLanguage) const onKeyPress = (button: string): void => { if (button === '{ABC}') handleShift() diff --git a/app/src/atoms/SoftwareKeyboard/FullKeyboard/__tests__/FullKeyboard.test.tsx b/app/src/atoms/SoftwareKeyboard/FullKeyboard/__tests__/FullKeyboard.test.tsx index 728ae462083..90786ff6a6f 100644 --- a/app/src/atoms/SoftwareKeyboard/FullKeyboard/__tests__/FullKeyboard.test.tsx +++ b/app/src/atoms/SoftwareKeyboard/FullKeyboard/__tests__/FullKeyboard.test.tsx @@ -1,17 +1,19 @@ -import * as React from 'react' +import { useRef } from 'react' import { describe, it, expect, vi } from 'vitest' import '@testing-library/jest-dom/vitest' import { fireEvent, renderHook, screen } from '@testing-library/react' import { renderWithProviders } from '/app/__testing-utils__' import { FullKeyboard } from '..' -const render = (props: React.ComponentProps) => { +import type { ComponentProps } from 'react' + +const render = (props: ComponentProps) => { return renderWithProviders()[0] } describe('FullKeyboard', () => { it('should render FullKeyboard keyboard', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -59,7 +61,7 @@ describe('FullKeyboard', () => { }) it('should render full keyboard when hitting ABC key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -108,7 +110,7 @@ describe('FullKeyboard', () => { }) it('should render full keyboard when hitting 123 key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -158,7 +160,7 @@ describe('FullKeyboard', () => { }) it('should render the software keyboards when hitting #+= key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -204,7 +206,7 @@ describe('FullKeyboard', () => { }) it('should call mock function when clicking a key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, diff --git a/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx b/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx index eed2a0b5934..2846930ad1e 100644 --- a/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx +++ b/app/src/atoms/SoftwareKeyboard/FullKeyboard/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { KeyboardReact as Keyboard } from 'react-simple-keyboard' import { useSelector } from 'react-redux' import { getAppLanguage } from '/app/redux/config' @@ -7,6 +7,8 @@ import { layoutCandidates, fullKeyboardLayout, } from '../constants' + +import type { MutableRefObject } from 'react' import type { KeyboardReactInterface } from 'react-simple-keyboard' import '../index.css' @@ -15,7 +17,7 @@ import './index.css' // TODO (kk:04/05/2024) add debug to make debugging easy interface FullKeyboardProps { onChange: (input: string) => void - keyboardRef: React.MutableRefObject + keyboardRef: MutableRefObject debug?: boolean } @@ -24,7 +26,7 @@ export function FullKeyboard({ keyboardRef, debug = false, }: FullKeyboardProps): JSX.Element { - const [layoutName, setLayoutName] = React.useState('default') + const [layoutName, setLayoutName] = useState('default') const appLanguage = useSelector(getAppLanguage) const handleShift = (button: string): void => { switch (button) { diff --git a/app/src/atoms/SoftwareKeyboard/IndividualKey/__tests__/IndividualKey.test.tsx b/app/src/atoms/SoftwareKeyboard/IndividualKey/__tests__/IndividualKey.test.tsx index b29404ba226..ecdbdf9aa78 100644 --- a/app/src/atoms/SoftwareKeyboard/IndividualKey/__tests__/IndividualKey.test.tsx +++ b/app/src/atoms/SoftwareKeyboard/IndividualKey/__tests__/IndividualKey.test.tsx @@ -1,17 +1,19 @@ -import * as React from 'react' +import { useRef } from 'react' import { describe, it, vi, expect } from 'vitest' import { fireEvent, renderHook, screen } from '@testing-library/react' import { renderWithProviders } from '/app/__testing-utils__' import { IndividualKey } from '..' -const render = (props: React.ComponentProps) => { +import type { ComponentProps } from 'react' + +const render = (props: ComponentProps) => { return renderWithProviders()[0] } describe('IndividualKey', () => { it('should render the text key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -22,7 +24,7 @@ describe('IndividualKey', () => { }) it('should call mock function when clicking text key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, diff --git a/app/src/atoms/SoftwareKeyboard/NumericalKeyboard/__tests__/NumericalKeyboard.test.tsx b/app/src/atoms/SoftwareKeyboard/NumericalKeyboard/__tests__/NumericalKeyboard.test.tsx index 1bda1caaa71..722f50dfcf1 100644 --- a/app/src/atoms/SoftwareKeyboard/NumericalKeyboard/__tests__/NumericalKeyboard.test.tsx +++ b/app/src/atoms/SoftwareKeyboard/NumericalKeyboard/__tests__/NumericalKeyboard.test.tsx @@ -1,17 +1,19 @@ -import * as React from 'react' +import { useRef } from 'react' import { describe, it, expect, vi } from 'vitest' import '@testing-library/jest-dom/vitest' import { fireEvent, renderHook, screen } from '@testing-library/react' import { renderWithProviders } from '/app/__testing-utils__' import { NumericalKeyboard } from '..' -const render = (props: React.ComponentProps) => { +import type { ComponentProps } from 'react' + +const render = (props: ComponentProps) => { return renderWithProviders()[0] } describe('NumericalKeyboard', () => { it('should render numerical keyboard isDecimal: false and hasHyphen: false', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -41,7 +43,7 @@ describe('NumericalKeyboard', () => { }) it('should render numerical keyboard isDecimal: false and hasHyphen: true', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -72,7 +74,7 @@ describe('NumericalKeyboard', () => { }) it('should render numerical keyboard isDecimal: true and hasHyphen: false', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -103,7 +105,7 @@ describe('NumericalKeyboard', () => { }) it('should render numerical keyboard isDecimal: true and hasHyphen: true', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -135,7 +137,7 @@ describe('NumericalKeyboard', () => { }) it('should call mock function when clicking num key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -149,7 +151,7 @@ describe('NumericalKeyboard', () => { }) it('should call mock function when clicking decimal point key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, @@ -163,7 +165,7 @@ describe('NumericalKeyboard', () => { }) it('should call mock function when clicking hyphen key', () => { - const { result } = renderHook(() => React.useRef(null)) + const { result } = renderHook(() => useRef(null)) const props = { onChange: vi.fn(), keyboardRef: result.current, diff --git a/app/src/molecules/CollapsibleSection/index.tsx b/app/src/molecules/CollapsibleSection/index.tsx index 3b9d6c4b8d0..3a359edeb4f 100644 --- a/app/src/molecules/CollapsibleSection/index.tsx +++ b/app/src/molecules/CollapsibleSection/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { css } from 'styled-components' import { @@ -12,6 +12,8 @@ import { LegacyStyledText, TYPOGRAPHY, } from '@opentrons/components' + +import type { ReactNode } from 'react' import type { StyleProps } from '@opentrons/components' const ACCORDION_STYLE = css` @@ -26,7 +28,7 @@ const ACCORDION_STYLE = css` interface CollapsibleSectionProps extends StyleProps { title: string - children: React.ReactNode + children: ReactNode isExpandedInitially?: boolean } @@ -34,7 +36,7 @@ export function CollapsibleSection( props: CollapsibleSectionProps ): JSX.Element { const { title, children, isExpandedInitially = true, ...styleProps } = props - const [isExpanded, setIsExpanded] = React.useState(isExpandedInitially) + const [isExpanded, setIsExpanded] = useState(isExpandedInitially) return ( + label: ReactNode + onClick: MouseEventHandler disabled?: boolean } @@ -41,14 +42,14 @@ export function MenuOverlay(props: MenuOverlayProps): JSX.Element { right="0" whiteSpace={NO_WRAP} zIndex={10} - onClick={(e: React.MouseEvent) => { + onClick={(e: MouseEvent) => { e.preventDefault() e.stopPropagation() setShowMenuOverlay(false) }} > {menuOverlayItems.map((menuOverlayItem, i) => ( - + {/* insert a divider before the last item if desired */} {hasDivider && i === menuOverlayItems.length - 1 ? ( @@ -59,7 +60,7 @@ export function MenuOverlay(props: MenuOverlayProps): JSX.Element { > {menuOverlayItem.label} - + ))} ) diff --git a/app/src/molecules/InterventionModal/DeckMapContent.tsx b/app/src/molecules/InterventionModal/DeckMapContent.tsx index a45bc920e0a..6bafed02bd1 100644 --- a/app/src/molecules/InterventionModal/DeckMapContent.tsx +++ b/app/src/molecules/InterventionModal/DeckMapContent.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect } from 'react' import { css } from 'styled-components' import { Box, @@ -11,6 +11,7 @@ import { useDeckLocationSelect, } from '@opentrons/components' +import type { ComponentProps } from 'react' import type { LabwareDefinition2, RobotType, @@ -22,7 +23,7 @@ export type MapKind = 'intervention' | 'deck-config' export interface InterventionStyleDeckMapContentProps extends Pick< - React.ComponentProps, + ComponentProps, 'deckConfig' | 'robotType' | 'labwareOnDeck' | 'modulesOnDeck' > { kind: 'intervention' @@ -107,7 +108,7 @@ function DeckConfigStyleDeckMapContent({ robotType, 'default' ) - React.useEffect(() => { + useEffect(() => { setSelectedLocation != null && setSelectedLocation(selectedLocation) }, [selectedLocation, setSelectedLocation]) return <>{DeckLocationSelect} diff --git a/app/src/molecules/InterventionModal/ModalContentOneColSimpleButtons.tsx b/app/src/molecules/InterventionModal/ModalContentOneColSimpleButtons.tsx index c70ddbea7d1..9302192aa68 100644 --- a/app/src/molecules/InterventionModal/ModalContentOneColSimpleButtons.tsx +++ b/app/src/molecules/InterventionModal/ModalContentOneColSimpleButtons.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { Flex, DIRECTION_COLUMN, @@ -9,10 +9,12 @@ import { } from '@opentrons/components' import { OneColumn } from './OneColumn' +import type { ChangeEventHandler } from 'react' + export interface ButtonProps { label: string value: string - onChange?: React.ChangeEventHandler + onChange?: ChangeEventHandler } export interface ModalContentOneColSimpleButtonsProps { @@ -20,14 +22,14 @@ export interface ModalContentOneColSimpleButtonsProps { firstButton: ButtonProps secondButton: ButtonProps furtherButtons?: ButtonProps[] - onSelect?: React.ChangeEventHandler + onSelect?: ChangeEventHandler initialSelected?: string } export function ModalContentOneColSimpleButtons( props: ModalContentOneColSimpleButtonsProps ): JSX.Element { - const [selected, setSelected] = React.useState( + const [selected, setSelected] = useState( props.initialSelected ?? null ) const furtherButtons = props.furtherButtons ?? [] diff --git a/app/src/molecules/JogControls/DirectionControl.tsx b/app/src/molecules/JogControls/DirectionControl.tsx index 8b05e533e4d..d51615fd97e 100644 --- a/app/src/molecules/JogControls/DirectionControl.tsx +++ b/app/src/molecules/JogControls/DirectionControl.tsx @@ -1,5 +1,5 @@ // jog controls component -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled, { css } from 'styled-components' @@ -31,8 +31,9 @@ import { ControlContainer } from './ControlContainer' import { HORIZONTAL_PLANE, VERTICAL_PLANE } from './constants' import { TouchControlButton } from './TouchControlButton' -import type { IconName } from '@opentrons/components' +import type { MouseEvent } from 'react' import type { CSSProperties } from 'styled-components' +import type { IconName } from '@opentrons/components' import type { Jog, Plane, Sign, Bearing, Axis, StepSize } from './types' interface Control { @@ -223,12 +224,12 @@ interface DirectionControlProps { export function DirectionControl(props: DirectionControlProps): JSX.Element { const { planes, jog, stepSize, initialPlane } = props - const [currentPlane, setCurrentPlane] = React.useState( + const [currentPlane, setCurrentPlane] = useState( initialPlane ?? planes[0] ) const { t } = useTranslation(['robot_calibration']) - const handlePlane = (event: React.MouseEvent): void => { + const handlePlane = (event: MouseEvent): void => { setCurrentPlane(event.currentTarget.value as Plane) event.currentTarget.blur() } @@ -449,7 +450,7 @@ export function TouchDirectionControl( props: DirectionControlProps ): JSX.Element { const { planes, jog, stepSize, initialPlane } = props - const [currentPlane, setCurrentPlane] = React.useState( + const [currentPlane, setCurrentPlane] = useState( initialPlane ?? planes[0] ) const { i18n, t } = useTranslation(['robot_calibration']) diff --git a/app/src/molecules/JogControls/index.tsx b/app/src/molecules/JogControls/index.tsx index c9d0d7b49f0..0208739d025 100644 --- a/app/src/molecules/JogControls/index.tsx +++ b/app/src/molecules/JogControls/index.tsx @@ -1,5 +1,5 @@ // jog controls component -import * as React from 'react' +import { useState } from 'react' import { css } from 'styled-components' import { Flex, @@ -20,15 +20,16 @@ import { DEFAULT_STEP_SIZES, } from './constants' -import type { Jog, Plane, StepSize } from './types' +import type { ReactNode } from 'react' import type { StyleProps } from '@opentrons/components' +import type { Jog, Plane, StepSize } from './types' export type { Jog } export interface JogControlsProps extends StyleProps { jog: Jog planes?: Plane[] stepSizes?: StepSize[] - auxiliaryControl?: React.ReactNode | null + auxiliaryControl?: ReactNode | null directionControlButtonColor?: string initialPlane?: Plane isOnDevice?: boolean @@ -53,9 +54,7 @@ export function JogControls(props: JogControlsProps): JSX.Element { isOnDevice = false, ...styleProps } = props - const [currentStepSize, setCurrentStepSize] = React.useState( - stepSizes[0] - ) + const [currentStepSize, setCurrentStepSize] = useState(stepSizes[0]) const controls = isOnDevice ? ( <> diff --git a/app/src/molecules/ToggleGroup/useToggleGroup.tsx b/app/src/molecules/ToggleGroup/useToggleGroup.tsx index ebe3efd14c8..5b356ba74cd 100644 --- a/app/src/molecules/ToggleGroup/useToggleGroup.tsx +++ b/app/src/molecules/ToggleGroup/useToggleGroup.tsx @@ -1,13 +1,15 @@ -import * as React from 'react' +import { useState } from 'react' import { ToggleGroup } from '@opentrons/components' import { useTrackEvent } from '/app/redux/analytics' +import type { ReactNode } from 'react' + export const useToggleGroup = ( left: string, right: string, trackEventName?: string -): [string, React.ReactNode] => { - const [selectedValue, setSelectedValue] = React.useState(left) +): [string, ReactNode] => { + const [selectedValue, setSelectedValue] = useState(left) const trackEvent = useTrackEvent() const handleLeftClick = (): void => { setSelectedValue(left) diff --git a/app/src/molecules/UploadInput/index.tsx b/app/src/molecules/UploadInput/index.tsx index 77dc5a2616d..89877f38c33 100644 --- a/app/src/molecules/UploadInput/index.tsx +++ b/app/src/molecules/UploadInput/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useRef, useState } from 'react' import styled, { css } from 'styled-components' import { useTranslation } from 'react-i18next' import { @@ -18,6 +18,12 @@ import { TYPOGRAPHY, } from '@opentrons/components' +import type { + ChangeEventHandler, + DragEventHandler, + MouseEventHandler, +} from 'react' + const StyledLabel = styled.label` display: ${DISPLAY_FLEX}; cursor: ${CURSOR_POINTER}; @@ -66,39 +72,37 @@ export function UploadInput(props: UploadInputProps): JSX.Element | null { } = props const { t } = useTranslation('protocol_info') - const fileInput = React.useRef(null) - const [isFileOverDropZone, setIsFileOverDropZone] = React.useState( - false - ) - const [isHover, setIsHover] = React.useState(false) - const handleDrop: React.DragEventHandler = e => { + const fileInput = useRef(null) + const [isFileOverDropZone, setIsFileOverDropZone] = useState(false) + const [isHover, setIsHover] = useState(false) + const handleDrop: DragEventHandler = e => { e.preventDefault() e.stopPropagation() Array.from(e.dataTransfer.files).forEach(f => onUpload(f)) setIsFileOverDropZone(false) } - const handleDragEnter: React.DragEventHandler = e => { + const handleDragEnter: DragEventHandler = e => { e.preventDefault() e.stopPropagation() } - const handleDragLeave: React.DragEventHandler = e => { + const handleDragLeave: DragEventHandler = e => { e.preventDefault() e.stopPropagation() setIsFileOverDropZone(false) setIsHover(false) } - const handleDragOver: React.DragEventHandler = e => { + const handleDragOver: DragEventHandler = e => { e.preventDefault() e.stopPropagation() setIsFileOverDropZone(true) setIsHover(true) } - const handleClick: React.MouseEventHandler = _event => { + const handleClick: MouseEventHandler = _event => { onClick != null ? onClick() : fileInput.current?.click() } - const onChange: React.ChangeEventHandler = event => { + const onChange: ChangeEventHandler = event => { ;[...(event.target.files ?? [])].forEach(f => onUpload(f)) if ('value' in event.currentTarget) event.currentTarget.value = '' } diff --git a/app/src/organisms/ApplyHistoricOffsets/index.tsx b/app/src/organisms/ApplyHistoricOffsets/index.tsx index 6925145c012..60b166fe8d8 100644 --- a/app/src/organisms/ApplyHistoricOffsets/index.tsx +++ b/app/src/organisms/ApplyHistoricOffsets/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useSelector } from 'react-redux' import pick from 'lodash/pick' @@ -25,6 +25,8 @@ import { LabwareOffsetTabs } from '/app/organisms/LabwareOffsetTabs' import { getLabwareDefinitionsFromCommands } from '/app/local-resources/labware' import { LabwareOffsetTable } from './LabwareOffsetTable' import { getIsLabwareOffsetCodeSnippetsOn } from '/app/redux/config' + +import type { ChangeEvent } from 'react' import type { LabwareOffset } from '@opentrons/api-client' import type { LoadedLabware, @@ -58,7 +60,7 @@ export function ApplyHistoricOffsets( modules, commands, } = props - const [showOffsetDataModal, setShowOffsetDataModal] = React.useState(false) + const [showOffsetDataModal, setShowOffsetDataModal] = useState(false) const { t } = useTranslation('labware_position_check') const isLabwareOffsetCodeSnippetsOn = useSelector( getIsLabwareOffsetCodeSnippetsOn @@ -85,7 +87,7 @@ export function ApplyHistoricOffsets( return ( ) => { + onChange={(e: ChangeEvent) => { setShouldApplyOffsets(e.currentTarget.checked) }} value={shouldApplyOffsets} diff --git a/app/src/organisms/Desktop/Alerts/AlertsProvider.tsx b/app/src/organisms/Desktop/Alerts/AlertsProvider.tsx index 21aeccbf855..79b6088b445 100644 --- a/app/src/organisms/Desktop/Alerts/AlertsProvider.tsx +++ b/app/src/organisms/Desktop/Alerts/AlertsProvider.tsx @@ -1,21 +1,23 @@ -import * as React from 'react' +import { createContext, useRef } from 'react' import { AlertsModal } from '.' import { useToaster } from '/app/organisms/ToasterOven' +import type { ReactNode } from 'react' + export interface AlertsContextProps { removeActiveAppUpdateToast: () => void } -export const AlertsContext = React.createContext({ +export const AlertsContext = createContext({ removeActiveAppUpdateToast: () => null, }) interface AlertsProps { - children: React.ReactNode + children: ReactNode } export function Alerts({ children }: AlertsProps): JSX.Element { - const toastRef = React.useRef(null) + const toastRef = useRef(null) const { eatToast } = useToaster() const removeActiveAppUpdateToast = (): void => { diff --git a/app/src/organisms/Desktop/CalibrateDeck/index.tsx b/app/src/organisms/Desktop/CalibrateDeck/index.tsx index 783b3d0ba13..b1201dc4553 100644 --- a/app/src/organisms/Desktop/CalibrateDeck/index.tsx +++ b/app/src/organisms/Desktop/CalibrateDeck/index.tsx @@ -1,5 +1,5 @@ // Deck Calibration Orchestration Component -import * as React from 'react' +import { useMemo } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useQueryClient } from 'react-query' @@ -27,6 +27,7 @@ import { useCalibrationError, } from '/app/organisms/Desktop/CalibrationError' +import type { ComponentType } from 'react' import type { Mount } from '@opentrons/components' import type { CalibrationLabware, @@ -37,7 +38,7 @@ import type { CalibrationPanelProps } from '/app/organisms/Desktop/CalibrationPa import type { CalibrateDeckParentProps } from './types' const PANEL_BY_STEP: Partial< - Record> + Record> > = { [Sessions.DECK_STEP_SESSION_STARTED]: Introduction, [Sessions.DECK_STEP_LABWARE_LOADED]: DeckSetup, @@ -89,7 +90,7 @@ export function CalibrateDeck({ const errorInfo = useCalibrationError(requestIds, session?.id) - const isMulti = React.useMemo(() => { + const isMulti = useMemo(() => { const spec = instrument && getPipetteModelSpecs(instrument.model) return spec ? spec.channels > 1 : false }, [instrument]) diff --git a/app/src/organisms/Desktop/CalibratePipetteOffset/index.tsx b/app/src/organisms/Desktop/CalibratePipetteOffset/index.tsx index dce310da9c6..2359d275384 100644 --- a/app/src/organisms/Desktop/CalibratePipetteOffset/index.tsx +++ b/app/src/organisms/Desktop/CalibratePipetteOffset/index.tsx @@ -1,5 +1,5 @@ // Pipette Offset Calibration Orchestration Component -import * as React from 'react' +import { useMemo } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useQueryClient } from 'react-query' @@ -27,6 +27,7 @@ import { useCalibrationError, } from '/app/organisms/Desktop/CalibrationError' +import type { ComponentType } from 'react' import type { Mount } from '@opentrons/components' import type { CalibrationLabware, @@ -37,7 +38,7 @@ import type { CalibratePipetteOffsetParentProps } from './types' import type { CalibrationPanelProps } from '/app/organisms/Desktop/CalibrationPanels/types' const PANEL_BY_STEP: Partial< - Record> + Record> > = { [Sessions.PIP_OFFSET_STEP_SESSION_STARTED]: Introduction, [Sessions.PIP_OFFSET_STEP_LABWARE_LOADED]: DeckSetup, @@ -88,7 +89,7 @@ export function CalibratePipetteOffset({ const calBlock: CalibrationLabware | null = labware != null ? labware.find(l => !l.isTiprack) ?? null : null - const isMulti = React.useMemo(() => { + const isMulti = useMemo(() => { const spec = instrument != null ? getPipetteModelSpecs(instrument.model) : null return spec != null ? spec.channels > 1 : false diff --git a/app/src/organisms/Desktop/CalibrateTipLength/AskForCalibrationBlockModal.tsx b/app/src/organisms/Desktop/CalibrateTipLength/AskForCalibrationBlockModal.tsx index 62a8ca00ef0..85eb76ae126 100644 --- a/app/src/organisms/Desktop/CalibrateTipLength/AskForCalibrationBlockModal.tsx +++ b/app/src/organisms/Desktop/CalibrateTipLength/AskForCalibrationBlockModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { Trans, useTranslation } from 'react-i18next' import { @@ -24,6 +24,7 @@ import { WizardHeader } from '/app/molecules/WizardHeader' import { getTopPortalEl } from '/app/App/portal' import { setUseTrashSurfaceForTipCal } from '/app/redux/calibration' +import type { ChangeEvent } from 'react' import type { Dispatch } from '/app/redux/types' const BLOCK_REQUEST_EMAIL_BODY = @@ -41,9 +42,7 @@ interface Props { export function AskForCalibrationBlockModal(props: Props): JSX.Element { const { t } = useTranslation(['robot_calibration', 'shared', 'branded']) - const [rememberPreference, setRememberPreference] = React.useState( - true - ) + const [rememberPreference, setRememberPreference] = useState(true) const dispatch = useDispatch() const makeSetHasBlock = (hasBlock: boolean) => (): void => { @@ -108,7 +107,7 @@ export function AskForCalibrationBlockModal(props: Props): JSX.Element { > ) => { + onChange={(e: ChangeEvent) => { setRememberPreference(e.currentTarget.checked) }} value={rememberPreference} diff --git a/app/src/organisms/Desktop/CalibrateTipLength/index.tsx b/app/src/organisms/Desktop/CalibrateTipLength/index.tsx index 02ac74e09d5..e905f1b77c7 100644 --- a/app/src/organisms/Desktop/CalibrateTipLength/index.tsx +++ b/app/src/organisms/Desktop/CalibrateTipLength/index.tsx @@ -1,5 +1,5 @@ // Tip Length Calibration Orchestration Component -import * as React from 'react' +import { useMemo } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useQueryClient } from 'react-query' @@ -30,6 +30,7 @@ import { import slotOneRemoveBlockAsset from '/app/assets/videos/tip-length-cal/Slot_1_Remove_CalBlock_(330x260)REV1.webm' import slotThreeRemoveBlockAsset from '/app/assets/videos/tip-length-cal/Slot_3_Remove_CalBlock_(330x260)REV1.webm' +import type { ComponentType } from 'react' import type { Mount } from '@opentrons/components' import type { SessionCommandParams, @@ -43,7 +44,7 @@ export { AskForCalibrationBlockModal } from './AskForCalibrationBlockModal' export { ConfirmRecalibrationModal } from './ConfirmRecalibrationModal' const PANEL_BY_STEP: Partial< - Record> + Record> > = { sessionStarted: Introduction, labwareLoaded: DeckSetup, @@ -80,7 +81,7 @@ export function CalibrateTipLength({ const queryClient = useQueryClient() const host = useHost() - const isMulti = React.useMemo(() => { + const isMulti = useMemo(() => { const spec = instrument != null ? getPipetteModelSpecs(instrument.model) : null return spec != null ? spec.channels > 1 : false diff --git a/app/src/organisms/Desktop/CalibrationPanels/SaveZPoint.tsx b/app/src/organisms/Desktop/CalibrationPanels/SaveZPoint.tsx index 7c85aa4b020..094b94a2025 100644 --- a/app/src/organisms/Desktop/CalibrationPanels/SaveZPoint.tsx +++ b/app/src/organisms/Desktop/CalibrationPanels/SaveZPoint.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useMemo } from 'react' import { css } from 'styled-components' import { Trans, useTranslation } from 'react-i18next' import { @@ -29,6 +29,7 @@ import slot5LeftSingleDemoAsset from '/app/assets/videos/cal-movement/SLOT_5_LEF import slot5RightMultiDemoAsset from '/app/assets/videos/cal-movement/SLOT_5_RIGHT_MULTI_Z.webm' import slot5RightSingleDemoAsset from '/app/assets/videos/cal-movement/SLOT_5_RIGHT_SINGLE_Z.webm' +import type { MouseEventHandler } from 'react' import type { Axis, Sign, StepSize } from '/app/molecules/JogControls/types' import type { CalibrationPanelProps } from './types' @@ -46,7 +47,7 @@ const assetMap = { export function SaveZPoint(props: CalibrationPanelProps): JSX.Element { const { t } = useTranslation('robot_calibration') const { isMulti, mount, sendCommands, sessionType } = props - const demoAsset = React.useMemo( + const demoAsset = useMemo( () => mount && assetMap[mount][isMulti ? 'multi' : 'single'], [mount, isMulti] ) @@ -62,7 +63,7 @@ export function SaveZPoint(props: CalibrationPanelProps): JSX.Element { const isHealthCheck = sessionType === Sessions.SESSION_TYPE_CALIBRATION_HEALTH_CHECK - const proceed: React.MouseEventHandler = _event => { + const proceed: MouseEventHandler = _event => { isHealthCheck ? sendCommands( { command: Sessions.checkCommands.COMPARE_POINT }, diff --git a/app/src/organisms/Desktop/CheckCalibration/index.tsx b/app/src/organisms/Desktop/CheckCalibration/index.tsx index f2dae1c242e..10bf25e93f9 100644 --- a/app/src/organisms/Desktop/CheckCalibration/index.tsx +++ b/app/src/organisms/Desktop/CheckCalibration/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useMemo } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' @@ -22,7 +22,9 @@ import { WizardHeader } from '/app/molecules/WizardHeader' import { getTopPortalEl } from '/app/App/portal' import { ReturnTip } from './ReturnTip' import { ResultsSummary } from './ResultsSummary' +import { CHECK_PIPETTE_RANK_FIRST } from '/app/redux/sessions' +import type { ComponentType } from 'react' import type { Mount } from '@opentrons/components' import type { CalibrationLabware, @@ -30,15 +32,13 @@ import type { RobotCalibrationCheckStep, SessionCommandParams, } from '/app/redux/sessions/types' - import type { CalibrationPanelProps } from '/app/organisms/Desktop/CalibrationPanels/types' import type { CalibrationCheckParentProps } from './types' -import { CHECK_PIPETTE_RANK_FIRST } from '/app/redux/sessions' const ROBOT_CALIBRATION_CHECK_SUBTITLE = 'Calibration health check' const PANEL_BY_STEP: { - [step in RobotCalibrationCheckStep]?: React.ComponentType + [step in RobotCalibrationCheckStep]?: ComponentType } = { [Sessions.CHECK_STEP_SESSION_STARTED]: Introduction, [Sessions.CHECK_STEP_LABWARE_LOADED]: DeckSetup, @@ -124,7 +124,7 @@ export function CheckCalibration( cleanUpAndExit() }, true) - const isMulti = React.useMemo(() => { + const isMulti = useMemo(() => { const spec = activePipette && getPipetteModelSpecs(activePipette.model) return spec ? spec.channels > 1 : false }, [activePipette]) diff --git a/app/src/organisms/Desktop/ChooseProtocolSlideout/index.tsx b/app/src/organisms/Desktop/ChooseProtocolSlideout/index.tsx index a4824c76c5c..5fa0536eb60 100644 --- a/app/src/organisms/Desktop/ChooseProtocolSlideout/index.tsx +++ b/app/src/organisms/Desktop/ChooseProtocolSlideout/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useState, Fragment } from 'react' import first from 'lodash/first' import { Trans, useTranslation } from 'react-i18next' import { Link, NavLink, useNavigate } from 'react-router-dom' @@ -62,6 +62,7 @@ import { } from '/app/transformations/runs' import { getAnalysisStatus } from '/app/organisms/Desktop/ProtocolsLanding/utils' +import type { MouseEventHandler } from 'react' import type { DropdownOption } from '@opentrons/components' import type { RunTimeParameter } from '@opentrons/shared-data' import type { Robot } from '/app/redux/discovery/types' @@ -100,7 +101,7 @@ export function ChooseProtocolSlideoutComponent( const [ showRestoreValuesTooltip, setShowRestoreValuesTooltip, - ] = React.useState(false) + ] = useState(false) const { robot, showSlideout, onCloseClick } = props const { name } = robot @@ -108,26 +109,25 @@ export function ChooseProtocolSlideoutComponent( const [ selectedProtocol, setSelectedProtocol, - ] = React.useState(null) - const [ - runTimeParametersOverrides, - setRunTimeParametersOverrides, - ] = React.useState([]) - const [currentPage, setCurrentPage] = React.useState(1) - const [hasParamError, setHasParamError] = React.useState(false) - const [hasMissingFileParam, setHasMissingFileParam] = React.useState( + ] = useState(null) + const [runTimeParametersOverrides, setRunTimeParametersOverrides] = useState< + RunTimeParameter[] + >([]) + const [currentPage, setCurrentPage] = useState(1) + const [hasParamError, setHasParamError] = useState(false) + const [hasMissingFileParam, setHasMissingFileParam] = useState( runTimeParametersOverrides?.some( parameter => parameter.type === 'csv_file' ) ?? false ) - const [isInputFocused, setIsInputFocused] = React.useState(false) + const [isInputFocused, setIsInputFocused] = useState(false) - React.useEffect(() => { + useEffect(() => { setRunTimeParametersOverrides( selectedProtocol?.mostRecentAnalysis?.runTimeParameters ?? [] ) }, [selectedProtocol]) - React.useEffect(() => { + useEffect(() => { setHasParamError(errors.length > 0) setHasMissingFileParam( runTimeParametersOverrides.some( @@ -149,7 +149,7 @@ export function ChooseProtocolSlideoutComponent( const missingAnalysisData = analysisStatus === 'error' || analysisStatus === 'stale' - const [shouldApplyOffsets, setShouldApplyOffsets] = React.useState(true) + const [shouldApplyOffsets, setShouldApplyOffsets] = useState(true) const offsetCandidates = useOffsetCandidatesForAnalysis( (!missingAnalysisData ? selectedProtocol?.mostRecentAnalysis : null) ?? null, @@ -211,7 +211,7 @@ export function ChooseProtocolSlideoutComponent( })) : [] ) - const handleProceed: React.MouseEventHandler = () => { + const handleProceed: MouseEventHandler = () => { if (selectedProtocol != null) { trackCreateProtocolRunEvent({ name: 'createProtocolRecordRequest' }) const dataFilesForProtocolMap = runTimeParametersOverrides.reduce< @@ -725,7 +725,7 @@ function StoredProtocolList(props: StoredProtocolListProps): JSX.Element { ).filter( protocol => protocol.mostRecentAnalysis?.robotType === robot.robotModel ) - React.useEffect(() => { + useEffect(() => { handleSelectProtocol(first(storedProtocols) ?? null) }, []) @@ -744,7 +744,7 @@ function StoredProtocolList(props: StoredProtocolListProps): JSX.Element { const requiresCsvRunTimeParameter = analysisStatus === 'parameterRequired' return ( - + ) : null} - + ) })} diff --git a/app/src/organisms/Desktop/ChooseRobotSlideout/AvailableRobotOption.tsx b/app/src/organisms/Desktop/ChooseRobotSlideout/AvailableRobotOption.tsx index f06464c2f2a..992e25706dc 100644 --- a/app/src/organisms/Desktop/ChooseRobotSlideout/AvailableRobotOption.tsx +++ b/app/src/organisms/Desktop/ChooseRobotSlideout/AvailableRobotOption.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { css } from 'styled-components' import { Trans, useTranslation } from 'react-i18next' @@ -24,6 +24,7 @@ import OT2_PNG from '/app/assets/images/OT2-R_HERO.png' import FLEX_PNG from '/app/assets/images/FLEX.png' import { useCurrentRunId, useNotifyRunQuery } from '/app/resources/runs' +import type { Dispatch as ReactDispatch } from 'react' import type { IconName } from '@opentrons/components' import type { Runs } from '@opentrons/api-client' import type { Robot } from '/app/redux/discovery/types' @@ -35,7 +36,7 @@ interface AvailableRobotOptionProps { onClick: () => void isSelected: boolean isSelectedRobotOnDifferentSoftwareVersion: boolean - registerRobotBusyStatus: React.Dispatch + registerRobotBusyStatus: ReactDispatch isError?: boolean showIdleOnly?: boolean } @@ -59,7 +60,7 @@ export function AvailableRobotOption( getRobotModelByName(state, robotName) ) - const [isBusy, setIsBusy] = React.useState(true) + const [isBusy, setIsBusy] = useState(true) const currentRunId = useCurrentRunId( { @@ -112,7 +113,7 @@ export function AvailableRobotOption( iconName = 'usb' } - React.useEffect(() => { + useEffect(() => { dispatch(fetchStatus(robotName)) // eslint-disable-next-line react-hooks/exhaustive-deps }, []) diff --git a/app/src/organisms/Desktop/ChooseRobotToRunProtocolSlideout/index.tsx b/app/src/organisms/Desktop/ChooseRobotToRunProtocolSlideout/index.tsx index f4850a649cf..e3946a4cc99 100644 --- a/app/src/organisms/Desktop/ChooseRobotToRunProtocolSlideout/index.tsx +++ b/app/src/organisms/Desktop/ChooseRobotToRunProtocolSlideout/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import first from 'lodash/first' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' @@ -33,6 +33,8 @@ import { ApplyHistoricOffsets } from '/app/organisms/ApplyHistoricOffsets' import { useOffsetCandidatesForAnalysis } from '/app/organisms/ApplyHistoricOffsets/hooks/useOffsetCandidatesForAnalysis' import { ChooseRobotSlideout } from '../ChooseRobotSlideout' import { useCreateRunFromProtocol } from './useCreateRunFromProtocol' + +import type { MouseEventHandler } from 'react' import type { StyleProps } from '@opentrons/components' import type { RunTimeParameter } from '@opentrons/shared-data' import type { Robot } from '/app/redux/discovery/types' @@ -65,16 +67,14 @@ export function ChooseRobotToRunProtocolSlideoutComponent( setSelectedRobot, } = props const navigate = useNavigate() - const [shouldApplyOffsets, setShouldApplyOffsets] = React.useState( - true - ) + const [shouldApplyOffsets, setShouldApplyOffsets] = useState(true) const { protocolKey, srcFileNames, srcFiles, mostRecentAnalysis, } = storedProtocolData - const [currentPage, setCurrentPage] = React.useState(1) + const [currentPage, setCurrentPage] = useState(1) const { trackCreateProtocolRunEvent } = useTrackCreateProtocolRunEvent( storedProtocolData, selectedRobot?.name ?? '' @@ -82,12 +82,11 @@ export function ChooseRobotToRunProtocolSlideoutComponent( const runTimeParameters = storedProtocolData.mostRecentAnalysis?.runTimeParameters ?? [] - const [ - runTimeParametersOverrides, - setRunTimeParametersOverrides, - ] = React.useState(runTimeParameters) - const [hasParamError, setHasParamError] = React.useState(false) - const [hasMissingFileParam, setHasMissingFileParam] = React.useState( + const [runTimeParametersOverrides, setRunTimeParametersOverrides] = useState< + RunTimeParameter[] + >(runTimeParameters) + const [hasParamError, setHasParamError] = useState(false) + const [hasMissingFileParam, setHasMissingFileParam] = useState( runTimeParameters?.some(parameter => parameter.type === 'csv_file') ?? false ) @@ -133,7 +132,7 @@ export function ChooseRobotToRunProtocolSlideoutComponent( })) : [] ) - const handleProceed: React.MouseEventHandler = () => { + const handleProceed: MouseEventHandler = () => { trackCreateProtocolRunEvent({ name: 'createProtocolRecordRequest' }) const dataFilesForProtocolMap = runTimeParametersOverrides.reduce< Record @@ -353,7 +352,7 @@ export function ChooseRobotToRunProtocolSlideoutComponent( export function ChooseRobotToRunProtocolSlideout( props: ChooseRobotToRunProtocolSlideoutProps ): JSX.Element | null { - const [selectedRobot, setSelectedRobot] = React.useState(null) + const [selectedRobot, setSelectedRobot] = useState(null) return ( void } @@ -26,7 +28,7 @@ export function CheckPipettesButton( ): JSX.Element | null { const { onDone, children, direction } = props const { t } = useTranslation('change_pipette') - const [isPending, setIsPending] = React.useState(false) + const [isPending, setIsPending] = useState(false) const { refetch: refetchPipettes } = usePipettesQuery( { refresh: true }, { diff --git a/app/src/organisms/Desktop/Devices/GripperCard/index.tsx b/app/src/organisms/Desktop/Devices/GripperCard/index.tsx index c8a5280049e..0d425640c11 100644 --- a/app/src/organisms/Desktop/Devices/GripperCard/index.tsx +++ b/app/src/organisms/Desktop/Devices/GripperCard/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { Trans, useTranslation } from 'react-i18next' import { css } from 'styled-components' import { @@ -15,6 +15,7 @@ import { GripperWizardFlows } from '/app/organisms/GripperWizardFlows' import { AboutGripperSlideout } from './AboutGripperSlideout' import { GRIPPER_FLOW_TYPES } from '/app/organisms/GripperWizardFlows/constants' +import type { MouseEventHandler } from 'react' import type { BadGripper, GripperData } from '@opentrons/api-client' import type { GripperModel } from '@opentrons/shared-data' import type { GripperWizardFlowType } from '/app/organisms/GripperWizardFlows/types' @@ -53,26 +54,24 @@ export function GripperCard({ const [ openWizardFlowType, setOpenWizardFlowType, - ] = React.useState(null) + ] = useState(null) const [ showAboutGripperSlideout, setShowAboutGripperSlideout, - ] = React.useState(false) + ] = useState(false) - const handleAttach: React.MouseEventHandler = () => { + const handleAttach: MouseEventHandler = () => { setOpenWizardFlowType(GRIPPER_FLOW_TYPES.ATTACH) } - const handleDetach: React.MouseEventHandler = () => { + const handleDetach: MouseEventHandler = () => { setOpenWizardFlowType(GRIPPER_FLOW_TYPES.DETACH) } - const handleCalibrate: React.MouseEventHandler = () => { + const handleCalibrate: MouseEventHandler = () => { setOpenWizardFlowType(GRIPPER_FLOW_TYPES.RECALIBRATE) } - const [pollForSubsystemUpdate, setPollForSubsystemUpdate] = React.useState( - false - ) + const [pollForSubsystemUpdate, setPollForSubsystemUpdate] = useState(false) const { data: subsystemUpdateData } = useCurrentSubsystemUpdateQuery( 'gripper', { @@ -84,7 +83,7 @@ export function GripperCard({ // detected until the update has been done for 5 seconds // this gives the instruments endpoint time to start reporting // a good instrument - React.useEffect(() => { + useEffect(() => { if (attachedGripper?.ok === false) { setPollForSubsystemUpdate(true) } else if ( diff --git a/app/src/organisms/Desktop/Devices/PipetteCard/FlexPipetteCard.tsx b/app/src/organisms/Desktop/Devices/PipetteCard/FlexPipetteCard.tsx index 3a1354f7680..50848a92d0c 100644 --- a/app/src/organisms/Desktop/Devices/PipetteCard/FlexPipetteCard.tsx +++ b/app/src/organisms/Desktop/Devices/PipetteCard/FlexPipetteCard.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { Trans, useTranslation } from 'react-i18next' import { css } from 'styled-components' import { @@ -29,6 +29,7 @@ import { import { AboutPipetteSlideout } from './AboutPipetteSlideout' +import type { MouseEventHandler } from 'react' import type { BadPipette, HostConfig, @@ -79,12 +80,11 @@ export function FlexPipetteCard({ const [ showAboutPipetteSlideout, setShowAboutPipetteSlideout, - ] = React.useState(false) - const [showChoosePipette, setShowChoosePipette] = React.useState(false) - const [ - selectedPipette, - setSelectedPipette, - ] = React.useState(SINGLE_MOUNT_PIPETTES) + ] = useState(false) + const [showChoosePipette, setShowChoosePipette] = useState(false) + const [selectedPipette, setSelectedPipette] = useState( + SINGLE_MOUNT_PIPETTES + ) const attachedPipetteIs96Channel = attachedPipette?.ok && attachedPipette.instrumentName === 'p1000_96' const selectedPipetteForWizard = attachedPipetteIs96Channel @@ -107,7 +107,7 @@ export function FlexPipetteCard({ host, }) } - const handleChoosePipette: React.MouseEventHandler = () => { + const handleChoosePipette: MouseEventHandler = () => { setShowChoosePipette(true) } const handleAttach = (): void => { @@ -115,17 +115,15 @@ export function FlexPipetteCard({ handleLaunchPipetteWizardFlows(FLOWS.ATTACH) } - const handleDetach: React.MouseEventHandler = () => { + const handleDetach: MouseEventHandler = () => { handleLaunchPipetteWizardFlows(FLOWS.DETACH) } - const handleCalibrate: React.MouseEventHandler = () => { + const handleCalibrate: MouseEventHandler = () => { handleLaunchPipetteWizardFlows(FLOWS.CALIBRATE) } - const [pollForSubsystemUpdate, setPollForSubsystemUpdate] = React.useState( - false - ) + const [pollForSubsystemUpdate, setPollForSubsystemUpdate] = useState(false) const subsystem = attachedPipette?.subsystem ?? null const { data: subsystemUpdateData } = useCurrentSubsystemUpdateQuery( subsystem, @@ -139,7 +137,7 @@ export function FlexPipetteCard({ // detected until the update has been done for 5 seconds // this gives the instruments endpoint time to start reporting // a good instrument - React.useEffect(() => { + useEffect(() => { if (attachedPipette?.ok === false) { setPollForSubsystemUpdate(true) } else if ( diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/ProtocolAnalysisErrorBanner.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/ProtocolAnalysisErrorBanner.tsx index 18a8f0e682a..753ed296d86 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/ProtocolAnalysisErrorBanner.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderBannerContainer/ProtocolAnalysisErrorBanner.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { Trans, useTranslation } from 'react-i18next' @@ -18,6 +18,7 @@ import { import { getTopPortalEl } from '/app/App/portal' +import type { MouseEventHandler } from 'react' import type { AnalysisError } from '@opentrons/shared-data' interface ProtocolAnalysisErrorBannerProps { @@ -29,9 +30,9 @@ export function ProtocolAnalysisErrorBanner( ): JSX.Element { const { errors } = props const { t } = useTranslation(['run_details']) - const [showErrorDetails, setShowErrorDetails] = React.useState(false) + const [showErrorDetails, setShowErrorDetails] = useState(false) - const handleToggleDetails: React.MouseEventHandler = e => { + const handleToggleDetails: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowErrorDetails(!showErrorDetails) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ConfirmCancelModal.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ConfirmCancelModal.tsx index 083b7f752fc..770217dad82 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ConfirmCancelModal.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/ConfirmCancelModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' @@ -27,6 +27,7 @@ import { useTrackProtocolRunEvent } from '/app/redux-resources/analytics' import { useIsFlex } from '/app/redux-resources/robots' import { ANALYTICS_PROTOCOL_RUN_ACTION } from '/app/redux/analytics' +import type { MouseEventHandler } from 'react' import type { RunStatus } from '@opentrons/api-client' export interface UseConfirmCancelModalResult { @@ -35,7 +36,7 @@ export interface UseConfirmCancelModalResult { } export function useConfirmCancelModal(): UseConfirmCancelModalResult { - const [showModal, setShowModal] = React.useState(false) + const [showModal, setShowModal] = useState(false) const toggleModal = (): void => { setShowModal(!showModal) @@ -58,14 +59,14 @@ export function ConfirmCancelModal( const { stopRun } = useStopRunMutation() const isFlex = useIsFlex(robotName) const { trackProtocolRunEvent } = useTrackProtocolRunEvent(runId, robotName) - const [isCanceling, setIsCanceling] = React.useState(false) + const [isCanceling, setIsCanceling] = useState(false) const { t } = useTranslation('run_details') const cancelRunAlertInfo = isFlex ? t('cancel_run_alert_info_flex') : t('cancel_run_alert_info_ot2') - const cancelRun: React.MouseEventHandler = (e): void => { + const cancelRun: MouseEventHandler = (e): void => { e.preventDefault() e.stopPropagation() setIsCanceling(true) @@ -78,7 +79,8 @@ export function ConfirmCancelModal( }, }) } - React.useEffect(() => { + + useEffect(() => { if ( runStatus === RUN_STATUS_STOP_REQUESTED || runStatus === RUN_STATUS_STOPPED diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/RunFailedModal.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/RunFailedModal.tsx index 77041e48c18..33d7949a449 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/RunFailedModal.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/RunHeaderModalContainer/modals/RunFailedModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' @@ -25,6 +25,7 @@ import { import { useDownloadRunLog } from '../../../../hooks' import { RUN_STATUS_SUCCEEDED } from '@opentrons/api-client' +import type { MouseEventHandler } from 'react' import type { RunStatus } from '@opentrons/api-client' import type { ModalProps } from '@opentrons/components' import type { RunCommandError } from '@opentrons/shared-data' @@ -41,7 +42,7 @@ export interface UseRunFailedModalResult { export function useRunFailedModal( runErrors: UseRunErrorsResult ): UseRunFailedModalResult { - const [showRunFailedModal, setShowRunFailedModal] = React.useState(false) + const [showRunFailedModal, setShowRunFailedModal] = useState(false) const toggleModal = (): void => { setShowRunFailedModal(!showRunFailedModal) @@ -95,7 +96,7 @@ export function RunFailedModal({ toggleModal() } - const handleDownloadClick: React.MouseEventHandler = e => { + const handleDownloadClick: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() downloadRunLog() diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/index.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/index.tsx index 40375135db9..fa13d31487b 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/index.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunHeader/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useRef } from 'react' import { useNavigate } from 'react-router-dom' import { css } from 'styled-components' @@ -30,8 +30,10 @@ import { RunHeaderContent } from './RunHeaderContent' import { EQUIPMENT_POLL_MS } from './constants' import { isCancellableStatus } from './utils' +import type { RefObject } from 'react' + export interface ProtocolRunHeaderProps { - protocolRunHeaderRef: React.RefObject | null + protocolRunHeaderRef: RefObject | null robotName: string runId: string makeHandleJumpToStep: (index: number) => () => void @@ -70,7 +72,7 @@ export function ProtocolRunHeader( runErrors, }) - React.useEffect(() => { + useEffect(() => { if (protocolData != null && !isRobotViewable) { navigate('/devices') } @@ -78,7 +80,7 @@ export function ProtocolRunHeader( // To persist "run again" loading conditions into a new run, we need a scalar that persists longer than // the runControl isResetRunLoading, which completes before we want to change user-facing copy/CTAs. - const isResetRunLoadingRef = React.useRef(false) + const isResetRunLoadingRef = useRef(false) if (runStatus === RUN_STATUS_IDLE || runStatus === RUN_STATUS_RUNNING) { isResetRunLoadingRef.current = false } diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx index 8e10948795a..c1382acb777 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' @@ -60,11 +60,12 @@ import { SetupLiquids } from './SetupLiquids' import { EmptySetupStep } from './EmptySetupStep' import { HowLPCWorksModal } from './SetupLabwarePositionCheck/HowLPCWorksModal' +import type { RefObject } from 'react' import type { Dispatch, State } from '/app/redux/types' import type { StepKey } from '/app/redux/protocol-runs' interface ProtocolRunSetupProps { - protocolRunHeaderRef: React.RefObject | null + protocolRunHeaderRef: RefObject | null robotName: string runId: string } @@ -92,9 +93,7 @@ export function ProtocolRunSetup({ const isFlex = useIsFlex(robotName) const runHasStarted = useRunHasStarted(runId) const { analysisErrors } = useProtocolAnalysisErrors(runId) - const [expandedStepKey, setExpandedStepKey] = React.useState( - null - ) + const [expandedStepKey, setExpandedStepKey] = useState(null) const robotType = isFlex ? FLEX_ROBOT_TYPE : OT2_ROBOT_TYPE const deckConfigCompatibility = useDeckConfigurationCompatibility( robotType, @@ -481,14 +480,14 @@ function StepRightElement(props: StepRightElementProps): JSX.Element | null { function LearnAboutLPC(): JSX.Element { const { t } = useTranslation('protocol_setup') - const [showLPCHelpModal, setShowLPCHelpModal] = React.useState(false) + const [showLPCHelpModal, setShowLPCHelpModal] = useState(false) return ( <> { + onClick={(e: MouseEvent) => { // clicking link shouldn't toggle step expanded state e.preventDefault() e.stopPropagation() diff --git a/app/src/organisms/Desktop/Devices/RobotOverflowMenu.tsx b/app/src/organisms/Desktop/Devices/RobotOverflowMenu.tsx index 287c2ff032f..d2f5f3e8a82 100644 --- a/app/src/organisms/Desktop/Devices/RobotOverflowMenu.tsx +++ b/app/src/organisms/Desktop/Devices/RobotOverflowMenu.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' @@ -31,6 +31,7 @@ import { useCurrentRunId } from '/app/resources/runs' import { ConnectionTroubleshootingModal } from './ConnectionTroubleshootingModal' import { useIsRobotBusy } from '/app/redux-resources/robots' +import type { MouseEventHandler, MouseEvent, ReactNode } from 'react' import type { StyleProps } from '@opentrons/components' import type { DiscoveredRobot } from '/app/redux/discovery/types' import type { Dispatch } from '/app/redux/types' @@ -54,11 +55,11 @@ export function RobotOverflowMenu(props: RobotOverflowMenuProps): JSX.Element { const [ showChooseProtocolSlideout, setShowChooseProtocolSlideout, - ] = React.useState(false) + ] = useState(false) const [ showConnectionTroubleshootingModal, setShowConnectionTroubleshootingModal, - ] = React.useState(false) + ] = useState(false) const isRobotOnWrongVersionOfSoftware = useIsRobotOnWrongVersionOfSoftware( robot.name @@ -66,20 +67,20 @@ export function RobotOverflowMenu(props: RobotOverflowMenuProps): JSX.Element { const isRobotBusy = useIsRobotBusy({ poll: true }) - const handleClickRun: React.MouseEventHandler = e => { + const handleClickRun: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowChooseProtocolSlideout(true) setShowOverflowMenu(false) } - const handleClickConnectionTroubleshooting: React.MouseEventHandler = e => { + const handleClickConnectionTroubleshooting: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowConnectionTroubleshootingModal(true) setShowOverflowMenu(false) } - let menuItems: React.ReactNode + let menuItems: ReactNode if (robot.status === CONNECTABLE && runId == null) { menuItems = ( <> @@ -161,7 +162,7 @@ export function RobotOverflowMenu(props: RobotOverflowMenuProps): JSX.Element { data-testid={`RobotCard_${String(robot.name)}_overflowMenu`} flexDirection={DIRECTION_COLUMN} position={POSITION_RELATIVE} - onClick={(e: React.MouseEvent) => { + onClick={(e: MouseEvent) => { e.stopPropagation() }} {...styleProps} diff --git a/app/src/organisms/Desktop/Devices/RobotOverviewOverflowMenu.tsx b/app/src/organisms/Desktop/Devices/RobotOverviewOverflowMenu.tsx index 3b6dda678ca..5ff5ac357b6 100644 --- a/app/src/organisms/Desktop/Devices/RobotOverviewOverflowMenu.tsx +++ b/app/src/organisms/Desktop/Devices/RobotOverviewOverflowMenu.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { css } from 'styled-components' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' @@ -35,6 +35,8 @@ import { useIsRobotBusy } from '/app/redux-resources/robots' import { useCanDisconnect } from '/app/resources/networking/hooks' import { useIsEstopNotDisengaged } from '/app/resources/devices/hooks/useIsEstopNotDisengaged' import { useCurrentRunId } from '/app/resources/runs' + +import type { MouseEventHandler, MouseEvent } from 'react' import type { DiscoveredRobot } from '/app/redux/discovery/types' import type { Dispatch } from '/app/redux/types' @@ -61,25 +63,23 @@ export const RobotOverviewOverflowMenu = ( const dispatch = useDispatch() - const handleClickRestart: React.MouseEventHandler = () => { + const handleClickRestart: MouseEventHandler = () => { dispatch(restartRobot(robot.name)) } - const handleClickHomeGantry: React.MouseEventHandler = () => { + const handleClickHomeGantry: MouseEventHandler = () => { dispatch(home(robot.name, ROBOT)) } const [ showChooseProtocolSlideout, setShowChooseProtocolSlideout, - ] = React.useState(false) - const [showDisconnectModal, setShowDisconnectModal] = React.useState( - false - ) + ] = useState(false) + const [showDisconnectModal, setShowDisconnectModal] = useState(false) const canDisconnect = useCanDisconnect(robot.name) - const handleClickDisconnect: React.MouseEventHandler = () => { + const handleClickDisconnect: MouseEventHandler = () => { setShowDisconnectModal(true) } @@ -87,7 +87,7 @@ export const RobotOverviewOverflowMenu = ( dispatch(checkShellUpdate()) }) - const handleClickRun: React.MouseEventHandler = () => { + const handleClickRun: MouseEventHandler = () => { setShowChooseProtocolSlideout(true) } @@ -125,7 +125,7 @@ export const RobotOverviewOverflowMenu = ( top="2.25rem" right={0} flexDirection={DIRECTION_COLUMN} - onClick={(e: React.MouseEvent) => { + onClick={(e: MouseEvent) => { e.preventDefault() e.stopPropagation() setShowOverflowMenu(false) diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/DeviceResetSlideout.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/DeviceResetSlideout.tsx index d4ddba6e764..763ca9f0cb2 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/DeviceResetSlideout.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/DeviceResetSlideout.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux' import { useTranslation } from 'react-i18next' import snakeCase from 'lodash/snakeCase' @@ -40,6 +40,7 @@ import { import { useRobot, useIsFlex } from '/app/redux-resources/robots' import { useNotifyAllRunsQuery } from '/app/resources/runs' +import type { MouseEventHandler } from 'react' import type { State, Dispatch } from '/app/redux/types' import type { ResetConfigRequest } from '/app/redux/robot-admin/types' @@ -61,7 +62,7 @@ export function DeviceResetSlideout({ const doTrackEvent = useTrackEvent() const robot = useRobot(robotName) const dispatch = useDispatch() - const [resetOptions, setResetOptions] = React.useState({}) + const [resetOptions, setResetOptions] = useState({}) const runsQueryResponse = useNotifyAllRunsQuery() const isFlex = useIsFlex(robotName) @@ -98,11 +99,11 @@ export function DeviceResetSlideout({ ? options.filter(opt => opt.id.includes('authorizedKeys')) : [] - React.useEffect(() => { + useEffect(() => { dispatch(fetchResetConfigOptions(robotName)) }, [dispatch, robotName]) - const downloadCalibrationLogs: React.MouseEventHandler = e => { + const downloadCalibrationLogs: MouseEventHandler = e => { e.preventDefault() doTrackEvent({ name: ANALYTICS_CALIBRATION_DATA_DOWNLOADED, @@ -120,7 +121,7 @@ export function DeviceResetSlideout({ ) } - const downloadRunHistoryLogs: React.MouseEventHandler = e => { + const downloadRunHistoryLogs: MouseEventHandler = e => { e.preventDefault() const runsHistory = runsQueryResponse != null ? runsQueryResponse.data?.data : [] diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/FactoryModeSlideout.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/FactoryModeSlideout.tsx index 1472204ce8f..ff083c9b3e5 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/FactoryModeSlideout.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/FactoryModeSlideout.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useDispatch } from 'react-redux' import { useForm, Controller } from 'react-hook-form' import { Trans, useTranslation } from 'react-i18next' @@ -28,6 +28,7 @@ import { FileUpload } from '/app/molecules/FileUpload' import { UploadInput } from '/app/molecules/UploadInput' import { restartRobot } from '/app/redux/robot-admin' +import type { ChangeEvent, MouseEventHandler } from 'react' import type { FieldError, Resolver } from 'react-hook-form' import type { RobotSettingsField } from '@opentrons/api-client' import type { Dispatch } from '/app/redux/types' @@ -63,11 +64,11 @@ export function FactoryModeSlideout({ const last = sn?.substring(sn.length - 4) - const [currentStep, setCurrentStep] = React.useState(1) - const [toggleValue, setToggleValue] = React.useState(false) - const [file, setFile] = React.useState(null) - const [fileError, setFileError] = React.useState(null) - const [isUploading, setIsUploading] = React.useState(false) + const [currentStep, setCurrentStep] = useState(1) + const [toggleValue, setToggleValue] = useState(false) + const [file, setFile] = useState(null) + const [fileError, setFileError] = useState(null) + const [isUploading, setIsUploading] = useState(false) const onFinishCompleteClick = (): void => { dispatch(restartRobot(robotName)) @@ -142,11 +143,11 @@ export function FactoryModeSlideout({ void handleSubmit(onSubmit)() } - const handleToggleClick: React.MouseEventHandler = () => { + const handleToggleClick: MouseEventHandler = () => { setToggleValue(toggleValue => !toggleValue) } - const handleCompleteClick: React.MouseEventHandler = () => { + const handleCompleteClick: MouseEventHandler = () => { setIsUploading(true) updateRobotSetting({ id: 'enableOEMMode', value: toggleValue }) } @@ -173,7 +174,7 @@ export function FactoryModeSlideout({ } } - React.useEffect(() => { + useEffect(() => { // initialize local state to OEM mode value if (isOEMMode != null) { setToggleValue(isOEMMode) @@ -229,7 +230,7 @@ export function FactoryModeSlideout({ id="factoryModeInput" name="factoryModeInput" type="text" - onChange={(e: React.ChangeEvent) => { + onChange={(e: ChangeEvent) => { field.onChange(e) clearErrors() }} diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/RenameRobotSlideout.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/RenameRobotSlideout.tsx index 5c02dc8eb95..55d9806a88f 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/RenameRobotSlideout.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/AdvancedTabSlideouts/RenameRobotSlideout.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useSelector, useDispatch } from 'react-redux' import { useNavigate } from 'react-router-dom' import { useForm, Controller } from 'react-hook-form' @@ -24,9 +24,11 @@ import { useTrackEvent, ANALYTICS_RENAME_ROBOT } from '/app/redux/analytics' import { Slideout } from '/app/atoms/Slideout' import { useIsFlex } from '/app/redux-resources/robots' +import type { ChangeEvent } from 'react' import type { Resolver, FieldError } from 'react-hook-form' import type { UpdatedRobotName } from '@opentrons/api-client' import type { State, Dispatch } from '/app/redux/types' + interface RenameRobotSlideoutProps { isExpanded: boolean onCloseClick: () => void @@ -49,9 +51,7 @@ export function RenameRobotSlideout({ robotName, }: RenameRobotSlideoutProps): JSX.Element { const { t } = useTranslation('device_settings') - const [previousRobotName, setPreviousRobotName] = React.useState( - robotName - ) + const [previousRobotName, setPreviousRobotName] = useState(robotName) const isFlex = useIsFlex(robotName) const trackEvent = useTrackEvent() const navigate = useNavigate() @@ -190,7 +190,7 @@ export function RenameRobotSlideout({ id="newRobotName" name="newRobotName" type="text" - onChange={(e: React.ChangeEvent) => { + onChange={(e: ChangeEvent) => { field.onChange(e) trigger('newRobotName') }} diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/Troubleshooting.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/Troubleshooting.tsx index 45b2b96f462..a216c71cbd4 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/Troubleshooting.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/AdvancedTab/Troubleshooting.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { saveAs } from 'file-saver' import JSZip from 'jszip' @@ -25,6 +25,7 @@ import { useToaster } from '/app/organisms/ToasterOven' import { CONNECTABLE } from '/app/redux/discovery' import { useRobot } from '/app/redux-resources/robots' +import type { MouseEventHandler } from 'react' import type { IconProps } from '@opentrons/components' interface TroubleshootingProps { @@ -38,16 +39,15 @@ export function Troubleshooting({ const robot = useRobot(robotName) const controlDisabled = robot?.status !== CONNECTABLE const logsAvailable = robot?.health?.logs != null - const [ - isDownloadingRobotLogs, - setIsDownloadingRobotLogs, - ] = React.useState(false) + const [isDownloadingRobotLogs, setIsDownloadingRobotLogs] = useState( + false + ) const { makeToast, eatToast } = useToaster() const toastIcon: IconProps = { name: 'ot-spinner', spin: true } const host = useHost() - const handleClick: React.MouseEventHandler = () => { + const handleClick: MouseEventHandler = () => { setIsDownloadingRobotLogs(true) const toastId = makeToast(t('downloading_logs') as string, INFO_TOAST, { disableTimeout: true, @@ -99,8 +99,8 @@ export function Troubleshooting({ } } - // set ref on component to check if component is mounted https://react.dev/reference/react/useRef#manipulating-the-dom-with-a-ref - const mounted = React.useRef(null) + // set ref on component to check if component is mounted https://dev/reference/react/useRef#manipulating-the-dom-with-a-ref + const mounted = useRef(null) return ( (null) + const inputRef = useRef(null) const dispatchStartRobotUpdate = useDispatchStartRobotUpdate() - const handleChange: React.ChangeEventHandler = event => { + const handleChange: ChangeEventHandler = event => { const { files } = event.target if (files?.length === 1 && !updateDisabled) { dispatchStartRobotUpdate(robotName, files[0].path) @@ -65,7 +66,7 @@ export function UpdateRobotSoftware({ } } - const handleClick: React.MouseEventHandler = () => { + const handleClick: MouseEventHandler = () => { inputRef.current?.click() } diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/ConnectNetwork/ConnectModal/UploadKeyInput.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/ConnectNetwork/ConnectModal/UploadKeyInput.tsx index 6d450c336f2..4e79bba2cdc 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/ConnectNetwork/ConnectModal/UploadKeyInput.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/ConnectNetwork/ConnectModal/UploadKeyInput.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { forwardRef, useEffect, useRef } from 'react' import styled from 'styled-components' import { useSelector } from 'react-redux' import last from 'lodash/last' @@ -6,6 +6,7 @@ import last from 'lodash/last' import { useDispatchApiRequest } from '/app/redux/robot-api' import { postWifiKeys, getWifiKeyByRequestId } from '/app/redux/networking' +import type { ChangeEventHandler, ForwardedRef } from 'react' import type { State } from '/app/redux/types' export interface UploadKeyInputProps { @@ -28,17 +29,17 @@ const HiddenInput = styled.input` const UploadKeyInputComponent = ( props: UploadKeyInputProps, - ref: React.ForwardedRef + ref: ForwardedRef ): JSX.Element => { const { robotName, label, onUpload } = props const [dispatchApi, requestIds] = useDispatchApiRequest() - const handleUpload = React.useRef<(key: string) => void>() + const handleUpload = useRef<(key: string) => void>() const createdKeyId = useSelector((state: State) => { return getWifiKeyByRequestId(state, robotName, last(requestIds) ?? null) })?.id - const handleFileInput: React.ChangeEventHandler = event => { + const handleFileInput: ChangeEventHandler = event => { if (event.target.files && event.target.files.length > 0) { const file = event.target.files[0] event.target.value = '' @@ -47,11 +48,11 @@ const UploadKeyInputComponent = ( } } - React.useEffect(() => { + useEffect(() => { handleUpload.current = onUpload }, [onUpload]) - React.useEffect(() => { + useEffect(() => { if (createdKeyId != null && handleUpload.current) { handleUpload.current(createdKeyId) } @@ -67,7 +68,6 @@ const UploadKeyInputComponent = ( ) } -export const UploadKeyInput = React.forwardRef< - HTMLInputElement, - UploadKeyInputProps ->(UploadKeyInputComponent) +export const UploadKeyInput = forwardRef( + UploadKeyInputComponent +) diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsAdvanced.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsAdvanced.tsx index feb67b08d9f..adf2c92a9a5 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsAdvanced.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsAdvanced.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { createPortal } from 'react-dom' import { useSelector, useDispatch } from 'react-redux' @@ -50,6 +50,7 @@ import { getRobotSerialNumber, UNREACHABLE } from '/app/redux/discovery' import { getTopPortalEl } from '/app/App/portal' import { useIsEstopNotDisengaged } from '/app/resources/devices/hooks/useIsEstopNotDisengaged' +import type { MouseEventHandler } from 'react' import type { State, Dispatch } from '/app/redux/types' import type { RobotSettings, @@ -69,19 +70,18 @@ export function RobotSettingsAdvanced({ const [ showRenameRobotSlideout, setShowRenameRobotSlideout, - ] = React.useState(false) + ] = useState(false) const [ showDeviceResetSlideout, setShowDeviceResetSlideout, - ] = React.useState(false) - const [ - showDeviceResetModal, - setShowDeviceResetModal, - ] = React.useState(false) + ] = useState(false) + const [showDeviceResetModal, setShowDeviceResetModal] = useState( + false + ) const [ showFactoryModeSlideout, setShowFactoryModeSlideout, - ] = React.useState(false) + ] = useState(false) const isRobotBusy = useIsRobotBusy({ poll: true }) const isEstopNotDisengaged = useIsEstopNotDisengaged(robotName) @@ -95,10 +95,8 @@ export function RobotSettingsAdvanced({ const reachable = robot?.status !== UNREACHABLE const sn = robot?.status != null ? getRobotSerialNumber(robot) : null - const [isRobotReachable, setIsRobotReachable] = React.useState( - reachable - ) - const [resetOptions, setResetOptions] = React.useState({}) + const [isRobotReachable, setIsRobotReachable] = useState(reachable) + const [resetOptions, setResetOptions] = useState({}) const findSettings = (id: string): RobotSettingsField | undefined => settings?.find(s => s.id === id) @@ -124,11 +122,11 @@ export function RobotSettingsAdvanced({ const dispatch = useDispatch() - React.useEffect(() => { + useEffect(() => { dispatch(fetchSettings(robotName)) }, [dispatch, robotName]) - React.useEffect(() => { + useEffect(() => { updateRobotStatus(isRobotBusy) }, [isRobotBusy, updateRobotStatus]) @@ -291,7 +289,7 @@ export function FeatureFlagToggle({ if (id == null) return null - const handleClick: React.MouseEventHandler = () => { + const handleClick: MouseEventHandler = () => { if (!isRobotBusy) { dispatch(updateSetting(robotName, id, !value)) } diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsFeatureFlags.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsFeatureFlags.tsx index 363589867fc..aa1210cdecc 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsFeatureFlags.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/RobotSettingsFeatureFlags.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux' import { @@ -17,6 +17,8 @@ import { getRobotSettings, fetchSettings, } from '/app/redux/robot-settings' + +import type { MouseEventHandler } from 'react' import type { State, Dispatch } from '/app/redux/types' import type { RobotSettings, @@ -50,7 +52,7 @@ export function RobotSettingsFeatureFlags({ const dispatch = useDispatch() - React.useEffect(() => { + useEffect(() => { dispatch(fetchSettings(robotName)) }, [dispatch, robotName]) @@ -81,7 +83,7 @@ export function FeatureFlagToggle({ if (id == null) return null - const handleClick: React.MouseEventHandler = () => { + const handleClick: MouseEventHandler = () => { dispatch(updateSetting(robotName, id, !value)) } diff --git a/app/src/organisms/Desktop/Devices/RobotSettings/UpdateBuildroot/RobotUpdateProgressModal.tsx b/app/src/organisms/Desktop/Devices/RobotSettings/UpdateBuildroot/RobotUpdateProgressModal.tsx index 955ead2de49..8a4fc045a65 100644 --- a/app/src/organisms/Desktop/Devices/RobotSettings/UpdateBuildroot/RobotUpdateProgressModal.tsx +++ b/app/src/organisms/Desktop/Devices/RobotSettings/UpdateBuildroot/RobotUpdateProgressModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import { css } from 'styled-components' @@ -32,6 +32,7 @@ import { INIT_STATUS, } from '/app/resources/health/hooks' +import type { ChangeEventHandler } from 'react' import type { State } from '/app/redux/types' import type { SetStatusBarCreateCommand } from '@opentrons/shared-data/protocol' import type { RobotUpdateSession } from '/app/redux/robot-update/types' @@ -67,8 +68,8 @@ export function RobotUpdateProgressModal({ }: RobotUpdateProgressModalProps): JSX.Element { const dispatch = useDispatch() const { t } = useTranslation('device_settings') - const [showFileSelect, setShowFileSelect] = React.useState(false) - const installFromFileRef = React.useRef(null) + const [showFileSelect, setShowFileSelect] = useState(false) + const installFromFileRef = useRef(null) const completeRobotUpdateHandler = (): void => { if (closeUpdateBuildroot != null) closeUpdateBuildroot() @@ -85,14 +86,14 @@ export function RobotUpdateProgressModal({ useStatusBarAnimation(error != null) useCleanupRobotUpdateSessionOnDismount() - const handleFileSelect: React.ChangeEventHandler = event => { + const handleFileSelect: ChangeEventHandler = event => { const { files } = event.target if (files?.length === 1) { dispatch(startRobotUpdate(robotName, files[0].path)) } setShowFileSelect(false) } - React.useEffect(() => { + useEffect(() => { if (showFileSelect && installFromFileRef.current) installFromFileRef.current.click() }, [showFileSelect]) @@ -233,13 +234,11 @@ function useAllowExitIfUpdateStalled( progressPercent: number, robotInitStatus: RobotInitializationStatus ): boolean { - const [letUserExitUpdate, setLetUserExitUpdate] = React.useState( - false - ) - const prevSeenUpdateProgress = React.useRef(null) - const exitTimeoutRef = React.useRef(null) + const [letUserExitUpdate, setLetUserExitUpdate] = useState(false) + const prevSeenUpdateProgress = useRef(null) + const exitTimeoutRef = useRef(null) - React.useEffect(() => { + useEffect(() => { if (updateStep === 'initial' && prevSeenUpdateProgress.current !== null) { prevSeenUpdateProgress.current = null } else if (progressPercent !== prevSeenUpdateProgress.current) { @@ -258,7 +257,7 @@ function useAllowExitIfUpdateStalled( } }, [progressPercent, updateStep, robotInitStatus]) - React.useEffect(() => { + useEffect(() => { return () => { if (exitTimeoutRef.current) clearTimeout(exitTimeoutRef.current) } @@ -298,13 +297,13 @@ function useStatusBarAnimation(isError: boolean): void { } } - React.useEffect(startUpdatingAnimation, []) - React.useEffect(startIdleAnimationIfFailed, [isError]) + useEffect(startUpdatingAnimation, []) + useEffect(startIdleAnimationIfFailed, [isError]) } function useCleanupRobotUpdateSessionOnDismount(): void { const dispatch = useDispatch() - React.useEffect(() => { + useEffect(() => { return () => { dispatch(clearRobotUpdateSession()) } diff --git a/app/src/organisms/Desktop/Devices/hooks/__tests__/useLPCSuccessToast.test.ts b/app/src/organisms/Desktop/Devices/hooks/__tests__/useLPCSuccessToast.test.ts index a64b65252a1..6cb6897d8ca 100644 --- a/app/src/organisms/Desktop/Devices/hooks/__tests__/useLPCSuccessToast.test.ts +++ b/app/src/organisms/Desktop/Devices/hooks/__tests__/useLPCSuccessToast.test.ts @@ -1,11 +1,10 @@ -import * as React from 'react' +import { useContext } from 'react' import { vi, it, expect, describe } from 'vitest' import { renderHook } from '@testing-library/react' import { useLPCSuccessToast } from '..' -import type * as ReactType from 'react' vi.mock('react', async importOriginal => { - const actualReact = await importOriginal() + const actualReact = await importOriginal() return { ...actualReact, useContext: vi.fn(), @@ -14,7 +13,7 @@ vi.mock('react', async importOriginal => { describe('useLPCSuccessToast', () => { it('return true when useContext returns true', () => { - vi.mocked(React.useContext).mockReturnValue({ + vi.mocked(useContext).mockReturnValue({ setIsShowingLPCSuccessToast: true, }) const { result } = renderHook(() => useLPCSuccessToast()) @@ -23,7 +22,7 @@ describe('useLPCSuccessToast', () => { }) }) it('return false when useContext returns false', () => { - vi.mocked(React.useContext).mockReturnValue({ + vi.mocked(useContext).mockReturnValue({ setIsShowingLPCSuccessToast: false, }) const { result } = renderHook(() => useLPCSuccessToast()) diff --git a/app/src/organisms/Desktop/Labware/LabwareCard/CustomLabwareOverflowMenu.tsx b/app/src/organisms/Desktop/Labware/LabwareCard/CustomLabwareOverflowMenu.tsx index 6183fdf00de..08826189798 100644 --- a/app/src/organisms/Desktop/Labware/LabwareCard/CustomLabwareOverflowMenu.tsx +++ b/app/src/organisms/Desktop/Labware/LabwareCard/CustomLabwareOverflowMenu.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useDispatch } from 'react-redux' import { useTranslation } from 'react-i18next' @@ -36,6 +36,7 @@ import { openCustomLabwareDirectory, } from '/app/redux/custom-labware' +import type { MouseEventHandler } from 'react' import type { Dispatch } from '/app/redux/types' const LABWARE_CREATOR_HREF = 'https://labware.opentrons.com/create/' @@ -51,7 +52,7 @@ export function CustomLabwareOverflowMenu( const { filename, onDelete } = props const { t } = useTranslation(['labware_landing', 'shared']) const dispatch = useDispatch() - const [showOverflowMenu, setShowOverflowMenu] = React.useState(false) + const [showOverflowMenu, setShowOverflowMenu] = useState(false) const overflowMenuRef = useOnClickOutside({ onClickOutside: () => { setShowOverflowMenu(false) @@ -67,24 +68,24 @@ export function CustomLabwareOverflowMenu( dispatch(deleteCustomLabwareFile(filename)) onDelete?.() }, true) - const handleOpenInFolder: React.MouseEventHandler = e => { + const handleOpenInFolder: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowOverflowMenu(false) dispatch(openCustomLabwareDirectory()) } - const handleClickDelete: React.MouseEventHandler = e => { + const handleClickDelete: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowOverflowMenu(false) confirmDeleteLabware() } - const handleOverflowClick: React.MouseEventHandler = e => { + const handleOverflowClick: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowOverflowMenu(currentShowOverflowMenu => !currentShowOverflowMenu) } - const handleClickLabwareCreator: React.MouseEventHandler = e => { + const handleClickLabwareCreator: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() trackEvent({ @@ -95,7 +96,7 @@ export function CustomLabwareOverflowMenu( window.open(LABWARE_CREATOR_HREF, '_blank') } - const handleCancelModal: React.MouseEventHandler = e => { + const handleCancelModal: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() cancelDeleteLabware() diff --git a/app/src/organisms/Desktop/Labware/LabwareCard/hooks.tsx b/app/src/organisms/Desktop/Labware/LabwareCard/hooks.tsx index 62e0589ac51..3a5890d7f60 100644 --- a/app/src/organisms/Desktop/Labware/LabwareCard/hooks.tsx +++ b/app/src/organisms/Desktop/Labware/LabwareCard/hooks.tsx @@ -1,7 +1,8 @@ -import * as React from 'react' +import { useEffect } from 'react' +import type { RefObject } from 'react' export function useCloseOnOutsideClick( - ref: React.RefObject, + ref: RefObject, onClose: () => void ): void { const handleClick = (e: MouseEvent): void => { @@ -11,7 +12,7 @@ export function useCloseOnOutsideClick( } } - React.useEffect(() => { + useEffect(() => { document.addEventListener('click', handleClick) return () => { document.removeEventListener('click', handleClick) diff --git a/app/src/organisms/Desktop/Labware/LabwareDetails/StyledComponents/ExpandingTitle.tsx b/app/src/organisms/Desktop/Labware/LabwareDetails/StyledComponents/ExpandingTitle.tsx index c92a63434cb..a21a769ca43 100644 --- a/app/src/organisms/Desktop/Labware/LabwareDetails/StyledComponents/ExpandingTitle.tsx +++ b/app/src/organisms/Desktop/Labware/LabwareDetails/StyledComponents/ExpandingTitle.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { ALIGN_CENTER, Box, @@ -6,20 +6,21 @@ import { Flex, Icon, JUSTIFY_SPACE_BETWEEN, - Link, - SIZE_1, LegacyStyledText, + Link, TYPOGRAPHY, } from '@opentrons/components' import { Divider } from '/app/atoms/structure' +import type { ReactNode } from 'react' + interface ExpandingTitleProps { - label: React.ReactNode - diagram?: React.ReactNode + label: ReactNode + diagram?: ReactNode } export function ExpandingTitle(props: ExpandingTitleProps): JSX.Element { - const [diagramVisible, setDiagramVisible] = React.useState(false) + const [diagramVisible, setDiagramVisible] = useState(false) const toggleDiagramVisible = (): void => { setDiagramVisible(currentDiagramVisible => !currentDiagramVisible) } @@ -39,7 +40,7 @@ export function ExpandingTitle(props: ExpandingTitleProps): JSX.Element { )} diff --git a/app/src/organisms/Desktop/ProtocolAnalysisFailure/index.tsx b/app/src/organisms/Desktop/ProtocolAnalysisFailure/index.tsx index b2b904dd19d..3fe86f0385f 100644 --- a/app/src/organisms/Desktop/ProtocolAnalysisFailure/index.tsx +++ b/app/src/organisms/Desktop/ProtocolAnalysisFailure/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useDispatch } from 'react-redux' import { useTranslation, Trans } from 'react-i18next' @@ -6,15 +6,15 @@ import { css } from 'styled-components' import { ALIGN_CENTER, - Btn, Banner, + Btn, Flex, JUSTIFY_FLEX_END, - Modal, JUSTIFY_SPACE_BETWEEN, + LegacyStyledText, + Modal, PrimaryButton, SPACING, - LegacyStyledText, TYPOGRAPHY, WRAP_REVERSE, } from '@opentrons/components' @@ -22,6 +22,7 @@ import { import { analyzeProtocol } from '/app/redux/protocol-storage' import { getTopPortalEl } from '/app/App/portal' +import type { MouseEventHandler } from 'react' import type { Dispatch } from '/app/redux/types' interface ProtocolAnalysisFailureProps { errors: string[] @@ -34,19 +35,19 @@ export function ProtocolAnalysisFailure( const { errors, protocolKey } = props const { t } = useTranslation(['protocol_list', 'shared']) const dispatch = useDispatch() - const [showErrorDetails, setShowErrorDetails] = React.useState(false) + const [showErrorDetails, setShowErrorDetails] = useState(false) - const handleClickShowDetails: React.MouseEventHandler = e => { + const handleClickShowDetails: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowErrorDetails(true) } - const handleClickHideDetails: React.MouseEventHandler = e => { + const handleClickHideDetails: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() setShowErrorDetails(false) } - const handleClickReanalyze: React.MouseEventHandler = e => { + const handleClickReanalyze: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() dispatch(analyzeProtocol(protocolKey)) diff --git a/app/src/organisms/Desktop/ProtocolDetails/ProtocolLabwareDetails.tsx b/app/src/organisms/Desktop/ProtocolDetails/ProtocolLabwareDetails.tsx index 4fe95406355..cb74884c89e 100644 --- a/app/src/organisms/Desktop/ProtocolDetails/ProtocolLabwareDetails.tsx +++ b/app/src/organisms/Desktop/ProtocolDetails/ProtocolLabwareDetails.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { @@ -23,6 +23,7 @@ import { Divider } from '/app/atoms/structure' import { getTopPortalEl } from '/app/App/portal' import { LabwareDetails } from '/app/organisms/Desktop/Labware/LabwareDetails' +import type { MouseEventHandler } from 'react' import type { LoadLabwareRunTimeCommand } from '@opentrons/shared-data' import type { LabwareDefAndDate } from '/app/local-resources/labware' @@ -164,9 +165,9 @@ export const LabwareDetailOverflowMenu = ( const [ showLabwareDetailSlideout, setShowLabwareDetailSlideout, - ] = React.useState(false) + ] = useState(false) - const handleClickMenuItem: React.MouseEventHandler = e => { + const handleClickMenuItem: MouseEventHandler = e => { e.preventDefault() setShowOverflowMenu(false) setShowLabwareDetailSlideout(true) diff --git a/app/src/organisms/Desktop/ProtocolDetails/RobotConfigurationDetails.tsx b/app/src/organisms/Desktop/ProtocolDetails/RobotConfigurationDetails.tsx index 5789a8af6e6..d53a6eba889 100644 --- a/app/src/organisms/Desktop/ProtocolDetails/RobotConfigurationDetails.tsx +++ b/app/src/organisms/Desktop/ProtocolDetails/RobotConfigurationDetails.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { Fragment } from 'react' import { useTranslation } from 'react-i18next' import { @@ -31,6 +31,7 @@ import { Divider } from '/app/atoms/structure' import { getRobotTypeDisplayName } from '../ProtocolsLanding/utils' import { getSlotsForThermocycler } from './utils' +import type { ReactNode } from 'react' import type { CutoutConfigProtocolSpec, LoadModuleRunTimeCommand, @@ -153,7 +154,7 @@ export const RobotConfigurationDetails = ( ) : null} {requiredModuleDetails.map((module, index) => { return ( - + } /> - + ) })} {nonStandardRequiredFixtureDetails.map((fixture, index) => { return ( - + } /> - + ) })} @@ -217,7 +218,7 @@ export const RobotConfigurationDetails = ( interface RobotConfigurationDetailsItemProps { label: string - item: React.ReactNode + item: ReactNode } export const RobotConfigurationDetailsItem = ( diff --git a/app/src/organisms/Desktop/ProtocolsLanding/ProtocolList.tsx b/app/src/organisms/Desktop/ProtocolsLanding/ProtocolList.tsx index 112999787d0..9cd58925e34 100644 --- a/app/src/organisms/Desktop/ProtocolsLanding/ProtocolList.tsx +++ b/app/src/organisms/Desktop/ProtocolsLanding/ProtocolList.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' @@ -35,6 +35,7 @@ import { ProtocolUploadInput } from './ProtocolUploadInput' import { ProtocolCard } from './ProtocolCard' import { EmptyStateLinks } from './EmptyStateLinks' +import type { MouseEventHandler } from 'react' import type { StoredProtocolData, ProtocolSort, @@ -61,17 +62,17 @@ export function ProtocolList(props: ProtocolListProps): JSX.Element | null { const [ showImportProtocolSlideout, setShowImportProtocolSlideout, - ] = React.useState(false) + ] = useState(false) const [ showChooseRobotToRunProtocolSlideout, setShowChooseRobotToRunProtocolSlideout, - ] = React.useState(false) + ] = useState(false) const [ showSendProtocolToFlexSlideout, setShowSendProtocolToFlexSlideout, - ] = React.useState(false) + ] = useState(false) const sortBy = useSelector(getProtocolsDesktopSortKey) ?? 'alphabetical' - const [showSortByMenu, setShowSortByMenu] = React.useState(false) + const [showSortByMenu, setShowSortByMenu] = useState(false) const toggleSetShowSortByMenu = (): void => { setShowSortByMenu(!showSortByMenu) } @@ -80,13 +81,13 @@ export function ProtocolList(props: ProtocolListProps): JSX.Element | null { const [ selectedProtocol, setSelectedProtocol, - ] = React.useState(null) + ] = useState(null) const sortedStoredProtocols = useSortedProtocols(sortBy, storedProtocols) const dispatch = useDispatch() - const handleClickOutside: React.MouseEventHandler = e => { + const handleClickOutside: MouseEventHandler = e => { e.preventDefault() setShowSortByMenu(false) } diff --git a/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx b/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx index ee95d1abf73..1db51029549 100644 --- a/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx +++ b/app/src/organisms/Desktop/RobotSettingsCalibration/CalibrationDetails/OverflowMenu.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { saveAs } from 'file-saver' import { css } from 'styled-components' @@ -35,6 +35,7 @@ import { FLOWS } from '/app/organisms/PipetteWizardFlows/constants' import { useIsEstopNotDisengaged } from '/app/resources/devices' import { useAttachedPipettesFromInstrumentsQuery } from '/app/resources/instruments' +import type { MouseEvent } from 'react' import type { Mount } from '@opentrons/components' import type { PipetteName } from '@opentrons/shared-data' import type { DeleteCalRequestParams } from '@opentrons/api-client' @@ -82,10 +83,9 @@ export function OverflowMenu({ const tipLengthCalibrations = useAllTipLengthCalibrationsQuery().data?.data const { isRunRunning: isRunning } = useRunStatuses() - const [ - showPipetteWizardFlows, - setShowPipetteWizardFlows, - ] = React.useState(false) + const [showPipetteWizardFlows, setShowPipetteWizardFlows] = useState( + false + ) const isEstopNotDisengaged = useIsEstopNotDisengaged(robotName) const isPipetteForFlex = isFlexPipette(pipetteName as PipetteName) const ot3PipCal = @@ -103,7 +103,7 @@ export function OverflowMenu({ calType === 'pipetteOffset' ? applicablePipetteOffsetCal != null : applicableTipLengthCal != null - const handleRecalibrate = (e: React.MouseEvent): void => { + const handleRecalibrate = (e: MouseEvent): void => { e.preventDefault() if ( !isRunning && @@ -116,7 +116,7 @@ export function OverflowMenu({ setShowOverflowMenu(currentShowOverflowMenu => !currentShowOverflowMenu) } - const handleDownload = (e: React.MouseEvent): void => { + const handleDownload = (e: MouseEvent): void => { e.preventDefault() doTrackEvent({ name: ANALYTICS_CALIBRATION_DATA_DOWNLOADED, @@ -137,19 +137,18 @@ export function OverflowMenu({ setShowOverflowMenu(currentShowOverflowMenu => !currentShowOverflowMenu) } - React.useEffect(() => { + useEffect(() => { if (isRunning) { updateRobotStatus(true) } }, [isRunning, updateRobotStatus]) const { deleteCalibration } = useDeleteCalibrationMutation() - const [ - selectedPipette, - setSelectedPipette, - ] = React.useState(SINGLE_MOUNT_PIPETTES) + const [selectedPipette, setSelectedPipette] = useState( + SINGLE_MOUNT_PIPETTES + ) - const handleDeleteCalibration = (e: React.MouseEvent): void => { + const handleDeleteCalibration = (e: MouseEvent): void => { e.preventDefault() let params: DeleteCalRequestParams if (calType === 'pipetteOffset') { diff --git a/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx b/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx index 16062be3034..bf3be7e788e 100644 --- a/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx +++ b/app/src/organisms/DeviceDetailsDeckConfiguration/AddFixtureModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' @@ -7,15 +7,15 @@ import { BORDERS, Btn, COLORS, + CURSOR_DEFAULT, DIRECTION_COLUMN, DIRECTION_ROW, Flex, JUSTIFY_SPACE_BETWEEN, LegacyStyledText, - SPACING, Modal, + SPACING, TYPOGRAPHY, - CURSOR_DEFAULT, } from '@opentrons/components' import { useModulesQuery, @@ -25,11 +25,11 @@ import { getCutoutDisplayName, getFixtureDisplayName, ABSORBANCE_READER_CUTOUTS, - ABSORBANCE_READER_V1, ABSORBANCE_READER_V1_FIXTURE, + ABSORBANCE_READER_V1, HEATER_SHAKER_CUTOUTS, - HEATERSHAKER_MODULE_V1, HEATERSHAKER_MODULE_V1_FIXTURE, + HEATERSHAKER_MODULE_V1, MAGNETIC_BLOCK_V1_FIXTURE, SINGLE_CENTER_CUTOUTS, SINGLE_LEFT_CUTOUTS, @@ -38,8 +38,8 @@ import { STAGING_AREA_RIGHT_SLOT_FIXTURE, STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE, TEMPERATURE_MODULE_CUTOUTS, - TEMPERATURE_MODULE_V2, TEMPERATURE_MODULE_V2_FIXTURE, + TEMPERATURE_MODULE_V2, THERMOCYCLER_MODULE_CUTOUTS, THERMOCYCLER_MODULE_V2, THERMOCYCLER_V2_FRONT_FIXTURE, @@ -54,6 +54,7 @@ import { TertiaryButton } from '/app/atoms/buttons' import { OddModal } from '/app/molecules/OddModal' import { useNotifyDeckConfigurationQuery } from '/app/resources/deck_configuration/' +import type { MouseEventHandler } from 'react' import type { CutoutConfig, CutoutId, @@ -101,9 +102,7 @@ export function AddFixtureModal({ // only show provided options if given as props initialStage = 'providedOptions' } - const [optionStage, setOptionStage] = React.useState( - initialStage - ) + const [optionStage, setOptionStage] = useState(initialStage) const modalHeader: OddModalHeaderBaseProps = { title: t('add_to_slot', { @@ -425,7 +424,7 @@ const GO_BACK_BUTTON_STYLE = css` ` interface FixtureOptionProps { - onClickHandler: React.MouseEventHandler + onClickHandler: MouseEventHandler optionName: string buttonText: string isOnDevice: boolean diff --git a/app/src/organisms/EmergencyStop/EstopPressedModal.tsx b/app/src/organisms/EmergencyStop/EstopPressedModal.tsx index 7c78de6b8e2..ccebc8e124a 100644 --- a/app/src/organisms/EmergencyStop/EstopPressedModal.tsx +++ b/app/src/organisms/EmergencyStop/EstopPressedModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' @@ -30,11 +30,12 @@ import { SmallButton } from '/app/atoms/buttons' import { OddModal } from '/app/molecules/OddModal' import { getIsOnDevice } from '/app/redux/config' +import type { MouseEventHandler } from 'react' +import type { ModalProps } from '@opentrons/components' import type { OddModalHeaderBaseProps, ModalSize, } from '/app/molecules/OddModal/types' -import type { ModalProps } from '@opentrons/components' // Note (07/13/2023) After the launch, we will unify the modal components into one component. // Then TouchScreenModal and DesktopModal will be TouchScreenContent and DesktopContent that only render each content. @@ -81,7 +82,7 @@ function TouchscreenModal({ setIsWaitingForResumeOperation, }: EstopPressedModalProps): JSX.Element { const { t } = useTranslation(['device_settings', 'branded']) - const [isResuming, setIsResuming] = React.useState(false) + const [isResuming, setIsResuming] = useState(false) const { acknowledgeEstopDisengage } = useAcknowledgeEstopDisengageMutation() const { @@ -156,7 +157,7 @@ function DesktopModal({ setIsWaitingForResumeOperation, }: EstopPressedModalProps): JSX.Element { const { t } = useTranslation('device_settings') - const [isResuming, setIsResuming] = React.useState(false) + const [isResuming, setIsResuming] = useState(false) const { acknowledgeEstopDisengage } = useAcknowledgeEstopDisengageMutation() const { handlePlaceReaderLid, @@ -174,7 +175,7 @@ function DesktopModal({ width: '47rem', } - const handleClick: React.MouseEventHandler = (e): void => { + const handleClick: MouseEventHandler = (e): void => { e.preventDefault() setIsResuming(true) setIsWaitingForResumeOperation() diff --git a/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx b/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx index 603ac5af6c3..070e974bed3 100644 --- a/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx +++ b/app/src/organisms/ErrorRecoveryFlows/shared/ErrorDetailsModal.tsx @@ -1,17 +1,17 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' import { css } from 'styled-components' import { - Flex, - StyledText, - SPACING, - COLORS, - ModalShell, - ModalHeader, BORDERS, + COLORS, DIRECTION_COLUMN, + Flex, + ModalHeader, + ModalShell, + SPACING, + StyledText, } from '@opentrons/components' import { useErrorName } from '../hooks' @@ -22,6 +22,7 @@ import { InlineNotification } from '/app/atoms/InlineNotification' import { StepInfo } from './StepInfo' import { getErrorKind } from '../utils' +import type { ReactNode } from 'react' import type { LabwareDefinition2, RobotType } from '@opentrons/shared-data' import type { IconProps } from '@opentrons/components' import type { OddModalHeaderBaseProps } from '/app/molecules/OddModal/types' @@ -33,7 +34,7 @@ export function useErrorDetailsModal(): { showModal: boolean toggleModal: () => void } { - const [showModal, setShowModal] = React.useState(false) + const [showModal, setShowModal] = useState(false) const toggleModal = (): void => { setShowModal(!showModal) @@ -113,7 +114,7 @@ export function ErrorDetailsModal(props: ErrorDetailsModalProps): JSX.Element { } type ErrorDetailsModalType = ErrorDetailsModalProps & { - children: React.ReactNode + children: ReactNode modalHeader: OddModalHeaderBaseProps toggleModal: () => void desktopType: DesktopSizeType diff --git a/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx b/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx index b421b4be81f..afd9efba19f 100644 --- a/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx +++ b/app/src/organisms/LabwarePositionCheck/AttachProbe.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useState } from 'react' import { Trans, useTranslation } from 'react-i18next' import { RESPONSIVENESS, @@ -15,6 +15,7 @@ import attachProbe8 from '/app/assets/videos/pipette-wizard-flows/Pipette_Attach import attachProbe96 from '/app/assets/videos/pipette-wizard-flows/Pipette_Attach_Probe_96.webm' import { GenericWizardTile } from '/app/molecules/GenericWizardTile' +import type { Dispatch } from 'react' import type { CompletedProtocolAnalysis, CreateCommand, @@ -31,7 +32,7 @@ import type { interface AttachProbeProps extends AttachProbeStep { protocolData: CompletedProtocolAnalysis proceed: () => void - registerPosition: React.Dispatch + registerPosition: Dispatch chainRunCommands: ReturnType['chainRunCommands'] setFatalError: (errorMessage: string) => void workingOffsets: WorkingOffset[] @@ -52,9 +53,7 @@ export const AttachProbe = (props: AttachProbeProps): JSX.Element | null => { setFatalError, isOnDevice, } = props - const [showUnableToDetect, setShowUnableToDetect] = React.useState( - false - ) + const [showUnableToDetect, setShowUnableToDetect] = useState(false) const pipette = protocolData.pipettes.find(p => p.id === pipetteId) const pipetteName = pipette?.pipetteName @@ -72,7 +71,7 @@ export const AttachProbe = (props: AttachProbeProps): JSX.Element | null => { const pipetteMount = pipette?.mount - React.useEffect(() => { + useEffect(() => { // move into correct position for probe attach on mount chainRunCommands( [ diff --git a/app/src/organisms/LabwarePositionCheck/CheckItem.tsx b/app/src/organisms/LabwarePositionCheck/CheckItem.tsx index 5d5008554a6..734ee6468b1 100644 --- a/app/src/organisms/LabwarePositionCheck/CheckItem.tsx +++ b/app/src/organisms/LabwarePositionCheck/CheckItem.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect } from 'react' import omit from 'lodash/omit' import isEqual from 'lodash/isEqual' import { Trans, useTranslation } from 'react-i18next' @@ -29,6 +29,7 @@ import { getCurrentOffsetForLabwareInLocation } from '/app/transformations/analy import { getIsOnDevice } from '/app/redux/config' import { getDisplayLocation } from './utils/getDisplayLocation' +import type { Dispatch } from 'react' import type { LabwareOffset } from '@opentrons/api-client' import type { CompletedProtocolAnalysis, @@ -54,7 +55,7 @@ interface CheckItemProps extends Omit { proceed: () => void chainRunCommands: ReturnType['chainRunCommands'] setFatalError: (errorMessage: string) => void - registerPosition: React.Dispatch + registerPosition: Dispatch workingOffsets: WorkingOffset[] existingOffsets: LabwareOffset[] handleJog: Jog @@ -131,7 +132,7 @@ export const CheckItem = (props: CheckItemProps): JSX.Element | null => { o.initialPosition != null )?.initialPosition - React.useEffect(() => { + useEffect(() => { if (initialPosition == null && modulePrepCommands.length > 0) { chainRunCommands(modulePrepCommands, false) .then(() => {}) diff --git a/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx b/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx index da0952ca407..dd040654a23 100644 --- a/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx +++ b/app/src/organisms/LabwarePositionCheck/DetachProbe.tsx @@ -1,10 +1,10 @@ -import * as React from 'react' +import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' import { + LegacyStyledText, RESPONSIVENESS, SPACING, - LegacyStyledText, TYPOGRAPHY, } from '@opentrons/components' import { RobotMotionLoader } from './RobotMotionLoader' @@ -14,6 +14,7 @@ import detachProbe8 from '/app/assets/videos/pipette-wizard-flows/Pipette_Detach import detachProbe96 from '/app/assets/videos/pipette-wizard-flows/Pipette_Detach_Probe_96.webm' import { GenericWizardTile } from '/app/molecules/GenericWizardTile' +import type { Dispatch } from 'react' import type { CompletedProtocolAnalysis } from '@opentrons/shared-data' import type { Jog } from '/app/molecules/JogControls/types' import type { useChainRunCommands } from '/app/resources/runs' @@ -27,7 +28,7 @@ import type { LabwareOffset } from '@opentrons/api-client' interface DetachProbeProps extends DetachProbeStep { protocolData: CompletedProtocolAnalysis proceed: () => void - registerPosition: React.Dispatch + registerPosition: Dispatch chainRunCommands: ReturnType['chainRunCommands'] setFatalError: (errorMessage: string) => void workingOffsets: WorkingOffset[] @@ -58,7 +59,7 @@ export const DetachProbe = (props: DetachProbeProps): JSX.Element | null => { } const pipetteMount = pipette?.mount - React.useEffect(() => { + useEffect(() => { // move into correct position for probe detach on mount chainRunCommands( [ diff --git a/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx b/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx index dbaa5970c6c..44e5eb67ded 100644 --- a/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/IntroScreen/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { Trans, useTranslation } from 'react-i18next' import { css } from 'styled-components' @@ -32,6 +32,7 @@ import { CALIBRATION_PROBE } from '/app/organisms/PipetteWizardFlows/constants' import { TerseOffsetTable } from '../ResultsSummary' import { getLabwareDefinitionsFromCommands } from '/app/local-resources/labware' +import type { Dispatch } from 'react' import type { LabwareOffset } from '@opentrons/api-client' import type { CompletedProtocolAnalysis, @@ -49,7 +50,7 @@ const SUPPORT_PAGE_URL = 'https://support.opentrons.com/s/ot2-calibration' export const IntroScreen = (props: { proceed: () => void protocolData: CompletedProtocolAnalysis - registerPosition: React.Dispatch + registerPosition: Dispatch chainRunCommands: ReturnType['chainRunCommands'] handleJog: Jog setFatalError: (errorMessage: string) => void @@ -160,7 +161,7 @@ interface ViewOffsetsProps { function ViewOffsets(props: ViewOffsetsProps): JSX.Element { const { existingOffsets, labwareDefinitions } = props const { t, i18n } = useTranslation('labware_position_check') - const [showOffsetsTable, setShowOffsetsModal] = React.useState(false) + const [showOffsetsTable, setShowOffsetsModal] = useState(false) const latestCurrentOffsets = getLatestCurrentOffsets(existingOffsets) return existingOffsets.length > 0 ? ( <> diff --git a/app/src/organisms/LabwarePositionCheck/JogToWell.tsx b/app/src/organisms/LabwarePositionCheck/JogToWell.tsx index e212af695a5..bce4808a514 100644 --- a/app/src/organisms/LabwarePositionCheck/JogToWell.tsx +++ b/app/src/organisms/LabwarePositionCheck/JogToWell.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' @@ -11,14 +11,14 @@ import { Flex, JUSTIFY_SPACE_BETWEEN, LabwareRender, + LegacyStyledText, + ModalShell, PipetteRender, PrimaryButton, RESPONSIVENESS, RobotWorkSpace, SecondaryButton, SPACING, - LegacyStyledText, - ModalShell, TYPOGRAPHY, WELL_LABEL_OPTIONS, } from '@opentrons/components' @@ -40,6 +40,7 @@ import { NeedHelpLink } from '/app/molecules/OT2CalibrationNeedHelpLink' import { JogControls } from '/app/molecules/JogControls' import { LiveOffsetValue } from './LiveOffsetValue' +import type { ReactNode } from 'react' import type { PipetteName, LabwareDefinition2 } from '@opentrons/shared-data' import type { WellStroke } from '@opentrons/components' import type { VectorOffset } from '@opentrons/api-client' @@ -55,8 +56,8 @@ interface JogToWellProps { handleJog: Jog pipetteName: PipetteName labwareDef: LabwareDefinition2 - header: React.ReactNode - body: React.ReactNode + header: ReactNode + body: ReactNode initialPosition: VectorOffset existingOffset: VectorOffset shouldUseMetalProbe: boolean @@ -76,12 +77,12 @@ export const JogToWell = (props: JogToWellProps): JSX.Element | null => { shouldUseMetalProbe, } = props - const [joggedPosition, setJoggedPosition] = React.useState( + const [joggedPosition, setJoggedPosition] = useState( initialPosition ) const isOnDevice = useSelector(getIsOnDevice) - const [showFullJogControls, setShowFullJogControls] = React.useState(false) - React.useEffect(() => { + const [showFullJogControls, setShowFullJogControls] = useState(false) + useEffect(() => { // NOTE: this will perform a "null" jog when the jog controls mount so // if a user reaches the "confirm exit" modal (unmounting this component) // and clicks "go back" we are able so initialize the live offset to whatever diff --git a/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx b/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx index c7505a13d92..de76e855097 100644 --- a/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx +++ b/app/src/organisms/LabwarePositionCheck/PickUpTip.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { Trans, useTranslation } from 'react-i18next' import isEqual from 'lodash/isEqual' import { @@ -27,6 +27,7 @@ import { getDisplayLocation } from './utils/getDisplayLocation' import { useSelector } from 'react-redux' import { getIsOnDevice } from '/app/redux/config' +import type { Dispatch } from 'react' import type { CompletedProtocolAnalysis, CreateCommand, @@ -46,7 +47,7 @@ import type { TFunction } from 'i18next' interface PickUpTipProps extends PickUpTipStep { protocolData: CompletedProtocolAnalysis proceed: () => void - registerPosition: React.Dispatch + registerPosition: Dispatch chainRunCommands: ReturnType['chainRunCommands'] setFatalError: (errorMessage: string) => void workingOffsets: WorkingOffset[] @@ -77,7 +78,7 @@ export const PickUpTip = (props: PickUpTipProps): JSX.Element | null => { protocolHasModules, currentStepIndex, } = props - const [showTipConfirmation, setShowTipConfirmation] = React.useState(false) + const [showTipConfirmation, setShowTipConfirmation] = useState(false) const isOnDevice = useSelector(getIsOnDevice) const labwareDef = getLabwareDef(labwareId, protocolData) const pipette = protocolData.pipettes.find(p => p.id === pipetteId) diff --git a/app/src/organisms/LabwarePositionCheck/index.tsx b/app/src/organisms/LabwarePositionCheck/index.tsx index b1453f9267c..e96191c584e 100644 --- a/app/src/organisms/LabwarePositionCheck/index.tsx +++ b/app/src/organisms/LabwarePositionCheck/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { Component } from 'react' import { useLogger } from '../../logger' import { LabwarePositionCheckComponent } from './LabwarePositionCheckComponent' import { FatalErrorModal } from './FatalErrorModal' @@ -6,6 +6,8 @@ import { getIsOnDevice } from '/app/redux/config' import { useSelector } from 'react-redux' import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' + +import type { ErrorInfo, ReactNode } from 'react' import type { CompletedProtocolAnalysis, RobotType, @@ -48,7 +50,7 @@ export const LabwarePositionCheck = ( } interface ErrorBoundaryProps { - children: React.ReactNode + children: ReactNode onClose: () => void shouldUseMetalProbe: boolean logger: ReturnType @@ -60,7 +62,7 @@ interface ErrorBoundaryProps { }) => JSX.Element isOnDevice: boolean } -class ErrorBoundary extends React.Component< +class ErrorBoundary extends Component< ErrorBoundaryProps, { error: Error | null } > { @@ -69,7 +71,7 @@ class ErrorBoundary extends React.Component< this.state = { error: null } } - componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void { + componentDidCatch(error: Error, errorInfo: ErrorInfo): void { this.props.logger.error(`LPC error message: ${error.message}`) this.props.logger.error( `LPC error component stack: ${errorInfo.componentStack}` diff --git a/app/src/organisms/ModuleCard/ConfirmAttachmentModal.tsx b/app/src/organisms/ModuleCard/ConfirmAttachmentModal.tsx index 7031f176425..4a9cb9f3e4a 100644 --- a/app/src/organisms/ModuleCard/ConfirmAttachmentModal.tsx +++ b/app/src/organisms/ModuleCard/ConfirmAttachmentModal.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' import { @@ -17,6 +17,8 @@ import { TYPOGRAPHY, } from '@opentrons/components' import { updateConfigValue } from '/app/redux/config' + +import type { ChangeEvent } from 'react' import type { Dispatch } from '/app/redux/types' import type { UpdateConfigValueAction } from '/app/redux/config/types' @@ -38,7 +40,7 @@ export const ConfirmAttachmentModal = ( ): JSX.Element | null => { const { isProceedToRunModal, onCloseClick, onConfirmClick } = props const { t } = useTranslation(['heater_shaker', 'shared']) - const [isDismissed, setIsDismissed] = React.useState(false) + const [isDismissed, setIsDismissed] = useState(false) const dispatch = useDispatch() const confirmAttached = (): void => { @@ -81,7 +83,7 @@ export const ConfirmAttachmentModal = ( }`} > ) => { + onChange={(e: ChangeEvent) => { setIsDismissed(e.currentTarget.checked) }} value={isDismissed} diff --git a/app/src/organisms/ModuleCard/HeaterShakerSlideout.tsx b/app/src/organisms/ModuleCard/HeaterShakerSlideout.tsx index 1b189f3174d..bccf5fb3a30 100644 --- a/app/src/organisms/ModuleCard/HeaterShakerSlideout.tsx +++ b/app/src/organisms/ModuleCard/HeaterShakerSlideout.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useCreateLiveCommandMutation } from '@opentrons/react-api-client' @@ -21,6 +21,7 @@ import { import { Slideout } from '/app/atoms/Slideout' import { SubmitPrimaryButton } from '/app/atoms/buttons' +import type { MouseEventHandler } from 'react' import type { HeaterShakerModule } from '/app/redux/modules/types' import type { HeaterShakerSetTargetTemperatureCreateCommand } from '@opentrons/shared-data' @@ -35,12 +36,12 @@ export const HeaterShakerSlideout = ( ): JSX.Element | null => { const { module, onCloseClick, isExpanded } = props const { t } = useTranslation('device_details') - const [hsValue, setHsValue] = React.useState(null) + const [hsValue, setHsValue] = useState(null) const { createLiveCommand } = useCreateLiveCommandMutation() const moduleName = getModuleDisplayName(module.moduleModel) const modulePart = t('temperature') - const sendSetTemperatureCommand: React.MouseEventHandler = e => { + const sendSetTemperatureCommand: MouseEventHandler = e => { e.preventDefault() e.stopPropagation() diff --git a/app/src/organisms/ModuleWizardFlows/index.tsx b/app/src/organisms/ModuleWizardFlows/index.tsx index 27a3555d70c..b802cd6ca85 100644 --- a/app/src/organisms/ModuleWizardFlows/index.tsx +++ b/app/src/organisms/ModuleWizardFlows/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { createPortal } from 'react-dom' import { useSelector } from 'react-redux' import { Trans, useTranslation } from 'react-i18next' @@ -37,6 +37,7 @@ import { useNotifyCurrentMaintenanceRun, } from '/app/resources/maintenance_runs' +import type { SetStateAction } from 'react' import type { AttachedModule, CommandData } from '@opentrons/api-client' import { RUN_STATUS_FAILED } from '@opentrons/api-client' import type { @@ -107,7 +108,7 @@ export const ModuleWizardFlows = ( ) ) ?? [] - const [currentStepIndex, setCurrentStepIndex] = React.useState(0) + const [currentStepIndex, setCurrentStepIndex] = useState(0) const totalStepCount = moduleCalibrationSteps.length - 1 const currentStep = moduleCalibrationSteps?.[currentStepIndex] @@ -116,18 +117,16 @@ export const ModuleWizardFlows = ( currentStepIndex === 0 ? currentStepIndex : currentStepIndex - 1 ) } - const [createdMaintenanceRunId, setCreatedMaintenanceRunId] = React.useState< + const [createdMaintenanceRunId, setCreatedMaintenanceRunId] = useState< string | null >(null) - const [createdAdapterId, setCreatedAdapterId] = React.useState( - null - ) + const [createdAdapterId, setCreatedAdapterId] = useState(null) // we should start checking for run deletion only after the maintenance run is created // and the useCurrentRun poll has returned that created id const [ monitorMaintenanceRunForDeletion, setMonitorMaintenanceRunForDeletion, - ] = React.useState(false) + ] = useState(false) const { data: maintenanceRunData } = useNotifyCurrentMaintenanceRun({ refetchInterval: RUN_REFETCH_INTERVAL, @@ -142,16 +141,14 @@ export const ModuleWizardFlows = ( createTargetedMaintenanceRun, isLoading: isCreateLoading, } = useCreateTargetedMaintenanceRunMutation({ - onSuccess: (response: { - data: { id: React.SetStateAction } - }) => { + onSuccess: (response: { data: { id: SetStateAction } }) => { setCreatedMaintenanceRunId(response.data.id) }, }) // this will close the modal in case the run was deleted by the terminate // activity modal on the ODD - React.useEffect(() => { + useEffect(() => { if ( createdMaintenanceRunId !== null && maintenanceRunData?.data.id === createdMaintenanceRunId @@ -171,8 +168,8 @@ export const ModuleWizardFlows = ( closeFlow, ]) - const [errorMessage, setErrorMessage] = React.useState(null) - const [isExiting, setIsExiting] = React.useState(false) + const [errorMessage, setErrorMessage] = useState(null) + const [isExiting, setIsExiting] = useState(false) const proceed = (): void => { if (!isCommandMutationLoading) { setCurrentStepIndex( @@ -216,9 +213,9 @@ export const ModuleWizardFlows = ( } } - const [isRobotMoving, setIsRobotMoving] = React.useState(false) + const [isRobotMoving, setIsRobotMoving] = useState(false) - React.useEffect(() => { + useEffect(() => { if (isCommandMutationLoading || isExiting) { setIsRobotMoving(true) } else { diff --git a/app/src/organisms/ODD/InstrumentInfo/index.tsx b/app/src/organisms/ODD/InstrumentInfo/index.tsx index 68c3ebd5388..ecfb9456b05 100644 --- a/app/src/organisms/ODD/InstrumentInfo/index.tsx +++ b/app/src/organisms/ODD/InstrumentInfo/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import { @@ -8,8 +8,8 @@ import { Flex, JUSTIFY_CENTER, JUSTIFY_SPACE_BETWEEN, - SPACING, LegacyStyledText, + SPACING, TYPOGRAPHY, } from '@opentrons/components' import { @@ -23,6 +23,7 @@ import { FLOWS } from '/app/organisms/PipetteWizardFlows/constants' import { GRIPPER_FLOW_TYPES } from '/app/organisms/GripperWizardFlows/constants' import { formatTimeWithUtcLabel } from '/app/resources/runs' +import type { ComponentProps, MouseEventHandler } from 'react' import type { InstrumentData } from '@opentrons/api-client' import type { PipetteMount } from '@opentrons/shared-data' import type { StyleProps } from '@opentrons/components' @@ -36,14 +37,14 @@ export const InstrumentInfo = (props: InstrumentInfoProps): JSX.Element => { const { t, i18n } = useTranslation('instruments_dashboard') const { instrument } = props const navigate = useNavigate() - const [wizardProps, setWizardProps] = React.useState< - | React.ComponentProps - | React.ComponentProps + const [wizardProps, setWizardProps] = useState< + | ComponentProps + | ComponentProps | null >(null) const sharedGripperWizardProps: Pick< - React.ComponentProps, + ComponentProps, 'attachedGripper' | 'closeFlow' > = { attachedGripper: instrument, @@ -58,7 +59,7 @@ export const InstrumentInfo = (props: InstrumentInfoProps): JSX.Element => { instrument.mount !== 'extension' && instrument.data?.channels === 96 - const handleDetach: React.MouseEventHandler = () => { + const handleDetach: MouseEventHandler = () => { if (instrument != null && instrument.ok) { setWizardProps( instrument.mount === 'extension' @@ -85,7 +86,7 @@ export const InstrumentInfo = (props: InstrumentInfoProps): JSX.Element => { ) } } - const handleRecalibrate: React.MouseEventHandler = () => { + const handleRecalibrate: MouseEventHandler = () => { if (instrument != null && instrument.ok) { setWizardProps( instrument.mount === 'extension' diff --git a/app/src/organisms/ODD/InstrumentMountItem/AttachedInstrumentMountItem.tsx b/app/src/organisms/ODD/InstrumentMountItem/AttachedInstrumentMountItem.tsx index d2de81b8fdc..7af7dd4029a 100644 --- a/app/src/organisms/ODD/InstrumentMountItem/AttachedInstrumentMountItem.tsx +++ b/app/src/organisms/ODD/InstrumentMountItem/AttachedInstrumentMountItem.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { SINGLE_MOUNT_PIPETTES } from '@opentrons/shared-data' @@ -12,6 +12,7 @@ import { FLOWS } from '/app/organisms/PipetteWizardFlows/constants' import { GRIPPER_FLOW_TYPES } from '/app/organisms/GripperWizardFlows/constants' import { LabeledMount } from './LabeledMount' +import type { ComponentProps, MouseEventHandler } from 'react' import type { InstrumentData } from '@opentrons/api-client' import type { GripperModel, PipetteModel } from '@opentrons/shared-data' import type { Mount } from '/app/redux/pipettes/types' @@ -24,8 +25,8 @@ interface AttachedInstrumentMountItemProps { attachedInstrument: InstrumentData | null setWizardProps: ( props: - | React.ComponentProps - | React.ComponentProps + | ComponentProps + | ComponentProps | null ) => void } @@ -36,15 +37,12 @@ export function AttachedInstrumentMountItem( const navigate = useNavigate() const { mount, attachedInstrument, setWizardProps } = props - const [showChoosePipetteModal, setShowChoosePipetteModal] = React.useState( - false + const [showChoosePipetteModal, setShowChoosePipetteModal] = useState(false) + const [selectedPipette, setSelectedPipette] = useState( + SINGLE_MOUNT_PIPETTES ) - const [ - selectedPipette, - setSelectedPipette, - ] = React.useState(SINGLE_MOUNT_PIPETTES) - const handleClick: React.MouseEventHandler = () => { + const handleClick: MouseEventHandler = () => { if (attachedInstrument == null && mount !== 'extension') { setShowChoosePipetteModal(true) } else if (attachedInstrument == null && mount === 'extension') { diff --git a/app/src/organisms/ODD/InstrumentMountItem/ProtocolInstrumentMountItem.tsx b/app/src/organisms/ODD/InstrumentMountItem/ProtocolInstrumentMountItem.tsx index be034e8fb7a..86ae69e4107 100644 --- a/app/src/organisms/ODD/InstrumentMountItem/ProtocolInstrumentMountItem.tsx +++ b/app/src/organisms/ODD/InstrumentMountItem/ProtocolInstrumentMountItem.tsx @@ -1,17 +1,17 @@ -import * as React from 'react' +import { useState, useMemo } from 'react' import styled from 'styled-components' import { useTranslation } from 'react-i18next' import { ALIGN_CENTER, - Flex, - COLORS, - SPACING, - TYPOGRAPHY, - Icon, - DIRECTION_COLUMN, ALIGN_FLEX_START, BORDERS, + COLORS, + DIRECTION_COLUMN, + Flex, + Icon, JUSTIFY_FLEX_START, + SPACING, + TYPOGRAPHY, } from '@opentrons/components' import { NINETY_SIX_CHANNEL, @@ -27,6 +27,7 @@ import { FLOWS } from '/app/organisms/PipetteWizardFlows/constants' import { PipetteWizardFlows } from '/app/organisms/PipetteWizardFlows' import { GripperWizardFlows } from '/app/organisms/GripperWizardFlows' +import type { MouseEventHandler } from 'react' import type { InstrumentData } from '@opentrons/api-client' import type { GripperModel, @@ -61,26 +62,24 @@ export function ProtocolInstrumentMountItem( ): JSX.Element { const { i18n, t } = useTranslation('protocol_setup') const { mount, attachedInstrument, speccedName } = props - const [ - showPipetteWizardFlow, - setShowPipetteWizardFlow, - ] = React.useState(false) - const [ - showGripperWizardFlow, - setShowGripperWizardFlow, - ] = React.useState(false) - const memoizedAttachedGripper = React.useMemo( + const [showPipetteWizardFlow, setShowPipetteWizardFlow] = useState( + false + ) + const [showGripperWizardFlow, setShowGripperWizardFlow] = useState( + false + ) + const memoizedAttachedGripper = useMemo( () => attachedInstrument?.instrumentType === 'gripper' && attachedInstrument.ok ? attachedInstrument : null, [] ) - const [flowType, setFlowType] = React.useState(FLOWS.ATTACH) + const [flowType, setFlowType] = useState(FLOWS.ATTACH) const selectedPipette = speccedName === 'p1000_96' ? NINETY_SIX_CHANNEL : SINGLE_MOUNT_PIPETTES - const handleCalibrate: React.MouseEventHandler = () => { + const handleCalibrate: MouseEventHandler = () => { setFlowType(FLOWS.CALIBRATE) if (mount === 'extension') { setShowGripperWizardFlow(true) @@ -88,7 +87,7 @@ export function ProtocolInstrumentMountItem( setShowPipetteWizardFlow(true) } } - const handleAttach: React.MouseEventHandler = () => { + const handleAttach: MouseEventHandler = () => { setFlowType(FLOWS.ATTACH) if (mount === 'extension') { setShowGripperWizardFlow(true) diff --git a/app/src/organisms/ODD/Navigation/NavigationMenu.tsx b/app/src/organisms/ODD/Navigation/NavigationMenu.tsx index d2347bf52b0..0b1cbb40e92 100644 --- a/app/src/organisms/ODD/Navigation/NavigationMenu.tsx +++ b/app/src/organisms/ODD/Navigation/NavigationMenu.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useDispatch } from 'react-redux' import { useTranslation } from 'react-i18next' @@ -21,10 +21,11 @@ import { useLights } from '/app/resources/devices' import { getTopPortalEl } from '/app/App/portal' import { RestartRobotConfirmationModal } from './RestartRobotConfirmationModal' +import type { MouseEventHandler } from 'react' import type { Dispatch } from '/app/redux/types' interface NavigationMenuProps { - onClick: React.MouseEventHandler + onClick: MouseEventHandler robotName: string setShowNavMenu: (showNavMenu: boolean) => void } @@ -37,7 +38,7 @@ export function NavigationMenu(props: NavigationMenuProps): JSX.Element { const [ showRestartRobotConfirmationModal, setShowRestartRobotConfirmationModal, - ] = React.useState(false) + ] = useState(false) const navigate = useNavigate() diff --git a/app/src/organisms/ODD/Navigation/index.tsx b/app/src/organisms/ODD/Navigation/index.tsx index 8b60946f929..e562793e36b 100644 --- a/app/src/organisms/ODD/Navigation/index.tsx +++ b/app/src/organisms/ODD/Navigation/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect, useRef } from 'react' import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { useLocation, NavLink } from 'react-router-dom' @@ -32,6 +32,8 @@ import { useScrollPosition } from '/app/local-resources/dom-utils' import { useNetworkConnection } from '/app/resources/networking/hooks/useNetworkConnection' import { getLocalRobot } from '/app/redux/discovery' import { NavigationMenu } from './NavigationMenu' + +import type { Dispatch, SetStateAction } from 'react' import type { ON_DEVICE_DISPLAY_PATHS } from '/app/App/OnDeviceDisplayApp' const NAV_LINKS: Array = [ @@ -65,7 +67,7 @@ const CHAR_LIMIT_NO_ICON = 15 interface NavigationProps { // optionalProps for setting the zIndex and position between multiple sticky elements // used for ProtocolDashboard - setNavMenuIsOpened?: React.Dispatch> + setNavMenuIsOpened?: Dispatch> longPressModalIsOpened?: boolean } export function Navigation(props: NavigationProps): JSX.Element { @@ -73,7 +75,7 @@ export function Navigation(props: NavigationProps): JSX.Element { const { t } = useTranslation('top_navigation') const location = useLocation() const localRobot = useSelector(getLocalRobot) - const [showNavMenu, setShowNavMenu] = React.useState(false) + const [showNavMenu, setShowNavMenu] = useState(false) const robotName = localRobot?.name != null ? localRobot.name : 'no name' // We need to display an icon for what type of network connection (if any) @@ -95,8 +97,8 @@ export function Navigation(props: NavigationProps): JSX.Element { const { scrollRef, isScrolled } = useScrollPosition() - const navBarScrollRef = React.useRef(null) - React.useEffect(() => { + const navBarScrollRef = useRef(null) + useEffect(() => { navBarScrollRef?.current?.scrollIntoView({ behavior: 'auto', inline: 'center', diff --git a/app/src/organisms/ODD/NetworkSettings/SelectAuthenticationType.tsx b/app/src/organisms/ODD/NetworkSettings/SelectAuthenticationType.tsx index b918d48df5e..9f163929220 100644 --- a/app/src/organisms/ODD/NetworkSettings/SelectAuthenticationType.tsx +++ b/app/src/organisms/ODD/NetworkSettings/SelectAuthenticationType.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useDispatch, useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' @@ -21,6 +21,7 @@ import { getNetworkInterfaces, fetchStatus } from '/app/redux/networking' import { useIsUnboxingFlowOngoing } from '/app/redux-resources/config' import { AlternativeSecurityTypeModal } from './AlternativeSecurityTypeModal' +import type { ChangeEvent } from 'react' import type { WifiSecurityType } from '@opentrons/api-client' import type { Dispatch, State } from '/app/redux/types' @@ -44,7 +45,7 @@ export function SelectAuthenticationType({ const [ showAlternativeSecurityTypeModal, setShowAlternativeSecurityTypeModal, - ] = React.useState(false) + ] = useState(false) const securityButtons = [ { @@ -59,11 +60,11 @@ export function SelectAuthenticationType({ }, ] - const handleChange = (event: React.ChangeEvent): void => { + const handleChange = (event: ChangeEvent): void => { setSelectedAuthType(event.target.value as WifiSecurityType) } - React.useEffect(() => { + useEffect(() => { dispatch(fetchStatus(robotName)) }, [robotName, dispatch]) diff --git a/app/src/organisms/ODD/NetworkSettings/SetWifiSsid.tsx b/app/src/organisms/ODD/NetworkSettings/SetWifiSsid.tsx index d2ea891a254..114d906215b 100644 --- a/app/src/organisms/ODD/NetworkSettings/SetWifiSsid.tsx +++ b/app/src/organisms/ODD/NetworkSettings/SetWifiSsid.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useRef } from 'react' import { useTranslation } from 'react-i18next' import { @@ -15,10 +15,12 @@ import { import { FullKeyboard } from '/app/atoms/SoftwareKeyboard' import { useIsUnboxingFlowOngoing } from '/app/redux-resources/config' +import type { Dispatch, SetStateAction } from 'react' + interface SetWifiSsidProps { errorMessage?: string | null inputSsid: string - setInputSsid: React.Dispatch> + setInputSsid: Dispatch> } export function SetWifiSsid({ @@ -27,7 +29,7 @@ export function SetWifiSsid({ setInputSsid, }: SetWifiSsidProps): JSX.Element { const { t } = useTranslation(['device_settings', 'shared']) - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) const isUnboxingFlowOngoing = useIsUnboxingFlowOngoing() return ( diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupDeckConfiguration/index.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupDeckConfiguration/index.tsx index a7148788639..4f67deb6da6 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupDeckConfiguration/index.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupDeckConfiguration/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' @@ -26,6 +26,7 @@ import { useMostRecentCompletedAnalysis } from '/app/resources/runs' import { getTopPortalEl } from '/app/App/portal' import { useNotifyDeckConfigurationQuery } from '/app/resources/deck_configuration' +import type { Dispatch, SetStateAction } from 'react' import type { CutoutFixtureId, CutoutId, @@ -37,7 +38,7 @@ import type { SetupScreens } from '../types' interface ProtocolSetupDeckConfigurationProps { cutoutId: CutoutId | null runId: string - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> providedFixtureOptions: CutoutFixtureId[] } @@ -53,14 +54,12 @@ export function ProtocolSetupDeckConfiguration({ 'shared', ]) - const [ - showConfigurationModal, - setShowConfigurationModal, - ] = React.useState(true) - const [ - showDiscardChangeModal, - setShowDiscardChangeModal, - ] = React.useState(false) + const [showConfigurationModal, setShowConfigurationModal] = useState( + true + ) + const [showDiscardChangeModal, setShowDiscardChangeModal] = useState( + false + ) const mostRecentAnalysis = useMostRecentCompletedAnalysis(runId) const deckConfig = useNotifyDeckConfigurationQuery()?.data ?? [] diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx index 2d440fc9516..3daa713de88 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' @@ -52,6 +52,7 @@ import { useMostRecentCompletedAnalysis } from '/app/resources/runs' import { LabwareMapView } from './LabwareMapView' import { SingleLabwareModal } from './SingleLabwareModal' +import type { Dispatch, SetStateAction } from 'react' import type { UseQueryResult } from 'react-query' import type { HeaterShakerCloseLatchCreateCommand, @@ -71,7 +72,7 @@ const DECK_CONFIG_POLL_MS = 5000 export interface ProtocolSetupLabwareProps { runId: string - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> isConfirmed: boolean setIsConfirmed: (confirmed: boolean) => void } @@ -83,12 +84,12 @@ export function ProtocolSetupLabware({ setIsConfirmed, }: ProtocolSetupLabwareProps): JSX.Element { const { t } = useTranslation('protocol_setup') - const [showMapView, setShowMapView] = React.useState(false) + const [showMapView, setShowMapView] = useState(false) const [ showLabwareDetailsModal, setShowLabwareDetailsModal, - ] = React.useState(false) - const [selectedLabware, setSelectedLabware] = React.useState< + ] = useState(false) + const [selectedLabware, setSelectedLabware] = useState< | (LabwareDefinition2 & { location: LabwareLocation nickName: string | null @@ -289,7 +290,7 @@ function LabwareLatch({ createLiveCommand, isLoading: isLiveCommandLoading, } = useCreateLiveCommandMutation() - const [isRefetchingModules, setIsRefetchingModules] = React.useState(false) + const [isRefetchingModules, setIsRefetchingModules] = useState(false) const isLatchLoading = isLiveCommandLoading || isRefetchingModules || diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx index 153315d294b..d8aa63d4b26 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLiquids/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { Fragment, useState } from 'react' import { useTranslation } from 'react-i18next' import { ALIGN_CENTER, @@ -25,12 +25,14 @@ import { SmallButton } from '/app/atoms/buttons' import { useMostRecentCompletedAnalysis } from '/app/resources/runs' import { getTotalVolumePerLiquidId } from '/app/transformations/analysis' import { LiquidDetails } from './LiquidDetails' + +import type { Dispatch, SetStateAction } from 'react' import type { ParsedLiquid, RunTimeCommand } from '@opentrons/shared-data' import type { SetupScreens } from '../types' export interface ProtocolSetupLiquidsProps { runId: string - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> isConfirmed: boolean setIsConfirmed: (confirmed: boolean) => void } @@ -95,13 +97,13 @@ export function ProtocolSetupLiquids({ {liquidsInLoadOrder?.map(liquid => ( - + - + ))} @@ -116,7 +118,7 @@ interface LiquidsListProps { export function LiquidsList(props: LiquidsListProps): JSX.Element { const { liquid, runId, commands } = props - const [openItem, setOpenItem] = React.useState(false) + const [openItem, setOpenItem] = useState(false) const labwareByLiquidId = parseLabwareInfoByLiquidId(commands ?? []) return ( diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/FixtureTable.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/FixtureTable.tsx index 3491d7530c7..7d990e112a0 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/FixtureTable.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/FixtureTable.tsx @@ -1,4 +1,5 @@ -import * as React from 'react' +import { useState, Fragment } from 'react' +import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { ALIGN_CENTER, @@ -29,7 +30,9 @@ import { SmallButton } from '/app/atoms/buttons' import { useDeckConfigurationCompatibility } from '/app/resources/deck_configuration/hooks' import { getRequiredDeckConfig } from '/app/resources/deck_configuration/utils' import { LocationConflictModal } from '/app/organisms/LocationConflictModal' +import { getLocalRobot } from '/app/redux/discovery' +import type { Dispatch, SetStateAction } from 'react' import type { CompletedProtocolAnalysis, CutoutFixtureId, @@ -39,13 +42,11 @@ import type { } from '@opentrons/shared-data' import type { SetupScreens } from '../types' import type { CutoutConfigAndCompatibility } from '/app/resources/deck_configuration/hooks' -import { useSelector } from 'react-redux' -import { getLocalRobot } from '/app/redux/discovery' interface FixtureTableProps { robotType: RobotType mostRecentAnalysis: CompletedProtocolAnalysis | null - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> setCutoutId: (cutoutId: CutoutId) => void setProvidedFixtureOptions: (providedFixtureOptions: CutoutFixtureId[]) => void } @@ -134,7 +135,7 @@ export function FixtureTable({ interface FixtureTableItemProps extends CutoutConfigAndCompatibility { lastItem: boolean - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> setCutoutId: (cutoutId: CutoutId) => void setProvidedFixtureOptions: (providedFixtureOptions: CutoutFixtureId[]) => void deckDef: DeckDefinition @@ -158,7 +159,7 @@ function FixtureTableItem({ const [ showLocationConflictModal, setShowLocationConflictModal, - ] = React.useState(false) + ] = useState(false) const isCurrentFixtureCompatible = cutoutFixtureId != null && @@ -215,7 +216,7 @@ function FixtureTableItem({ ) } return ( - + {showLocationConflictModal ? ( { @@ -265,6 +266,6 @@ function FixtureTableItem({ {chipLabel} - + ) } diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ModuleTable.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ModuleTable.tsx index 1a0b93c6f57..d4b0a32ad2d 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ModuleTable.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ModuleTable.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' @@ -39,6 +39,7 @@ import { } from '/app/resources/runs' import { useNotifyDeckConfigurationQuery } from '/app/resources/deck_configuration' +import type { Dispatch, SetStateAction } from 'react' import type { CommandData } from '@opentrons/api-client' import type { CutoutConfig, DeckDefinition } from '@opentrons/shared-data' import type { ModulePrepCommandsType } from '/app/local-resources/modules' @@ -59,7 +60,7 @@ export function ModuleTable(props: ModuleTableProps): JSX.Element { const [ prepCommandErrorMessage, setPrepCommandErrorMessage, - ] = React.useState('') + ] = useState('') const { data: deckConfig } = useNotifyDeckConfigurationQuery({ refetchInterval: DECK_CONFIG_REFETCH_INTERVAL, @@ -119,7 +120,7 @@ interface ModuleTableItemProps { isLoading: boolean module: AttachedProtocolModuleMatch prepCommandErrorMessage: string - setPrepCommandErrorMessage: React.Dispatch> + setPrepCommandErrorMessage: Dispatch> deckDef: DeckDefinition robotName: string } @@ -162,11 +163,11 @@ function ModuleTableItem({ ) const isModuleReady = module.attachedModuleMatch != null - const [showModuleWizard, setShowModuleWizard] = React.useState(false) + const [showModuleWizard, setShowModuleWizard] = useState(false) const [ showLocationConflictModal, setShowLocationConflictModal, - ] = React.useState(false) + ] = useState(false) let moduleStatus: JSX.Element = ( <> diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ProtocolSetupModulesAndDeck.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ProtocolSetupModulesAndDeck.tsx index bcbc2b57bba..542ba3d3624 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ProtocolSetupModulesAndDeck.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupModulesAndDeck/ProtocolSetupModulesAndDeck.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' @@ -37,6 +37,7 @@ import { ModuleTable } from './ModuleTable' import { ModulesAndDeckMapView } from './ModulesAndDeckMapView' import { useNotifyDeckConfigurationQuery } from '/app/resources/deck_configuration' +import type { Dispatch, SetStateAction } from 'react' import type { CutoutId, CutoutFixtureId } from '@opentrons/shared-data' import type { SetupScreens } from '../types' @@ -45,7 +46,7 @@ const DECK_CONFIG_POLL_MS = 5000 interface ProtocolSetupModulesAndDeckProps { runId: string - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> setCutoutId: (cutoutId: CutoutId) => void setProvidedFixtureOptions: (providedFixtureOptions: CutoutFixtureId[]) => void } @@ -62,7 +63,7 @@ export function ProtocolSetupModulesAndDeck({ const { i18n, t } = useTranslation('protocol_setup') const navigate = useNavigate() const runStatus = useRunStatus(runId) - React.useEffect(() => { + useEffect(() => { if (runStatus === RUN_STATUS_STOPPED) { navigate('/protocols') } @@ -70,12 +71,12 @@ export function ProtocolSetupModulesAndDeck({ const [ showSetupInstructionsModal, setShowSetupInstructionsModal, - ] = React.useState(false) - const [showMapView, setShowMapView] = React.useState(false) + ] = useState(false) + const [showMapView, setShowMapView] = useState(false) const [ clearModuleMismatchBanner, setClearModuleMismatchBanner, - ] = React.useState(false) + ] = useState(false) const mostRecentAnalysis = useMostRecentCompletedAnalysis(runId) const deckDef = getDeckDefFromRobotType(FLEX_ROBOT_TYPE) diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx index d1cf5ae2c0a..e5c8efbcc69 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/AirGap.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -19,6 +19,7 @@ import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ACTIONS } from '../constants' +import type { Dispatch } from 'react' import type { QuickTransferSummaryState, QuickTransferSummaryAction, @@ -30,7 +31,7 @@ import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' interface AirGapProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind } @@ -38,15 +39,15 @@ export function AirGap(props: AirGapProps): JSX.Element { const { kind, onBack, state, dispatch } = props const { t } = useTranslation('quick_transfer') const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [airGapEnabled, setAirGapEnabled] = React.useState( + const [airGapEnabled, setAirGapEnabled] = useState( kind === 'aspirate' ? state.airGapAspirate != null : state.airGapDispense != null ) - const [currentStep, setCurrentStep] = React.useState(1) - const [volume, setVolume] = React.useState( + const [currentStep, setCurrentStep] = useState(1) + const [volume, setVolume] = useState( kind === 'aspirate' ? state.airGapAspirate ?? null : state.airGapDispense ?? null diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BaseSettings.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BaseSettings.tsx index 9f300b335ad..297054b1d03 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BaseSettings.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BaseSettings.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ALIGN_CENTER, @@ -17,6 +17,7 @@ import { import { FlowRateEntry } from './FlowRate' import { PipettePath } from './PipettePath' +import type { Dispatch } from 'react' import type { QuickTransferSummaryAction, QuickTransferSummaryState, @@ -24,15 +25,13 @@ import type { interface BaseSettingsProps { state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch } export function BaseSettings(props: BaseSettingsProps): JSX.Element | null { const { state, dispatch } = props const { t } = useTranslation(['quick_transfer', 'shared']) - const [selectedSetting, setSelectedSetting] = React.useState( - null - ) + const [selectedSetting, setSelectedSetting] = useState(null) let pipettePath: string = '' if (state.path === 'single') { diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BlowOut.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BlowOut.tsx index 55984b27d8b..e961b480960 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BlowOut.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/BlowOut.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import isEqual from 'lodash/isEqual' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -22,6 +22,7 @@ import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { ACTIONS } from '../constants' +import type { Dispatch } from 'react' import type { DeckConfiguration } from '@opentrons/shared-data' import type { QuickTransferSummaryState, @@ -35,7 +36,7 @@ import { i18n } from '/app/i18n' interface BlowOutProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind } @@ -96,11 +97,11 @@ export function BlowOut(props: BlowOutProps): JSX.Element { const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() const deckConfig = useNotifyDeckConfigurationQuery().data ?? [] - const [isBlowOutEnabled, setisBlowOutEnabled] = React.useState( + const [isBlowOutEnabled, setisBlowOutEnabled] = useState( state.blowOut != null ) - const [currentStep, setCurrentStep] = React.useState(1) - const [blowOutLocation, setBlowOutLocation] = React.useState< + const [currentStep, setCurrentStep] = useState(1) + const [blowOutLocation, setBlowOutLocation] = useState< BlowOutLocation | undefined >(state.blowOut) diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Delay.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Delay.tsx index 0692cc904ac..556ddc181c8 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Delay.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Delay.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -8,8 +8,8 @@ import { DIRECTION_COLUMN, Flex, InputField, - RadioButton, POSITION_FIXED, + RadioButton, SPACING, } from '@opentrons/components' import { ANALYTICS_QUICK_TRANSFER_SETTING_SAVED } from '/app/redux/analytics' @@ -18,6 +18,7 @@ import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ACTIONS } from '../constants' +import type { Dispatch } from 'react' import type { QuickTransferSummaryState, QuickTransferSummaryAction, @@ -29,7 +30,7 @@ import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' interface DelayProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind } @@ -37,20 +38,20 @@ export function Delay(props: DelayProps): JSX.Element { const { kind, onBack, state, dispatch } = props const { t } = useTranslation('quick_transfer') const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [currentStep, setCurrentStep] = React.useState(1) - const [delayIsEnabled, setDelayIsEnabled] = React.useState( + const [currentStep, setCurrentStep] = useState(1) + const [delayIsEnabled, setDelayIsEnabled] = useState( kind === 'aspirate' ? state.delayAspirate != null : state.delayDispense != null ) - const [delayDuration, setDelayDuration] = React.useState( + const [delayDuration, setDelayDuration] = useState( kind === 'aspirate' ? state.delayAspirate?.delayDuration ?? null : state.delayDispense?.delayDuration ?? null ) - const [position, setPosition] = React.useState( + const [position, setPosition] = useState( kind === 'aspirate' ? state.delayAspirate?.positionFromBottom ?? null : state.delayDispense?.positionFromBottom ?? null diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/FlowRate.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/FlowRate.tsx index 88279b1c76a..1b2bed604fc 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/FlowRate.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/FlowRate.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' @@ -24,6 +24,7 @@ import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ACTIONS } from '../constants' +import type { Dispatch } from 'react' import type { SupportedTip } from '@opentrons/shared-data' import type { QuickTransferSummaryState, @@ -34,7 +35,7 @@ import type { interface FlowRateEntryProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind } @@ -42,9 +43,9 @@ export function FlowRateEntry(props: FlowRateEntryProps): JSX.Element { const { onBack, state, dispatch, kind } = props const { i18n, t } = useTranslation(['quick_transfer', 'shared']) const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [flowRate, setFlowRate] = React.useState( + const [flowRate, setFlowRate] = useState( kind === 'aspirate' ? state.aspirateFlowRate : state.dispenseFlowRate ) diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Mix.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Mix.tsx index 3774662bc38..b6c7862310c 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Mix.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/Mix.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -8,8 +8,8 @@ import { DIRECTION_COLUMN, Flex, InputField, - RadioButton, POSITION_FIXED, + RadioButton, SPACING, } from '@opentrons/components' @@ -18,19 +18,20 @@ import { getTopPortalEl } from '/app/App/portal' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ACTIONS } from '../constants' +import { i18n } from '/app/i18n' +import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' +import type { Dispatch } from 'react' import type { QuickTransferSummaryState, QuickTransferSummaryAction, FlowRateKind, } from '../types' -import { i18n } from '/app/i18n' -import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' interface MixProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind } @@ -38,20 +39,20 @@ export function Mix(props: MixProps): JSX.Element { const { kind, onBack, state, dispatch } = props const { t } = useTranslation('quick_transfer') const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [mixIsEnabled, setMixIsEnabled] = React.useState( + const [mixIsEnabled, setMixIsEnabled] = useState( kind === 'aspirate' ? state.mixOnAspirate != null : state.mixOnDispense != null ) - const [currentStep, setCurrentStep] = React.useState(1) - const [mixVolume, setMixVolume] = React.useState( + const [currentStep, setCurrentStep] = useState(1) + const [mixVolume, setMixVolume] = useState( kind === 'aspirate' ? state.mixOnAspirate?.mixVolume ?? null : state.mixOnDispense?.mixVolume ?? null ) - const [mixReps, setMixReps] = React.useState( + const [mixReps, setMixReps] = useState( kind === 'aspirate' ? state.mixOnAspirate?.repititions ?? null : state.mixOnDispense?.repititions ?? null diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/PipettePath.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/PipettePath.tsx index 9db8923bd58..eabbe9fc678 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/PipettePath.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/PipettePath.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import isEqual from 'lodash/isEqual' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -9,8 +9,8 @@ import { DIRECTION_COLUMN, Flex, InputField, - RadioButton, POSITION_FIXED, + RadioButton, SPACING, } from '@opentrons/components' @@ -25,6 +25,7 @@ import { ACTIONS } from '../constants' import { i18n } from '/app/i18n' import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' +import type { Dispatch } from 'react' import type { PathOption, QuickTransferSummaryState, @@ -35,25 +36,25 @@ import type { interface PipettePathProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch } export function PipettePath(props: PipettePathProps): JSX.Element { const { onBack, state, dispatch } = props const { t } = useTranslation('quick_transfer') const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) const deckConfig = useNotifyDeckConfigurationQuery().data ?? [] - const [selectedPath, setSelectedPath] = React.useState(state.path) - const [currentStep, setCurrentStep] = React.useState(1) - const [blowOutLocation, setBlowOutLocation] = React.useState< + const [selectedPath, setSelectedPath] = useState(state.path) + const [currentStep, setCurrentStep] = useState(1) + const [blowOutLocation, setBlowOutLocation] = useState< BlowOutLocation | undefined >(state.blowOut) - const [disposalVolume, setDisposalVolume] = React.useState< - number | undefined - >(state?.disposalVolume) + const [disposalVolume, setDisposalVolume] = useState( + state?.disposalVolume + ) const maxPipetteVolume = Object.values(state.pipette.liquids)[0].maxVolume const tipVolume = Object.values(state.tipRack.wells)[0].totalLiquidVolume diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TipPosition.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TipPosition.tsx index 92082cf9c7d..8a5abf1a169 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TipPosition.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TipPosition.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { @@ -19,6 +19,7 @@ import { ACTIONS } from '../constants' import { createPortal } from 'react-dom' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' +import type { Dispatch } from 'react' import type { QuickTransferSummaryState, QuickTransferSummaryAction, @@ -28,7 +29,7 @@ import type { interface TipPositionEntryProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind // TODO: rename flowRateKind to be generic } @@ -36,9 +37,9 @@ export function TipPositionEntry(props: TipPositionEntryProps): JSX.Element { const { onBack, state, dispatch, kind } = props const { i18n, t } = useTranslation(['quick_transfer', 'shared']) const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [tipPosition, setTipPosition] = React.useState( + const [tipPosition, setTipPosition] = useState( kind === 'aspirate' ? state.tipPositionAspirate : state.tipPositionDispense ) diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx index a30b204d4a4..41780d65181 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/TouchTip.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -8,8 +8,8 @@ import { DIRECTION_COLUMN, Flex, InputField, - RadioButton, POSITION_FIXED, + RadioButton, SPACING, } from '@opentrons/components' @@ -21,6 +21,7 @@ import { i18n } from '/app/i18n' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' +import type { Dispatch } from 'react' import type { QuickTransferSummaryState, QuickTransferSummaryAction, @@ -30,7 +31,7 @@ import type { interface TouchTipProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch kind: FlowRateKind } @@ -38,15 +39,15 @@ export function TouchTip(props: TouchTipProps): JSX.Element { const { kind, onBack, state, dispatch } = props const { t } = useTranslation('quick_transfer') const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [touchTipIsEnabled, setTouchTipIsEnabled] = React.useState( + const [touchTipIsEnabled, setTouchTipIsEnabled] = useState( kind === 'aspirate' ? state.touchTipAspirate != null : state.touchTipDispense != null ) - const [currentStep, setCurrentStep] = React.useState(1) - const [position, setPosition] = React.useState( + const [currentStep, setCurrentStep] = useState(1) + const [position, setPosition] = useState( kind === 'aspirate' ? state.touchTipAspirate ?? null : state.touchTipDispense ?? null diff --git a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/index.tsx b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/index.tsx index 2911b7975d1..33a603b6f75 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/index.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/QuickTransferAdvancedSettings/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { @@ -34,13 +34,14 @@ import { TouchTip } from './TouchTip' import { AirGap } from './AirGap' import { BlowOut } from './BlowOut' +import type { Dispatch } from 'react' import type { QuickTransferSummaryAction, QuickTransferSummaryState, } from '../types' interface QuickTransferAdvancedSettingsProps { state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch } export function QuickTransferAdvancedSettings( @@ -48,13 +49,11 @@ export function QuickTransferAdvancedSettings( ): JSX.Element | null { const { state, dispatch } = props const { t, i18n } = useTranslation(['quick_transfer', 'shared']) - const [selectedSetting, setSelectedSetting] = React.useState( - null - ) + const [selectedSetting, setSelectedSetting] = useState(null) const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() const { makeSnackbar } = useToaster() - React.useEffect(() => { + useEffect(() => { trackEventWithRobotSerial({ name: ANALYTICS_QUICK_TRANSFER_ADVANCED_SETTINGS_TAB, properties: {}, diff --git a/app/src/organisms/ODD/QuickTransferFlow/SelectDestLabware.tsx b/app/src/organisms/ODD/QuickTransferFlow/SelectDestLabware.tsx index ba90e54de4d..62921e8e08d 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SelectDestLabware.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SelectDestLabware.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { Flex, @@ -15,6 +15,7 @@ import { import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { getCompatibleLabwareByCategory } from './utils' +import type { ComponentProps, Dispatch } from 'react' import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { SmallButton } from '/app/atoms/buttons' import type { LabwareFilter } from '/app/local-resources/labware' @@ -26,9 +27,9 @@ import type { interface SelectDestLabwareProps { onNext: () => void onBack: () => void - exitButtonProps: React.ComponentProps + exitButtonProps: ComponentProps state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export function SelectDestLabware( @@ -44,10 +45,8 @@ export function SelectDestLabware( if (state.pipette?.channels === 1) { labwareDisplayCategoryFilters.push('tubeRack') } - const [selectedCategory, setSelectedCategory] = React.useState( - 'all' - ) - const [selectedLabware, setSelectedLabware] = React.useState< + const [selectedCategory, setSelectedCategory] = useState('all') + const [selectedLabware, setSelectedLabware] = useState< LabwareDefinition2 | 'source' | undefined >(state.destination) diff --git a/app/src/organisms/ODD/QuickTransferFlow/SelectDestWells.tsx b/app/src/organisms/ODD/QuickTransferFlow/SelectDestWells.tsx index 0cb402f6ee8..41dcf155fb7 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SelectDestWells.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SelectDestWells.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import without from 'lodash/without' @@ -24,6 +24,12 @@ import { RECTANGULAR_WELL_96_PLATE_DEFINITION_URI, } from './SelectSourceWells' +import type { + ComponentProps, + Dispatch, + SetStateAction, + MouseEvent, +} from 'react' import type { SmallButton } from '/app/atoms/buttons' import type { OddModalHeaderBaseProps } from '/app/molecules/OddModal/types' import type { @@ -35,7 +41,7 @@ interface SelectDestWellsProps { onNext: () => void onBack: () => void state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export function SelectDestWells(props: SelectDestWellsProps): JSX.Element { @@ -53,12 +59,11 @@ export function SelectDestWells(props: SelectDestWellsProps): JSX.Element { const [ showNumberWellsSelectedErrorModal, setShowNumberWellsSelectedErrorModal, - ] = React.useState(false) - const [selectedWells, setSelectedWells] = React.useState(destinationWellGroup) - const [ - isNumberWellsSelectedError, - setIsNumberWellsSelectedError, - ] = React.useState(false) + ] = useState(false) + const [selectedWells, setSelectedWells] = useState(destinationWellGroup) + const [isNumberWellsSelectedError, setIsNumberWellsSelectedError] = useState( + false + ) const selectedWellCount = Object.keys(selectedWells).length const sourceWellCount = state.sourceWells?.length ?? 0 @@ -88,7 +93,7 @@ export function SelectDestWells(props: SelectDestWellsProps): JSX.Element { } const is384WellPlate = labwareDefinition?.parameters.format === '384Standard' - const [analyticsStartTime] = React.useState(new Date()) + const [analyticsStartTime] = useState(new Date()) const handleClickNext = (): void => { if ( @@ -130,10 +135,10 @@ export function SelectDestWells(props: SelectDestWellsProps): JSX.Element { } } - const resetButtonProps: React.ComponentProps = { + const resetButtonProps: ComponentProps = { buttonType: 'tertiaryLowLight', buttonText: t('shared:reset'), - onClick: (e: React.MouseEvent) => { + onClick: (e: MouseEvent) => { setIsNumberWellsSelectedError(false) setSelectedWells({}) e.currentTarget.blur?.() @@ -214,9 +219,7 @@ function NumberWellsSelectedErrorModal({ selectionUnit, selectionUnits, }: { - setShowNumberWellsSelectedErrorModal: React.Dispatch< - React.SetStateAction - > + setShowNumberWellsSelectedErrorModal: Dispatch> wellCount: number selectionUnit: string selectionUnits: string diff --git a/app/src/organisms/ODD/QuickTransferFlow/SelectPipette.tsx b/app/src/organisms/ODD/QuickTransferFlow/SelectPipette.tsx index 3331800e1a9..0b01a93977d 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SelectPipette.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SelectPipette.tsx @@ -1,18 +1,19 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { + DIRECTION_COLUMN, Flex, - SPACING, LegacyStyledText, - TYPOGRAPHY, - DIRECTION_COLUMN, RadioButton, + SPACING, + TYPOGRAPHY, } from '@opentrons/components' import { useInstrumentsQuery } from '@opentrons/react-api-client' import { RIGHT, LEFT } from '@opentrons/shared-data' import { usePipetteSpecsV2 } from '/app/local-resources/instruments' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' +import type { ComponentProps, Dispatch } from 'react' import type { PipetteData, Mount } from '@opentrons/api-client' import type { SmallButton } from '/app/atoms/buttons' import type { @@ -23,9 +24,9 @@ import type { interface SelectPipetteProps { onNext: () => void onBack: () => void - exitButtonProps: React.ComponentProps + exitButtonProps: ComponentProps state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export function SelectPipette(props: SelectPipetteProps): JSX.Element { @@ -44,9 +45,9 @@ export function SelectPipette(props: SelectPipetteProps): JSX.Element { const rightPipetteSpecs = usePipetteSpecsV2(rightPipette?.instrumentModel) // automatically select 96 channel if it is attached - const [selectedPipette, setSelectedPipette] = React.useState< - Mount | undefined - >(leftPipetteSpecs?.channels === 96 ? LEFT : state.mount) + const [selectedPipette, setSelectedPipette] = useState( + leftPipetteSpecs?.channels === 96 ? LEFT : state.mount + ) const handleClickNext = (): void => { const selectedPipetteSpecs = diff --git a/app/src/organisms/ODD/QuickTransferFlow/SelectSourceLabware.tsx b/app/src/organisms/ODD/QuickTransferFlow/SelectSourceLabware.tsx index 2d4752a5aa1..c51e4782c1d 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SelectSourceLabware.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SelectSourceLabware.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { Flex, @@ -15,6 +15,7 @@ import { import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { getCompatibleLabwareByCategory } from './utils' +import type { ComponentProps, Dispatch } from 'react' import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { SmallButton } from '/app/atoms/buttons' import type { LabwareFilter } from '/app/local-resources/labware' @@ -26,9 +27,9 @@ import type { interface SelectSourceLabwareProps { onNext: () => void onBack: () => void - exitButtonProps: React.ComponentProps + exitButtonProps: ComponentProps state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export function SelectSourceLabware( @@ -44,11 +45,9 @@ export function SelectSourceLabware( if (state.pipette?.channels === 1) { labwareDisplayCategoryFilters.push('tubeRack') } - const [selectedCategory, setSelectedCategory] = React.useState( - 'all' - ) + const [selectedCategory, setSelectedCategory] = useState('all') - const [selectedLabware, setSelectedLabware] = React.useState< + const [selectedLabware, setSelectedLabware] = useState< LabwareDefinition2 | undefined >(state.source) diff --git a/app/src/organisms/ODD/QuickTransferFlow/SelectSourceWells.tsx b/app/src/organisms/ODD/QuickTransferFlow/SelectSourceWells.tsx index a78ec884560..1a643780e08 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SelectSourceWells.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SelectSourceWells.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import without from 'lodash/without' import { @@ -14,6 +14,7 @@ import { WellSelection } from '/app/organisms/WellSelection' import { ANALYTICS_QUICK_TRANSFER_WELL_SELECTION_DURATION } from '/app/redux/analytics' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' +import type { ComponentProps, Dispatch, MouseEvent } from 'react' import type { SmallButton } from '/app/atoms/buttons' import type { QuickTransferWizardState, @@ -24,7 +25,7 @@ interface SelectSourceWellsProps { onNext: () => void onBack: () => void state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export const CIRCULAR_WELL_96_PLATE_DEFINITION_URI = @@ -42,8 +43,8 @@ export function SelectSourceWells(props: SelectSourceWellsProps): JSX.Element { return { ...acc, [well]: null } }, {}) - const [selectedWells, setSelectedWells] = React.useState(sourceWellGroup) - const [startingTimeStamp] = React.useState(new Date()) + const [selectedWells, setSelectedWells] = useState(sourceWellGroup) + const [startingTimeStamp] = useState(new Date()) const is384WellPlate = state.source?.parameters.format === '384Standard' const handleClickNext = (): void => { @@ -62,10 +63,10 @@ export function SelectSourceWells(props: SelectSourceWellsProps): JSX.Element { onNext() } - const resetButtonProps: React.ComponentProps = { + const resetButtonProps: ComponentProps = { buttonType: 'tertiaryLowLight', buttonText: t('shared:reset'), - onClick: (e: React.MouseEvent) => { + onClick: (e: MouseEvent) => { setSelectedWells({}) e.currentTarget.blur?.() }, diff --git a/app/src/organisms/ODD/QuickTransferFlow/SelectTipRack.tsx b/app/src/organisms/ODD/QuickTransferFlow/SelectTipRack.tsx index e8ebd52d90c..f5fd1abae85 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SelectTipRack.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SelectTipRack.tsx @@ -1,14 +1,15 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { - Flex, - SPACING, DIRECTION_COLUMN, + Flex, RadioButton, + SPACING, } from '@opentrons/components' import { getAllDefinitions } from '@opentrons/shared-data' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' +import type { ComponentProps, Dispatch } from 'react' import type { LabwareDefinition2 } from '@opentrons/shared-data' import type { SmallButton } from '/app/atoms/buttons' import type { @@ -19,9 +20,9 @@ import type { interface SelectTipRackProps { onNext: () => void onBack: () => void - exitButtonProps: React.ComponentProps + exitButtonProps: ComponentProps state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export function SelectTipRack(props: SelectTipRackProps): JSX.Element { @@ -32,7 +33,7 @@ export function SelectTipRack(props: SelectTipRackProps): JSX.Element { const selectedPipetteDefaultTipracks = state.pipette?.liquids.default.defaultTipracks ?? [] - const [selectedTipRack, setSelectedTipRack] = React.useState< + const [selectedTipRack, setSelectedTipRack] = useState< LabwareDefinition2 | undefined >(state.tipRack) diff --git a/app/src/organisms/ODD/QuickTransferFlow/SummaryAndSettings.tsx b/app/src/organisms/ODD/QuickTransferFlow/SummaryAndSettings.tsx index 6ddba5ca50e..2567b703b93 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/SummaryAndSettings.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/SummaryAndSettings.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useReducer } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import { useQueryClient } from 'react-query' @@ -33,11 +33,12 @@ import { SaveOrRunModal } from './SaveOrRunModal' import { getInitialSummaryState, createQuickTransferFile } from './utils' import { quickTransferSummaryReducer } from './reducers' +import type { ComponentProps } from 'react' import type { SmallButton } from '/app/atoms/buttons' import type { QuickTransferWizardState } from './types' interface SummaryAndSettingsProps { - exitButtonProps: React.ComponentProps + exitButtonProps: ComponentProps state: QuickTransferWizardState analyticsStartTime: Date } @@ -51,18 +52,14 @@ export function SummaryAndSettings( const queryClient = useQueryClient() const host = useHost() const { t } = useTranslation(['quick_transfer', 'shared']) - const [showSaveOrRunModal, setShowSaveOrRunModal] = React.useState( - false - ) + const [showSaveOrRunModal, setShowSaveOrRunModal] = useState(false) const displayCategory: string[] = [ 'overview', 'advanced_settings', 'tip_management', ] - const [selectedCategory, setSelectedCategory] = React.useState( - 'overview' - ) + const [selectedCategory, setSelectedCategory] = useState('overview') const deckConfig = useNotifyDeckConfigurationQuery().data ?? [] const initialSummaryState = getInitialSummaryState({ @@ -71,7 +68,7 @@ export function SummaryAndSettings( state: wizardFlowState, deckConfig, }) - const [state, dispatch] = React.useReducer( + const [state, dispatch] = useReducer( quickTransferSummaryReducer, initialSummaryState ) diff --git a/app/src/organisms/ODD/QuickTransferFlow/TipManagement/ChangeTip.tsx b/app/src/organisms/ODD/QuickTransferFlow/TipManagement/ChangeTip.tsx index 7c72dbe202e..dd3869ff329 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/TipManagement/ChangeTip.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/TipManagement/ChangeTip.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -16,6 +16,7 @@ import { getTopPortalEl } from '/app/App/portal' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' +import type { Dispatch } from 'react' import type { ChangeTipOptions, QuickTransferSummaryState, @@ -25,7 +26,7 @@ import type { interface ChangeTipProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch } export function ChangeTip(props: ChangeTipProps): JSX.Element { @@ -53,7 +54,7 @@ export function ChangeTip(props: ChangeTipProps): JSX.Element { const [ selectedChangeTipOption, setSelectedChangeTipOption, - ] = React.useState(state.changeTip) + ] = useState(state.changeTip) const handleClickSave = (): void => { if (selectedChangeTipOption !== state.changeTip) { diff --git a/app/src/organisms/ODD/QuickTransferFlow/TipManagement/TipDropLocation.tsx b/app/src/organisms/ODD/QuickTransferFlow/TipManagement/TipDropLocation.tsx index 6dae428684b..b61a73389cd 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/TipManagement/TipDropLocation.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/TipManagement/TipDropLocation.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' import { @@ -21,6 +21,7 @@ import { useNotifyDeckConfigurationQuery } from '/app/resources/deck_configurati import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' +import type { Dispatch } from 'react' import type { QuickTransferSummaryState, QuickTransferSummaryAction, @@ -30,7 +31,7 @@ import type { CutoutConfig } from '@opentrons/shared-data' interface TipDropLocationProps { onBack: () => void state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch } export function TipDropLocation(props: TipDropLocationProps): JSX.Element { @@ -56,7 +57,7 @@ export function TipDropLocation(props: TipDropLocationProps): JSX.Element { const [ selectedTipDropLocation, setSelectedTipDropLocation, - ] = React.useState(state.dropTipLocation) + ] = useState(state.dropTipLocation) const handleClickSave = (): void => { if (selectedTipDropLocation.cutoutId !== state.dropTipLocation.cutoutId) { diff --git a/app/src/organisms/ODD/QuickTransferFlow/TipManagement/index.tsx b/app/src/organisms/ODD/QuickTransferFlow/TipManagement/index.tsx index 03f33c965f2..4a87e67c2c7 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/TipManagement/index.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/TipManagement/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { ALIGN_CENTER, @@ -21,6 +21,7 @@ import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' import { ChangeTip } from './ChangeTip' import { TipDropLocation } from './TipDropLocation' +import type { Dispatch } from 'react' import type { QuickTransferSummaryAction, QuickTransferSummaryState, @@ -28,18 +29,16 @@ import type { interface TipManagementProps { state: QuickTransferSummaryState - dispatch: React.Dispatch + dispatch: Dispatch } export function TipManagement(props: TipManagementProps): JSX.Element | null { const { state, dispatch } = props const { t } = useTranslation(['quick_transfer', 'shared']) const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const [selectedSetting, setSelectedSetting] = React.useState( - null - ) + const [selectedSetting, setSelectedSetting] = useState(null) - React.useEffect(() => { + useEffect(() => { trackEventWithRobotSerial({ name: ANALYTICS_QUICK_TRANSFER_TIP_MANAGEMENT_TAB, properties: {}, diff --git a/app/src/organisms/ODD/QuickTransferFlow/VolumeEntry.tsx b/app/src/organisms/ODD/QuickTransferFlow/VolumeEntry.tsx index 0a6526676d6..58bf2f570e7 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/VolumeEntry.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/VolumeEntry.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useRef } from 'react' import { useTranslation } from 'react-i18next' import { @@ -14,6 +14,7 @@ import { NumericalKeyboard } from '/app/atoms/SoftwareKeyboard' import { getVolumeRange } from './utils' import { CONSOLIDATE, DISTRIBUTE } from './constants' +import type { ComponentProps, Dispatch } from 'react' import type { SmallButton } from '/app/atoms/buttons' import type { QuickTransferWizardState, @@ -23,17 +24,17 @@ import type { interface VolumeEntryProps { onNext: () => void onBack: () => void - exitButtonProps: React.ComponentProps + exitButtonProps: ComponentProps state: QuickTransferWizardState - dispatch: React.Dispatch + dispatch: Dispatch } export function VolumeEntry(props: VolumeEntryProps): JSX.Element { const { onNext, onBack, exitButtonProps, state, dispatch } = props const { i18n, t } = useTranslation(['quick_transfer', 'shared']) - const keyboardRef = React.useRef(null) + const keyboardRef = useRef(null) - const [volume, setVolume] = React.useState( + const [volume, setVolume] = useState( state.volume ? state.volume.toString() : '' ) const volumeRange = getVolumeRange(state) diff --git a/app/src/organisms/ODD/QuickTransferFlow/index.tsx b/app/src/organisms/ODD/QuickTransferFlow/index.tsx index f7d94a46000..fb0a76b6f47 100644 --- a/app/src/organisms/ODD/QuickTransferFlow/index.tsx +++ b/app/src/organisms/ODD/QuickTransferFlow/index.tsx @@ -1,10 +1,10 @@ -import * as React from 'react' +import { useState, useReducer } from 'react' import { useNavigate } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { - useConditionalConfirm, - StepMeter, POSITION_STICKY, + StepMeter, + useConditionalConfirm, } from '@opentrons/components' import { ANALYTICS_QUICK_TRANSFER_EXIT_EARLY } from '/app/redux/analytics' import { useTrackEventWithRobotSerial } from '/app/redux-resources/analytics' @@ -20,6 +20,7 @@ import { VolumeEntry } from './VolumeEntry' import { SummaryAndSettings } from './SummaryAndSettings' import { quickTransferWizardReducer } from './reducers' +import type { ComponentProps } from 'react' import type { SmallButton } from '/app/atoms/buttons' import type { QuickTransferWizardState } from './types' @@ -30,13 +31,13 @@ export const QuickTransferFlow = (): JSX.Element => { const navigate = useNavigate() const { i18n, t } = useTranslation(['quick_transfer', 'shared']) const { trackEventWithRobotSerial } = useTrackEventWithRobotSerial() - const [state, dispatch] = React.useReducer( + const [state, dispatch] = useReducer( quickTransferWizardReducer, initialQuickTransferState ) - const [currentStep, setCurrentStep] = React.useState(0) + const [currentStep, setCurrentStep] = useState(0) - const [analyticsStartTime] = React.useState(new Date()) + const [analyticsStartTime] = useState(new Date()) const { confirm: confirmExit, @@ -52,7 +53,7 @@ export const QuickTransferFlow = (): JSX.Element => { navigate('/quick-transfer') }, true) - const exitButtonProps: React.ComponentProps = { + const exitButtonProps: ComponentProps = { buttonType: 'tertiaryLowLight', buttonText: i18n.format(t('shared:exit'), 'capitalize'), onClick: confirmExit, diff --git a/app/src/organisms/ODD/RobotSettingsDashboard/LanguageSetting.tsx b/app/src/organisms/ODD/RobotSettingsDashboard/LanguageSetting.tsx index a935a5571ad..49f58e26993 100644 --- a/app/src/organisms/ODD/RobotSettingsDashboard/LanguageSetting.tsx +++ b/app/src/organisms/ODD/RobotSettingsDashboard/LanguageSetting.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { Fragment } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import styled from 'styled-components' @@ -17,6 +17,7 @@ import { LANGUAGES } from '/app/i18n' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { getAppLanguage, updateConfigValue } from '/app/redux/config' +import type { ChangeEvent } from 'react' import type { Dispatch } from '/app/redux/types' import type { SetSettingOption } from './types' @@ -49,7 +50,7 @@ export function LanguageSetting({ const appLanguage = useSelector(getAppLanguage) - const handleChange = (event: React.ChangeEvent): void => { + const handleChange = (event: ChangeEvent): void => { dispatch(updateConfigValue('language.appLanguage', event.target.value)) } @@ -68,7 +69,7 @@ export function LanguageSetting({ padding={`${SPACING.spacing16} ${SPACING.spacing40} ${SPACING.spacing40} ${SPACING.spacing40}`} > {LANGUAGES.map(lng => ( - + - + ))} diff --git a/app/src/organisms/ODD/RobotSettingsDashboard/NetworkSettings/RobotSettingsJoinOtherNetwork.tsx b/app/src/organisms/ODD/RobotSettingsDashboard/NetworkSettings/RobotSettingsJoinOtherNetwork.tsx index fed06e4572c..f3645066924 100644 --- a/app/src/organisms/ODD/RobotSettingsDashboard/NetworkSettings/RobotSettingsJoinOtherNetwork.tsx +++ b/app/src/organisms/ODD/RobotSettingsDashboard/NetworkSettings/RobotSettingsJoinOtherNetwork.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { DIRECTION_COLUMN, Flex } from '@opentrons/components' @@ -6,11 +6,12 @@ import { DIRECTION_COLUMN, Flex } from '@opentrons/components' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' import { SetWifiSsid } from '../../NetworkSettings' +import type { Dispatch, SetStateAction } from 'react' import type { SetSettingOption } from '../types' interface RobotSettingsJoinOtherNetworkProps { setCurrentOption: SetSettingOption - setSelectedSsid: React.Dispatch> + setSelectedSsid: Dispatch> } /** @@ -22,8 +23,8 @@ export function RobotSettingsJoinOtherNetwork({ }: RobotSettingsJoinOtherNetworkProps): JSX.Element { const { i18n, t } = useTranslation('device_settings') - const [inputSsid, setInputSsid] = React.useState('') - const [errorMessage, setErrorMessage] = React.useState(null) + const [inputSsid, setInputSsid] = useState('') + const [errorMessage, setErrorMessage] = useState(null) const handleContinue = (): void => { if (inputSsid.length >= 2 && inputSsid.length <= 32) { diff --git a/app/src/organisms/ODD/RobotSettingsDashboard/TouchScreenSleep.tsx b/app/src/organisms/ODD/RobotSettingsDashboard/TouchScreenSleep.tsx index ea3d879088f..cb123b261be 100644 --- a/app/src/organisms/ODD/RobotSettingsDashboard/TouchScreenSleep.tsx +++ b/app/src/organisms/ODD/RobotSettingsDashboard/TouchScreenSleep.tsx @@ -1,12 +1,12 @@ -import * as React from 'react' +import { useEffect, useRef } from 'react' import { useDispatch, useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' import { DIRECTION_COLUMN, Flex, - SPACING, RadioButton, + SPACING, } from '@opentrons/components' import { ChildNavigation } from '/app/organisms/ODD/ChildNavigation' @@ -16,6 +16,7 @@ import { } from '/app/redux/config' import { SLEEP_NEVER_MS } from '/app/local-resources/config' +import type { ChangeEvent } from 'react' import type { Dispatch } from '/app/redux/types' import type { SetSettingOption } from './types' @@ -31,7 +32,7 @@ export function TouchScreenSleep({ const { t } = useTranslation(['device_settings']) const { sleepMs } = useSelector(getOnDeviceDisplaySettings) ?? SLEEP_NEVER_MS const dispatch = useDispatch() - const screenRef = React.useRef(null) + const screenRef = useRef(null) // Note (kj:02/10/2023) value's unit is ms const settingsButtons = [ @@ -44,7 +45,7 @@ export function TouchScreenSleep({ { label: t('one_hour'), value: SLEEP_TIME_MS * 60 }, ] - const handleChange = (event: React.ChangeEvent): void => { + const handleChange = (event: ChangeEvent): void => { dispatch( updateConfigValue( 'onDeviceDisplaySettings.sleepMs', @@ -53,7 +54,7 @@ export function TouchScreenSleep({ ) } - React.useEffect(() => { + useEffect(() => { if (screenRef.current != null) screenRef.current.scrollIntoView() }, []) diff --git a/app/src/organisms/ODD/RobotSettingsDashboard/UpdateChannel.tsx b/app/src/organisms/ODD/RobotSettingsDashboard/UpdateChannel.tsx index c9668e8a079..642aeae4af3 100644 --- a/app/src/organisms/ODD/RobotSettingsDashboard/UpdateChannel.tsx +++ b/app/src/organisms/ODD/RobotSettingsDashboard/UpdateChannel.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { Fragment } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import styled from 'styled-components' @@ -22,6 +22,7 @@ import { updateConfigValue, } from '/app/redux/config' +import type { ChangeEvent } from 'react' import type { Dispatch } from '/app/redux/types' interface LabelProps { @@ -59,7 +60,7 @@ export function UpdateChannel({ ? channelOptions.filter(option => option.value !== 'alpha') : channelOptions - const handleChange = (event: React.ChangeEvent): void => { + const handleChange = (event: ChangeEvent): void => { dispatch(updateConfigValue('update.channel', event.target.value)) } @@ -87,7 +88,7 @@ export function UpdateChannel({ marginTop={SPACING.spacing24} > {modifiedChannelOptions.map(radio => ( - + ) : null} - + ))} diff --git a/app/src/organisms/PipetteWizardFlows/ChoosePipette.tsx b/app/src/organisms/PipetteWizardFlows/ChoosePipette.tsx index f8d31f1adec..1a0b45001c2 100644 --- a/app/src/organisms/PipetteWizardFlows/ChoosePipette.tsx +++ b/app/src/organisms/PipetteWizardFlows/ChoosePipette.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useSelector } from 'react-redux' import { css } from 'styled-components' @@ -46,6 +46,7 @@ import { ExitModal } from './ExitModal' import { FLOWS } from './constants' import { getIsGantryEmpty } from './utils' +import type { Dispatch, SetStateAction, ReactNode } from 'react' import type { StyleProps } from '@opentrons/components' import type { PipetteMount } from '@opentrons/shared-data' import type { SelectablePipettes } from './types' @@ -108,7 +109,7 @@ const SELECTED_OPTIONS_STYLE = css` interface ChoosePipetteProps { proceed: () => void selectedPipette: SelectablePipettes - setSelectedPipette: React.Dispatch> + setSelectedPipette: Dispatch> exit: () => void mount: PipetteMount } @@ -117,10 +118,9 @@ export const ChoosePipette = (props: ChoosePipetteProps): JSX.Element => { const isOnDevice = useSelector(getIsOnDevice) const { t } = useTranslation(['pipette_wizard_flows', 'shared']) const attachedPipettesByMount = useAttachedPipettesFromInstrumentsQuery() - const [ - showExitConfirmation, - setShowExitConfirmation, - ] = React.useState(false) + const [showExitConfirmation, setShowExitConfirmation] = useState( + false + ) const bothMounts = getIsGantryEmpty(attachedPipettesByMount) ? t('ninety_six_channel', { @@ -281,7 +281,7 @@ export const ChoosePipette = (props: ChoosePipetteProps): JSX.Element => { interface PipetteMountOptionProps extends StyleProps { isSelected: boolean onClick: () => void - children: React.ReactNode + children: ReactNode } function PipetteMountOption(props: PipetteMountOptionProps): JSX.Element { const { isSelected, onClick, children, ...styleProps } = props diff --git a/app/src/organisms/PipetteWizardFlows/DetachPipette.tsx b/app/src/organisms/PipetteWizardFlows/DetachPipette.tsx index 46e5f92e389..9d83f3d3e75 100644 --- a/app/src/organisms/PipetteWizardFlows/DetachPipette.tsx +++ b/app/src/organisms/PipetteWizardFlows/DetachPipette.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { css } from 'styled-components' import { RIGHT, WEIGHT_OF_96_CHANNEL } from '@opentrons/shared-data' @@ -27,12 +27,14 @@ import { Skeleton } from '/app/atoms/Skeleton' import { SmallButton } from '/app/atoms/buttons' import { BODY_STYLE, SECTIONS } from './constants' import { getPipetteAnimations, getPipetteAnimations96 } from './utils' -import type { PipetteWizardStepProps } from './types' + +import type { Dispatch, ReactNode, SetStateAction } from 'react' import type { PipetteData } from '@opentrons/api-client' +import type { PipetteWizardStepProps } from './types' interface DetachPipetteProps extends PipetteWizardStepProps { isFetching: boolean - setFetching: React.Dispatch> + setFetching: Dispatch> } const BACKGROUND_SIZE = '47rem' @@ -82,7 +84,7 @@ export const DetachPipette = (props: DetachPipetteProps): JSX.Element => { flowType, section: SECTIONS.DETACH_PIPETTE, } - const memoizedAttachedPipettes = React.useMemo(() => attachedPipettes, []) + const memoizedAttachedPipettes = useMemo(() => attachedPipettes, []) const is96ChannelPipette = memoizedAttachedPipettes[mount]?.instrumentName === 'p1000_96' const pipetteName = @@ -121,10 +123,9 @@ export const DetachPipette = (props: DetachPipetteProps): JSX.Element => { }) } - const [ - showPipetteStillAttached, - setShowPipetteStillAttached, - ] = React.useState(false) + const [showPipetteStillAttached, setShowPipetteStillAttached] = useState( + false + ) const handleOnClick = (): void => { setFetching(true) @@ -142,7 +143,7 @@ export const DetachPipette = (props: DetachPipetteProps): JSX.Element => { } const channel = memoizedAttachedPipettes[mount]?.data.channels - let bodyText: React.ReactNode =
+ let bodyText: ReactNode =
if (isFetching) { bodyText = ( <> diff --git a/app/src/organisms/PipetteWizardFlows/Results.tsx b/app/src/organisms/PipetteWizardFlows/Results.tsx index 96ed9098ac9..4ede1cb6828 100644 --- a/app/src/organisms/PipetteWizardFlows/Results.tsx +++ b/app/src/organisms/PipetteWizardFlows/Results.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { css } from 'styled-components' import { useTranslation } from 'react-i18next' import { @@ -22,6 +22,7 @@ import { usePipetteNameSpecs } from '/app/local-resources/instruments' import { CheckPipetteButton } from './CheckPipetteButton' import { FLOWS } from './constants' +import type { Dispatch, SetStateAction } from 'react' import type { LoadedPipette, MotorAxes, @@ -34,7 +35,7 @@ interface ResultsProps extends PipetteWizardStepProps { currentStepIndex: number totalStepCount: number isFetching: boolean - setFetching: React.Dispatch> + setFetching: Dispatch> hasCalData: boolean requiredPipette?: LoadedPipette nextMount?: string @@ -78,7 +79,7 @@ export const Results = (props: ResultsProps): JSX.Element => { usePipetteNameSpecs(requiredPipette?.pipetteName as PipetteName) ?.displayName ?? null - const [numberOfTryAgains, setNumberOfTryAgains] = React.useState(0) + const [numberOfTryAgains, setNumberOfTryAgains] = useState(0) let header: string = 'unknown results screen' let iconColor: string = COLORS.green50 let isSuccess: boolean = true diff --git a/app/src/organisms/TakeoverModal/MaintenanceRunStatusProvider.tsx b/app/src/organisms/TakeoverModal/MaintenanceRunStatusProvider.tsx index 6ba2707752b..293340a9d85 100644 --- a/app/src/organisms/TakeoverModal/MaintenanceRunStatusProvider.tsx +++ b/app/src/organisms/TakeoverModal/MaintenanceRunStatusProvider.tsx @@ -1,7 +1,8 @@ -import * as React from 'react' - +import { useState, useEffect, useMemo, createContext } from 'react' import { useNotifyCurrentMaintenanceRun } from '/app/resources/maintenance_runs' +import type { ReactNode } from 'react' + interface MaintenanceRunIds { currentRunId: string | null oddRunId: string | null @@ -12,19 +13,19 @@ export interface MaintenanceRunStatus { setOddRunIds: (state: MaintenanceRunIds) => void } -export const MaintenanceRunContext = React.createContext({ +export const MaintenanceRunContext = createContext({ getRunIds: () => ({ currentRunId: null, oddRunId: null }), setOddRunIds: () => {}, }) interface MaintenanceRunProviderProps { - children?: React.ReactNode + children?: ReactNode } export function MaintenanceRunStatusProvider( props: MaintenanceRunProviderProps ): JSX.Element { - const [oddRunIds, setOddRunIds] = React.useState({ + const [oddRunIds, setOddRunIds] = useState({ currentRunId: null, oddRunId: null, }) @@ -33,14 +34,14 @@ export function MaintenanceRunStatusProvider( refetchInterval: 5000, }).data?.data.id - React.useEffect(() => { + useEffect(() => { setOddRunIds(prevState => ({ ...prevState, currentRunId: currentRunIdQueryResult ?? null, })) }, [currentRunIdQueryResult]) - const maintenanceRunStatus = React.useMemo( + const maintenanceRunStatus = useMemo( () => ({ getRunIds: () => oddRunIds, setOddRunIds, diff --git a/app/src/organisms/TakeoverModal/MaintenanceRunTakeover.tsx b/app/src/organisms/TakeoverModal/MaintenanceRunTakeover.tsx index b4cef390203..bb2b380cef1 100644 --- a/app/src/organisms/TakeoverModal/MaintenanceRunTakeover.tsx +++ b/app/src/organisms/TakeoverModal/MaintenanceRunTakeover.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { useDeleteMaintenanceRunMutation } from '@opentrons/react-api-client' @@ -7,8 +7,10 @@ import { TakeoverModal } from './TakeoverModal' import { MaintenanceRunStatusProvider } from './MaintenanceRunStatusProvider' import { useMaintenanceRunTakeover } from './useMaintenanceRunTakeover' +import type { ReactNode } from 'react' + interface MaintenanceRunTakeoverProps { - children: React.ReactNode + children: ReactNode } export function MaintenanceRunTakeover({ @@ -22,18 +24,18 @@ export function MaintenanceRunTakeover({ } interface MaintenanceRunTakeoverModalProps { - children: React.ReactNode + children: ReactNode } export function MaintenanceRunTakeoverModal( props: MaintenanceRunTakeoverModalProps ): JSX.Element { const { i18n, t } = useTranslation(['shared', 'branded']) - const [isLoading, setIsLoading] = React.useState(false) + const [isLoading, setIsLoading] = useState(false) const [ showConfirmTerminateModal, setShowConfirmTerminateModal, - ] = React.useState(false) + ] = useState(false) const { oddRunId, currentRunId } = useMaintenanceRunTakeover().getRunIds() const isMaintenanceRunCurrent = currentRunId != null @@ -50,7 +52,7 @@ export function MaintenanceRunTakeoverModal( } } - React.useEffect(() => { + useEffect(() => { if (currentRunId == null) { setIsLoading(false) setShowConfirmTerminateModal(false) diff --git a/app/src/organisms/ToasterOven/ToasterOven.tsx b/app/src/organisms/ToasterOven/ToasterOven.tsx index 4f29be519ae..c3130793750 100644 --- a/app/src/organisms/ToasterOven/ToasterOven.tsx +++ b/app/src/organisms/ToasterOven/ToasterOven.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useSelector } from 'react-redux' import { v4 as uuidv4 } from 'uuid' @@ -17,6 +17,7 @@ import { import { getIsOnDevice } from '/app/redux/config' import { ToasterContext } from './ToasterContext' +import type { ReactNode } from 'react' import type { SnackbarProps } from '@opentrons/components' import type { ToastProps, @@ -25,7 +26,7 @@ import type { import type { MakeSnackbarOptions, MakeToastOptions } from './ToasterContext' interface ToasterOvenProps { - children: React.ReactNode + children: ReactNode } /** @@ -34,8 +35,8 @@ interface ToasterOvenProps { * @returns */ export function ToasterOven({ children }: ToasterOvenProps): JSX.Element { - const [toasts, setToasts] = React.useState([]) - const [snackbar, setSnackbar] = React.useState(null) + const [toasts, setToasts] = useState([]) + const [snackbar, setSnackbar] = useState(null) const isOnDevice = useSelector(getIsOnDevice) ?? null const displayType: 'desktop' | 'odd' = diff --git a/app/src/organisms/WellSelection/Selection384Wells.tsx b/app/src/organisms/WellSelection/Selection384Wells.tsx index d0fcddef752..94e2eaf9e74 100644 --- a/app/src/organisms/WellSelection/Selection384Wells.tsx +++ b/app/src/organisms/WellSelection/Selection384Wells.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import flatten from 'lodash/flatten' @@ -15,6 +15,7 @@ import { import { IconButton } from '/app/atoms/buttons/IconButton' +import type { Dispatch, SetStateAction, ReactNode } from 'react' import type { WellGroup } from '@opentrons/components' import type { LabwareDefinition2, @@ -26,7 +27,7 @@ interface Selection384WellsProps { channels: PipetteChannels definition: LabwareDefinition2 deselectWells: (wells: string[]) => void - labwareRender: React.ReactNode + labwareRender: ReactNode selectWells: (wellGroup: WellGroup) => unknown } @@ -43,18 +44,18 @@ export function Selection384Wells({ labwareRender, selectWells, }: Selection384WellsProps): JSX.Element { - const [selectBy, setSelectBy] = React.useState<'columns' | 'wells'>('columns') + const [selectBy, setSelectBy] = useState<'columns' | 'wells'>('columns') - const [lastSelectedIndex, setLastSelectedIndex] = React.useState< - number | null - >(null) + const [lastSelectedIndex, setLastSelectedIndex] = useState( + null + ) - const [startingWellState, setStartingWellState] = React.useState< + const [startingWellState, setStartingWellState] = useState< Record >({ A1: false, A2: false, B1: false, B2: false }) // to reset last selected index and starting well state on page-level selected well reset - React.useEffect(() => { + useEffect(() => { if (Object.keys(allSelectedWells).length === 0) { setLastSelectedIndex(null) if (channels === 96) { @@ -180,8 +181,8 @@ export function Selection384Wells({ interface SelectByProps { selectBy: 'columns' | 'wells' - setSelectBy: React.Dispatch> - setLastSelectedIndex: React.Dispatch> + setSelectBy: Dispatch> + setLastSelectedIndex: Dispatch> } function SelectBy({ @@ -244,8 +245,8 @@ function StartingWell({ deselectWells: (wells: string[]) => void selectWells: (wellGroup: WellGroup) => void startingWellState: Record - setStartingWellState: React.Dispatch< - React.SetStateAction> + setStartingWellState: Dispatch< + SetStateAction> > wells: string[] }): JSX.Element { @@ -255,7 +256,7 @@ function StartingWell({ channels === 8 ? ['A1', 'B1'] : ['A1', 'A2', 'B1', 'B2'] // on mount, select A1 well group for 96-channel - React.useEffect(() => { + useEffect(() => { // deselect all wells on mount; clears well selection when navigating back within quick transfer flow // otherwise, selected wells and lastSelectedIndex pointer will be out of sync deselectWells(wells) diff --git a/app/src/organisms/WellSelection/SelectionRect.tsx b/app/src/organisms/WellSelection/SelectionRect.tsx index 7c9d1ac0357..6d241d5f0c0 100644 --- a/app/src/organisms/WellSelection/SelectionRect.tsx +++ b/app/src/organisms/WellSelection/SelectionRect.tsx @@ -1,19 +1,20 @@ -import * as React from 'react' +import { useState, useRef, useCallback, useEffect } from 'react' import { Flex, JUSTIFY_CENTER } from '@opentrons/components' +import type { MouseEventHandler, ReactNode, TouchEventHandler } from 'react' import type { DragRect, GenericRect } from './types' interface SelectionRectProps { onSelectionMove?: (rect: GenericRect) => void onSelectionDone?: (rect: GenericRect) => void - children?: React.ReactNode + children?: ReactNode } export function SelectionRect(props: SelectionRectProps): JSX.Element { const { onSelectionMove, onSelectionDone, children } = props - const [positions, setPositions] = React.useState(null) - const parentRef = React.useRef(null) + const [positions, setPositions] = useState(null) + const parentRef = useRef(null) const getRect = (args: DragRect): GenericRect => { const { xStart, yStart, xDynamic, yDynamic } = args @@ -25,7 +26,7 @@ export function SelectionRect(props: SelectionRectProps): JSX.Element { } } - const handleDrag = React.useCallback( + const handleDrag = useCallback( (e: TouchEvent | MouseEvent): void => { let xDynamic: number let yDynamic: number @@ -55,7 +56,7 @@ export function SelectionRect(props: SelectionRectProps): JSX.Element { [onSelectionMove] ) - const handleDragEnd = React.useCallback( + const handleDragEnd = useCallback( (e: TouchEvent | MouseEvent): void => { if (!(e instanceof TouchEvent) && !(e instanceof MouseEvent)) { return @@ -70,7 +71,7 @@ export function SelectionRect(props: SelectionRectProps): JSX.Element { [onSelectionDone, positions] ) - const handleTouchStart: React.TouchEventHandler = e => { + const handleTouchStart: TouchEventHandler = e => { const touch = e.touches[0] setPositions({ xStart: touch.clientX, @@ -80,7 +81,7 @@ export function SelectionRect(props: SelectionRectProps): JSX.Element { }) } - const handleMouseDown: React.MouseEventHandler = e => { + const handleMouseDown: MouseEventHandler = e => { setPositions({ xStart: e.clientX, xDynamic: e.clientX, @@ -89,7 +90,7 @@ export function SelectionRect(props: SelectionRectProps): JSX.Element { }) } - React.useEffect(() => { + useEffect(() => { document.addEventListener('touchmove', handleDrag) document.addEventListener('touchend', handleDragEnd) document.addEventListener('mousemove', handleDrag) diff --git a/app/src/pages/ODD/ConnectViaWifi/JoinOtherNetwork.tsx b/app/src/pages/ODD/ConnectViaWifi/JoinOtherNetwork.tsx index 4abd146238a..3366f9180b0 100644 --- a/app/src/pages/ODD/ConnectViaWifi/JoinOtherNetwork.tsx +++ b/app/src/pages/ODD/ConnectViaWifi/JoinOtherNetwork.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { Flex, DIRECTION_COLUMN } from '@opentrons/components' @@ -6,11 +6,12 @@ import { Flex, DIRECTION_COLUMN } from '@opentrons/components' import { SetWifiSsid } from '/app/organisms/ODD/NetworkSettings' import { RobotSetupHeader } from '/app/organisms/ODD/RobotSetupHeader' +import type { Dispatch, SetStateAction } from 'react' import type { WifiScreenOption } from './' interface JoinOtherNetworkProps { setCurrentOption: (option: WifiScreenOption) => void - setSelectedSsid: React.Dispatch> + setSelectedSsid: Dispatch> } export function JoinOtherNetwork({ @@ -19,8 +20,8 @@ export function JoinOtherNetwork({ }: JoinOtherNetworkProps): JSX.Element { const { i18n, t } = useTranslation('device_settings') - const [inputSsid, setInputSsid] = React.useState('') - const [errorMessage, setErrorMessage] = React.useState(null) + const [inputSsid, setInputSsid] = useState('') + const [errorMessage, setErrorMessage] = useState(null) const handleContinue = (): void => { if (inputSsid.length >= 2 && inputSsid.length <= 32) { diff --git a/app/src/pages/ODD/DeckConfiguration/index.tsx b/app/src/pages/ODD/DeckConfiguration/index.tsx index 2de5de02c46..71b8b5905bc 100644 --- a/app/src/pages/ODD/DeckConfiguration/index.tsx +++ b/app/src/pages/ODD/DeckConfiguration/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' @@ -20,6 +20,7 @@ import { useNotifyDeckConfigurationQuery, } from '/app/resources/deck_configuration' +import type { ComponentProps } from 'react' import type { SmallButton } from '/app/atoms/buttons' export function DeckConfigurationEditor(): JSX.Element { @@ -32,7 +33,7 @@ export function DeckConfigurationEditor(): JSX.Element { const [ showSetupInstructionsModal, setShowSetupInstructionsModal, - ] = React.useState(false) + ] = useState(false) const isOnDevice = true const { @@ -41,10 +42,9 @@ export function DeckConfigurationEditor(): JSX.Element { addFixtureModal, } = useDeckConfigurationEditingTools(isOnDevice) - const [ - showDiscardChangeModal, - setShowDiscardChangeModal, - ] = React.useState(false) + const [showDiscardChangeModal, setShowDiscardChangeModal] = useState( + false + ) const deckConfig = useNotifyDeckConfigurationQuery().data ?? [] @@ -52,7 +52,7 @@ export function DeckConfigurationEditor(): JSX.Element { navigate(-1) } - const secondaryButtonProps: React.ComponentProps = { + const secondaryButtonProps: ComponentProps = { onClick: () => { setShowSetupInstructionsModal(true) }, diff --git a/app/src/pages/ODD/InstrumentDetail/InstrumentDetailOverflowMenu.tsx b/app/src/pages/ODD/InstrumentDetail/InstrumentDetailOverflowMenu.tsx index 96ea37d14d3..c49ef3d4f34 100644 --- a/app/src/pages/ODD/InstrumentDetail/InstrumentDetailOverflowMenu.tsx +++ b/app/src/pages/ODD/InstrumentDetail/InstrumentDetailOverflowMenu.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import NiceModal, { useModal } from '@ebay/nice-modal-react' import { useTranslation } from 'react-i18next' import { createPortal } from 'react-dom' @@ -26,6 +26,7 @@ import { FLOWS } from '/app/organisms/PipetteWizardFlows/constants' import { GRIPPER_FLOW_TYPES } from '/app/organisms/GripperWizardFlows/constants' import { getTopPortalEl } from '/app/App/portal' +import type { ComponentProps, MouseEventHandler } from 'react' import type { PipetteData, GripperData, @@ -55,13 +56,13 @@ const InstrumentDetailsOverflowMenu = NiceModal.create( const { instrument, host, enableDTWiz } = props const { t } = useTranslation('robot_controls') const modal = useModal() - const [wizardProps, setWizardProps] = React.useState< - | React.ComponentProps - | React.ComponentProps + const [wizardProps, setWizardProps] = useState< + | ComponentProps + | ComponentProps | null >(null) const sharedGripperWizardProps: Pick< - React.ComponentProps, + ComponentProps, 'attachedGripper' | 'closeFlow' > = { attachedGripper: instrument, @@ -75,7 +76,7 @@ const InstrumentDetailsOverflowMenu = NiceModal.create( instrument.mount !== 'extension' && instrument.data?.channels === 96 - const handleRecalibrate: React.MouseEventHandler = () => { + const handleRecalibrate: MouseEventHandler = () => { if (instrument?.ok) { setWizardProps( instrument.mount === 'extension' diff --git a/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx b/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx index 2620bd6de52..27db6210d68 100644 --- a/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx +++ b/app/src/pages/ODD/ProtocolDashboard/PinnedProtocol.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import styled, { css } from 'styled-components' @@ -23,6 +23,7 @@ import { LongPressModal } from './LongPressModal' import { formatTimeWithUtcLabel } from '/app/resources/runs' import { useUpdatedLastRunTime } from './hooks' +import type { Dispatch, SetStateAction } from 'react' import type { UseLongPressResult } from '@opentrons/components' import type { ProtocolResource } from '@opentrons/shared-data' @@ -63,7 +64,7 @@ const cardStyleBySize: { interface PinnedProtocolProps { protocol: ProtocolResource - longPress: React.Dispatch> + longPress: Dispatch> setShowDeleteConfirmationModal: (showDeleteConfirmationModal: boolean) => void setTargetProtocolId: (targetProtocolId: string) => void cardSize?: CardSizeType @@ -98,7 +99,7 @@ export function PinnedProtocol(props: PinnedProtocolProps): JSX.Element { navigate(`/protocols/${protocolId}`) } } - React.useEffect(() => { + useEffect(() => { if (longpress.isLongPressed) { longPress(true) } diff --git a/app/src/pages/ODD/ProtocolSetup/index.tsx b/app/src/pages/ODD/ProtocolSetup/index.tsx index 03a03626a55..553eec5aadd 100644 --- a/app/src/pages/ODD/ProtocolSetup/index.tsx +++ b/app/src/pages/ODD/ProtocolSetup/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useState } from 'react' import last from 'lodash/last' import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' @@ -82,7 +82,14 @@ import { useProtocolAnalysisErrors, } from '/app/resources/runs' import { useScrollPosition } from '/app/local-resources/dom-utils' +import { + getLabwareSetupItemGroups, + getProtocolUsesGripper, + useRequiredProtocolHardwareFromAnalysis, + useMissingProtocolHardwareFromAnalysis, +} from '/app/transformations/commands' +import type { Dispatch, SetStateAction } from 'react' import type { Run } from '@opentrons/api-client' import type { CutoutFixtureId, CutoutId } from '@opentrons/shared-data' import type { OnDeviceRouteParams } from '/app/App/types' @@ -92,19 +99,13 @@ import type { ProtocolHardware, ProtocolFixture, } from '/app/transformations/commands' -import { - getLabwareSetupItemGroups, - getProtocolUsesGripper, - useRequiredProtocolHardwareFromAnalysis, - useMissingProtocolHardwareFromAnalysis, -} from '/app/transformations/commands' const FETCH_DURATION_MS = 5000 const ANALYSIS_POLL_MS = 5000 interface PrepareToRunProps { runId: string - setSetupScreen: React.Dispatch> + setSetupScreen: Dispatch> confirmAttachment: () => void confirmStepsComplete: () => void play: () => void @@ -147,7 +148,7 @@ function PrepareToRun({ const [ isPollingForCompletedAnalysis, setIsPollingForCompletedAnalysis, - ] = React.useState(mostRecentAnalysisSummary?.status !== 'completed') + ] = useState(mostRecentAnalysisSummary?.status !== 'completed') const { data: mostRecentAnalysis = null, @@ -165,7 +166,7 @@ function PrepareToRun({ navigate('/protocols') } - React.useEffect(() => { + useEffect(() => { if (mostRecentAnalysis?.status === 'completed') { setIsPollingForCompletedAnalysis(false) } else { @@ -229,10 +230,9 @@ function PrepareToRun({ parameter.type === 'csv_file' || parameter.value !== parameter.default ) - const [ - showConfirmCancelModal, - setShowConfirmCancelModal, - ] = React.useState(false) + const [showConfirmCancelModal, setShowConfirmCancelModal] = useState( + false + ) const deckConfigCompatibility = useDeckConfigurationCompatibility( robotType, @@ -670,7 +670,7 @@ export function ProtocolSetup(): JSX.Element { const [ showAnalysisFailedModal, setShowAnalysisFailedModal, - ] = React.useState(true) + ] = useState(true) const robotType = useRobotType(robotName) const attachedModules = useAttachedModules({ @@ -684,7 +684,7 @@ export function ProtocolSetup(): JSX.Element { const [ isPollingForCompletedAnalysis, setIsPollingForCompletedAnalysis, - ] = React.useState(mostRecentAnalysisSummary?.status !== 'completed') + ] = useState(mostRecentAnalysisSummary?.status !== 'completed') const { data: mostRecentAnalysis = null, @@ -699,7 +699,7 @@ export function ProtocolSetup(): JSX.Element { const areLiquidsInProtocol = (mostRecentAnalysis?.liquids?.length ?? 0) > 0 - React.useEffect(() => { + useEffect(() => { if (mostRecentAnalysis?.status === 'completed') { setIsPollingForCompletedAnalysis(false) } else { @@ -754,14 +754,14 @@ export function ProtocolSetup(): JSX.Element { handleProceedToRunClick, !configBypassHeaterShakerAttachmentConfirmation ) - const [cutoutId, setCutoutId] = React.useState(null) - const [providedFixtureOptions, setProvidedFixtureOptions] = React.useState< + const [cutoutId, setCutoutId] = useState(null) + const [providedFixtureOptions, setProvidedFixtureOptions] = useState< CutoutFixtureId[] >([]) // TODO(jh 10-31-24): Refactor the below to utilize useMissingStepsModal. - const [labwareConfirmed, setLabwareConfirmed] = React.useState(false) - const [liquidsConfirmed, setLiquidsConfirmed] = React.useState(false) - const [offsetsConfirmed, setOffsetsConfirmed] = React.useState(false) + const [labwareConfirmed, setLabwareConfirmed] = useState(false) + const [liquidsConfirmed, setLiquidsConfirmed] = useState(false) + const [offsetsConfirmed, setOffsetsConfirmed] = useState(false) const missingSteps = [ !offsetsConfirmed ? t('applied_labware_offsets') : null, !labwareConfirmed ? t('labware_placement') : null, @@ -779,9 +779,7 @@ export function ProtocolSetup(): JSX.Element { const isHeaterShakerInProtocol = useIsHeaterShakerInProtocol() // orchestrate setup subpages/components - const [setupScreen, setSetupScreen] = React.useState( - 'prepare to run' - ) + const [setupScreen, setSetupScreen] = useState('prepare to run') const setupComponentByScreen = { 'prepare to run': ( > + longPress: Dispatch> setShowDeleteConfirmationModal: (showDeleteConfirmationModal: boolean) => void setTargetTransferId: (targetProtocolId: string) => void cardSize?: CardSizeType @@ -83,7 +84,7 @@ export function PinnedTransfer(props: { navigate(`/quick-transfer/${transferId}`) } } - React.useEffect(() => { + useEffect(() => { if (longpress.isLongPressed) { longPress(true) } diff --git a/app/src/pages/ODD/QuickTransferDashboard/QuickTransferCard.tsx b/app/src/pages/ODD/QuickTransferDashboard/QuickTransferCard.tsx index a0f99a4367e..fe4a939d543 100644 --- a/app/src/pages/ODD/QuickTransferDashboard/QuickTransferCard.tsx +++ b/app/src/pages/ODD/QuickTransferDashboard/QuickTransferCard.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' import { Trans, useTranslation } from 'react-i18next' import { useQueryClient } from 'react-query' @@ -36,6 +36,7 @@ import { OddModal } from '/app/molecules/OddModal' import { LongPressModal } from './LongPressModal' import { formatTimeWithUtcLabel } from '/app/resources/runs' +import type { Dispatch, SetStateAction } from 'react' import type { UseLongPressResult } from '@opentrons/components' import type { ProtocolResource } from '@opentrons/shared-data' import type { OddModalHeaderBaseProps } from '/app/molecules/OddModal/types' @@ -44,7 +45,7 @@ const REFETCH_INTERVAL = 5000 export function QuickTransferCard(props: { quickTransfer: ProtocolResource - longPress: React.Dispatch> + longPress: Dispatch> setShowDeleteConfirmationModal: (showDeleteConfirmationModal: boolean) => void setTargetTransferId: (targetTransferId: string) => void }): JSX.Element { @@ -55,11 +56,11 @@ export function QuickTransferCard(props: { setTargetTransferId, } = props const navigate = useNavigate() - const [showIcon, setShowIcon] = React.useState(false) + const [showIcon, setShowIcon] = useState(false) const [ showFailedAnalysisModal, setShowFailedAnalysisModal, - ] = React.useState(false) + ] = useState(false) const { t, i18n } = useTranslation(['quick_transfer', 'branded']) const transferName = quickTransfer.metadata.protocolName ?? quickTransfer.files[0].name @@ -113,7 +114,7 @@ export function QuickTransferCard(props: { } } - React.useEffect(() => { + useEffect(() => { if (longpress.isLongPressed) { longPress(true) setTargetTransferId(quickTransfer.id) diff --git a/app/src/resources/deck_configuration/hooks.tsx b/app/src/resources/deck_configuration/hooks.tsx index 79a2e80124b..935c81a4cb2 100644 --- a/app/src/resources/deck_configuration/hooks.tsx +++ b/app/src/resources/deck_configuration/hooks.tsx @@ -1,4 +1,4 @@ -import * as React from 'react' +import { useState } from 'react' import { getInitialAndMovedLabwareInSlots } from '@opentrons/components' import { FLEX_ROBOT_TYPE, @@ -15,6 +15,7 @@ import { SINGLE_SLOT_FIXTURES, } from '@opentrons/shared-data' +import type { ReactNode } from 'react' import type { CompletedProtocolAnalysis, CutoutConfigProtocolSpec, @@ -118,7 +119,7 @@ interface DeckConfigurationEditingTools { cutoutId: CutoutId, cutoutFixtureId: CutoutFixtureId ) => void - addFixtureModal: React.ReactNode + addFixtureModal: ReactNode } export function useDeckConfigurationEditingTools( isOnDevice: boolean @@ -129,9 +130,7 @@ export function useDeckConfigurationEditingTools( refetchInterval: DECK_CONFIG_REFETCH_INTERVAL, }).data ?? [] const { updateDeckConfiguration } = useUpdateDeckConfigurationMutation() - const [targetCutoutId, setTargetCutoutId] = React.useState( - null - ) + const [targetCutoutId, setTargetCutoutId] = useState(null) const addFixtureToCutout = (cutoutId: CutoutId): void => { setTargetCutoutId(cutoutId) From 4c7a409fe2baecd05040c0e42747887d387046e7 Mon Sep 17 00:00:00 2001 From: Jeremy Leon Date: Mon, 2 Dec 2024 16:48:03 -0500 Subject: [PATCH 141/220] feat(api, shared-data): add correctionByVolume to liquid class schema and definitions (#16972) Adds a correctionByVolume field to liquid class definitions in the schema, pydantic models and PAPI classes for liquid class properties. --- .../protocol_api/_liquid_properties.py | 14 +++ api/tests/opentrons/conftest.py | 2 + .../test_liquid_class_properties.py | 12 ++ shared-data/command/schemas/11.json | 105 ++++++++++++++++++ .../liquid-class/definitions/1/water.json | 33 ++++++ .../fixtures/1/fixture_glycerol50.json | 12 ++ shared-data/liquid-class/schemas/1.json | 23 ++++ .../liquid_classes/liquid_class_definition.py | 18 +++ 8 files changed, 219 insertions(+) diff --git a/api/src/opentrons/protocol_api/_liquid_properties.py b/api/src/opentrons/protocol_api/_liquid_properties.py index 5aaed51edbe..d27d2bd1ba0 100644 --- a/api/src/opentrons/protocol_api/_liquid_properties.py +++ b/api/src/opentrons/protocol_api/_liquid_properties.py @@ -314,6 +314,7 @@ class BaseLiquidHandlingProperties: _position_reference: PositionReference _offset: Coordinate _flow_rate_by_volume: LiquidHandlingPropertyByVolume + _correction_by_volume: LiquidHandlingPropertyByVolume _delay: DelayProperties @property @@ -341,6 +342,10 @@ def offset(self, new_offset: Sequence[float]) -> None: def flow_rate_by_volume(self) -> LiquidHandlingPropertyByVolume: return self._flow_rate_by_volume + @property + def correction_by_volume(self) -> LiquidHandlingPropertyByVolume: + return self._correction_by_volume + @property def delay(self) -> DelayProperties: return self._delay @@ -543,6 +548,9 @@ def build_aspirate_properties( _flow_rate_by_volume=LiquidHandlingPropertyByVolume( aspirate_properties.flowRateByVolume ), + _correction_by_volume=LiquidHandlingPropertyByVolume( + aspirate_properties.correctionByVolume + ), _pre_wet=aspirate_properties.preWet, _mix=_build_mix_properties(aspirate_properties.mix), _delay=_build_delay_properties(aspirate_properties.delay), @@ -560,6 +568,9 @@ def build_single_dispense_properties( _flow_rate_by_volume=LiquidHandlingPropertyByVolume( single_dispense_properties.flowRateByVolume ), + _correction_by_volume=LiquidHandlingPropertyByVolume( + single_dispense_properties.correctionByVolume + ), _mix=_build_mix_properties(single_dispense_properties.mix), _push_out_by_volume=LiquidHandlingPropertyByVolume( single_dispense_properties.pushOutByVolume @@ -581,6 +592,9 @@ def build_multi_dispense_properties( _flow_rate_by_volume=LiquidHandlingPropertyByVolume( multi_dispense_properties.flowRateByVolume ), + _correction_by_volume=LiquidHandlingPropertyByVolume( + multi_dispense_properties.correctionByVolume + ), _conditioning_by_volume=LiquidHandlingPropertyByVolume( multi_dispense_properties.conditioningByVolume ), diff --git a/api/tests/opentrons/conftest.py b/api/tests/opentrons/conftest.py index e8ca2b059ff..7be480cfe0b 100755 --- a/api/tests/opentrons/conftest.py +++ b/api/tests/opentrons/conftest.py @@ -828,6 +828,7 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: positionReference=PositionReference.WELL_BOTTOM, offset=Coordinate(x=0, y=0, z=-5), flowRateByVolume=[(10.0, 40.0), (20.0, 30.0)], + correctionByVolume=[(15.0, 1.5), (30.0, -5.0)], preWet=True, mix=MixProperties(enable=False), delay=DelayProperties( @@ -853,6 +854,7 @@ def minimal_liquid_class_def2() -> LiquidClassSchemaV1: positionReference=PositionReference.WELL_BOTTOM, offset=Coordinate(x=0, y=0, z=-5), flowRateByVolume=[(10.0, 40.0), (20.0, 30.0)], + correctionByVolume=[(15.0, -1.5), (30.0, 5.0)], mix=MixProperties(enable=False), pushOutByVolume=[(10.0, 7.0), (20.0, 10.0)], delay=DelayProperties(enable=False), diff --git a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py index f7033afb5be..356add50ae8 100644 --- a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py +++ b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py @@ -45,6 +45,10 @@ def test_build_aspirate_settings() -> None: assert aspirate_properties.position_reference.value == "well-bottom" assert aspirate_properties.offset == Coordinate(x=0, y=0, z=-5) assert aspirate_properties.flow_rate_by_volume.as_dict() == {10: 50.0} + assert aspirate_properties.correction_by_volume.as_dict() == { + 1.0: -2.5, + 10.0: 3, + } assert aspirate_properties.pre_wet is True assert aspirate_properties.mix.enabled is True assert aspirate_properties.mix.repetitions == 3 @@ -94,6 +98,10 @@ def test_build_single_dispense_settings() -> None: 10.0: 40.0, 20.0: 30.0, } + assert single_dispense_properties.correction_by_volume.as_dict() == { + 2.0: -1.5, + 20.0: 2, + } assert single_dispense_properties.mix.enabled is True assert single_dispense_properties.mix.repetitions == 3 assert single_dispense_properties.mix.volume == 15 @@ -146,6 +154,10 @@ def test_build_multi_dispense_settings() -> None: 10.0: 40.0, 20.0: 30.0, } + assert multi_dispense_properties.correction_by_volume.as_dict() == { + 3.0: -0.5, + 30.0: 1, + } assert multi_dispense_properties.conditioning_by_volume.as_dict() == { 5.0: 5.0, } diff --git a/shared-data/command/schemas/11.json b/shared-data/command/schemas/11.json index 38a39ea7902..2df16125574 100644 --- a/shared-data/command/schemas/11.json +++ b/shared-data/command/schemas/11.json @@ -2133,6 +2133,40 @@ ] } }, + "correctionByVolume": { + "title": "Correctionbyvolume", + "description": "Settings for volume correction keyed by by target aspiration volume, representing additional volume the plunger should move to accurately hit target volume.", + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ + { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] + }, + { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + } + ] + } + ] + } + }, "preWet": { "title": "Prewet", "description": "Whether to perform a pre-wet action.", @@ -2163,6 +2197,7 @@ "positionReference", "offset", "flowRateByVolume", + "correctionByVolume", "preWet", "mix", "delay" @@ -2411,6 +2446,40 @@ ] } }, + "correctionByVolume": { + "title": "Correctionbyvolume", + "description": "Settings for volume correction keyed by by target dispense volume, representing additional volume the plunger should move to accurately hit target volume.", + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ + { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] + }, + { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + } + ] + } + ] + } + }, "mix": { "title": "Mix", "description": "Mixing settings for after a dispense", @@ -2472,6 +2541,7 @@ "positionReference", "offset", "flowRateByVolume", + "correctionByVolume", "mix", "pushOutByVolume", "delay" @@ -2553,6 +2623,40 @@ ] } }, + "correctionByVolume": { + "title": "Correctionbyvolume", + "description": "Settings for volume correction keyed by by target dispense volume, representing additional volume the plunger should move to accurately hit target volume.", + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ + { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0.0 + } + ] + }, + { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + } + ] + } + ] + } + }, "conditioningByVolume": { "title": "Conditioningbyvolume", "description": "Settings for conditioning volume keyed by target dispense volume.", @@ -2641,6 +2745,7 @@ "positionReference", "offset", "flowRateByVolume", + "correctionByVolume", "conditioningByVolume", "disposalByVolume", "delay" diff --git a/shared-data/liquid-class/definitions/1/water.json b/shared-data/liquid-class/definitions/1/water.json index b84e1676d5b..b9447aa9c52 100644 --- a/shared-data/liquid-class/definitions/1/water.json +++ b/shared-data/liquid-class/definitions/1/water.json @@ -64,6 +64,7 @@ [10.0, 24.0], [50.0, 35.0] ], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -133,6 +134,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 50.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -208,6 +210,7 @@ "z": 2 }, "flowRateByVolume": [[50.0, 50.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [45.0, 5.0], @@ -288,6 +291,7 @@ [10.0, 24.0], [50.0, 35.0] ], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -357,6 +361,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 50.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -432,6 +437,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 50.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [45.0, 5.0], @@ -512,6 +518,7 @@ [10.0, 478.0], [50.0, 478.0] ], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -585,6 +592,7 @@ [10.0, 478.0], [50.0, 478.0] ], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -658,6 +666,7 @@ [10.0, 478.0], [50.0, 478.0] ], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [45.0, 5.0], @@ -729,6 +738,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -798,6 +808,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -867,6 +878,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [195.0, 5.0], @@ -938,6 +950,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -1007,6 +1020,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -1076,6 +1090,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [995.0, 5.0], @@ -1156,6 +1171,7 @@ [10.0, 478.0], [50.0, 478.0] ], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -1229,6 +1245,7 @@ [10.0, 478.0], [50.0, 478.0] ], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -1302,6 +1319,7 @@ [10.0, 478.0], [50.0, 478.0] ], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [45.0, 5.0], @@ -1373,6 +1391,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -1442,6 +1461,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -1511,6 +1531,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [195.0, 5.0], @@ -1582,6 +1603,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -1651,6 +1673,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -1720,6 +1743,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 716.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [995.0, 5.0], @@ -1796,6 +1820,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -1865,6 +1890,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -1934,6 +1960,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [45.0, 5.0], @@ -2005,6 +2032,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -2074,6 +2102,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -2143,6 +2172,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [195.0, 5.0], @@ -2214,6 +2244,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "preWet": false, "mix": { "enable": false, @@ -2283,6 +2314,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "mix": { "enable": false, "params": { @@ -2352,6 +2384,7 @@ "z": 2 }, "flowRateByVolume": [[1.0, 200.0]], + "correctionByVolume": [[0.0, 0.0]], "conditioningByVolume": [ [1.0, 5.0], [995.0, 5.0], diff --git a/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json index 20fe7b44a3c..9c24a40452d 100644 --- a/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json +++ b/shared-data/liquid-class/fixtures/1/fixture_glycerol50.json @@ -59,6 +59,10 @@ "z": -5 }, "flowRateByVolume": [[10.0, 50.0]], + "correctionByVolume": [ + [1.0, -2.5], + [10.0, 3.0] + ], "preWet": true, "mix": { "enable": true, @@ -134,6 +138,10 @@ [10.0, 40.0], [20.0, 30.0] ], + "correctionByVolume": [ + [2.0, -1.5], + [20.0, 2.0] + ], "mix": { "enable": true, "params": { @@ -208,6 +216,10 @@ [10.0, 40.0], [20.0, 30.0] ], + "correctionByVolume": [ + [3.0, -0.5], + [30.0, 1.0] + ], "conditioningByVolume": [[5.0, 5.0]], "disposalByVolume": [[5.0, 3.0]], "delay": { diff --git a/shared-data/liquid-class/schemas/1.json b/shared-data/liquid-class/schemas/1.json index f3aa85a6168..633be549d4c 100644 --- a/shared-data/liquid-class/schemas/1.json +++ b/shared-data/liquid-class/schemas/1.json @@ -144,6 +144,17 @@ }, "minItems": 1 }, + "correctionByVolume": { + "type": "array", + "description": "Settings for volume correction keyed by target aspiration/dispense volume, representing additional volume the plunger should move to accurately hit target volume.", + "items": { + "type": "array", + "items": { "type": "number" }, + "minItems": 2, + "maxItems": 2 + }, + "minItems": 1 + }, "mix": { "type": "object", "description": "Mixing properties.", @@ -310,6 +321,9 @@ "flowRateByVolume": { "$ref": "#/definitions/flowRateByVolume" }, + "correctionByVolume": { + "$ref": "#/definitions/correctionByVolume" + }, "preWet": { "type": "boolean", "description": "Whether to perform a pre-wet action." @@ -327,6 +341,7 @@ "positionReference", "offset", "flowRateByVolume", + "correctionByVolume", "preWet", "mix", "delay" @@ -352,6 +367,9 @@ "flowRateByVolume": { "$ref": "#/definitions/flowRateByVolume" }, + "correctionByVolume": { + "$ref": "#/definitions/correctionByVolume" + }, "mix": { "$ref": "#/definitions/mix" }, @@ -368,6 +386,7 @@ "positionReference", "offset", "flowRateByVolume", + "correctionByVolume", "mix", "pushOutByVolume", "delay" @@ -393,6 +412,9 @@ "flowRateByVolume": { "$ref": "#/definitions/flowRateByVolume" }, + "correctionByVolume": { + "$ref": "#/definitions/correctionByVolume" + }, "conditioningByVolume": { "$ref": "#/definitions/conditioningByVolume" }, @@ -409,6 +431,7 @@ "positionReference", "offset", "flowRateByVolume", + "correctionByVolume", "conditioningByVolume", "disposalByVolume", "delay" diff --git a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py index 62add6a32b0..2c2de84e07e 100644 --- a/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py +++ b/shared-data/python/opentrons_shared_data/liquid_classes/liquid_class_definition.py @@ -31,6 +31,9 @@ LiquidHandlingPropertyByVolume = Sequence[Tuple[_NonNegativeNumber, _NonNegativeNumber]] """Settings for liquid class settings that are interpolated by volume.""" +CorrectionByVolume = Sequence[Tuple[_NonNegativeNumber, _Number]] +"""Settings for correctionByVolume, which unlike other `byVolume` properties allows negative values with volume.""" + class PositionReference(Enum): """Positional reference for liquid handling operations.""" @@ -253,6 +256,11 @@ class AspirateProperties(BaseModel): ..., description="Settings for flow rate keyed by target aspiration volume.", ) + correctionByVolume: CorrectionByVolume = Field( + ..., + description="Settings for volume correction keyed by by target aspiration volume," + " representing additional volume the plunger should move to accurately hit target volume.", + ) preWet: bool = Field(..., description="Whether to perform a pre-wet action.") mix: MixProperties = Field( ..., description="Mixing settings for before an aspirate" @@ -277,6 +285,11 @@ class SingleDispenseProperties(BaseModel): ..., description="Settings for flow rate keyed by target dispense volume.", ) + correctionByVolume: CorrectionByVolume = Field( + ..., + description="Settings for volume correction keyed by by target dispense volume," + " representing additional volume the plunger should move to accurately hit target volume.", + ) mix: MixProperties = Field(..., description="Mixing settings for after a dispense") pushOutByVolume: LiquidHandlingPropertyByVolume = Field( ..., description="Settings for pushout keyed by target dispense volume." @@ -301,6 +314,11 @@ class MultiDispenseProperties(BaseModel): ..., description="Settings for flow rate keyed by target dispense volume.", ) + correctionByVolume: CorrectionByVolume = Field( + ..., + description="Settings for volume correction keyed by by target dispense volume," + " representing additional volume the plunger should move to accurately hit target volume.", + ) conditioningByVolume: LiquidHandlingPropertyByVolume = Field( ..., description="Settings for conditioning volume keyed by target dispense volume.", From 6c0d418f69b980bdb269ef683e16d4ff36d57370 Mon Sep 17 00:00:00 2001 From: Sanniti Pimpley Date: Mon, 2 Dec 2024 17:50:10 -0500 Subject: [PATCH 142/220] feat(api): add new InstrumentContext.transfer_liquid() method (#16819) Closes AUTH-843 # Overview Adds `InstrumentContext.transfer_liquid()` method that does the following- - validates parameters of `transfer_liquid()` - loads the liquid class properties for the relevant pipette and tiprack into protocol engine - delegates to engine core to perform the actual transfer This PR does not cover engine core's transfer method execution. ## Risk assessment No risk so far since this is a code-only change. --- .../protocol_api/_liquid_properties.py | 139 ++++++++- .../protocol_api/core/engine/instrument.py | 51 +++- .../opentrons/protocol_api/core/instrument.py | 31 +- .../core/legacy/legacy_instrument_core.py | 27 +- .../legacy_instrument_core.py | 27 +- .../protocol_api/instrument_context.py | 116 ++++++- api/src/opentrons/protocol_api/validation.py | 83 +++++ .../protocol_engine/clients/sync_client.py | 6 + .../protocol_engine/commands/__init__.py | 16 + .../advanced_control/transfers/common.py | 13 +- .../advanced_control/transfers/transfer.py | 1 - .../core/engine/test_instrument_core.py | 62 ++++ .../protocol_api/test_instrument_context.py | 283 +++++++++++++++++- .../test_liquid_class_properties.py | 4 + .../opentrons/protocol_api/test_validation.py | 150 +++++++++- 15 files changed, 989 insertions(+), 20 deletions(-) diff --git a/api/src/opentrons/protocol_api/_liquid_properties.py b/api/src/opentrons/protocol_api/_liquid_properties.py index d27d2bd1ba0..dc848cfb7e2 100644 --- a/api/src/opentrons/protocol_api/_liquid_properties.py +++ b/api/src/opentrons/protocol_api/_liquid_properties.py @@ -1,15 +1,19 @@ from dataclasses import dataclass from numpy import interp -from typing import Optional, Dict, Sequence, Tuple +from typing import Optional, Dict, Sequence, Tuple, List from opentrons_shared_data.liquid_classes.liquid_class_definition import ( AspirateProperties as SharedDataAspirateProperties, SingleDispenseProperties as SharedDataSingleDispenseProperties, MultiDispenseProperties as SharedDataMultiDispenseProperties, DelayProperties as SharedDataDelayProperties, + DelayParams as SharedDataDelayParams, TouchTipProperties as SharedDataTouchTipProperties, + LiquidClassTouchTipParams as SharedDataTouchTipParams, MixProperties as SharedDataMixProperties, + MixParams as SharedDataMixParams, BlowoutProperties as SharedDataBlowoutProperties, + BlowoutParams as SharedDataBlowoutParams, ByTipTypeSetting as SharedByTipTypeSetting, Submerge as SharedDataSubmerge, RetractAspirate as SharedDataRetractAspirate, @@ -37,6 +41,10 @@ def as_dict(self) -> Dict[float, float]: """Get a dictionary representation of all set volumes and values along with the default.""" return self._properties_by_volume + def as_list_of_tuples(self) -> List[Tuple[float, float]]: + """Get as list of tuples.""" + return list(self._properties_by_volume.items()) + def get_for_volume(self, volume: float) -> float: """Get a value by volume for this property. Volumes not defined will be interpolated between set volumes.""" validated_volume = validation.ensure_positive_float(volume) @@ -101,6 +109,14 @@ def duration(self, new_duration: float) -> None: validated_duration = validation.ensure_positive_float(new_duration) self._duration = validated_duration + def as_shared_data_model(self) -> SharedDataDelayProperties: + return SharedDataDelayProperties( + enable=self._enabled, + params=SharedDataDelayParams(duration=self.duration) + if self.duration is not None + else None, + ) + @dataclass class TouchTipProperties: @@ -152,6 +168,27 @@ def speed(self, new_speed: float) -> None: validated_speed = validation.ensure_positive_float(new_speed) self._speed = validated_speed + def _get_shared_data_params(self) -> Optional[SharedDataTouchTipParams]: + """Get the touch tip params in schema v1 shape.""" + if ( + self._z_offset is not None + and self._mm_to_edge is not None + and self._speed is not None + ): + return SharedDataTouchTipParams( + zOffset=self._z_offset, + mmToEdge=self._mm_to_edge, + speed=self._speed, + ) + else: + return None + + def as_shared_data_model(self) -> SharedDataTouchTipProperties: + return SharedDataTouchTipProperties( + enable=self._enabled, + params=self._get_shared_data_params(), + ) + @dataclass class MixProperties: @@ -189,6 +226,22 @@ def volume(self, new_volume: float) -> None: validated_volume = validation.ensure_positive_float(new_volume) self._volume = validated_volume + def _get_shared_data_params(self) -> Optional[SharedDataMixParams]: + """Get the mix params in schema v1 shape.""" + if self._repetitions is not None and self._volume is not None: + return SharedDataMixParams( + repetitions=self._repetitions, + volume=self._volume, + ) + else: + return None + + def as_shared_data_model(self) -> SharedDataMixProperties: + return SharedDataMixProperties( + enable=self._enabled, + params=self._get_shared_data_params(), + ) + @dataclass class BlowoutProperties: @@ -227,6 +280,22 @@ def flow_rate(self, new_flow_rate: float) -> None: validated_flow_rate = validation.ensure_positive_float(new_flow_rate) self._flow_rate = validated_flow_rate + def _get_shared_data_params(self) -> Optional[SharedDataBlowoutParams]: + """Get the mix params in schema v1 shape.""" + if self._location is not None and self._flow_rate is not None: + return SharedDataBlowoutParams( + location=self._location, + flowRate=self._flow_rate, + ) + else: + return None + + def as_shared_data_model(self) -> SharedDataBlowoutProperties: + return SharedDataBlowoutProperties( + enable=self._enabled, + params=self._get_shared_data_params(), + ) + @dataclass class SubmergeRetractCommon: @@ -271,6 +340,14 @@ def delay(self) -> DelayProperties: class Submerge(SubmergeRetractCommon): ... + def as_shared_data_model(self) -> SharedDataSubmerge: + return SharedDataSubmerge( + positionReference=self._position_reference, + offset=self._offset, + speed=self._speed, + delay=self._delay.as_shared_data_model(), + ) + @dataclass class RetractAspirate(SubmergeRetractCommon): @@ -286,6 +363,16 @@ def air_gap_by_volume(self) -> LiquidHandlingPropertyByVolume: def touch_tip(self) -> TouchTipProperties: return self._touch_tip + def as_shared_data_model(self) -> SharedDataRetractAspirate: + return SharedDataRetractAspirate( + positionReference=self._position_reference, + offset=self._offset, + speed=self._speed, + airGapByVolume=self._air_gap_by_volume.as_list_of_tuples(), + touchTip=self._touch_tip.as_shared_data_model(), + delay=self._delay.as_shared_data_model(), + ) + @dataclass class RetractDispense(SubmergeRetractCommon): @@ -306,6 +393,17 @@ def touch_tip(self) -> TouchTipProperties: def blowout(self) -> BlowoutProperties: return self._blowout + def as_shared_data_model(self) -> SharedDataRetractDispense: + return SharedDataRetractDispense( + positionReference=self._position_reference, + offset=self._offset, + speed=self._speed, + airGapByVolume=self._air_gap_by_volume.as_list_of_tuples(), + blowout=self._blowout.as_shared_data_model(), + touchTip=self._touch_tip.as_shared_data_model(), + delay=self._delay.as_shared_data_model(), + ) + @dataclass class BaseLiquidHandlingProperties: @@ -375,6 +473,19 @@ def retract(self) -> RetractAspirate: def mix(self) -> MixProperties: return self._mix + def as_shared_data_model(self) -> SharedDataAspirateProperties: + return SharedDataAspirateProperties( + submerge=self._submerge.as_shared_data_model(), + retract=self._retract.as_shared_data_model(), + positionReference=self._position_reference, + offset=self._offset, + flowRateByVolume=self._flow_rate_by_volume.as_list_of_tuples(), + preWet=self._pre_wet, + mix=self._mix.as_shared_data_model(), + delay=self._delay.as_shared_data_model(), + correctionByVolume=self._correction_by_volume.as_list_of_tuples(), + ) + @dataclass class SingleDispenseProperties(BaseLiquidHandlingProperties): @@ -395,6 +506,19 @@ def retract(self) -> RetractDispense: def mix(self) -> MixProperties: return self._mix + def as_shared_data_model(self) -> SharedDataSingleDispenseProperties: + return SharedDataSingleDispenseProperties( + submerge=self._submerge.as_shared_data_model(), + retract=self._retract.as_shared_data_model(), + positionReference=self._position_reference, + offset=self._offset, + flowRateByVolume=self._flow_rate_by_volume.as_list_of_tuples(), + mix=self._mix.as_shared_data_model(), + pushOutByVolume=self._push_out_by_volume.as_list_of_tuples(), + delay=self._delay.as_shared_data_model(), + correctionByVolume=self._correction_by_volume.as_list_of_tuples(), + ) + @dataclass class MultiDispenseProperties(BaseLiquidHandlingProperties): @@ -415,6 +539,19 @@ def conditioning_by_volume(self) -> LiquidHandlingPropertyByVolume: def disposal_by_volume(self) -> LiquidHandlingPropertyByVolume: return self._disposal_by_volume + def as_shared_data_model(self) -> SharedDataMultiDispenseProperties: + return SharedDataMultiDispenseProperties( + submerge=self._submerge.as_shared_data_model(), + retract=self._retract.as_shared_data_model(), + positionReference=self._position_reference, + offset=self._offset, + flowRateByVolume=self._flow_rate_by_volume.as_list_of_tuples(), + conditioningByVolume=self._conditioning_by_volume.as_list_of_tuples(), + disposalByVolume=self._disposal_by_volume.as_list_of_tuples(), + delay=self._delay.as_shared_data_model(), + correctionByVolume=self._correction_by_volume.as_list_of_tuples(), + ) + @dataclass class TransferProperties: diff --git a/api/src/opentrons/protocol_api/core/engine/instrument.py b/api/src/opentrons/protocol_api/core/engine/instrument.py index 8fc707541f0..010f3110fdb 100644 --- a/api/src/opentrons/protocol_api/core/engine/instrument.py +++ b/api/src/opentrons/protocol_api/core/engine/instrument.py @@ -2,13 +2,13 @@ from __future__ import annotations -from typing import Optional, TYPE_CHECKING, cast, Union -from opentrons.protocols.api_support.types import APIVersion - +from typing import Optional, TYPE_CHECKING, cast, Union, List from opentrons.types import Location, Mount, NozzleConfigurationType, NozzleMapInterface from opentrons.hardware_control import SyncHardwareAPI from opentrons.hardware_control.dev_types import PipetteDict from opentrons.protocols.api_support.util import FlowRates, find_value_for_api_version +from opentrons.protocols.api_support.types import APIVersion +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from opentrons.protocol_engine import commands as cmd from opentrons.protocol_engine import ( DeckPoint, @@ -27,6 +27,7 @@ PRIMARY_NOZZLE_LITERAL, NozzleLayoutConfigurationType, AddressableOffsetVector, + LiquidClassRecord, ) from opentrons.protocol_engine.errors.exceptions import TipNotAttachedError from opentrons.protocol_engine.clients import SyncClient as EngineClient @@ -38,14 +39,13 @@ from opentrons.protocol_api._nozzle_layout import NozzleLayout from . import overlap_versions, pipette_movement_conflict -from ..instrument import AbstractInstrument from .well import WellCore - +from ..instrument import AbstractInstrument from ...disposal_locations import TrashBin, WasteChute if TYPE_CHECKING: from .protocol import ProtocolCore - + from opentrons.protocol_api._liquid import LiquidClass _DISPENSE_VOLUME_VALIDATION_ADDED_IN = APIVersion(2, 17) @@ -864,6 +864,45 @@ def configure_nozzle_layout( ) ) + def load_liquid_class( + self, + liquid_class: LiquidClass, + pipette_load_name: str, + tiprack_uri: str, + ) -> str: + """Load a liquid class into the engine and return its ID.""" + transfer_props = liquid_class.get_for( + pipette=pipette_load_name, tiprack=tiprack_uri + ) + + liquid_class_record = LiquidClassRecord( + liquidClassName=liquid_class.name, + pipetteModel=self.get_model(), # TODO: verify this is the correct 'model' to use + tiprack=tiprack_uri, + aspirate=transfer_props.aspirate.as_shared_data_model(), + singleDispense=transfer_props.dispense.as_shared_data_model(), + multiDispense=transfer_props.multi_dispense.as_shared_data_model() + if transfer_props.multi_dispense + else None, + ) + result = self._engine_client.execute_command_without_recovery( + cmd.LoadLiquidClassParams( + liquidClassRecord=liquid_class_record, + ) + ) + return result.liquidClassId + + def transfer_liquid( + self, + liquid_class_id: str, + volume: float, + source: List[WellCore], + dest: List[WellCore], + new_tip: TransferTipPolicyV2, + trash_location: Union[WellCore, Location, TrashBin, WasteChute], + ) -> None: + """Execute transfer using liquid class properties.""" + def retract(self) -> None: """Retract this instrument to the top of the gantry.""" z_axis = self._engine_client.state.pipettes.get_z_axis(self._pipette_id) diff --git a/api/src/opentrons/protocol_api/core/instrument.py b/api/src/opentrons/protocol_api/core/instrument.py index f110bde928d..bc1ec3669df 100644 --- a/api/src/opentrons/protocol_api/core/instrument.py +++ b/api/src/opentrons/protocol_api/core/instrument.py @@ -3,13 +3,14 @@ from __future__ import annotations from abc import abstractmethod, ABC -from typing import Any, Generic, Optional, TypeVar, Union +from typing import Any, Generic, Optional, TypeVar, Union, List from opentrons import types from opentrons.hardware_control.dev_types import PipetteDict from opentrons.protocols.api_support.util import FlowRates +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from opentrons.protocol_api._nozzle_layout import NozzleLayout - +from opentrons.protocol_api._liquid import LiquidClass from ..disposal_locations import TrashBin, WasteChute from .well import WellCoreType @@ -309,6 +310,32 @@ def configure_nozzle_layout( """ ... + @abstractmethod + def load_liquid_class( + self, + liquid_class: LiquidClass, + pipette_load_name: str, + tiprack_uri: str, + ) -> str: + """Load the liquid class properties of given pipette and tiprack into the engine. + + Returns: ID of the liquid class record + """ + ... + + @abstractmethod + def transfer_liquid( + self, + liquid_class_id: str, + volume: float, + source: List[WellCoreType], + dest: List[WellCoreType], + new_tip: TransferTipPolicyV2, + trash_location: Union[WellCoreType, types.Location, TrashBin, WasteChute], + ) -> None: + """Transfer a liquid from source to dest according to liquid class properties.""" + ... + @abstractmethod def is_tip_tracking_available(self) -> bool: """Return whether auto tip tracking is available for the pipette's current nozzle configuration.""" diff --git a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py index 76d49b40557..d2d25051d49 100644 --- a/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy/legacy_instrument_core.py @@ -1,12 +1,13 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING, Optional, Union, List from opentrons import types from opentrons.hardware_control import CriticalPoint from opentrons.hardware_control.dev_types import PipetteDict from opentrons.protocol_api.core.common import WellCore +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from opentrons.protocols.api_support import instrument as instrument_support from opentrons.protocols.api_support.definitions import MAX_SUPPORTED_VERSION from opentrons.protocols.api_support.labware_like import LabwareLike @@ -19,6 +20,7 @@ ) from opentrons.protocols.geometry import planning from opentrons.protocol_api._nozzle_layout import NozzleLayout +from opentrons.protocol_api._liquid import LiquidClass from ...disposal_locations import TrashBin, WasteChute from ..instrument import AbstractInstrument @@ -554,6 +556,29 @@ def configure_nozzle_layout( """This will never be called because it was added in API 2.16.""" pass + def load_liquid_class( + self, + liquid_class: LiquidClass, + pipette_load_name: str, + tiprack_uri: str, + ) -> str: + """This will never be called because it was added in ..""" + # TODO(spp, 2024-11-20): update the docstring and error to include API version + assert False, "load_liquid_class is not supported in legacy context" + + def transfer_liquid( + self, + liquid_class_id: str, + volume: float, + source: List[LegacyWellCore], + dest: List[LegacyWellCore], + new_tip: TransferTipPolicyV2, + trash_location: Union[LegacyWellCore, types.Location, TrashBin, WasteChute], + ) -> None: + """This will never be called because it was added in ..""" + # TODO(spp, 2024-11-20): update the docstring and error to include API version + assert False, "transfer_liquid is not supported in legacy context" + def get_active_channels(self) -> int: """This will never be called because it was added in API 2.16.""" assert False, "get_active_channels only supported in API 2.16 & later" diff --git a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py index f55bf05c447..ec194874528 100644 --- a/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +++ b/api/src/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py @@ -1,12 +1,13 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING, Optional, Union, List from opentrons import types from opentrons.hardware_control.dev_types import PipetteDict from opentrons.hardware_control.types import HardwareAction from opentrons.protocol_api.core.common import WellCore +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from opentrons.protocols.api_support import instrument as instrument_support from opentrons.protocols.api_support.labware_like import LabwareLike from opentrons.protocols.api_support.types import APIVersion @@ -24,6 +25,7 @@ from ...disposal_locations import TrashBin, WasteChute from opentrons.protocol_api._nozzle_layout import NozzleLayout +from opentrons.protocol_api._liquid import LiquidClass from ..instrument import AbstractInstrument @@ -472,6 +474,29 @@ def configure_nozzle_layout( """This will never be called because it was added in API 2.15.""" pass + def load_liquid_class( + self, + liquid_class: LiquidClass, + pipette_load_name: str, + tiprack_uri: str, + ) -> str: + """This will never be called because it was added in ..""" + # TODO(spp, 2024-11-20): update the docstring and error to include API version + assert False, "load_liquid_class is not supported in legacy context" + + def transfer_liquid( + self, + liquid_class_id: str, + volume: float, + source: List[LegacyWellCore], + dest: List[LegacyWellCore], + new_tip: TransferTipPolicyV2, + trash_location: Union[LegacyWellCore, types.Location, TrashBin, WasteChute], + ) -> None: + """Transfer a liquid from source to dest according to liquid class properties.""" + # TODO(spp, 2024-11-20): update the docstring and error to include API version + assert False, "transfer_liquid is not supported in legacy context" + def get_active_channels(self) -> int: """This will never be called because it was added in API 2.16.""" assert False, "get_active_channels only supported in API 2.16 & later" diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 7cc2d43bac2..8cc3e0bd14e 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -8,6 +8,8 @@ UnexpectedTipRemovalError, UnsupportedHardwareCommand, ) +from opentrons_shared_data.robot.types import RobotTypeEnum + from opentrons.legacy_broker import LegacyBroker from opentrons.hardware_control.dev_types import PipetteDict from opentrons import types @@ -16,7 +18,6 @@ from opentrons.legacy_commands import publisher from opentrons.protocols.advanced_control.mix import mix_from_kwargs from opentrons.protocols.advanced_control.transfers import transfer as v1_transfer - from opentrons.protocols.api_support.deck_type import NoTrashDefinedError from opentrons.protocols.api_support.types import APIVersion from opentrons.protocols.api_support import instrument @@ -35,9 +36,13 @@ from .config import Clearances from .disposal_locations import TrashBin, WasteChute from ._nozzle_layout import NozzleLayout +from ._liquid import LiquidClass from . import labware, validation - -AdvancedLiquidHandling = v1_transfer.AdvancedLiquidHandling +from ..config import feature_flags +from ..protocols.advanced_control.transfers.common import ( + TransferTipPolicyV2, + TransferTipPolicyV2Type, +) _DEFAULT_ASPIRATE_CLEARANCE = 1.0 _DEFAULT_DISPENSE_CLEARANCE = 1.0 @@ -61,6 +66,8 @@ _AIR_GAP_TRACKING_ADDED_IN = APIVersion(2, 22) """The version after which air gaps should be implemented with a separate call instead of an aspirate for better liquid volume tracking.""" +AdvancedLiquidHandling = v1_transfer.AdvancedLiquidHandling + class InstrumentContext(publisher.CommandPublisher): """ @@ -1219,7 +1226,6 @@ def home_plunger(self) -> InstrumentContext: self._core.home_plunger() return self - # TODO (spp, 2024-03-08): verify if ok to & change source & dest types to AdvancedLiquidHandling @publisher.publish(command=cmds.distribute) @requires_version(2, 0) def distribute( @@ -1259,7 +1265,6 @@ def distribute( return self.transfer(volume, source, dest, **kwargs) - # TODO (spp, 2024-03-08): verify if ok to & change source & dest types to AdvancedLiquidHandling @publisher.publish(command=cmds.consolidate) @requires_version(2, 0) def consolidate( @@ -1505,6 +1510,107 @@ def _execute_transfer(self, plan: v1_transfer.TransferPlan) -> None: for cmd in plan: getattr(self, cmd["method"])(*cmd["args"], **cmd["kwargs"]) + def transfer_liquid( + self, + liquid_class: LiquidClass, + volume: float, + source: Union[ + labware.Well, Sequence[labware.Well], Sequence[Sequence[labware.Well]] + ], + dest: Union[ + labware.Well, Sequence[labware.Well], Sequence[Sequence[labware.Well]] + ], + new_tip: TransferTipPolicyV2Type = "once", + tip_drop_location: Optional[ + Union[types.Location, labware.Well, TrashBin, WasteChute] + ] = None, # Maybe call this 'tip_drop_location' which is similar to PD + ) -> InstrumentContext: + """Transfer liquid from source to dest using the specified liquid class properties. + + TODO: Add args description. + """ + if not feature_flags.allow_liquid_classes( + robot_type=RobotTypeEnum.robot_literal_to_enum( + self._protocol_core.robot_type + ) + ): + raise NotImplementedError("This method is not implemented.") + + flat_sources_list = validation.ensure_valid_flat_wells_list_for_transfer_v2( + source + ) + flat_dests_list = validation.ensure_valid_flat_wells_list_for_transfer_v2(dest) + for well in flat_sources_list + flat_dests_list: + instrument.validate_takes_liquid( + location=well.top(), + reject_module=True, + reject_adapter=True, + ) + if len(flat_sources_list) != len(flat_dests_list): + raise ValueError( + "Sources and destinations should be of the same length in order to perform a transfer." + " To transfer liquid from one source to many destinations, use 'distribute_liquid'," + " to transfer liquid onto one destinations from many sources, use 'consolidate_liquid'." + ) + + valid_new_tip = validation.ensure_new_tip_policy(new_tip) + if valid_new_tip == TransferTipPolicyV2.NEVER: + if self._last_tip_picked_up_from is None: + raise RuntimeError( + "Pipette has no tip attached to perform transfer." + " Either do a pick_up_tip beforehand or specify a new_tip parameter" + " of 'once' or 'always'." + ) + else: + tiprack = self._last_tip_picked_up_from.parent + else: + tiprack, well = labware.next_available_tip( + starting_tip=self.starting_tip, + tip_racks=self.tip_racks, + channels=self.active_channels, + nozzle_map=self._core.get_nozzle_map(), + ) + if self.current_volume != 0: + raise RuntimeError( + "A transfer on a liquid class cannot start with liquid already in the tip." + " Ensure that all previously aspirated liquid is dispensed before starting" + " a new transfer." + ) + + _trash_location: Union[types.Location, labware.Well, TrashBin, WasteChute] + if tip_drop_location is None: + saved_trash = self.trash_container + if isinstance(saved_trash, labware.Labware): + _trash_location = saved_trash.wells()[0] + else: + _trash_location = saved_trash + else: + _trash_location = tip_drop_location + + checked_trash_location = ( + validation.ensure_valid_tip_drop_location_for_transfer_v2( + tip_drop_location=_trash_location + ) + ) + liquid_class_id = self._core.load_liquid_class( + liquid_class=liquid_class, + pipette_load_name=self.name, + tiprack_uri=tiprack.uri, + ) + + self._core.transfer_liquid( + liquid_class_id=liquid_class_id, + volume=volume, + source=[well._core for well in flat_sources_list], + dest=[well._core for well in flat_dests_list], + new_tip=valid_new_tip, + trash_location=checked_trash_location._core + if isinstance(checked_trash_location, labware.Well) + else checked_trash_location, + ) + + return self + @requires_version(2, 0) def delay(self, *args: Any, **kwargs: Any) -> None: """ diff --git a/api/src/opentrons/protocol_api/validation.py b/api/src/opentrons/protocol_api/validation.py index 44123571081..f0db8a71e5e 100644 --- a/api/src/opentrons/protocol_api/validation.py +++ b/api/src/opentrons/protocol_api/validation.py @@ -21,6 +21,7 @@ from opentrons.protocols.api_support.types import APIVersion, ThermocyclerStep from opentrons.protocols.api_support.util import APIVersionError from opentrons.protocols.models import LabwareDefinition +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from opentrons.types import ( Mount, DeckSlotName, @@ -634,3 +635,85 @@ def validate_coordinates(value: Sequence[float]) -> Tuple[float, float, float]: if not all(isinstance(v, (float, int)) for v in value): raise ValueError("All values in coordinates must be floats.") return float(value[0]), float(value[1]), float(value[2]) + + +def ensure_new_tip_policy(value: str) -> TransferTipPolicyV2: + """Ensure that new_tip value is a valid TransferTipPolicy value.""" + try: + return TransferTipPolicyV2(value.lower()) + except ValueError: + raise ValueError( + f"'{value}' is invalid value for 'new_tip'." + f" Acceptable value is either 'never', 'once', 'always' or 'per source'." + ) + + +def _verify_each_list_element_is_valid_location(locations: Sequence[Well]) -> None: + from .labware import Well + + for loc in locations: + if not isinstance(loc, Well): + raise ValueError( + f"'{loc}' is not a valid location for transfer." + f" Location should be a well instance." + ) + + +def ensure_valid_flat_wells_list_for_transfer_v2( + target: Union[Well, Sequence[Well], Sequence[Sequence[Well]]], +) -> List[Well]: + """Ensure that the given target(s) for a liquid transfer are valid and in a flat list.""" + from .labware import Well + + if isinstance(target, Well): + return [target] + + if isinstance(target, (list, tuple)): + if len(target) == 0: + raise ValueError("No target well(s) specified for transfer.") + if isinstance(target[0], (list, tuple)): + for sub_sequence in target: + _verify_each_list_element_is_valid_location(sub_sequence) + return [loc for sub_sequence in target for loc in sub_sequence] + else: + _verify_each_list_element_is_valid_location(target) + return list(target) + else: + raise ValueError( + f"'{target}' is not a valid location for transfer." + f" Location should be a well instance, or a 1-dimensional or" + f" 2-dimensional sequence of well instances." + ) + + +def ensure_valid_tip_drop_location_for_transfer_v2( + tip_drop_location: Union[Location, Well, TrashBin, WasteChute] +) -> Union[Location, Well, TrashBin, WasteChute]: + """Ensure that the tip drop location is valid for v2 transfer.""" + from .labware import Well + + if ( + isinstance(tip_drop_location, Well) + or isinstance(tip_drop_location, TrashBin) + or isinstance(tip_drop_location, WasteChute) + ): + return tip_drop_location + elif isinstance(tip_drop_location, Location): + _, maybe_well = tip_drop_location.labware.get_parent_labware_and_well() + + if maybe_well is None: + raise TypeError( + "If a location is specified as a `types.Location`" + " (for instance, as the result of a call to `Well.top()`)," + " it must be a location relative to a well," + " since that is where a tip is dropped." + " However, the given location doesn't refer to any well." + ) + return tip_drop_location + else: + raise TypeError( + f"If specified, location should be an instance of" + f" `types.Location` (e.g. the return value from `Well.top()`)" + f" or `Well` (e.g. `reservoir.wells()[0]`) or an instance of `TrashBin` or `WasteChute`." + f" However, it is '{tip_drop_location}'." + ) diff --git a/api/src/opentrons/protocol_engine/clients/sync_client.py b/api/src/opentrons/protocol_engine/clients/sync_client.py index 3460c13d463..71837a7a2ca 100644 --- a/api/src/opentrons/protocol_engine/clients/sync_client.py +++ b/api/src/opentrons/protocol_engine/clients/sync_client.py @@ -89,6 +89,12 @@ def execute_command_without_recovery( ) -> commands.TryLiquidProbeResult: pass + @overload + def execute_command_without_recovery( + self, params: commands.LoadLiquidClassParams + ) -> commands.LoadLiquidClassResult: + pass + def execute_command_without_recovery( self, params: commands.CommandParams ) -> commands.CommandResult: diff --git a/api/src/opentrons/protocol_engine/commands/__init__.py b/api/src/opentrons/protocol_engine/commands/__init__.py index 8e1e91bec50..f25293f85fb 100644 --- a/api/src/opentrons/protocol_engine/commands/__init__.py +++ b/api/src/opentrons/protocol_engine/commands/__init__.py @@ -147,6 +147,15 @@ LoadLiquidImplementation, ) +from .load_liquid_class import ( + LoadLiquidClass, + LoadLiquidClassParams, + LoadLiquidClassCreate, + LoadLiquidClassResult, + LoadLiquidClassCommandType, + LoadLiquidClassImplementation, +) + from .load_module import ( LoadModule, LoadModuleParams, @@ -553,6 +562,13 @@ "LoadLiquidParams", "LoadLiquidResult", "LoadLiquidCommandType", + # load liquid class command models + "LoadLiquidClass", + "LoadLiquidClassParams", + "LoadLiquidClassCreate", + "LoadLiquidClassResult", + "LoadLiquidClassImplementation", + "LoadLiquidClassCommandType", # hardware control command models # hardware module command bundles "absorbance_reader", diff --git a/api/src/opentrons/protocols/advanced_control/transfers/common.py b/api/src/opentrons/protocols/advanced_control/transfers/common.py index e7f41f2e8e9..c40a55beacd 100644 --- a/api/src/opentrons/protocols/advanced_control/transfers/common.py +++ b/api/src/opentrons/protocols/advanced_control/transfers/common.py @@ -1,5 +1,16 @@ """Common functions between v1 transfer and liquid-class-based transfer.""" -from typing import Iterable, Generator, Tuple, TypeVar +import enum +from typing import Iterable, Generator, Tuple, TypeVar, Literal + + +class TransferTipPolicyV2(enum.Enum): + ONCE = "once" + NEVER = "never" + ALWAYS = "always" + PER_SOURCE = "per source" + + +TransferTipPolicyV2Type = Literal["once", "always", "per source", "never"] Target = TypeVar("Target") diff --git a/api/src/opentrons/protocols/advanced_control/transfers/transfer.py b/api/src/opentrons/protocols/advanced_control/transfers/transfer.py index 1c6c9a78288..3f5f90ab550 100644 --- a/api/src/opentrons/protocols/advanced_control/transfers/transfer.py +++ b/api/src/opentrons/protocols/advanced_control/transfers/transfer.py @@ -22,7 +22,6 @@ from . import common as tx_commons from ..common import Mix, MixOpts, MixStrategy - AdvancedLiquidHandling = Union[ Well, types.Location, diff --git a/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py b/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py index b2dff4a7254..352dcb35c58 100644 --- a/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py +++ b/api/tests/opentrons/protocol_api/core/engine/test_instrument_core.py @@ -5,11 +5,15 @@ import pytest from decoy import Decoy from decoy import errors +from opentrons_shared_data.liquid_classes.liquid_class_definition import ( + LiquidClassSchemaV1, +) from opentrons_shared_data.pipette.types import PipetteNameType from opentrons.hardware_control import SyncHardwareAPI from opentrons.hardware_control.dev_types import PipetteDict +from opentrons.protocol_api._liquid_properties import TransferProperties from opentrons.protocol_engine import ( DeckPoint, LoadedPipette, @@ -35,6 +39,7 @@ SingleNozzleLayoutConfiguration, ColumnNozzleLayoutConfiguration, AddressableOffsetVector, + LiquidClassRecord, ) from opentrons.protocol_api.disposal_locations import ( TrashBin, @@ -42,6 +47,7 @@ DisposalOffset, ) from opentrons.protocol_api._nozzle_layout import NozzleLayout +from opentrons.protocol_api._liquid import LiquidClass from opentrons.protocol_api.core.engine import ( InstrumentCore, WellCore, @@ -1494,3 +1500,59 @@ def test_liquid_probe_with_recovery( ) ) ) + + +def test_load_liquid_class( + decoy: Decoy, + mock_engine_client: EngineClient, + subject: InstrumentCore, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should send the load liquid class command to the engine.""" + sample_aspirate_data = minimal_liquid_class_def2.byPipette[0].byTipType[0].aspirate + sample_single_dispense_data = ( + minimal_liquid_class_def2.byPipette[0].byTipType[0].singleDispense + ) + sample_multi_dispense_data = ( + minimal_liquid_class_def2.byPipette[0].byTipType[0].multiDispense + ) + + test_liq_class = decoy.mock(cls=LiquidClass) + test_transfer_props = decoy.mock(cls=TransferProperties) + + decoy.when( + test_liq_class.get_for("flex_1channel_50", "opentrons_flex_96_tiprack_50ul") + ).then_return(test_transfer_props) + decoy.when(test_liq_class.name).then_return("water") + decoy.when( + mock_engine_client.state.pipettes.get_model_name(subject.pipette_id) + ).then_return("flex_1channel_50") + decoy.when(test_transfer_props.aspirate.as_shared_data_model()).then_return( + sample_aspirate_data + ) + decoy.when(test_transfer_props.dispense.as_shared_data_model()).then_return( + sample_single_dispense_data + ) + decoy.when(test_transfer_props.multi_dispense.as_shared_data_model()).then_return( # type: ignore[union-attr] + sample_multi_dispense_data + ) + decoy.when( + mock_engine_client.execute_command_without_recovery( + cmd.LoadLiquidClassParams( + liquidClassRecord=LiquidClassRecord( + liquidClassName="water", + pipetteModel="flex_1channel_50", + tiprack="opentrons_flex_96_tiprack_50ul", + aspirate=sample_aspirate_data, + singleDispense=sample_single_dispense_data, + multiDispense=sample_multi_dispense_data, + ) + ) + ) + ).then_return(cmd.LoadLiquidClassResult(liquidClassId="liquid-class-id")) + result = subject.load_liquid_class( + liquid_class=test_liq_class, + pipette_load_name="flex_1channel_50", + tiprack_uri="opentrons_flex_96_tiprack_50ul", + ) + assert result == "liquid-class-id" diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index 1caae624377..3f639aff922 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -10,12 +10,14 @@ from decoy import Decoy from pytest_lazyfixture import lazy_fixture # type: ignore[import-untyped] +from opentrons.config import feature_flags as ff from opentrons.protocol_engine.commands.pipetting_common import LiquidNotFoundError from opentrons.protocol_engine.errors.error_occurrence import ( ProtocolCommandFailedError, ) from opentrons.legacy_broker import LegacyBroker +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from tests.opentrons.protocol_api.partial_tip_configurations import ( PipetteReliantNozzleConfigSpec, @@ -42,6 +44,7 @@ Well, labware, validation as mock_validation, + LiquidClass, ) from opentrons.protocol_api.validation import WellTarget, PointTarget from opentrons.protocol_api.core.common import InstrumentCore, ProtocolCore @@ -51,12 +54,16 @@ from opentrons.hardware_control.nozzle_manager import NozzleMap from opentrons.protocol_api.disposal_locations import TrashBin, WasteChute -from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps from opentrons.types import Location, Mount, Point +from opentrons_shared_data.pipette.pipette_definition import ValidNozzleMaps from opentrons_shared_data.errors.exceptions import ( CommandPreconditionViolated, ) +from opentrons_shared_data.liquid_classes.liquid_class_definition import ( + LiquidClassSchemaV1, +) +from opentrons_shared_data.robot.types import RobotTypeEnum, RobotType from . import versions_at_or_above, versions_between @@ -1723,3 +1730,277 @@ def test_air_gap_uses_air_gap( decoy.verify(mock_move_to(top_location, publish=False)) decoy.verify(mock_instrument_core.air_gap_in_place(10, 11)) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_raises_for_invalid_locations( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should raise errors if source or destination is invalid.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_raise(ValueError("Oh no")) + with pytest.raises(ValueError): + subject.transfer_liquid( + liquid_class=test_liq_class, + volume=10, + source=[mock_well], + dest=[[mock_well]], + ) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_raises_for_unequal_source_and_dest( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should raise errors if source and destination are not of same length.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2(mock_well) + ).then_return([mock_well, mock_well]) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_return([mock_well]) + with pytest.raises( + ValueError, match="Sources and destinations should be of the same length" + ): + subject.transfer_liquid( + liquid_class=test_liq_class, volume=10, source=mock_well, dest=[mock_well] + ) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_raises_for_non_liquid_handling_locations( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should raise errors if source and destination are not of same length.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_return([mock_well]) + decoy.when( + mock_instrument_support.validate_takes_liquid( + mock_well.top(), reject_module=True, reject_adapter=True + ) + ).then_raise(ValueError("Uh oh")) + with pytest.raises(ValueError, match="Uh oh"): + subject.transfer_liquid( + liquid_class=test_liq_class, volume=10, source=[mock_well], dest=[mock_well] + ) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_raises_for_bad_tip_policy( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should raise errors if new_tip is invalid.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_return([mock_well]) + decoy.when(mock_validation.ensure_new_tip_policy("once")).then_raise( + ValueError("Uh oh") + ) + with pytest.raises(ValueError, match="Uh oh"): + subject.transfer_liquid( + liquid_class=test_liq_class, + volume=10, + source=[mock_well], + dest=[mock_well], + new_tip="once", + ) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_raises_for_no_tip( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should raise errors if there is no tip attached.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_return([mock_well]) + decoy.when(mock_validation.ensure_new_tip_policy("never")).then_return( + TransferTipPolicyV2.NEVER + ) + with pytest.raises(RuntimeError, match="Pipette has no tip"): + subject.transfer_liquid( + liquid_class=test_liq_class, + volume=10, + source=[mock_well], + dest=[mock_well], + new_tip="never", + ) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_raises_if_tip_has_liquid( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + mock_instrument_core: InstrumentCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should raise errors if there is no tip attached.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + tip_racks = [decoy.mock(cls=Labware)] + + subject.starting_tip = None + subject.tip_racks = tip_racks + + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_return([mock_well]) + decoy.when(mock_validation.ensure_new_tip_policy("never")).then_return( + TransferTipPolicyV2.ONCE + ) + decoy.when(mock_instrument_core.get_nozzle_map()).then_return(MOCK_MAP) + decoy.when(mock_instrument_core.get_active_channels()).then_return(2) + decoy.when( + labware.next_available_tip( + starting_tip=None, + tip_racks=tip_racks, + channels=2, + nozzle_map=MOCK_MAP, + ) + ).then_return((decoy.mock(cls=Labware), decoy.mock(cls=Well))) + decoy.when(mock_instrument_core.get_current_volume()).then_return(1000) + with pytest.raises(RuntimeError, match="liquid already in the tip"): + subject.transfer_liquid( + liquid_class=test_liq_class, + volume=10, + source=[mock_well], + dest=[mock_well], + new_tip="never", + ) + + +@pytest.mark.parametrize("robot_type", ["OT-2 Standard", "OT-3 Standard"]) +def test_transfer_liquid_delegates_to_engine_core( + decoy: Decoy, + mock_protocol_core: ProtocolCore, + mock_instrument_core: InstrumentCore, + subject: InstrumentContext, + mock_feature_flags: None, + robot_type: RobotType, + minimal_liquid_class_def2: LiquidClassSchemaV1, +) -> None: + """It should load liquid class into engine and delegate the transfer execution to core.""" + test_liq_class = LiquidClass.create(minimal_liquid_class_def2) + mock_well = decoy.mock(cls=Well) + tip_racks = [decoy.mock(cls=Labware)] + trash_location = Location(point=Point(1, 2, 3), labware=mock_well) + next_tiprack = decoy.mock(cls=Labware) + subject.starting_tip = None + subject.tip_racks = tip_racks + + decoy.when(mock_protocol_core.robot_type).then_return(robot_type) + decoy.when( + ff.allow_liquid_classes(RobotTypeEnum.robot_literal_to_enum(robot_type)) + ).then_return(True) + decoy.when( + mock_validation.ensure_valid_flat_wells_list_for_transfer_v2([mock_well]) + ).then_return([mock_well]) + decoy.when(mock_validation.ensure_new_tip_policy("never")).then_return( + TransferTipPolicyV2.ONCE + ) + decoy.when(mock_instrument_core.get_nozzle_map()).then_return(MOCK_MAP) + decoy.when(mock_instrument_core.get_active_channels()).then_return(2) + decoy.when( + labware.next_available_tip( + starting_tip=None, + tip_racks=tip_racks, + channels=2, + nozzle_map=MOCK_MAP, + ) + ).then_return((next_tiprack, decoy.mock(cls=Well))) + decoy.when(mock_instrument_core.get_current_volume()).then_return(0) + decoy.when( + mock_validation.ensure_valid_tip_drop_location_for_transfer_v2(trash_location) + ).then_return(trash_location.move(Point(1, 2, 3))) + decoy.when(next_tiprack.uri).then_return("tiprack-uri") + decoy.when(mock_instrument_core.get_pipette_name()).then_return("pipette-name") + decoy.when( + mock_instrument_core.load_liquid_class( + liquid_class=test_liq_class, + pipette_load_name="pipette-name", + tiprack_uri="tiprack-uri", + ) + ).then_return("liq-class-id") + + subject.transfer_liquid( + liquid_class=test_liq_class, + volume=10, + source=[mock_well], + dest=[mock_well], + new_tip="never", + tip_drop_location=trash_location, + ) + decoy.verify( + mock_instrument_core.transfer_liquid( + liquid_class_id="liq-class-id", + volume=10, + source=[mock_well._core], + dest=[mock_well._core], + new_tip=TransferTipPolicyV2.ONCE, + trash_location=trash_location.move(Point(1, 2, 3)), + ) + ) diff --git a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py index 356add50ae8..f335cb385bc 100644 --- a/api/tests/opentrons/protocol_api/test_liquid_class_properties.py +++ b/api/tests/opentrons/protocol_api/test_liquid_class_properties.py @@ -55,6 +55,7 @@ def test_build_aspirate_settings() -> None: assert aspirate_properties.mix.volume == 15 assert aspirate_properties.delay.enabled is True assert aspirate_properties.delay.duration == 2 + assert aspirate_properties.as_shared_data_model() == aspirate_data def test_build_single_dispense_settings() -> None: @@ -111,6 +112,7 @@ def test_build_single_dispense_settings() -> None: } assert single_dispense_properties.delay.enabled is True assert single_dispense_properties.delay.duration == 2.5 + assert single_dispense_properties.as_shared_data_model() == single_dispense_data def test_build_multi_dispense_settings() -> None: @@ -166,6 +168,7 @@ def test_build_multi_dispense_settings() -> None: } assert multi_dispense_properties.delay.enabled is True assert multi_dispense_properties.delay.duration == 1 + assert multi_dispense_properties.as_shared_data_model() == multi_dispense_data def test_build_multi_dispense_settings_none( @@ -181,6 +184,7 @@ def test_liquid_handling_property_by_volume() -> None: subject = LiquidHandlingPropertyByVolume([(5.0, 50.0), (10.0, 250.0)]) assert subject.as_dict() == {5.0: 50, 10.0: 250} assert subject.get_for_volume(7) == 130.0 + assert subject.as_list_of_tuples() == [(5.0, 50.0), (10.0, 250.0)] subject.set_for_volume(volume=7, value=175.5) assert subject.as_dict() == { diff --git a/api/tests/opentrons/protocol_api/test_validation.py b/api/tests/opentrons/protocol_api/test_validation.py index 9a111e6f81f..342e197535b 100644 --- a/api/tests/opentrons/protocol_api/test_validation.py +++ b/api/tests/opentrons/protocol_api/test_validation.py @@ -6,6 +6,7 @@ import pytest import re +from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2 from opentrons_shared_data.labware.labware_definition import ( LabwareRole, Parameters as LabwareDefinitionParameters, @@ -34,7 +35,13 @@ from opentrons.protocols.models import LabwareDefinition from opentrons.protocols.api_support.types import APIVersion from opentrons.protocols.api_support.util import APIVersionError -from opentrons.protocol_api import validation as subject, Well, Labware +from opentrons.protocol_api import ( + validation as subject, + Well, + Labware, + TrashBin, + WasteChute, +) @pytest.mark.parametrize( @@ -722,3 +729,144 @@ def test_ensure_only_gantry_axis_map_type( """Check that gantry axis_map validation occurs for the given scenarios.""" with pytest.raises(subject.IncorrectAxisError, match=error_message): subject.ensure_only_gantry_axis_map_type(axis_map, robot_type) + + +@pytest.mark.parametrize( + ["value", "expected_result"], + [ + ("once", TransferTipPolicyV2.ONCE), + ("NEVER", TransferTipPolicyV2.NEVER), + ("alWaYs", TransferTipPolicyV2.ALWAYS), + ("Per Source", TransferTipPolicyV2.PER_SOURCE), + ], +) +def test_ensure_new_tip_policy( + value: str, expected_result: TransferTipPolicyV2 +) -> None: + """It should return the expected tip policy.""" + assert subject.ensure_new_tip_policy(value) == expected_result + + +def test_ensure_new_tip_policy_raises() -> None: + """It should raise ValueError for invalid new_tip value.""" + with pytest.raises(ValueError, match="is invalid value for 'new_tip'"): + subject.ensure_new_tip_policy("blah") + + +@pytest.mark.parametrize( + ["target", "expected_raise"], + [ + ( + "a", + pytest.raises( + ValueError, match="'a' is not a valid location for transfer." + ), + ), + ( + ["a"], + pytest.raises( + ValueError, match="'a' is not a valid location for transfer." + ), + ), + ( + [("a",)], + pytest.raises( + ValueError, match="'a' is not a valid location for transfer." + ), + ), + ( + [], + pytest.raises( + ValueError, match="No target well\\(s\\) specified for transfer." + ), + ), + ], +) +def test_ensure_valid_flat_wells_list_raises_for_invalid_targets( + target: Any, + expected_raise: ContextManager[Any], +) -> None: + """It should raise an error if target location is invalid.""" + with expected_raise: + subject.ensure_valid_flat_wells_list_for_transfer_v2(target) + + +def test_ensure_valid_flat_wells_list_raises_for_mixed_targets(decoy: Decoy) -> None: + """It should raise appropriate error if target has mixed valid and invalid wells.""" + target1 = [decoy.mock(cls=Well), "a"] + with pytest.raises(ValueError, match="'a' is not a valid location for transfer."): + subject.ensure_valid_flat_wells_list_for_transfer_v2(target1) # type: ignore[arg-type] + + target2 = [[decoy.mock(cls=Well)], ["a"]] + with pytest.raises(ValueError, match="'a' is not a valid location for transfer."): + subject.ensure_valid_flat_wells_list_for_transfer_v2(target2) # type: ignore[arg-type] + + +def test_ensure_valid_flat_wells_list(decoy: Decoy) -> None: + """It should convert the locations to flat lists correctly.""" + target1 = decoy.mock(cls=Well) + target2 = decoy.mock(cls=Well) + + assert subject.ensure_valid_flat_wells_list_for_transfer_v2(target1) == [target1] + assert subject.ensure_valid_flat_wells_list_for_transfer_v2([target1, target2]) == [ + target1, + target2, + ] + assert subject.ensure_valid_flat_wells_list_for_transfer_v2( + [ + [target1, target1], + [target2, target2], + ] + ) == [target1, target1, target2, target2] + assert subject.ensure_valid_flat_wells_list_for_transfer_v2((target1, target2)) == [ + target1, + target2, + ] + assert subject.ensure_valid_flat_wells_list_for_transfer_v2( + ( + [target1, target1], + [target2, target2], + ) + ) == [target1, target1, target2, target2] + + +def test_ensure_valid_tip_drop_location_for_transfer_v2( + decoy: Decoy, +) -> None: + """It should check that the tip drop location is valid.""" + mock_well = decoy.mock(cls=Well) + mock_location = Location(point=Point(x=1, y=1, z=1), labware=mock_well) + mock_trash_bin = decoy.mock(cls=TrashBin) + mock_waste_chute = decoy.mock(cls=WasteChute) + assert ( + subject.ensure_valid_tip_drop_location_for_transfer_v2(mock_well) == mock_well + ) + assert ( + subject.ensure_valid_tip_drop_location_for_transfer_v2(mock_location) + == mock_location + ) + assert ( + subject.ensure_valid_tip_drop_location_for_transfer_v2(mock_trash_bin) + == mock_trash_bin + ) + assert ( + subject.ensure_valid_tip_drop_location_for_transfer_v2(mock_waste_chute) + == mock_waste_chute + ) + + +def test_ensure_valid_tip_drop_location_for_transfer_v2_raises(decoy: Decoy) -> None: + """It should raise an error for invalid tip drop locations.""" + with pytest.raises(TypeError, match="However, it is '\\['a'\\]'"): + subject.ensure_valid_tip_drop_location_for_transfer_v2(["a"]) # type: ignore[arg-type] + + mock_labware = decoy.mock(cls=Labware) + with pytest.raises(TypeError, match=f"However, it is '{mock_labware}'"): + subject.ensure_valid_tip_drop_location_for_transfer_v2(mock_labware) # type: ignore[arg-type] + + with pytest.raises( + TypeError, match="However, the given location doesn't refer to any well." + ): + subject.ensure_valid_tip_drop_location_for_transfer_v2( + Location(point=Point(x=1, y=1, z=1), labware=None) + ) From 91d737dae6362df6ade625aa86c3b4123f2df35b Mon Sep 17 00:00:00 2001 From: Jamey Huffnagle Date: Tue, 3 Dec 2024 10:20:27 -0500 Subject: [PATCH 143/220] fix(app): fix inescapable pipette wizard (#17008) Closes RABR-675 It's possible to sometimes get stuck in the pipette wizard without an exit button if the error occurs while a command is executing or the maintenance run is trying to be deleted. Additionally (and I think this is how the bug ABR reported happens to begin with) - if an error does occur once during pipette flows, we were just closing the wizard without deleting the maintenance run. handleCleanUpAndClose conditionally closes the run if it does exist, which we definitely want to do if we error. Lastly, it's probably better to show an exit button while certain requests are pending and just disable it rather than avoid rendering an exit button altogether. This control flow more closely follows what happens in GripperWizardFlows, which is probably why ABR & QA haven't seen this bug crop up in that flow. --- .../organisms/PipetteWizardFlows/index.tsx | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/app/src/organisms/PipetteWizardFlows/index.tsx b/app/src/organisms/PipetteWizardFlows/index.tsx index ed11df4352d..be3c22cc566 100644 --- a/app/src/organisms/PipetteWizardFlows/index.tsx +++ b/app/src/organisms/PipetteWizardFlows/index.tsx @@ -281,15 +281,19 @@ export const PipetteWizardFlows = ( /> ) - let onExit - if (currentStep == null) return null - let modalContent: JSX.Element =
UNASSIGNED STEP
- // These flows often have custom error messaging, so this fallback modal is shown only in specific circumstances. - if ( + if (currentStep == null) { + return null + } + + const isFatalError = (isExiting && errorMessage != null) || maintenanceRunData?.data.status === RUN_STATUS_FAILED || (errorMessage != null && createdMaintenanceRunId == null) - ) { + + let onExit: () => void + let modalContent: JSX.Element =
UNASSIGNED STEP
+ // These flows often have custom error messaging, so this fallback modal is shown only in specific circumstances. + if (isFatalError) { modalContent = ( void) => { + if (isFatalError || showConfirmExit) { + return handleCleanUpAndClose + } else { + return onExit + } } const progressBarForCalError = @@ -418,13 +418,13 @@ export const PipetteWizardFlows = ( const wizardHeader = ( ) From 38215947303b118b7167a03ebbdc0e091921348e Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Tue, 3 Dec 2024 10:28:25 -0500 Subject: [PATCH 144/220] fix(step-generation): fix blowout location from multi-dispense disposal (#17013) closes RESC-356 This PR fixes a bug where the blowout tip position associated with a multi-dispense disposal was not properly wired up. This resulted in the blowout position to always be at the top of the well which caused users issues. --- .../formLevel/stepFormToArgs/moveLiquidFormToArgs.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts index b77cd8a8f2e..4ee644679dc 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts @@ -166,7 +166,13 @@ export const moveLiquidFormToArgs = ( 'dispense_delay_mmFromBottom' ) const blowoutLocation = - (fields.blowout_checkbox && fields.blowout_location) || null + (fields.blowout_checkbox && fields.blowout_location) || + (fields.disposalVolume_checkbox && + path === 'multiDispense' && + fields.disposalVolume_volume && + fields.blowout_location) || + null + const blowoutOffsetFromTopMm = blowoutLocation != null ? blowout_z_offset ?? DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP From 1e01e63b666796958f679704e87496198ef40541 Mon Sep 17 00:00:00 2001 From: Shlok Amin Date: Tue, 3 Dec 2024 12:48:47 -0500 Subject: [PATCH 145/220] build(components): publish all contents in components folder to npm (#17014) --- .github/workflows/components-test-build-deploy.yaml | 8 ++++---- components/.npmignore | 3 --- components/package.json | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/components-test-build-deploy.yaml b/.github/workflows/components-test-build-deploy.yaml index 01d4355e355..1cf0ebbb284 100644 --- a/.github/workflows/components-test-build-deploy.yaml +++ b/.github/workflows/components-test-build-deploy.yaml @@ -203,9 +203,6 @@ jobs: make setup-js - name: 'build typescript types' run: make -C components build-ts - - name: 'build js bundle' - run: | - make -C components lib # replace package.json stub version number with version from tag - name: 'set version number' run: | @@ -221,4 +218,7 @@ jobs: env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | - cd ./components && echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > ./.npmrc && npm publish --access public + cd ./components + echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > ./.npmrc + ls -R # Debug: View contents of ./components + npm publish --access public diff --git a/components/.npmignore b/components/.npmignore index b8cffed3c08..e69de29bb2d 100644 --- a/components/.npmignore +++ b/components/.npmignore @@ -1,3 +0,0 @@ -src -dist -*.tgz diff --git a/components/package.json b/components/package.json index 7d63ed25e44..c8d9292c6e3 100644 --- a/components/package.json +++ b/components/package.json @@ -5,7 +5,7 @@ "source": "src/index.ts", "types": "lib/index.d.ts", "style": "src/index.module.css", - "main": "lib/index.mjs", + "main": "src/index.ts", "module": "src/index.ts", "repository": { "type": "git", From 8b98b5fdfe2bf6e12364a94202078c1c1953f2c7 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Tue, 3 Dec 2024 15:48:03 -0500 Subject: [PATCH 146/220] =?UTF-8?q?fix(protocol-designer):=20assign=20valu?= =?UTF-8?q?e=20instead=20of=20name=20from=20wellOrder=20f=E2=80=A6=20(#170?= =?UTF-8?q?17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ields closes RQA-3737 --- .../ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx | 4 ++-- .../BatchEditToolbox/BatchEditMoveLiquidTools.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx index 6f39f7ff632..1aa64e02057 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMixTools.tsx @@ -92,11 +92,11 @@ export function BatchEditMixTools(props: BatchEditMixToolsProps): JSX.Element { propsForFields.mix_wellOrder_second.updateValue } firstValue={ - (propsForFields.mix_wellOrder_first.name ?? + (propsForFields.mix_wellOrder_first?.value ?? 't2b') as WellOrderOption } secondValue={ - (propsForFields.mix_wellOrder_second.name ?? + (propsForFields.mix_wellOrder_second?.value ?? 'l2r') as WellOrderOption } firstName="mix_wellOrder_first" diff --git a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx index 561a926cc8f..12d7f1442e8 100644 --- a/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx +++ b/protocol-designer/src/pages/Designer/ProtocolSteps/BatchEditToolbox/BatchEditMoveLiquidTools.tsx @@ -91,10 +91,10 @@ export function BatchEditMoveLiquidTools( propsForFields[addFieldNamePrefix('wellOrder_second')].updateValue } firstValue={ - (propsForFields.wellOrder_first.name ?? 't2b') as WellOrderOption + (propsForFields.wellOrder_first?.value ?? 't2b') as WellOrderOption } secondValue={ - (propsForFields.wellOrder_second.name ?? 'l2r') as WellOrderOption + (propsForFields.wellOrder_second?.value ?? 'l2r') as WellOrderOption } firstName={addFieldNamePrefix('wellOrder_first')} secondName={addFieldNamePrefix('wellOrder_second')} From 64fbf4226e52cf3aa3a508cf8e54fe199003d740 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Tue, 3 Dec 2024 16:55:21 -0500 Subject: [PATCH 147/220] refactor(api): Port `ReadAbsorbanceImpl` and `FileStore` to `StateUpdate` (#16978) --- .../commands/absorbance_reader/read.py | 11 ++++++-- .../opentrons/protocol_engine/state/files.py | 20 ++++++------- .../protocol_engine/state/update_types.py | 28 ++++++++++++------- .../commands/test_move_to_well.py | 2 +- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py index 8e8926089f1..556db619cb5 100644 --- a/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py +++ b/api/src/opentrons/protocol_engine/commands/absorbance_reader/read.py @@ -16,6 +16,7 @@ MAXIMUM_CSV_FILE_LIMIT, ) from ...resources import FileProvider +from ...state import update_types if TYPE_CHECKING: from opentrons.protocol_engine.state.state import StateView @@ -143,7 +144,7 @@ async def execute( # noqa: C901 # Today, the action handler for the FileStore looks for a ReadAbsorbanceResult command action, this will need to be delinked. # Begin interfacing with the file provider if the user provided a filename - file_ids = [] + file_ids: list[str] = [] if params.fileName is not None: # Create the Plate Reader Transform plate_read_result = PlateReaderData.construct( @@ -175,7 +176,13 @@ async def execute( # noqa: C901 ) return SuccessData( - public=ReadAbsorbanceResult(data=asbsorbance_result, fileIds=file_ids), + public=ReadAbsorbanceResult( + data=asbsorbance_result, + fileIds=file_ids, + ), + state_update=update_types.StateUpdate( + files_added=update_types.FilesAddedUpdate(file_ids=file_ids) + ), ) diff --git a/api/src/opentrons/protocol_engine/state/files.py b/api/src/opentrons/protocol_engine/state/files.py index 655d038df34..fb3848c6d55 100644 --- a/api/src/opentrons/protocol_engine/state/files.py +++ b/api/src/opentrons/protocol_engine/state/files.py @@ -2,12 +2,11 @@ from dataclasses import dataclass from typing import List +from opentrons.protocol_engine.actions.get_state_update import get_state_updates +from opentrons.protocol_engine.state import update_types + from ._abstract_store import HasState, HandlesActions -from ..actions import Action, SucceedCommandAction -from ..commands import ( - Command, - absorbance_reader, -) +from ..actions import Action @dataclass @@ -28,13 +27,12 @@ def __init__(self) -> None: def handle_action(self, action: Action) -> None: """Modify state in reaction to an action.""" - if isinstance(action, SucceedCommandAction): - self._handle_command(action.command) + for state_update in get_state_updates(action): + self._handle_state_update(state_update) - def _handle_command(self, command: Command) -> None: - if isinstance(command.result, absorbance_reader.ReadAbsorbanceResult): - if command.result.fileIds is not None: - self._state.file_ids.extend(command.result.fileIds) + def _handle_state_update(self, state_update: update_types.StateUpdate) -> None: + if state_update.files_added != update_types.NO_CHANGE: + self._state.file_ids.extend(state_update.files_added.file_ids) class FileView(HasState[FileState]): diff --git a/api/src/opentrons/protocol_engine/state/update_types.py b/api/src/opentrons/protocol_engine/state/update_types.py index 76f16dadfbe..1e81881a2b4 100644 --- a/api/src/opentrons/protocol_engine/state/update_types.py +++ b/api/src/opentrons/protocol_engine/state/update_types.py @@ -98,7 +98,7 @@ class LabwareLocationUpdate: new_location: LabwareLocation """The labware's new location.""" - offset_id: typing.Optional[str] + offset_id: str | None """The ID of the labware's new offset, for its new location.""" @@ -112,10 +112,10 @@ class LoadedLabwareUpdate: new_location: LabwareLocation """The labware's initial location.""" - offset_id: typing.Optional[str] + offset_id: str | None """The ID of the labware's offset.""" - display_name: typing.Optional[str] + display_name: str | None definition: LabwareDefinition @@ -133,7 +133,7 @@ class LoadPipetteUpdate: pipette_name: PipetteNameType mount: MountType - liquid_presence_detection: typing.Optional[bool] + liquid_presence_detection: bool | None @dataclasses.dataclass @@ -162,7 +162,7 @@ class PipetteTipStateUpdate: """Update pipette tip state.""" pipette_id: str - tip_geometry: typing.Optional[TipGeometry] + tip_geometry: TipGeometry | None @dataclasses.dataclass @@ -261,6 +261,13 @@ class LiquidClassLoadedUpdate: liquid_class_record: LiquidClassRecord +@dataclasses.dataclass +class FilesAddedUpdate: + """An update that adds a new data file.""" + + file_ids: list[str] + + @dataclasses.dataclass class StateUpdate: """Represents an update to perform on engine state.""" @@ -299,6 +306,8 @@ class StateUpdate: liquid_class_loaded: LiquidClassLoadedUpdate | NoChangeType = NO_CHANGE + files_added: FilesAddedUpdate | NoChangeType = NO_CHANGE + def append(self, other: Self) -> Self: """Apply another `StateUpdate` "on top of" this one. @@ -378,7 +387,6 @@ def set_pipette_location( # noqa: D102 new_deck_point=new_deck_point, ) else: - self.pipette_location = PipetteLocationUpdate( pipette_id=pipette_id, new_location=Well(labware_id=new_labware_id, well_name=new_well_name), @@ -410,8 +418,8 @@ def set_loaded_labware( self: Self, definition: LabwareDefinition, labware_id: str, - offset_id: typing.Optional[str], - display_name: typing.Optional[str], + offset_id: str | None, + display_name: str | None, location: LabwareLocation, ) -> Self: """Add a new labware to state. See `LoadedLabwareUpdate`.""" @@ -429,7 +437,7 @@ def set_load_pipette( pipette_id: str, pipette_name: PipetteNameType, mount: MountType, - liquid_presence_detection: typing.Optional[bool], + liquid_presence_detection: bool | None, ) -> Self: """Add a new pipette to state. See `LoadPipetteUpdate`.""" self.loaded_pipette = LoadPipetteUpdate( @@ -462,7 +470,7 @@ def update_pipette_nozzle( return self def update_pipette_tip_state( - self: Self, pipette_id: str, tip_geometry: typing.Optional[TipGeometry] + self: Self, pipette_id: str, tip_geometry: TipGeometry | None ) -> Self: """Update a pipette's tip state. See `PipetteTipStateUpdate`.""" self.pipette_tip_state = PipetteTipStateUpdate( diff --git a/api/tests/opentrons/protocol_engine/commands/test_move_to_well.py b/api/tests/opentrons/protocol_engine/commands/test_move_to_well.py index 484cbb23835..db91abd5a41 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_move_to_well.py +++ b/api/tests/opentrons/protocol_engine/commands/test_move_to_well.py @@ -126,7 +126,7 @@ async def test_move_to_well_stall_defined_error( error_id = "error-id" error_timestamp = datetime(year=2020, month=1, day=2) decoy.when( - movement.move_to_well( + await movement.move_to_well( pipette_id="abc", labware_id="123", well_name="A3", From bc8f0a0abc384fc21dc1d896b94054252e2f8be7 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Tue, 3 Dec 2024 17:36:11 -0500 Subject: [PATCH 148/220] fix(protocol-designer): fix error copy for heater-shaker latch open (#17021) closes rest of RQA-3678 --- protocol-designer/src/assets/localization/en/alert.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol-designer/src/assets/localization/en/alert.json b/protocol-designer/src/assets/localization/en/alert.json index 0f3f439be05..2812b58ffcb 100644 --- a/protocol-designer/src/assets/localization/en/alert.json +++ b/protocol-designer/src/assets/localization/en/alert.json @@ -141,7 +141,7 @@ }, "HEATER_SHAKER_LATCH_OPEN": { "title": "Heater-Shaker latch open", - "body": "Before the robot can interact with labware on the Heater-Shaker module, the labware latch must be closed. To resolve this error, please add a Heater-Shaker step ahead of the current step, and set the labware latch status to \"closed\"." + "body": "This step tries to pipette to labware on the Heater-Shaker Module, which requires the labware latch to be closed. Close the latch before this step." }, "HEATER_SHAKER_IS_SHAKING": { "title": "Heater-Shaker is shaking", From 92405c2b5ac4fc66d9d656c08d0165112601f065 Mon Sep 17 00:00:00 2001 From: Nick Diehl <47604184+ncdiehl11@users.noreply.github.com> Date: Tue, 3 Dec 2024 18:15:09 -0500 Subject: [PATCH 149/220] feat(protocol-designer): add protocol recovery to error boundary (#17025) In error boundary fallback modal, I add a new secondary button to allow the user to download the protocol after a whitescreen. No routing is implemented at this time, so impact should be low. --- .../src/assets/localization/en/shared.json | 1 + .../resources/ProtocolDesignerAppFallback.tsx | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/protocol-designer/src/assets/localization/en/shared.json b/protocol-designer/src/assets/localization/en/shared.json index 58579da36ff..0d9342713c4 100644 --- a/protocol-designer/src/assets/localization/en/shared.json +++ b/protocol-designer/src/assets/localization/en/shared.json @@ -19,6 +19,7 @@ "destination_well": "Destination Well", "developer_ff": "Developer Feature Flags", "done": "Done", + "download_protocol": "Download protocol", "edit_existing": "Edit existing protocol", "edit_instruments": "Edit Instruments", "edit_pipette": "Edit Pipette", diff --git a/protocol-designer/src/resources/ProtocolDesignerAppFallback.tsx b/protocol-designer/src/resources/ProtocolDesignerAppFallback.tsx index 32eabb78a30..3791d4b97b3 100644 --- a/protocol-designer/src/resources/ProtocolDesignerAppFallback.tsx +++ b/protocol-designer/src/resources/ProtocolDesignerAppFallback.tsx @@ -4,15 +4,19 @@ import { useTranslation } from 'react-i18next' import type { FallbackProps } from 'react-error-boundary' +import { actions } from '../load-file' import { AlertPrimaryButton, ALIGN_FLEX_END, DIRECTION_COLUMN, Flex, Modal, + SecondaryButton, SPACING, StyledText, } from '@opentrons/components' +import { useDispatch } from 'react-redux' +import type { ThunkDispatch } from '../types' export function ProtocolDesignerAppFallback({ error, @@ -20,9 +24,13 @@ export function ProtocolDesignerAppFallback({ }: FallbackProps): JSX.Element { const { t } = useTranslation('shared') + const dispatch: ThunkDispatch = useDispatch() const handleReloadClick = (): void => { resetErrorBoundary() } + const handleDownloadProtocol = (): void => { + dispatch(actions.saveProtocolFile()) + } return ( @@ -35,12 +43,14 @@ export function ProtocolDesignerAppFallback({ {error.message} - - {t('reload_app')} - + + + {t('download_protocol')} + + + {t('reload_app')} + + ) From d2d8d08e9a4c531b994f57f4e259c81c563ddb17 Mon Sep 17 00:00:00 2001 From: koji Date: Tue, 3 Dec 2024 23:04:05 -0500 Subject: [PATCH 150/220] fix(app): fix ODD map view nick name display issue (#17019) * fix(app): fix ODD map view nick name display issue --- .../ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx index 3daa713de88..19875b2336e 100644 --- a/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx +++ b/app/src/organisms/ODD/ProtocolSetup/ProtocolSetupLabware/index.tsx @@ -7,6 +7,7 @@ import { ALIGN_FLEX_START, BORDERS, Box, + Chip, COLORS, DeckInfoLabel, DIRECTION_COLUMN, @@ -15,18 +16,16 @@ import { Icon, JUSTIFY_SPACE_BETWEEN, JUSTIFY_SPACE_EVENLY, + LegacyStyledText, MODULE_ICON_NAME_BY_TYPE, SPACING, - LegacyStyledText, TYPOGRAPHY, - Chip, } from '@opentrons/components' import { FLEX_ROBOT_TYPE, getDeckDefFromRobotType, - getLabwareDefURI, - getTopLabwareInfo, getModuleDisplayName, + getTopLabwareInfo, HEATERSHAKER_MODULE_TYPE, TC_MODULE_LOCATION_OT3, THERMOCYCLER_MODULE_TYPE, @@ -130,15 +129,16 @@ export function ProtocolSetupLabware({ ) if (foundLabware != null) { const nickName = onDeckItems.find( - item => getLabwareDefURI(item.definition) === foundLabware.definitionUri + item => item.labwareId === foundLabware.id )?.nickName + const location = onDeckItems.find( item => item.labwareId === foundLabware.id )?.initialLocation if (location != null) { setSelectedLabware({ ...labwareDef, - location: location, + location, nickName: nickName ?? null, id: labwareId, }) From 06f9601b6a835944b4bd392b48ec09413cad6b2c Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 4 Dec 2024 08:22:39 -0500 Subject: [PATCH 151/220] fix(protocol-designer): add duplicate tipracks off deck (#17026) closes RQA-3744 --- .../src/pages/Designer/DeckSetup/DeckSetupTools.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx index 44732c1e0ed..48b0ef87bba 100644 --- a/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx +++ b/protocol-designer/src/pages/Designer/DeckSetup/DeckSetupTools.tsx @@ -318,12 +318,13 @@ export function DeckSetupTools(props: DeckSetupToolsProps): JSX.Element | null { ) } if ( - selectedModuleModel == null && - selectedLabwareDefUri != null && - (createdLabwareForSlot?.labwareDefURI !== selectedLabwareDefUri || - (selectedNestedLabwareDefUri != null && - selectedNestedLabwareDefUri !== - createdNestedLabwareForSlot?.labwareDefURI)) + (slot === 'offDeck' && selectedLabwareDefUri != null) || + (selectedModuleModel == null && + selectedLabwareDefUri != null && + (createdLabwareForSlot?.labwareDefURI !== selectedLabwareDefUri || + (selectedNestedLabwareDefUri != null && + selectedNestedLabwareDefUri !== + createdNestedLabwareForSlot?.labwareDefURI))) ) { // create adapter + labware on deck dispatch( From 2e81f2949484fd7be6e009851ed720a4de7a876b Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 4 Dec 2024 10:05:09 -0500 Subject: [PATCH 152/220] =?UTF-8?q?fix(protocol-designer):=20if=20no=20spa?= =?UTF-8?q?ce=20for=20trashBin,=20auto-generate=20waste=E2=80=A6=20(#17028?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …Chute closes RQA-3747 --- .../src/step-forms/reducers/index.ts | 52 ++-- .../src/step-forms/test/utils.test.ts | 233 +++++++++++++++++- .../src/step-forms/utils/index.ts | 11 +- 3 files changed, 272 insertions(+), 24 deletions(-) diff --git a/protocol-designer/src/step-forms/reducers/index.ts b/protocol-designer/src/step-forms/reducers/index.ts index 2dec7cb6639..501ff4f2955 100644 --- a/protocol-designer/src/step-forms/reducers/index.ts +++ b/protocol-designer/src/step-forms/reducers/index.ts @@ -16,6 +16,7 @@ import { THERMOCYCLER_MODULE_TYPE, WASTE_CHUTE_ADDRESSABLE_AREAS, MOVABLE_TRASH_ADDRESSABLE_AREAS, + WASTE_CHUTE_CUTOUT, } from '@opentrons/shared-data' import { rootReducer as labwareDefsRootReducer } from '../../labware-defs' import { getCutoutIdByAddressableArea, uuid } from '../../utils' @@ -45,7 +46,7 @@ import { createPresavedStepForm, getDeckItemIdInSlot, getIdsInRange, - getUnoccupiedSlotForMoveableTrash, + getUnoccupiedSlotForTrash, } from '../utils' import type { Reducer } from 'redux' @@ -1414,9 +1415,9 @@ export const additionalEquipmentInvariantProperties = handleActions { @@ -31,7 +32,7 @@ describe('getIdsInRange', () => { expect(getIdsInRange(orderedIds, 'T', 'T')).toEqual(['T']) }) }) -describe('getUnoccupiedSlotForMoveableTrash', () => { +describe('getUnoccupiedSlotForTrash', () => { it('returns slot C1 when all other slots are occupied by modules, labware, moveLabware, and staging areas', () => { const mockPDFile: any = { commands: [ @@ -146,11 +147,237 @@ describe('getUnoccupiedSlotForMoveableTrash', () => { const mockHasWasteChuteCommands = false expect( - getUnoccupiedSlotForMoveableTrash( + getUnoccupiedSlotForTrash( mockPDFile, mockHasWasteChuteCommands, mockStagingAreaSlotNames ) ).toStrictEqual('C3') }) + it('returns cutoutD3 for waste chute when every slot is occupied except for D3 on a staging area', () => { + const mockPDFile: any = { + commands: [ + { + key: '159e778d-0fc5-4d24-a662-b1e59a7babda', + commandType: 'loadModule', + params: { + model: 'thermocyclerModuleV2', + location: { slotName: 'B1' }, + moduleId: + '8932e104-7d57-42cf-88e4-ade334c84a76:thermocyclerModuleType', + }, + }, + { + key: '7d1fdcce-fa27-4520-8f97-a901751a4396', + commandType: 'loadModule', + params: { + model: 'temperatureModuleV2', + location: { slotName: 'C1' }, + moduleId: + '2944a6a5-45f7-4d96-a4a2-d2853206a9f0:temperatureModuleType', + }, + }, + { + key: '1c223945-bfa3-4174-9923-5ed84afd1820', + commandType: 'loadModule', + params: { + model: 'heaterShakerModuleV1', + location: { slotName: 'D1' }, + moduleId: + '528620a6-6eb9-4000-bce3-a58809e16d4c:heaterShakerModuleType', + }, + }, + { + key: 'e06d0fd5-2ca8-4d0a-bcfd-4121849604da', + commandType: 'loadModule', + params: { + model: 'magneticBlockV1', + location: { slotName: 'D2' }, + moduleId: 'c8f8c89f-06df-468c-895d-33006db69beb:magneticBlockType', + }, + }, + { + key: 'f49ebdff-9780-4ca0-994c-2d2dd7c04b1d', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons 96 Well Aluminum Block', + labwareId: + 'a69bcf2e-9461-4d43-be63-f3b8db66e5e7:opentrons/opentrons_96_well_aluminum_block/1', + loadName: 'opentrons_96_well_aluminum_block', + namespace: 'opentrons', + version: 1, + location: { + moduleId: + '2944a6a5-45f7-4d96-a4a2-d2853206a9f0:temperatureModuleType', + }, + }, + }, + { + key: 'dda244f9-ff80-4ede-a585-1a546a88ee77', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons 96 PCR Heater-Shaker Adapter', + labwareId: + '723a9551-ebba-4b4a-a92e-8d1fa0e813df:opentrons/opentrons_96_pcr_adapter/1', + loadName: 'opentrons_96_pcr_adapter', + namespace: 'opentrons', + version: 1, + location: { + moduleId: + '528620a6-6eb9-4000-bce3-a58809e16d4c:heaterShakerModuleType', + }, + }, + }, + { + key: '8c28ac95-c8d0-4481-8204-26b1babb54bf', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Tip Rack 50 µL', + labwareId: + 'c80cffe7-d89d-430e-ba96-3c12f879e993:opentrons/opentrons_flex_96_tiprack_50ul/1', + loadName: 'opentrons_flex_96_tiprack_50ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'C3' }, + }, + }, + { + key: 'f0357fde-125a-464c-98ed-b1b9492daab8', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (1)', + labwareId: + '0a2d4b6f-a43d-428a-98f2-284809596776:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'A3' }, + }, + }, + { + key: 'e27ba758-8d28-486f-a443-6e2276842ad0', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (2)', + labwareId: + '417a6bb2-8831-4b4d-840b-7d9329606865:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'B3' }, + }, + }, + { + key: '37848c2a-4a1b-44f0-851a-d264368c47f8', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (3)', + labwareId: + 'ebb13651-0a60-4f42-ab85-f7084aeb0c08:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'A2' }, + }, + }, + { + key: '768626df-b249-4d68-8f95-193b03113457', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Filter Tip Rack 200 µL (4)', + labwareId: + 'b17e8c1b-a308-4eaa-a852-10ad300ddea8:opentrons/opentrons_flex_96_filtertiprack_200ul/1', + loadName: 'opentrons_flex_96_filtertiprack_200ul', + namespace: 'opentrons', + version: 1, + location: { slotName: 'B2' }, + }, + }, + { + key: 'b12a4e6e-7ffc-421f-a2b6-44ae49d6f7bf', + commandType: 'loadLabware', + params: { + displayName: 'Reagent Plate', + labwareId: + 'aab3280f-6e7b-4e60-8326-c1d38999e08f:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + loadName: 'opentrons_96_wellplate_200ul_pcr_full_skirt', + namespace: 'opentrons', + version: 2, + location: { + labwareId: + 'a69bcf2e-9461-4d43-be63-f3b8db66e5e7:opentrons/opentrons_96_well_aluminum_block/1', + }, + }, + }, + { + key: 'e6863a1e-8aa0-4484-9aff-74ea9195a815', + commandType: 'loadLabware', + params: { + displayName: 'Sample Plate 1', + labwareId: + '8e755287-33cb-483f-b525-fff876893754:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + loadName: 'opentrons_96_wellplate_200ul_pcr_full_skirt', + namespace: 'opentrons', + version: 2, + location: { + labwareId: + '723a9551-ebba-4b4a-a92e-8d1fa0e813df:opentrons/opentrons_96_pcr_adapter/1', + }, + }, + }, + { + key: 'b29f48ef-3b20-457e-8499-df709818c47f', + commandType: 'loadLabware', + params: { + displayName: 'NEST 96 Deep Well Plate 2mL', + labwareId: + 'f0d30267-b0f6-493a-b0ea-70303428fa83:opentrons/nest_96_wellplate_2ml_deep/2', + loadName: 'nest_96_wellplate_2ml_deep', + namespace: 'opentrons', + version: 2, + location: { + moduleId: + 'c8f8c89f-06df-468c-895d-33006db69beb:magneticBlockType', + }, + }, + }, + { + key: '50be2f72-c7bc-4fd4-b10c-2054b90f922d', + commandType: 'loadLabware', + params: { + displayName: 'NEST 12 Well Reservoir 15 mL', + labwareId: + 'b60bbc39-cd82-4ede-b744-e88777a32b62:opentrons/nest_12_reservoir_15ml/1', + loadName: 'nest_12_reservoir_15ml', + namespace: 'opentrons', + version: 1, + location: { slotName: 'C2' }, + }, + }, + { + key: 'a2f0c011-9983-46d9-a3ae-763a04856651', + commandType: 'loadLabware', + params: { + displayName: 'Opentrons Flex 96 Tip Rack 50 µL (1)', + labwareId: + '0d3d02a6-6501-4f28-81b9-12b2fe66998b:opentrons/opentrons_flex_96_tiprack_50ul/1', + loadName: 'opentrons_flex_96_tiprack_50ul', + namespace: 'opentrons', + version: 1, + location: { addressableAreaName: 'D4' }, + }, + }, + ], + } + const mockStagingAreaSlotNames: AddressableAreaName[] = ['D4'] + const mockHasWasteChuteCommands = false + + expect( + getUnoccupiedSlotForTrash( + mockPDFile, + mockHasWasteChuteCommands, + mockStagingAreaSlotNames + ) + ).toStrictEqual(WASTE_CHUTE_CUTOUT) + }) }) diff --git a/protocol-designer/src/step-forms/utils/index.ts b/protocol-designer/src/step-forms/utils/index.ts index aa880038bbe..042a6edfbd4 100644 --- a/protocol-designer/src/step-forms/utils/index.ts +++ b/protocol-designer/src/step-forms/utils/index.ts @@ -316,7 +316,7 @@ export function getHydratedForm( return hydratedForm } -export const getUnoccupiedSlotForMoveableTrash = ( +export const getUnoccupiedSlotForTrash = ( file: PDProtocolFile, hasWasteChuteCommands: boolean, stagingAreaSlotNames: AddressableAreaName[] @@ -385,6 +385,15 @@ export const getUnoccupiedSlotForMoveableTrash = ( !wasteChuteSlot.includes(cutout.value as typeof WASTE_CHUTE_CUTOUT) && !stagingAreaCutoutIds.includes(cutout.value as CutoutId) ) + // if all slots are occupied except for D3 on a staging area, then auto-generate the waste chute + if ( + unoccupiedSlot == null && + !allLoadLabwareSlotNames.includes('D3') && + stagingAreaCutoutIds.includes(WASTE_CHUTE_CUTOUT) + ) { + return WASTE_CHUTE_CUTOUT + } + if (unoccupiedSlot == null) { console.error( 'Expected to find an unoccupied slot for auto-generating a trash bin but could not' From 02a7bface3021cdd8c76597f22b9b0cdc5190c14 Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Wed, 4 Dec 2024 10:17:24 -0500 Subject: [PATCH 153/220] refactor(api): Disallow direct access to `.state` through Protocol Engine state views (#17016) --- .../protocol_api/core/engine/protocol.py | 2 + .../protocol_engine/commands/load_module.py | 2 +- .../protocol_engine/execution/tip_handler.py | 4 +- .../protocol_engine/protocol_engine.py | 2 +- .../state/addressable_areas.py | 26 ++++---- .../protocol_engine/state/commands.py | 10 ++- .../opentrons/protocol_engine/state/files.py | 2 +- .../protocol_engine/state/labware.py | 6 +- .../protocol_engine/state/liquid_classes.py | 2 +- .../protocol_engine/state/liquids.py | 2 +- .../protocol_engine/state/modules.py | 8 +-- .../protocol_engine/state/pipettes.py | 2 +- .../opentrons/protocol_engine/state/tips.py | 2 +- .../opentrons/protocol_engine/state/wells.py | 2 +- .../core/engine/test_protocol_core.py | 62 +------------------ .../commands/test_load_module.py | 16 ++--- .../execution/test_tip_handler.py | 22 +++---- .../state/test_addressable_area_view.py | 37 ++++++----- .../state/test_command_view_old.py | 4 +- .../protocol_engine/test_protocol_engine.py | 8 +-- 20 files changed, 87 insertions(+), 134 deletions(-) diff --git a/api/src/opentrons/protocol_api/core/engine/protocol.py b/api/src/opentrons/protocol_api/core/engine/protocol.py index f6ab2c89214..d43fc9a2058 100644 --- a/api/src/opentrons/protocol_api/core/engine/protocol.py +++ b/api/src/opentrons/protocol_api/core/engine/protocol.py @@ -425,6 +425,8 @@ def load_module( raise InvalidModuleLocationError(deck_slot, model.name) robot_type = self._engine_client.state.config.robot_type + # todo(mm, 2024-12-03): This might be possible to remove: + # Protocol Engine will normalize the deck slot itself. normalized_deck_slot = deck_slot.to_equivalent_for_robot_type(robot_type) result = self._engine_client.execute_command_without_recovery( diff --git a/api/src/opentrons/protocol_engine/commands/load_module.py b/api/src/opentrons/protocol_engine/commands/load_module.py index a44212f9bf5..79e67182666 100644 --- a/api/src/opentrons/protocol_engine/commands/load_module.py +++ b/api/src/opentrons/protocol_engine/commands/load_module.py @@ -173,7 +173,7 @@ def _ensure_module_location( cutout_fixture_id = ModuleType.to_module_fixture_id(module_type) module_fixture = deck_configuration_provider.get_cutout_fixture( cutout_fixture_id, - self._state_view.addressable_areas.state.deck_definition, + self._state_view.labware.get_deck_definition(), ) cutout_id = ( self._state_view.addressable_areas.get_cutout_id_by_deck_slot_name(slot) diff --git a/api/src/opentrons/protocol_engine/execution/tip_handler.py b/api/src/opentrons/protocol_engine/execution/tip_handler.py index 2a6816dcfdd..8a58536c10b 100644 --- a/api/src/opentrons/protocol_engine/execution/tip_handler.py +++ b/api/src/opentrons/protocol_engine/execution/tip_handler.py @@ -324,8 +324,8 @@ async def verify_tip_presence( follow_singular_sensor: Optional[InstrumentProbeType] = None, ) -> None: """See documentation on abstract base class.""" - nozzle_configuration = ( - self._state_view.pipettes.state.nozzle_configuration_by_id[pipette_id] + nozzle_configuration = self._state_view.pipettes.get_nozzle_configuration( + pipette_id=pipette_id ) # Configuration metrics by which tip presence checking is ignored diff --git a/api/src/opentrons/protocol_engine/protocol_engine.py b/api/src/opentrons/protocol_engine/protocol_engine.py index ba5219691bf..3479e0a295b 100644 --- a/api/src/opentrons/protocol_engine/protocol_engine.py +++ b/api/src/opentrons/protocol_engine/protocol_engine.py @@ -427,7 +427,7 @@ async def finish( post_run_hardware_state: The state in which to leave the gantry and motors in after the run is over. """ - if self._state_store.commands.state.stopped_by_estop: + if self._state_store.commands.get_is_stopped_by_estop(): # This handles the case where the E-stop was pressed while we were *not* in the middle # of some hardware interaction that would raise it as an exception. For example, imagine # we were paused between two commands, or imagine we were executing a waitForDuration. diff --git a/api/src/opentrons/protocol_engine/state/addressable_areas.py b/api/src/opentrons/protocol_engine/state/addressable_areas.py index afd076380f7..bd7d8de0188 100644 --- a/api/src/opentrons/protocol_engine/state/addressable_areas.py +++ b/api/src/opentrons/protocol_engine/state/addressable_areas.py @@ -323,7 +323,7 @@ def _validate_addressable_area_for_simulation( return cutout_id -class AddressableAreaView(HasState[AddressableAreaState]): +class AddressableAreaView: """Read-only addressable area state view.""" _state: AddressableAreaState @@ -345,8 +345,8 @@ def deck_extents(self) -> Point: @cached_property def mount_offsets(self) -> Dict[str, Point]: """The left and right mount offsets of the robot.""" - left_offset = self.state.robot_definition["mountOffsets"]["left"] - right_offset = self.state.robot_definition["mountOffsets"]["right"] + left_offset = self._state.robot_definition["mountOffsets"]["left"] + right_offset = self._state.robot_definition["mountOffsets"]["right"] return { "left": Point(x=left_offset[0], y=left_offset[1], z=left_offset[2]), "right": Point(x=right_offset[0], y=right_offset[1], z=right_offset[2]), @@ -355,10 +355,10 @@ def mount_offsets(self) -> Dict[str, Point]: @cached_property def padding_offsets(self) -> Dict[str, float]: """The padding offsets to be applied to the deck extents of the robot.""" - rear_offset = self.state.robot_definition["paddingOffsets"]["rear"] - front_offset = self.state.robot_definition["paddingOffsets"]["front"] - left_side_offset = self.state.robot_definition["paddingOffsets"]["leftSide"] - right_side_offset = self.state.robot_definition["paddingOffsets"]["rightSide"] + rear_offset = self._state.robot_definition["paddingOffsets"]["rear"] + front_offset = self._state.robot_definition["paddingOffsets"]["front"] + left_side_offset = self._state.robot_definition["paddingOffsets"]["leftSide"] + right_side_offset = self._state.robot_definition["paddingOffsets"]["rightSide"] return { "rear": rear_offset, "front": front_offset, @@ -420,12 +420,12 @@ def _check_if_area_is_compatible_with_potential_fixtures( _get_conflicting_addressable_areas_error_string( self._state.potential_cutout_fixtures_by_cutout_id[cutout_id], self._state.loaded_addressable_areas_by_name, - self.state.deck_definition, + self._state.deck_definition, ) ) area_display_name = ( deck_configuration_provider.get_addressable_area_display_name( - area_name, self.state.deck_definition + area_name, self._state.deck_definition ) ) raise IncompatibleAddressableAreaError( @@ -504,7 +504,7 @@ def get_addressable_area_offsets_from_cutout( addressable_area_name: str, ) -> Point: """Get the offset form cutout fixture of an addressable area.""" - for addressable_area in self.state.deck_definition["locations"][ + for addressable_area in self._state.deck_definition["locations"][ "addressableAreas" ]: if addressable_area["id"] == addressable_area_name: @@ -568,7 +568,7 @@ def get_fixture_by_deck_slot_name( self, slot_name: DeckSlotName ) -> Optional[CutoutFixture]: """Get the Cutout Fixture currently loaded where a specific Deck Slot would be.""" - deck_config = self.state.deck_configuration + deck_config = self._state.deck_configuration if deck_config: slot_cutout_id = DECK_SLOT_TO_CUTOUT_MAP[slot_name] slot_cutout_fixture = None @@ -581,7 +581,7 @@ def get_fixture_by_deck_slot_name( if cutout_id == slot_cutout_id: slot_cutout_fixture = ( deck_configuration_provider.get_cutout_fixture( - cutout_fixture_id, self.state.deck_definition + cutout_fixture_id, self._state.deck_definition ) ) return slot_cutout_fixture @@ -605,7 +605,7 @@ def get_fixture_serial_from_deck_configuration_by_deck_slot( self, slot_name: DeckSlotName ) -> Optional[str]: """Get the serial number provided by the deck configuration for a Fixture at a given location.""" - deck_config = self.state.deck_configuration + deck_config = self._state.deck_configuration if deck_config: slot_cutout_id = DECK_SLOT_TO_CUTOUT_MAP[slot_name] # This will only ever be one under current assumptions diff --git a/api/src/opentrons/protocol_engine/state/commands.py b/api/src/opentrons/protocol_engine/state/commands.py index da99c14ef3e..8aa71c9c1f8 100644 --- a/api/src/opentrons/protocol_engine/state/commands.py +++ b/api/src/opentrons/protocol_engine/state/commands.py @@ -579,7 +579,7 @@ def _map_finish_exception_to_error_occurrence( ) -class CommandView(HasState[CommandState]): +class CommandView: """Read-only command state view.""" _state: CommandState @@ -916,7 +916,7 @@ def raise_fatal_command_error(self) -> None: fatal error of the overall run coming from anywhere in the Python script, including in between commands. """ - failed_command = self.state.failed_command + failed_command = self._state.failed_command if ( failed_command and failed_command.command.error @@ -932,12 +932,16 @@ def get_error_recovery_type(self, command_id: str) -> ErrorRecoveryType: The command ID is assumed to point to a failed command. """ - return self.state.command_error_recovery_types[command_id] + return self._state.command_error_recovery_types[command_id] def get_is_stopped(self) -> bool: """Get whether an engine stop has completed.""" return self._state.run_completed_at is not None + def get_is_stopped_by_estop(self) -> bool: + """Return whether the engine was stopped specifically by an E-stop.""" + return self._state.stopped_by_estop + def has_been_played(self) -> bool: """Get whether engine has started.""" return self._state.run_started_at is not None diff --git a/api/src/opentrons/protocol_engine/state/files.py b/api/src/opentrons/protocol_engine/state/files.py index fb3848c6d55..bd54d58a4f8 100644 --- a/api/src/opentrons/protocol_engine/state/files.py +++ b/api/src/opentrons/protocol_engine/state/files.py @@ -35,7 +35,7 @@ def _handle_state_update(self, state_update: update_types.StateUpdate) -> None: self._state.file_ids.extend(state_update.files_added.file_ids) -class FileView(HasState[FileState]): +class FileView: """Read-only engine created file state view.""" _state: FileState diff --git a/api/src/opentrons/protocol_engine/state/labware.py b/api/src/opentrons/protocol_engine/state/labware.py index 419e9974d5c..95b2baa1974 100644 --- a/api/src/opentrons/protocol_engine/state/labware.py +++ b/api/src/opentrons/protocol_engine/state/labware.py @@ -244,7 +244,7 @@ def _set_labware_location(self, state_update: update_types.StateUpdate) -> None: self._state.labware_by_id[labware_id].location = new_location -class LabwareView(HasState[LabwareState]): +class LabwareView: """Read-only labware state view.""" _state: LabwareState @@ -268,7 +268,7 @@ def get(self, labware_id: str) -> LoadedLabware: def get_id_by_module(self, module_id: str) -> str: """Return the ID of the labware loaded on the given module.""" - for labware_id, labware in self.state.labware_by_id.items(): + for labware_id, labware in self._state.labware_by_id.items(): if ( isinstance(labware.location, ModuleLocation) and labware.location.moduleId == module_id @@ -281,7 +281,7 @@ def get_id_by_module(self, module_id: str) -> str: def get_id_by_labware(self, labware_id: str) -> str: """Return the ID of the labware loaded on the given labware.""" - for labware in self.state.labware_by_id.values(): + for labware in self._state.labware_by_id.values(): if ( isinstance(labware.location, OnLabwareLocation) and labware.location.labwareId == labware_id diff --git a/api/src/opentrons/protocol_engine/state/liquid_classes.py b/api/src/opentrons/protocol_engine/state/liquid_classes.py index 7992735fecd..4010c7be821 100644 --- a/api/src/opentrons/protocol_engine/state/liquid_classes.py +++ b/api/src/opentrons/protocol_engine/state/liquid_classes.py @@ -54,7 +54,7 @@ def _handle_liquid_class_loaded_update( ] = state_update.liquid_class_id -class LiquidClassView(HasState[LiquidClassState]): +class LiquidClassView: """Read-only view of the LiquidClassState.""" _state: LiquidClassState diff --git a/api/src/opentrons/protocol_engine/state/liquids.py b/api/src/opentrons/protocol_engine/state/liquids.py index 775223c6a60..034e0c4030b 100644 --- a/api/src/opentrons/protocol_engine/state/liquids.py +++ b/api/src/opentrons/protocol_engine/state/liquids.py @@ -34,7 +34,7 @@ def _add_liquid(self, action: AddLiquidAction) -> None: self._state.liquids_by_id[action.liquid.id] = action.liquid -class LiquidView(HasState[LiquidState]): +class LiquidView: """Read-only liquid state view.""" _state: LiquidState diff --git a/api/src/opentrons/protocol_engine/state/modules.py b/api/src/opentrons/protocol_engine/state/modules.py index f2f9dc5e8e4..0292329b8ea 100644 --- a/api/src/opentrons/protocol_engine/state/modules.py +++ b/api/src/opentrons/protocol_engine/state/modules.py @@ -632,7 +632,7 @@ def _handle_absorbance_reader_commands( ) -class ModuleView(HasState[ModuleState]): +class ModuleView: """Read-only view of computed module state.""" _state: ModuleState @@ -860,8 +860,8 @@ def get_nominal_offset_to_child( Labware Position Check offset. """ if ( - self.state.deck_type == DeckType.OT2_STANDARD - or self.state.deck_type == DeckType.OT2_SHORT_TRASH + self._state.deck_type == DeckType.OT2_STANDARD + or self._state.deck_type == DeckType.OT2_SHORT_TRASH ): definition = self.get_definition(module_id) slot = self.get_location(module_id).slotName.id @@ -908,7 +908,7 @@ def get_nominal_offset_to_child( "Module location invalid for nominal module offset calculation." ) module_addressable_area = self.ensure_and_convert_module_fixture_location( - location, self.state.deck_type, module.model + location, self._state.deck_type, module.model ) module_addressable_area_position = ( addressable_areas.get_addressable_area_offsets_from_cutout( diff --git a/api/src/opentrons/protocol_engine/state/pipettes.py b/api/src/opentrons/protocol_engine/state/pipettes.py index 6418f50ee90..9b7d289e890 100644 --- a/api/src/opentrons/protocol_engine/state/pipettes.py +++ b/api/src/opentrons/protocol_engine/state/pipettes.py @@ -350,7 +350,7 @@ def _fluid_stack_log_if_empty(self, pipette_id: str) -> fluid_stack.FluidStack: return stack -class PipetteView(HasState[PipetteState]): +class PipetteView: """Read-only view of computed pipettes state.""" _state: PipetteState diff --git a/api/src/opentrons/protocol_engine/state/tips.py b/api/src/opentrons/protocol_engine/state/tips.py index c5c097ec693..214e2a9bc07 100644 --- a/api/src/opentrons/protocol_engine/state/tips.py +++ b/api/src/opentrons/protocol_engine/state/tips.py @@ -119,7 +119,7 @@ def _set_used_tips(self, pipette_id: str, well_name: str, labware_id: str) -> No wells[well] = TipRackWellState.USED -class TipView(HasState[TipState]): +class TipView: """Read-only tip state view.""" _state: TipState diff --git a/api/src/opentrons/protocol_engine/state/wells.py b/api/src/opentrons/protocol_engine/state/wells.py index 2791346de5c..fdcb8322094 100644 --- a/api/src/opentrons/protocol_engine/state/wells.py +++ b/api/src/opentrons/protocol_engine/state/wells.py @@ -135,7 +135,7 @@ def _handle_well_operated( ) -class WellView(HasState[WellState]): +class WellView: """Read-only well state view.""" _state: WellState diff --git a/api/tests/opentrons/protocol_api/core/engine/test_protocol_core.py b/api/tests/opentrons/protocol_api/core/engine/test_protocol_core.py index 9ccaac498f0..1cf6bc57049 100644 --- a/api/tests/opentrons/protocol_api/core/engine/test_protocol_core.py +++ b/api/tests/opentrons/protocol_api/core/engine/test_protocol_core.py @@ -7,7 +7,6 @@ from opentrons_shared_data.liquid_classes.liquid_class_definition import ( LiquidClassSchemaV1, ) -from pytest_lazyfixture import lazy_fixture # type: ignore[import-untyped] from decoy import Decoy from opentrons_shared_data.deck import load as load_deck @@ -26,7 +25,7 @@ from opentrons.types import DeckSlotName, StagingSlotName, Mount, MountType, Point from opentrons.protocol_api import OFF_DECK from opentrons.hardware_control import SyncHardwareAPI, SynchronousAdapter -from opentrons.hardware_control.modules import AbstractModule, ModuleType +from opentrons.hardware_control.modules import AbstractModule from opentrons.hardware_control.modules.types import ( ModuleModel, TemperatureModuleModel, @@ -1200,7 +1199,6 @@ def test_add_labware_definition( "requested_model", "engine_model", "expected_core_cls", - "deck_def", "slot_name", "robot_type", ), @@ -1209,7 +1207,6 @@ def test_add_labware_definition( TemperatureModuleModel.TEMPERATURE_V1, EngineModuleModel.TEMPERATURE_MODULE_V1, TemperatureModuleCore, - lazy_fixture("ot2_standard_deck_def"), DeckSlotName.SLOT_1, "OT-2 Standard", ), @@ -1217,7 +1214,6 @@ def test_add_labware_definition( TemperatureModuleModel.TEMPERATURE_V2, EngineModuleModel.TEMPERATURE_MODULE_V2, TemperatureModuleCore, - lazy_fixture("ot3_standard_deck_def"), DeckSlotName.SLOT_D1, "OT-3 Standard", ), @@ -1225,7 +1221,6 @@ def test_add_labware_definition( MagneticModuleModel.MAGNETIC_V1, EngineModuleModel.MAGNETIC_MODULE_V1, MagneticModuleCore, - lazy_fixture("ot2_standard_deck_def"), DeckSlotName.SLOT_1, "OT-2 Standard", ), @@ -1233,7 +1228,6 @@ def test_add_labware_definition( ThermocyclerModuleModel.THERMOCYCLER_V1, EngineModuleModel.THERMOCYCLER_MODULE_V1, ThermocyclerModuleCore, - lazy_fixture("ot2_standard_deck_def"), DeckSlotName.SLOT_7, "OT-2 Standard", ), @@ -1241,7 +1235,6 @@ def test_add_labware_definition( ThermocyclerModuleModel.THERMOCYCLER_V2, EngineModuleModel.THERMOCYCLER_MODULE_V2, ThermocyclerModuleCore, - lazy_fixture("ot3_standard_deck_def"), DeckSlotName.SLOT_B1, "OT-3 Standard", ), @@ -1249,7 +1242,6 @@ def test_add_labware_definition( HeaterShakerModuleModel.HEATER_SHAKER_V1, EngineModuleModel.HEATER_SHAKER_MODULE_V1, HeaterShakerModuleCore, - lazy_fixture("ot3_standard_deck_def"), DeckSlotName.SLOT_A1, "OT-3 Standard", ), @@ -1265,7 +1257,6 @@ def test_load_module( engine_model: EngineModuleModel, expected_core_cls: Type[ModuleCore], subject: ProtocolCore, - deck_def: DeckDefinitionV5, slot_name: DeckSlotName, robot_type: RobotType, ) -> None: @@ -1281,23 +1272,6 @@ def test_load_module( [mock_hw_mod_1, mock_hw_mod_2] ) - if robot_type == "OT-2 Standard": - decoy.when(subject.get_slot_definition(slot_name)).then_return( - cast( - SlotDefV3, - {"compatibleModuleTypes": [ModuleType.from_model(requested_model)]}, - ) - ) - else: - decoy.when( - mock_engine_client.state.addressable_areas.state.deck_definition - ).then_return(deck_def) - decoy.when( - mock_engine_client.state.addressable_areas.get_cutout_id_by_deck_slot_name( - slot_name - ) - ).then_return("cutout" + slot_name.value) - decoy.when(mock_engine_client.state.config.robot_type).then_return(robot_type) decoy.when( @@ -1356,34 +1330,13 @@ def test_load_module( def test_load_mag_block( decoy: Decoy, mock_engine_client: EngineClient, - mock_sync_hardware_api: SyncHardwareAPI, subject: ProtocolCore, - ot3_standard_deck_def: DeckDefinitionV5, ) -> None: """It should issue a load module engine command.""" definition = ModuleDefinition.construct() # type: ignore[call-arg] decoy.when(mock_engine_client.state.config.robot_type).then_return("OT-3 Standard") - decoy.when(subject.get_slot_definition(DeckSlotName.SLOT_A2)).then_return( - cast( - SlotDefV3, - { - "compatibleModuleTypes": [ - ModuleType.from_model(MagneticBlockModel.MAGNETIC_BLOCK_V1) - ] - }, - ) - ) - decoy.when( - mock_engine_client.state.addressable_areas.state.deck_definition - ).then_return(ot3_standard_deck_def) - decoy.when( - mock_engine_client.state.addressable_areas.get_cutout_id_by_deck_slot_name( - DeckSlotName.SLOT_A2 - ) - ).then_return("cutout" + DeckSlotName.SLOT_A2.value) - decoy.when( mock_engine_client.execute_command_without_recovery( cmd.LoadModuleParams( @@ -1436,18 +1389,16 @@ def test_load_mag_block( @pytest.mark.parametrize( - ("requested_model", "engine_model", "deck_def", "expected_slot"), + ("requested_model", "engine_model", "expected_slot"), [ ( ThermocyclerModuleModel.THERMOCYCLER_V1, EngineModuleModel.THERMOCYCLER_MODULE_V1, - lazy_fixture("ot3_standard_deck_def"), DeckSlotName.SLOT_B1, ), ( ThermocyclerModuleModel.THERMOCYCLER_V2, EngineModuleModel.THERMOCYCLER_MODULE_V2, - lazy_fixture("ot3_standard_deck_def"), DeckSlotName.SLOT_B1, ), ], @@ -1459,7 +1410,6 @@ def test_load_module_thermocycler_with_no_location( requested_model: ModuleModel, engine_model: EngineModuleModel, subject: ProtocolCore, - deck_def: DeckDefinitionV5, expected_slot: DeckSlotName, ) -> None: """It should issue a load module engine command with location at 7.""" @@ -1469,14 +1419,6 @@ def test_load_module_thermocycler_with_no_location( decoy.when(mock_hw_mod.device_info).then_return({"serial": "xyz789"}) decoy.when(mock_sync_hardware_api.attached_modules).then_return([mock_hw_mod]) decoy.when(mock_engine_client.state.config.robot_type).then_return("OT-3 Standard") - decoy.when( - mock_engine_client.state.addressable_areas.state.deck_definition - ).then_return(deck_def) - decoy.when( - mock_engine_client.state.addressable_areas.get_cutout_id_by_deck_slot_name( - expected_slot - ) - ).then_return("cutout" + expected_slot.value) decoy.when( mock_engine_client.execute_command_without_recovery( diff --git a/api/tests/opentrons/protocol_engine/commands/test_load_module.py b/api/tests/opentrons/protocol_engine/commands/test_load_module.py index ce68f5c9f8a..e5098b5dc49 100644 --- a/api/tests/opentrons/protocol_engine/commands/test_load_module.py +++ b/api/tests/opentrons/protocol_engine/commands/test_load_module.py @@ -57,7 +57,7 @@ async def test_load_module_implementation( deck_def = load_deck(STANDARD_OT3_DECK, 5) - decoy.when(state_view.addressable_areas.state.deck_definition).then_return(deck_def) + decoy.when(state_view.labware.get_deck_definition()).then_return(deck_def) decoy.when( state_view.addressable_areas.get_cutout_id_by_deck_slot_name( DeckSlotName.SLOT_D1 @@ -112,7 +112,7 @@ async def test_load_module_implementation_mag_block( deck_def = load_deck(STANDARD_OT3_DECK, 5) - decoy.when(state_view.addressable_areas.state.deck_definition).then_return(deck_def) + decoy.when(state_view.labware.get_deck_definition()).then_return(deck_def) decoy.when( state_view.addressable_areas.get_cutout_id_by_deck_slot_name( DeckSlotName.SLOT_D1 @@ -167,7 +167,7 @@ async def test_load_module_implementation_abs_reader( deck_def = load_deck(STANDARD_OT3_DECK, 5) - decoy.when(state_view.addressable_areas.state.deck_definition).then_return(deck_def) + decoy.when(state_view.labware.get_deck_definition()).then_return(deck_def) decoy.when( state_view.addressable_areas.get_cutout_id_by_deck_slot_name( DeckSlotName.SLOT_D3 @@ -221,7 +221,7 @@ async def test_load_module_raises_if_location_occupied( deck_def = load_deck(STANDARD_OT3_DECK, 5) - decoy.when(state_view.addressable_areas.state.deck_definition).then_return(deck_def) + decoy.when(state_view.labware.get_deck_definition()).then_return(deck_def) decoy.when( state_view.addressable_areas.get_cutout_id_by_deck_slot_name( DeckSlotName.SLOT_D1 @@ -303,9 +303,7 @@ async def test_load_module_raises_wrong_location( state_view.addressable_areas.get_slot_definition(slot_name.id) ).then_return(cast(SlotDefV3, {"compatibleModuleTypes": []})) else: - decoy.when(state_view.addressable_areas.state.deck_definition).then_return( - deck_def - ) + decoy.when(state_view.labware.get_deck_definition()).then_return(deck_def) decoy.when( state_view.addressable_areas.get_cutout_id_by_deck_slot_name(slot_name) ).then_return("cutout" + slot_name.value) @@ -361,9 +359,7 @@ async def test_load_module_raises_module_fixture_id_does_not_exist( state_view.addressable_areas.get_slot_definition(slot_name.id) ).then_return(cast(SlotDefV3, {"compatibleModuleTypes": []})) else: - decoy.when(state_view.addressable_areas.state.deck_definition).then_return( - deck_def - ) + decoy.when(state_view.labware.get_deck_definition()).then_return(deck_def) decoy.when( state_view.addressable_areas.get_cutout_id_by_deck_slot_name(slot_name) ).then_return("cutout" + slot_name.value) diff --git a/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py b/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py index c03a611966c..4e9a10fdfaa 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py +++ b/api/tests/opentrons/protocol_engine/execution/test_tip_handler.py @@ -114,9 +114,9 @@ async def test_flex_pick_up_tip_state( decoy.when(mock_state_view.labware.get_definition("labware-id")).then_return( tip_rack_definition ) - decoy.when(mock_state_view.pipettes.state.nozzle_configuration_by_id).then_return( - {"pipette-id": MOCK_MAP} - ) + decoy.when( + mock_state_view.pipettes.get_nozzle_configuration("pipette-id") + ).then_return(MOCK_MAP) decoy.when( mock_state_view.geometry.get_nominal_tip_geometry( pipette_id="pipette-id", @@ -189,9 +189,9 @@ async def test_pick_up_tip( MountType.LEFT ) - decoy.when(mock_state_view.pipettes.state.nozzle_configuration_by_id).then_return( - {"pipette-id": MOCK_MAP} - ) + decoy.when( + mock_state_view.pipettes.get_nozzle_configuration(pipette_id="pipette-id") + ).then_return(MOCK_MAP) decoy.when( mock_state_view.geometry.get_nominal_tip_geometry( @@ -249,9 +249,9 @@ async def test_drop_tip( decoy.when(mock_state_view.pipettes.get_mount("pipette-id")).then_return( MountType.RIGHT ) - decoy.when(mock_state_view.pipettes.state.nozzle_configuration_by_id).then_return( - {"pipette-id": MOCK_MAP} - ) + decoy.when( + mock_state_view.pipettes.get_nozzle_configuration("pipette-id") + ).then_return(MOCK_MAP) await subject.drop_tip(pipette_id="pipette-id", home_after=True) @@ -558,8 +558,8 @@ async def test_verify_tip_presence_on_ot3( ) decoy.when( - mock_state_view.pipettes.state.nozzle_configuration_by_id - ).then_return({"pipette-id": MOCK_MAP}) + mock_state_view.pipettes.get_nozzle_configuration("pipette-id") + ).then_return(MOCK_MAP) await subject.verify_tip_presence("pipette-id", expected, None) diff --git a/api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py b/api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py index 30ca1b9e7c4..fc57cb73521 100644 --- a/api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py @@ -6,6 +6,7 @@ """ import inspect +from unittest.mock import sentinel import pytest from decoy import Decoy @@ -171,6 +172,7 @@ def test_get_addressable_area_for_simulation_not_loaded(decoy: Decoy) -> None: } }, use_simulated_deck_config=True, + deck_definition=sentinel.deck_definition, ) addressable_area = AddressableArea( @@ -185,7 +187,8 @@ def test_get_addressable_area_for_simulation_not_loaded(decoy: Decoy) -> None: decoy.when( deck_configuration_provider.get_potential_cutout_fixtures( - "abc", subject.state.deck_definition + "abc", + sentinel.deck_definition, ) ).then_return( ( @@ -202,7 +205,8 @@ def test_get_addressable_area_for_simulation_not_loaded(decoy: Decoy) -> None: decoy.when( deck_configuration_provider.get_cutout_position( - "cutoutA1", subject.state.deck_definition + "cutoutA1", + sentinel.deck_definition, ) ).then_return(DeckPoint(x=1, y=2, z=3)) @@ -211,7 +215,7 @@ def test_get_addressable_area_for_simulation_not_loaded(decoy: Decoy) -> None: "abc", DeckPoint(x=1, y=2, z=3), DeckSlotName.SLOT_A1, - subject.state.deck_definition, + sentinel.deck_definition, ) ).then_return(addressable_area) @@ -231,11 +235,12 @@ def test_get_addressable_area_for_simulation_raises(decoy: Decoy) -> None: } }, use_simulated_deck_config=True, + deck_definition=sentinel.deck_definition, ) decoy.when( deck_configuration_provider.get_potential_cutout_fixtures( - "abc", subject.state.deck_definition + "abc", sentinel.deck_definition ) ).then_return( ( @@ -252,7 +257,7 @@ def test_get_addressable_area_for_simulation_raises(decoy: Decoy) -> None: decoy.when( deck_configuration_provider.get_provided_addressable_area_names( - "bleh", "789", subject.state.deck_definition + "bleh", "789", sentinel.deck_definition ) ).then_return([]) @@ -322,10 +327,10 @@ def test_get_addressable_area_center() -> None: def test_get_fixture_height(decoy: Decoy) -> None: """It should return the height of the requested fixture.""" - subject = get_addressable_area_view() + subject = get_addressable_area_view(deck_definition=sentinel.deck_definition) decoy.when( deck_configuration_provider.get_cutout_fixture( - "someShortCutoutFixture", subject.state.deck_definition + "someShortCutoutFixture", sentinel.deck_definition ) ).then_return( { @@ -342,7 +347,7 @@ def test_get_fixture_height(decoy: Decoy) -> None: decoy.when( deck_configuration_provider.get_cutout_fixture( - "someTallCutoutFixture", subject.state.deck_definition + "someTallCutoutFixture", sentinel.deck_definition ) ).then_return( { @@ -394,11 +399,14 @@ def test_get_slot_definition() -> None: def test_get_slot_definition_raises_with_bad_slot_name(decoy: Decoy) -> None: """It should raise a SlotDoesNotExistError if a bad slot name is given.""" - subject = get_addressable_area_view() + deck_definition = cast(DeckDefinitionV5, {"otId": "fake"}) + subject = get_addressable_area_view( + deck_definition=deck_definition, + ) decoy.when( deck_configuration_provider.get_potential_cutout_fixtures( - "foo", subject.state.deck_definition + "foo", deck_definition ) ).then_raise(AddressableAreaDoesNotExistError()) @@ -438,11 +446,12 @@ def test_raise_if_area_not_in_deck_configuration_simulated_config(decoy: Decoy) ) }, }, + deck_definition=sentinel.deck_definition, ) decoy.when( deck_configuration_provider.get_potential_cutout_fixtures( - "mario", subject.state.deck_definition + "mario", sentinel.deck_definition ) ).then_return( ( @@ -461,7 +470,7 @@ def test_raise_if_area_not_in_deck_configuration_simulated_config(decoy: Decoy) decoy.when( deck_configuration_provider.get_potential_cutout_fixtures( - "luigi", subject.state.deck_definition + "luigi", sentinel.deck_definition ) ).then_return( ( @@ -478,13 +487,13 @@ def test_raise_if_area_not_in_deck_configuration_simulated_config(decoy: Decoy) decoy.when( deck_configuration_provider.get_provided_addressable_area_names( - "1up", "fire flower", subject.state.deck_definition + "1up", "fire flower", sentinel.deck_definition ) ).then_return([]) decoy.when( deck_configuration_provider.get_addressable_area_display_name( - "luigi", subject.state.deck_definition + "luigi", sentinel.deck_definition ) ).then_return("super luigi") diff --git a/api/tests/opentrons/protocol_engine/state/test_command_view_old.py b/api/tests/opentrons/protocol_engine/state/test_command_view_old.py index 0cbef9cf474..84b4a8606f6 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_view_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_view_old.py @@ -892,7 +892,7 @@ def test_get_current() -> None: created_at=datetime(year=2022, month=2, day=2), ) subject = get_command_view(commands=[command_1, command_2]) - subject.state.command_history._set_most_recently_completed_command_id(command_1.id) + subject._state.command_history._set_most_recently_completed_command_id(command_1.id) assert subject.get_current() == CommandPointer( index=1, @@ -912,7 +912,7 @@ def test_get_current() -> None: created_at=datetime(year=2022, month=2, day=2), ) subject = get_command_view(commands=[command_1, command_2]) - subject.state.command_history._set_most_recently_completed_command_id(command_1.id) + subject._state.command_history._set_most_recently_completed_command_id(command_1.id) assert subject.get_current() == CommandPointer( index=1, diff --git a/api/tests/opentrons/protocol_engine/test_protocol_engine.py b/api/tests/opentrons/protocol_engine/test_protocol_engine.py index d7e4b32e02a..34dac853ef8 100644 --- a/api/tests/opentrons/protocol_engine/test_protocol_engine.py +++ b/api/tests/opentrons/protocol_engine/test_protocol_engine.py @@ -684,7 +684,7 @@ async def test_finish( """It should be able to gracefully tell the engine it's done.""" completed_at = datetime(2021, 1, 1, 0, 0) - decoy.when(state_store.commands.state.stopped_by_estop).then_return(False) + decoy.when(state_store.commands.get_is_stopped_by_estop()).then_return(False) decoy.when(model_utils.get_timestamp()).then_return(completed_at) await subject.finish( @@ -719,7 +719,7 @@ async def test_finish_with_defaults( state_store: StateStore, ) -> None: """It should be able to gracefully tell the engine it's done.""" - decoy.when(state_store.commands.state.stopped_by_estop).then_return(False) + decoy.when(state_store.commands.get_is_stopped_by_estop()).then_return(False) await subject.finish() decoy.verify( @@ -761,7 +761,7 @@ async def test_finish_with_error( error=error, ) - decoy.when(state_store.commands.state.stopped_by_estop).then_return( + decoy.when(state_store.commands.get_is_stopped_by_estop()).then_return( stopped_by_estop ) decoy.when(model_utils.generate_id()).then_return("error-id") @@ -861,7 +861,7 @@ async def test_finish_stops_hardware_if_queue_worker_join_fails( await queue_worker.join(), ).then_raise(exception) - decoy.when(state_store.commands.state.stopped_by_estop).then_return(False) + decoy.when(state_store.commands.get_is_stopped_by_estop()).then_return(False) error_id = "error-id" completed_at = datetime(2021, 1, 1, 0, 0) From 57fbf35297b2b5289056fb97e6bb7a6f2e75d37e Mon Sep 17 00:00:00 2001 From: Max Marrone Date: Wed, 4 Dec 2024 10:47:04 -0500 Subject: [PATCH 154/220] test(api): Point out old `opentrons.protocol_engine.state` test conventions more consistently (#17018) --- ...le_area_store.py => test_addressable_area_store_old.py} | 4 ++-- ...able_area_view.py => test_addressable_area_view_old.py} | 4 ++-- .../protocol_engine/state/test_command_store_old.py | 3 ++- .../protocol_engine/state/test_command_view_old.py | 3 ++- .../{test_labware_store.py => test_labware_store_old.py} | 7 ++++++- .../{test_labware_view.py => test_labware_view_old.py} | 7 ++++++- ...iquid_class_store.py => test_liquid_class_store_old.py} | 7 ++++++- ..._liquid_class_view.py => test_liquid_class_view_old.py} | 7 ++++++- .../{test_liquid_store.py => test_liquid_store_old.py} | 7 ++++++- .../state/{test_liquid_view.py => test_liquid_view_old.py} | 7 ++++++- .../{test_module_store.py => test_module_store_old.py} | 7 ++++++- .../state/{test_module_view.py => test_module_view_old.py} | 7 ++++++- .../{test_pipette_store.py => test_pipette_store_old.py} | 7 ++++++- .../{test_pipette_view.py => test_pipette_view_old.py} | 7 ++++++- .../state/{test_well_store.py => test_well_store_old.py} | 7 ++++++- .../state/{test_well_view.py => test_well_view_old.py} | 7 ++++++- 16 files changed, 80 insertions(+), 18 deletions(-) rename api/tests/opentrons/protocol_engine/state/{test_addressable_area_store.py => test_addressable_area_store_old.py} (98%) rename api/tests/opentrons/protocol_engine/state/{test_addressable_area_view.py => test_addressable_area_view_old.py} (98%) rename api/tests/opentrons/protocol_engine/state/{test_labware_store.py => test_labware_store_old.py} (97%) rename api/tests/opentrons/protocol_engine/state/{test_labware_view.py => test_labware_view_old.py} (99%) rename api/tests/opentrons/protocol_engine/state/{test_liquid_class_store.py => test_liquid_class_store_old.py} (88%) rename api/tests/opentrons/protocol_engine/state/{test_liquid_class_view.py => test_liquid_class_view_old.py} (88%) rename api/tests/opentrons/protocol_engine/state/{test_liquid_store.py => test_liquid_store_old.py} (75%) rename api/tests/opentrons/protocol_engine/state/{test_liquid_view.py => test_liquid_view_old.py} (87%) rename api/tests/opentrons/protocol_engine/state/{test_module_store.py => test_module_store_old.py} (99%) rename api/tests/opentrons/protocol_engine/state/{test_module_view.py => test_module_view_old.py} (99%) rename api/tests/opentrons/protocol_engine/state/{test_pipette_store.py => test_pipette_store_old.py} (99%) rename api/tests/opentrons/protocol_engine/state/{test_pipette_view.py => test_pipette_view_old.py} (99%) rename api/tests/opentrons/protocol_engine/state/{test_well_store.py => test_well_store_old.py} (97%) rename api/tests/opentrons/protocol_engine/state/{test_well_view.py => test_well_view_old.py} (89%) diff --git a/api/tests/opentrons/protocol_engine/state/test_addressable_area_store.py b/api/tests/opentrons/protocol_engine/state/test_addressable_area_store_old.py similarity index 98% rename from api/tests/opentrons/protocol_engine/state/test_addressable_area_store.py rename to api/tests/opentrons/protocol_engine/state/test_addressable_area_store_old.py index 44c72e38e86..b9e3e8f4e78 100644 --- a/api/tests/opentrons/protocol_engine/state/test_addressable_area_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_addressable_area_store_old.py @@ -1,8 +1,8 @@ """Addressable area state store tests. DEPRECATED: Testing AddressableAreaStore independently of AddressableAreaView is no -longer helpful. Add new tests to test_addressable_area_state.py, where they can be -tested together. +longer helpful. Try to add new tests to test_addressable_area_state.py, where they can be +tested together, treating AddressableAreaState as a private implementation detail. """ import pytest diff --git a/api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py b/api/tests/opentrons/protocol_engine/state/test_addressable_area_view_old.py similarity index 98% rename from api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py rename to api/tests/opentrons/protocol_engine/state/test_addressable_area_view_old.py index fc57cb73521..5aa157c59db 100644 --- a/api/tests/opentrons/protocol_engine/state/test_addressable_area_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_addressable_area_view_old.py @@ -1,8 +1,8 @@ """Addressable area state view tests. DEPRECATED: Testing AddressableAreaView independently of AddressableAreaStore is no -longer helpful. Add new tests to test_addressable_area_state.py, where they can be -tested together. +longer helpful. Try to add new tests to test_addressable_area_state.py, where they can be +tested together, treating AddressableAreaState as a private implementation detail. """ import inspect diff --git a/api/tests/opentrons/protocol_engine/state/test_command_store_old.py b/api/tests/opentrons/protocol_engine/state/test_command_store_old.py index 881719ba7ad..a9022803bcf 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_store_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_store_old.py @@ -1,7 +1,8 @@ """Tests for CommandStore. DEPRECATED: Testing CommandStore independently of CommandView is no longer helpful. -Add new tests to test_command_state.py, where they can be tested together. +Try to add new tests to test_command_state.py, where they can be tested together, +treating CommandState as a private implementation detail. """ diff --git a/api/tests/opentrons/protocol_engine/state/test_command_view_old.py b/api/tests/opentrons/protocol_engine/state/test_command_view_old.py index 84b4a8606f6..de242d83f51 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_view_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_view_old.py @@ -1,7 +1,8 @@ """Tests for CommandView. DEPRECATED: Testing CommandView independently of CommandStore is no longer helpful. -Add new tests to test_command_state.py, where they can be tested together. +Try to add new tests to test_command_state.py, where they can be tested together, +treating CommandState as a private implementation detail. """ diff --git a/api/tests/opentrons/protocol_engine/state/test_labware_store.py b/api/tests/opentrons/protocol_engine/state/test_labware_store_old.py similarity index 97% rename from api/tests/opentrons/protocol_engine/state/test_labware_store.py rename to api/tests/opentrons/protocol_engine/state/test_labware_store_old.py index 47150ec425f..3b539df58e3 100644 --- a/api/tests/opentrons/protocol_engine/state/test_labware_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_labware_store_old.py @@ -1,4 +1,9 @@ -"""Labware state store tests.""" +"""Labware state store tests. + +DEPRECATED: Testing LabwareStore independently of LabwareView is no +longer helpful. Try to add new tests to test_labware_state.py, where they can be +tested together, treating LabwareState as a private implementation detail. +""" from typing import Optional from opentrons.protocol_engine.state import update_types import pytest diff --git a/api/tests/opentrons/protocol_engine/state/test_labware_view.py b/api/tests/opentrons/protocol_engine/state/test_labware_view_old.py similarity index 99% rename from api/tests/opentrons/protocol_engine/state/test_labware_view.py rename to api/tests/opentrons/protocol_engine/state/test_labware_view_old.py index 56113aff419..0b6886040c6 100644 --- a/api/tests/opentrons/protocol_engine/state/test_labware_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_labware_view_old.py @@ -1,4 +1,9 @@ -"""Labware state store tests.""" +"""Labware state store tests. + +DEPRECATED: Testing LabwareView independently of LabwareStore is no +longer helpful. Try to add new tests to test_labware_state.py, where they can be +tested together, treating LabwareState as a private implementation detail. +""" import pytest from datetime import datetime from typing import Dict, Optional, cast, ContextManager, Any, Union, NamedTuple, List diff --git a/api/tests/opentrons/protocol_engine/state/test_liquid_class_store.py b/api/tests/opentrons/protocol_engine/state/test_liquid_class_store_old.py similarity index 88% rename from api/tests/opentrons/protocol_engine/state/test_liquid_class_store.py rename to api/tests/opentrons/protocol_engine/state/test_liquid_class_store_old.py index aac74fd6133..57397ec61cb 100644 --- a/api/tests/opentrons/protocol_engine/state/test_liquid_class_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_liquid_class_store_old.py @@ -1,4 +1,9 @@ -"""Liquid state store tests.""" +"""Liquid state store tests. + +DEPRECATED: Testing LiquidClassStore independently of LiquidClassView is no +longer helpful. Try to add new tests to test_liquid_class_state.py, where they can be +tested together, treating LiquidClassState as a private implementation detail. +""" import pytest from opentrons_shared_data.liquid_classes.liquid_class_definition import ( diff --git a/api/tests/opentrons/protocol_engine/state/test_liquid_class_view.py b/api/tests/opentrons/protocol_engine/state/test_liquid_class_view_old.py similarity index 88% rename from api/tests/opentrons/protocol_engine/state/test_liquid_class_view.py rename to api/tests/opentrons/protocol_engine/state/test_liquid_class_view_old.py index d80f40a5d0c..f28438b3756 100644 --- a/api/tests/opentrons/protocol_engine/state/test_liquid_class_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_liquid_class_view_old.py @@ -1,4 +1,9 @@ -"""Liquid view tests.""" +"""Liquid view tests. + +DEPRECATED: Testing LiquidClassView independently of LiquidClassStore is no +longer helpful. Try to add new tests to test_liquid_class_state.py, where they can be +tested together, treating LiquidClassState as a private implementation detail. +""" import pytest from opentrons_shared_data.liquid_classes.liquid_class_definition import ( diff --git a/api/tests/opentrons/protocol_engine/state/test_liquid_store.py b/api/tests/opentrons/protocol_engine/state/test_liquid_store_old.py similarity index 75% rename from api/tests/opentrons/protocol_engine/state/test_liquid_store.py rename to api/tests/opentrons/protocol_engine/state/test_liquid_store_old.py index fe21b43193e..18417fe7570 100644 --- a/api/tests/opentrons/protocol_engine/state/test_liquid_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_liquid_store_old.py @@ -1,4 +1,9 @@ -"""Liquid state store tests.""" +"""Liquid state store tests. + +DEPRECATED: Testing LiquidStore independently of LiquidView is no longer helpful. +Try to add new tests to test_liquid_state.py, where they can be tested together, +treating LiquidState as a private implementation detail. +""" import pytest from opentrons.protocol_engine.state.liquids import LiquidStore from opentrons.protocol_engine import Liquid diff --git a/api/tests/opentrons/protocol_engine/state/test_liquid_view.py b/api/tests/opentrons/protocol_engine/state/test_liquid_view_old.py similarity index 87% rename from api/tests/opentrons/protocol_engine/state/test_liquid_view.py rename to api/tests/opentrons/protocol_engine/state/test_liquid_view_old.py index db1e6f274a1..92a9a2bd667 100644 --- a/api/tests/opentrons/protocol_engine/state/test_liquid_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_liquid_view_old.py @@ -1,4 +1,9 @@ -"""Liquid view tests.""" +"""Liquid view tests. + +DEPRECATED: Testing LiquidView independently of LiquidStore is no longer helpful. +Try to add new tests to test_liquid_state.py, where they can be tested together, +treating LiquidState as a private implementation detail. +""" import pytest from opentrons.protocol_engine.state.liquids import LiquidState, LiquidView diff --git a/api/tests/opentrons/protocol_engine/state/test_module_store.py b/api/tests/opentrons/protocol_engine/state/test_module_store_old.py similarity index 99% rename from api/tests/opentrons/protocol_engine/state/test_module_store.py rename to api/tests/opentrons/protocol_engine/state/test_module_store_old.py index 832713ed0a4..e4ab52ebaf8 100644 --- a/api/tests/opentrons/protocol_engine/state/test_module_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_module_store_old.py @@ -1,4 +1,9 @@ -"""Module state store tests.""" +"""Module state store tests. + +DEPRECATED: Testing ModuleStore independently of ModuleView is no longer helpful. +Try to add new tests to test_module_state.py, where they can be tested together, +treating ModuleState as a private implementation detail. +""" from typing import List, Set, cast, Dict, Optional import pytest diff --git a/api/tests/opentrons/protocol_engine/state/test_module_view.py b/api/tests/opentrons/protocol_engine/state/test_module_view_old.py similarity index 99% rename from api/tests/opentrons/protocol_engine/state/test_module_view.py rename to api/tests/opentrons/protocol_engine/state/test_module_view_old.py index 66152a57240..3902eedc76f 100644 --- a/api/tests/opentrons/protocol_engine/state/test_module_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_module_view_old.py @@ -1,4 +1,9 @@ -"""Tests for module state accessors in the protocol engine state store.""" +"""Tests for module state accessors in the protocol engine state store. + +DEPRECATED: Testing ModuleView independently of ModuleView is no longer helpful. +Try to add new tests to test_module_state.py, where they can be tested together, +treating ModuleState as a private implementation detail. +""" import pytest from math import isclose from pytest_lazyfixture import lazy_fixture # type: ignore[import-untyped] diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_store.py b/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py similarity index 99% rename from api/tests/opentrons/protocol_engine/state/test_pipette_store.py rename to api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py index e88f7886b81..b88844bb53d 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_store_old.py @@ -1,4 +1,9 @@ -"""Tests for pipette state changes in the protocol_engine state store.""" +"""Tests for pipette state changes in the protocol_engine state store. + +DEPRECATED: Testing PipetteStore independently of PipetteView is no longer helpful. +Try to add new tests to test_pipette_state.py, where they can be tested together, +treating PipetteState as a private implementation detail. +""" import pytest from opentrons_shared_data.pipette.types import PipetteNameType diff --git a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py b/api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py similarity index 99% rename from api/tests/opentrons/protocol_engine/state/test_pipette_view.py rename to api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py index c3addf9f1d7..ce07e5fda8e 100644 --- a/api/tests/opentrons/protocol_engine/state/test_pipette_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_pipette_view_old.py @@ -1,4 +1,9 @@ -"""Tests for pipette state accessors in the protocol_engine state store.""" +"""Tests for pipette state accessors in the protocol_engine state store. + +DEPRECATED: Testing PipetteView independently of PipetteStore is no longer helpful. +Try to add new tests to test_pipette_state.py, where they can be tested together, +treating PipetteState as a private implementation detail. +""" from collections import OrderedDict from typing import cast, Dict, List, Optional, Tuple, NamedTuple diff --git a/api/tests/opentrons/protocol_engine/state/test_well_store.py b/api/tests/opentrons/protocol_engine/state/test_well_store_old.py similarity index 97% rename from api/tests/opentrons/protocol_engine/state/test_well_store.py rename to api/tests/opentrons/protocol_engine/state/test_well_store_old.py index 54e08a45e74..51142afd9da 100644 --- a/api/tests/opentrons/protocol_engine/state/test_well_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_well_store_old.py @@ -1,4 +1,9 @@ -"""Well state store tests.""" +"""Well state store tests. + +DEPRECATED: Testing WellStore independently of WellView is no longer helpful. +Try to add new tests to well_state.py, where they can be tested together, +treating WellState as a private implementation detail. +""" import pytest from datetime import datetime diff --git a/api/tests/opentrons/protocol_engine/state/test_well_view.py b/api/tests/opentrons/protocol_engine/state/test_well_view_old.py similarity index 89% rename from api/tests/opentrons/protocol_engine/state/test_well_view.py rename to api/tests/opentrons/protocol_engine/state/test_well_view_old.py index 5025e4ee93e..9ced4db9df0 100644 --- a/api/tests/opentrons/protocol_engine/state/test_well_view.py +++ b/api/tests/opentrons/protocol_engine/state/test_well_view_old.py @@ -1,4 +1,9 @@ -"""Well view tests.""" +"""Well view tests. + +DEPRECATED: Testing WellView independently of WellStore is no longer helpful. +Try to add new tests to test_well_state.py, where they can be tested together, +treating WellState as a private implementation detail. +""" from datetime import datetime from opentrons.protocol_engine.types import ( LoadedVolumeInfo, From 9844c9d9de4815342be11bffe8a6fc74f5a1c30c Mon Sep 17 00:00:00 2001 From: Ed Cormany Date: Wed, 4 Dec 2024 11:54:17 -0500 Subject: [PATCH 155/220] docs(api): hide 2.22 features from 2.21 docs (#17030) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Overview We cut the `docs@2.21` tag from `edge` and it accidentally had some stuff _from the future_ 🔮 This PR hides those things temporarily. We'll unhide them when writing docs for the 2.22 release. ## Test Plan and Hands on Testing [Sandbox](http://sandbox.docs.opentrons.com/docs-hide-future-2.22/v2/new_protocol_api.html) ## Changelog - Exclude some methods in `new_protocol_api.rst` - Turn some notes and deprecation notices in docstrings into invisible comments, with TODOs to change back. - Ran `black` on code files. ## Review requests Check that there are no other mentions of 2.22. I've searched the source (RST and Python) and can't think of anywhere they would pop up except the API Reference page, which is clean now. I suppose there could be some 2.22 stuff that wasn't tagged with a version and is still sneaking through. ## Risk assessment v low, docs only except whatever black did --- api/docs/v2/new_protocol_api.rst | 2 +- api/src/opentrons/protocol_api/instrument_context.py | 11 ++++++----- api/src/opentrons/protocol_api/labware.py | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/api/docs/v2/new_protocol_api.rst b/api/docs/v2/new_protocol_api.rst index 2ce4c39e3cc..d7428799fe0 100644 --- a/api/docs/v2/new_protocol_api.rst +++ b/api/docs/v2/new_protocol_api.rst @@ -28,7 +28,7 @@ Labware ======= .. autoclass:: opentrons.protocol_api.Labware :members: - :exclude-members: next_tip, use_tips, previous_tip, return_tips + :exclude-members: next_tip, use_tips, previous_tip, return_tips, load_empty, load_liquid, load_liquid_by_well .. The trailing ()s at the end of TrashBin and WasteChute here hide the __init__() diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 8cc3e0bd14e..9c6338270c7 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -763,8 +763,7 @@ def air_gap( ``pipette.air_gap(height=2)``. If you call ``air_gap`` with a single, unnamed argument, it will always be interpreted as a volume. - .. note:: - + .. TODO: restore this as a note block for 2.22 docs Before API version 2.22, this function was implemented as an aspirate, and dispensing into a well would add the air gap volume to the liquid tracked in the well. At or above API version 2.22, air gap volume is not counted as liquid @@ -1604,9 +1603,11 @@ def transfer_liquid( source=[well._core for well in flat_sources_list], dest=[well._core for well in flat_dests_list], new_tip=valid_new_tip, - trash_location=checked_trash_location._core - if isinstance(checked_trash_location, labware.Well) - else checked_trash_location, + trash_location=( + checked_trash_location._core + if isinstance(checked_trash_location, labware.Well) + else checked_trash_location + ), ) return self diff --git a/api/src/opentrons/protocol_api/labware.py b/api/src/opentrons/protocol_api/labware.py index 4ac7713f83a..5e919a44f86 100644 --- a/api/src/opentrons/protocol_api/labware.py +++ b/api/src/opentrons/protocol_api/labware.py @@ -292,7 +292,7 @@ def load_liquid(self, liquid: Liquid, volume: float) -> None: :param Liquid liquid: The liquid to load into the well. :param float volume: The volume of liquid to load, in µL. - .. deprecated:: 2.22 + .. TODO: flag as deprecated in 2.22 docs In API version 2.22 and later, use :py:meth:`~Labware.load_liquid`, :py:meth:`~Labware.load_liquid_by_well`, or :py:meth:`~Labware.load_empty` to load liquid into a well. """ From 84f9ba54a425e5f2a4fcb68b2a04b3ff2c1ce8b0 Mon Sep 17 00:00:00 2001 From: Jethary Alcid <66035149+jerader@users.noreply.github.com> Date: Wed, 4 Dec 2024 12:13:10 -0500 Subject: [PATCH 156/220] feat(protocol-designer): delete unused code (#16869) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes AUTH-645 This PR deletes unused code and moves a few components into the correct folder. There are also a few redux actions/selectors/reducers that were deleted because they are no longer in use. Those include: 1. thermocycler profile step -> the redesign has it contained in a modal and keeps track of stuff via local states 2. a bunch of hints -> we deprecated most of them for the redesign. only remaining hints are for exporting a protocol with unused hardware and changing your magnetic module version 3. redux actions related to navigation -> we use react-router-dom now for navigation 4. stuff related to expanding and collapsing steps and multi-steps -> we no longer allow expanding/collapsing steps at all Additionally, all css style sheets are officially deleted 🗑️ --- protocol-designer/src/ProtocolEditor.tsx | 38 +- .../src/assets/localization/en/alert.json | 49 -- .../components/BatchEditForm/BatchEditMix.tsx | 213 ------ .../BatchEditForm/BatchEditMoveLiquid.tsx | 232 ------ .../components/BatchEditForm/FormColumn.tsx | 21 - .../NoBatchEditSharedSettings.tsx | 25 - .../__tests__/BatchEditMoveLiquid.test.tsx | 5 - .../__tests__/makeBatchEditFieldProps.test.ts | 167 ----- .../src/components/BatchEditForm/index.tsx | 83 --- .../BatchEditForm/makeBatchEditFieldProps.ts | 48 -- .../ColorPicker/ColorPicker.module.css | 29 - .../src/components/ColorPicker/index.tsx | 56 -- .../src/components/ComputingSpinner.tsx | 26 - .../components/DeckSetup/DeckSetup.module.css | 22 - .../components/DeckSetup/FlexModuleTag.tsx | 34 - .../LabwareOverlays/AdapterControls.tsx | 184 ----- .../DeckSetup/LabwareOverlays/BlockedSlot.tsx | 43 -- .../LabwareOverlays/BrowseLabware.tsx | 39 - .../DeckSetup/LabwareOverlays/EditLabware.tsx | 160 ----- .../LabwareOverlays/EditLabwareOffDeck.tsx | 123 ---- .../LabwareOverlays/LabwareControls.tsx | 70 -- .../LabwareOverlays/LabwareHighlight.tsx | 58 -- .../DeckSetup/LabwareOverlays/LabwareName.tsx | 18 - .../LabwareOverlays.module.css | 155 ---- .../LabwareOverlays/NameThisLabware.tsx | 70 -- .../LabwareOverlays/SlotControls.tsx | 184 ----- .../__tests__/SlotControls.test.tsx | 5 - .../DeckSetup/LabwareOverlays/index.ts | 3 - .../components/DeckSetup/NullDeckState.tsx | 50 -- .../src/components/DeckSetup/Ot2ModuleTag.tsx | 57 -- .../src/components/DeckSetup/SlotLabels.tsx | 104 --- .../DeckSetup/__tests__/DeckSetup.test.ts | 233 ------ .../__tests__/FlexModuleTag.test.tsx | 41 -- .../DeckSetup/__tests__/Ot2ModuleTag.test.tsx | 41 -- .../src/components/DeckSetup/constants.ts | 4 - .../src/components/DeckSetup/index.tsx | 677 ------------------ .../src/components/DeckSetup/utils.ts | 62 -- .../src/components/DeckSetupManager.tsx | 25 - .../src/components/EditModules.tsx | 115 --- .../src/components/EditableTextField.tsx | 74 -- .../src/components/FilePage.module.css | 51 -- protocol-designer/src/components/FilePage.tsx | 282 -------- .../FileSidebar/FileSidebar.module.css | 16 - .../components/FileSidebar/FileSidebar.tsx | 475 ------------ .../__tests__/FileSidebar.test.tsx | 285 -------- .../utils/__tests__/getUnusedEntities.test.ts | 148 ---- .../__tests__/getUnusedStagingAreas.test.ts | 60 -- .../utils/__tests__/getUnusedTrash.test.ts | 128 ---- .../FileSidebar/utils/getUnusedEntities.ts | 36 - .../utils/getUnusedStagingAreas.ts | 42 -- .../FileSidebar/utils/getUnusedTrash.ts | 56 -- .../src/components/FileSidebar/utils/index.ts | 3 - .../src/components/FormManager/index.tsx | 20 - .../src/components/Hints/hints.module.css | 71 -- .../src/components/Hints/index.tsx | 177 ----- .../src/components/Hints/useBlockingHint.tsx | 100 --- .../IngredientsList.module.css | 16 - .../LabwareDetailsCard/LabwareDetailsCard.tsx | 75 -- .../labwareDetailsCard.module.css | 22 - .../src/components/IngredientsList/index.tsx | 210 ------ .../components/KnowledgeBaseLink/index.tsx | 39 - .../LabwareSelectionModal/LabwareItem.tsx | 71 -- .../LabwareSelectionModal/LabwarePreview.tsx | 87 --- .../LabwareSelectionModal.tsx | 601 ---------------- .../__tests__/LabwareSelectionModal.test.tsx | 124 ---- .../LabwareSelectionModal/styles.module.css | 181 ----- .../LiquidPlacementForm.module.css | 30 - .../LiquidPlacementForm.tsx | 260 ------- .../LiquidPlacementModal.module.css | 34 - .../src/components/LiquidPlacementModal.tsx | 82 --- .../LiquidsPage/LiquidEditForm.module.css | 26 - .../components/LiquidsPage/LiquidEditForm.tsx | 236 ------ .../LiquidsPage/LiquidsPageInfo.module.css | 27 - .../LiquidsPage/LiquidsPageInfo.tsx | 21 - .../src/components/LiquidsPage/index.tsx | 62 -- .../src/components/LiquidsSidebar/index.tsx | 64 -- .../LiquidsSidebar/styles.module.css | 11 - .../src/components/OffDeckLabwareButton.tsx | 43 -- .../src/components/OffDeckLabwareSlideout.tsx | 181 ----- .../components/PrereleaseModeIndicator.tsx | 24 - .../src/components/ProtocolEditor.module.css | 27 - .../SelectionRect.module.module.css | 21 - .../FeatureFlagCard/FeatureFlagCard.tsx | 141 ---- .../components/SettingsPage/SettingsApp.tsx | 92 --- .../SettingsPage/SettingsPage.module.css | 92 --- .../SettingsPage/SettingsSidebar.tsx | 20 - .../src/components/SettingsPage/index.tsx | 16 - .../src/components/Slideout/index.tsx | 223 ------ .../src/components/StepCreationButton.tsx | 218 ------ .../StepEditForm/ButtonRow/index.tsx | 55 -- .../StepEditForm/ButtonRow/styles.module.css | 21 - .../StepEditForm/StepEditForm.module.css | 448 ------------ .../StepEditForm/StepEditFormComponent.tsx | 104 --- .../StepEditForm/__tests__/utils.test.ts | 65 -- .../fields/BlowoutLocationField.tsx | 44 -- .../fields/BlowoutZOffsetField.tsx | 89 --- .../getDisabledChangeTipOptions.ts | 45 -- .../fields/ChangeTipField/index.tsx | 90 --- .../StepEditForm/fields/CheckboxRowField.tsx | 62 -- .../fields/Configure96ChannelField.tsx | 92 --- .../StepEditForm/fields/DelayFields.tsx | 46 -- .../fields/DisposalVolumeField.tsx | 158 ---- .../__tests__/DropTipField.test.tsx | 68 -- .../fields/DropTipField/index.tsx | 86 --- .../FlowRateField/FlowRateInput.module.css | 19 - .../fields/FlowRateField/FlowRateInput.tsx | 248 ------- .../__tests__/FlowRateField.test.tsx | 84 --- .../fields/FlowRateField/index.tsx | 63 -- .../StepEditForm/fields/LabwareField.tsx | 18 - .../fields/LabwareLocationField/index.tsx | 87 --- .../StepEditForm/fields/MixFields.tsx | 38 - .../StepEditForm/fields/MoveLabwareField.tsx | 9 - .../fields/PathField/PathField.tsx | 169 ----- .../fields/PathField/getDisabledPathMap.ts | 109 --- .../_tests__/PickUpTipField.test.tsx | 46 -- .../fields/PickUpTipField/index.tsx | 48 -- .../StepEditForm/fields/PipetteField.tsx | 33 - .../StepEditForm/fields/ProfileItemRows.tsx | 364 ---------- .../StepEditForm/fields/RadioGroupField.tsx | 40 -- .../fields/StepFormDropdownField.tsx | 46 -- .../StepEditForm/fields/TextField.tsx | 33 - .../TipPositionField/TipPositionAllViz.tsx | 51 -- .../TipPositionInput.module.css | 77 -- .../TipPositionField/TipPositionModal.tsx | 383 ---------- .../TipPositionField/TipPositionZAxisViz.tsx | 44 -- .../TipPositionField/ZTipPositionModal.tsx | 292 -------- .../__tests__/TipPositionField.test.tsx | 113 --- .../__tests__/TipPositionModal.test.tsx | 140 ---- .../__tests__/ZTipPositionModal.test.tsx | 50 -- .../fields/TipPositionField/constants.ts | 5 - .../fields/TipPositionField/index.tsx | 229 ------ .../fields/TipPositionField/utils.ts | 127 ---- .../__tests__/TipWellSelectionField.test.tsx | 56 -- .../fields/TipWellSelectionField/index.tsx | 83 --- .../StepEditForm/fields/TiprackField.tsx | 71 -- .../StepEditForm/fields/ToggleRowField.tsx | 37 - .../StepEditForm/fields/VolumeField.tsx | 42 -- .../WellOrderField/WellOrderInput.module.css | 100 --- .../fields/WellOrderField/WellOrderModal.tsx | 244 ------- .../fields/WellOrderField/WellOrderViz.tsx | 31 - .../fields/WellOrderField/index.tsx | 134 ---- .../WellSelectionField/WellSelectionField.tsx | 105 --- .../WellSelectionModal.module.css | 24 - .../WellSelectionField/WellSelectionModal.tsx | 200 ------ .../__tests__/BlowoutZOffsetField.test.tsx | 53 -- .../fields/__tests__/DelayFields.test.tsx | 5 - .../fields/__tests__/TiprackField.test.tsx | 58 -- .../fields/__tests__/WellOrderField.test.tsx | 5 - .../makeSingleEditFieldProps.test.ts | 178 ----- .../components/StepEditForm/fields/index.ts | 31 - .../fields/makeSingleEditFieldProps.ts | 78 -- .../StepEditForm/forms/AspDispSection.tsx | 49 -- .../StepEditForm/forms/CommentForm/index.tsx | 33 - .../forms/HeaterShakerForm/index.tsx | 149 ---- .../StepEditForm/forms/MagnetForm.tsx | 108 --- .../components/StepEditForm/forms/MixForm.tsx | 298 -------- .../forms/MoveLabwareForm/index.tsx | 93 --- .../forms/MoveLiquidForm/SourceDestFields.tsx | 209 ------ .../MoveLiquidForm/SourceDestHeaders.tsx | 63 -- .../forms/MoveLiquidForm/index.tsx | 186 ----- .../StepEditForm/forms/PauseForm.tsx | 190 ----- .../StepEditForm/forms/TemperatureForm.tsx | 84 --- .../ThermocyclerForm/ProfileSettings.tsx | 49 -- .../forms/ThermocyclerForm/StateFields.tsx | 93 --- .../forms/ThermocyclerForm/index.tsx | 87 --- .../forms/__tests__/HeaterShakerForm.test.tsx | 153 ---- .../forms/__tests__/MagnetForm.test.tsx | 98 --- .../forms/__tests__/MixForm.test.tsx | 5 - .../forms/__tests__/SourceDestFields.test.tsx | 5 - .../forms/__tests__/TemperatureForm.test.tsx | 94 --- .../components/StepEditForm/forms/index.ts | 9 - .../src/components/StepEditForm/index.tsx | 265 ------- .../src/components/StepEditForm/utils.ts | 219 ------ .../StepSelectionBannerComponent.tsx | 140 ---- .../__tests__/StepSelectionBanner.test.tsx | 5 - .../components/StepSelectionBanner/index.tsx | 47 -- .../src/components/TitledListNotes.module.css | 14 - .../src/components/TitledListNotes.tsx | 18 - .../WellSelectionInstructions.module.css | 24 - .../components/WellSelectionInstructions.tsx | 15 - .../components/__tests__/EditModules.test.tsx | 80 --- .../components/__tests__/FilePage.test.tsx | 87 --- .../__tests__/StepCreationButton.test.tsx | 65 -- .../src/components/alerts/Alerts.tsx | 179 ----- .../src/components/alerts/ErrorContents.tsx | 62 -- .../src/components/alerts/PDAlert.tsx | 41 -- .../src/components/alerts/WarningContents.tsx | 46 -- .../src/components/alerts/alerts.module.css | 41 -- .../src/components/alerts/types.ts | 9 - .../components/editableTextField.module.css | 19 - .../src/components/forms/forms.module.css | 48 -- .../components/labware/BrowsableLabware.tsx | 64 -- .../components/labware/BrowseLabwareModal.tsx | 54 -- .../src/components/labware/WellTooltip.tsx | 138 ---- .../labware/__tests__/utils.test.ts | 35 - .../src/components/labware/index.ts | 3 - .../src/components/labware/labware.module.css | 148 ---- .../src/components/listButtons.module.css | 24 - .../src/components/lists/PDListItem.tsx | 25 - .../src/components/lists/PDTitledList.tsx | 16 - .../src/components/lists/TitledStepList.tsx | 146 ---- .../lists/__tests__/TitledStepList.test.tsx | 5 - .../src/components/lists/index.ts | 4 - .../src/components/lists/styles.module.css | 131 ---- .../AutoAddPauseUntilTempStepModal.module.css | 23 - .../CreateFileWizard/EquipmentOption.tsx | 287 -------- .../modals/CreateFileWizard/GoBack.tsx | 21 - .../modals/CreateFileWizard/HandleEnter.tsx | 31 - .../modals/CreateFileWizard/InputField.tsx | 117 --- .../modals/CreateFileWizard/MetadataTile.tsx | 130 ---- .../CreateFileWizard/ModulesAndOtherTile.tsx | 398 ---------- .../CreateFileWizard/PipetteTipsTile.tsx | 324 --------- .../CreateFileWizard/PipetteTypeTile.tsx | 208 ------ .../modals/CreateFileWizard/RobotTypeTile.tsx | 185 ----- .../CreateFileWizard/StagingAreaTile.tsx | 165 ----- .../modals/CreateFileWizard/WizardHeader.tsx | 91 --- .../__tests__/CreateFileWizard.test.tsx | 194 ----- .../__tests__/EquipmentOption.test.tsx | 150 ---- .../__tests__/GoBack.test.tsx | 29 - .../__tests__/MetadataTile.test.tsx | 75 -- .../__tests__/ModulesAndOtherTile.test.tsx | 128 ---- .../__tests__/PipetteTipsTile.test.tsx | 180 ----- .../__tests__/PipetteTypeTile.test.tsx | 111 --- .../__tests__/RobotTypeTile.test.tsx | 63 -- .../__tests__/StagingAreaTile.test.tsx | 79 -- .../CreateFileWizard/__tests__/utils.test.tsx | 241 ------- .../modals/CreateFileWizard/index.tsx | 490 ------------- .../modals/CreateFileWizard/types.ts | 24 - .../modals/CreateFileWizard/utils.ts | 188 ----- .../EditModulesModal/EditModules.module.css | 41 -- .../EditMultipleModulesModal.tsx | 326 --------- ...gneticModuleWarningModalContent.module.css | 25 - .../MagneticModuleWarningModalContent.tsx | 36 - .../modals/EditModulesModal/ModelDropdown.tsx | 36 - .../modals/EditModulesModal/SlotDropdown.tsx | 34 - .../__tests__/EditModulesModal.test.tsx | 153 ---- .../EditMultipleModulesModal.test.tsx | 100 --- .../modals/EditModulesModal/index.tsx | 459 ------------ .../StepChangesConfirmModal.module.css | 19 - .../StepChangesConfirmModal.tsx | 67 -- .../FilePipettesModal.module.css | 141 ---- .../modals/FilePipettesModal/ModuleFields.tsx | 89 --- .../FilePipettesModal/PipetteDiagram.tsx | 77 -- .../FilePipettesModal/PipetteFields.tsx | 201 ------ .../FilePipettesModal/TiprackOption.tsx | 101 --- .../FilePipettesModal/TiprackSelect.tsx | 62 -- .../__tests__/ModuleFields.test.tsx | 65 -- .../__tests__/PipetteFields.test.tsx | 5 - .../__tests__/TiprackOptions.test.tsx | 49 -- .../__tests__/TiprackSelect.test.tsx | 39 - .../__tests__/index.test.tsx | 5 - .../modals/FilePipettesModal/index.tsx | 549 -------------- .../FileUploadMessageModal.tsx | 72 -- .../__tests__/modalContents.test.tsx | 55 -- .../modalContents.module.css | 46 -- .../FileUploadMessageModal/modalContents.tsx | 220 ------ .../modals/FileUploadMessageModal/types.ts | 6 - .../LabwareUploadMessageModal.tsx | 154 ---- .../modals/MoreOptionsModal.module.css | 19 - .../components/modals/MoreOptionsModal.tsx | 82 --- .../AutoAddPauseUntilTempStepModal.test.tsx | 48 -- .../modals/__tests__/utils.test.tsx | 61 -- .../src/components/modals/modal.module.css | 107 --- .../src/components/modals/utils.ts | 58 -- .../components/modules/AdditionalItemsRow.tsx | 184 ----- .../src/components/modules/CrashInfoBox.tsx | 166 ----- .../components/modules/EditModulesCard.tsx | 204 ------ .../src/components/modules/FlexSlotMap.tsx | 101 --- .../src/components/modules/ModuleRow.tsx | 191 ----- .../components/modules/MultipleModulesRow.tsx | 126 ---- .../components/modules/StagingAreasModal.tsx | 239 ------- .../components/modules/StagingAreasRow.tsx | 126 ---- .../src/components/modules/TrashModal.tsx | 214 ------ .../__tests__/AdditionalItemsRow.test.tsx | 123 ---- .../modules/__tests__/CrashInfoBox.test.tsx | 47 -- .../__tests__/EditModulesCard.test.tsx | 5 - .../modules/__tests__/ModuleDiagram.test.tsx | 5 - .../modules/__tests__/ModuleRow.test.tsx | 5 - .../__tests__/MultipleModuleRow.test.tsx | 67 -- .../__tests__/StagingAreaModal.test.tsx | 50 -- .../__tests__/StagingAreasRow.test.tsx | 52 -- .../modules/__tests__/TrashModal.test.tsx | 112 --- .../modules/__tests__/utils.test.ts | 16 - .../src/components/modules/index.ts | 5 - .../src/components/modules/styles.module.css | 124 ---- .../src/components/modules/utils.ts | 5 - .../src/components/portals/TopPortal.tsx | 10 - .../steplist/AspirateDispenseHeader.tsx | 67 -- .../components/steplist/CommentStepItems.tsx | 23 - .../src/components/steplist/ContextMenu.tsx | 162 ----- .../steplist/DraggableStepItems.tsx | 165 ----- .../src/components/steplist/IngredPill.tsx | 43 -- .../steplist/LabwareTooltipContents.tsx | 15 - .../src/components/steplist/MixHeader.tsx | 42 -- .../components/steplist/ModuleStepItems.tsx | 94 --- .../components/steplist/MoveLabwareHeader.tsx | 107 --- .../steplist/MultiChannelSubstep.tsx | 106 --- .../steplist/MultiSelectToolbar/index.tsx | 242 ------- .../components/steplist/PauseStepItems.tsx | 49 -- .../components/steplist/PresavedStepItem.tsx | 46 -- .../components/steplist/SourceDestSubstep.tsx | 68 -- .../StartingDeckStateTerminalItem.tsx | 22 - .../components/steplist/StepItem.module.css | 350 --------- .../src/components/steplist/StepItem.tsx | 566 --------------- .../src/components/steplist/StepList.tsx | 78 -- .../src/components/steplist/SubstepRow.tsx | 181 ----- .../TerminalItem/TerminalItemLink.tsx | 24 - .../steplist/TerminalItem/index.tsx | 87 --- .../steplist/TerminalItem/styles.module.css | 3 - .../__tests__/ModuleStepItems.test.tsx | 5 - .../__tests__/MultiSelectToolbar.test.tsx | 5 - .../__tests__/StepItemContents.test.tsx | 5 - .../steplist/__tests__/StepList.test.tsx | 5 - .../steplist/__tests__/TerminalItem.test.tsx | 5 - .../src/components/steplist/index.ts | 6 - .../src/components/steplist/utils.ts | 18 - .../src/containers/ConnectedMainPanel.tsx | 58 -- .../src/containers/ConnectedNav.tsx | 80 --- .../src/containers/ConnectedSidebar.tsx | 30 - .../src/containers/ConnectedStepItem.tsx | 337 --------- .../src/containers/ConnectedTitleBar.tsx | 170 ----- protocol-designer/src/containers/NavTab.tsx | 67 -- .../src/containers/OutsideLinkTab.tsx | 54 -- .../src/containers/TabbedNavBar.tsx | 21 - .../src/containers/TitleBar.module.css | 22 - .../__tests__/ConnectedStepItem.test.tsx | 511 ------------- .../src/containers/navbar.module.css | 78 -- protocol-designer/src/css/reset.module.css | 17 - .../src/file-data/selectors/fileCreator.ts | 2 +- .../molecules/InputStepFormField/index.tsx | 2 +- protocol-designer/src/navigation/actions.ts | 9 - protocol-designer/src/navigation/index.ts | 3 +- .../src/navigation/reducers/index.ts | 18 +- protocol-designer/src/navigation/selectors.ts | 5 - protocol-designer/src/navigation/types.ts | 7 - .../AnnouncementModal.module.css | 81 --- .../AnnouncementModal/announcements.tsx | 48 +- .../organisms/AssignLiquidsModal/index.tsx | 6 +- .../AutoAddPauseUntilTempStepModal/index.tsx} | 6 +- .../src/organisms/BlockingHintModal/index.tsx | 2 +- .../ConfirmDeleteModal/index.tsx} | 6 +- .../ConfirmDeleteStagingAreaModal/index.tsx | 4 +- .../organisms/DefineLiquidsModal/index.tsx | 2 +- .../DefineLiquidsModal/swatchColors.tsx} | 0 .../src/organisms/DisabledScreen/index.tsx | 4 +- .../organisms/EditInstrumentsModal/index.tsx | 11 +- .../organisms/EditInstrumentsModal/utils.ts | 57 ++ .../src/organisms/EditNickNameModal/index.tsx | 4 +- .../EditProtocolMetadataModal/index.tsx | 15 +- .../Labware}/SelectableLabware.tsx | 10 +- .../Labware}/SelectionRect.tsx | 19 +- .../Labware}/SingleLabware.tsx | 2 +- .../src/organisms/Labware/WellTooltip.tsx | 268 +++++++ .../src/organisms/Labware/index.tsx | 0 .../LabwareOnDeck/index.tsx} | 7 +- .../LabwareOnDeck}/utils.ts | 17 +- .../organisms/MaterialsListModal/index.tsx | 4 +- .../Portal/index.tsx} | 0 .../src/organisms/RenameStepModal/index.tsx | 4 +- .../__tests__/SelectWellsModal.test.tsx | 4 +- .../src/organisms/SelectWellsModal/index.tsx | 6 +- .../TipPositionModal/ZTipPositionModal.tsx | 2 +- .../src/organisms/TipPositionModal/index.tsx | 2 +- .../src/organisms/WellOrderModal/index.tsx | 2 +- protocol-designer/src/organisms/index.ts | 5 + .../ModuleDiagram.tsx | 0 .../CreateNewProtocolWizard/SelectModules.tsx | 2 +- .../Designer/DeckSetup/DeckSetupDetails.tsx | 4 +- .../Designer/DeckSetup/FixtureRender.tsx | 2 +- .../DeckSetup/SelectedLabwareRender.tsx | 2 +- .../DeckSetup/SelectedModuleLabwareRender.tsx | 2 +- .../Designer}/DeckSetup/SlotWarning.tsx | 0 .../__tests__/SelectedHoveredItems.test.tsx | 4 +- .../pages/Designer/Offdeck/OffDeckDetails.tsx | 2 +- .../PipetteFields/TipWellSelectionField.tsx | 3 +- .../PipetteFields/WellSelectionField.tsx | 3 +- .../ThermocyclerTools/ProfileStepsSummary.tsx | 5 +- .../Designer/ProtocolSteps/StepForm/index.tsx | 8 +- .../ProtocolSteps/Timeline/AddStepButton.tsx | 13 +- .../Timeline/ConnectedStepInfo.tsx | 4 +- .../ProtocolSteps/Timeline/DraggableSteps.tsx | 7 +- .../ProtocolSteps/Timeline/StepContainer.tsx | 6 +- .../Timeline/TerminalItemStep.tsx | 2 +- .../Designer/ProtocolSteps}/types.ts | 3 +- .../ProtocolOverview/DeckThumbnailDetails.tsx | 2 +- .../ProtocolOverview/OffdeckThumbnail.tsx | 2 +- .../__tests__/DeckThumbnail.test.tsx | 4 +- .../src/pages/ProtocolOverview/index.tsx | 10 +- .../src/pages/ProtocolOverview/utils.ts | 143 ++++ protocol-designer/src/pipettes/pipetteData.ts | 33 +- .../src/step-forms/reducers/index.ts | 262 +------ .../src/step-forms/test/reducers.test.ts | 363 ---------- .../utils/createInitialProfileItems.ts | 19 - .../src/steplist/actions/actions.ts | 79 -- .../formLevel/stepFormToArgs/getDelayData.ts | 2 +- .../top-selectors/labware-locations/index.ts | 3 +- protocol-designer/src/tutorial/index.ts | 21 +- protocol-designer/src/tutorial/reducers.ts | 14 +- protocol-designer/src/tutorial/selectors.ts | 2 +- protocol-designer/src/ui/modules/selectors.ts | 68 -- .../__tests__/addAndSelectStep.test.ts | 46 ++ .../addAndSelectStepWithHints.test.ts | 239 ------- .../src/ui/steps/actions/actions.ts | 28 - .../src/ui/steps/actions/thunks/index.ts | 54 +- .../src/ui/steps/actions/types.ts | 16 - protocol-designer/src/ui/steps/reducers.ts | 15 - .../src/ui/steps/test/reducers.test.ts | 73 -- 407 files changed, 710 insertions(+), 34469 deletions(-) delete mode 100644 protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx delete mode 100644 protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx delete mode 100644 protocol-designer/src/components/BatchEditForm/FormColumn.tsx delete mode 100644 protocol-designer/src/components/BatchEditForm/NoBatchEditSharedSettings.tsx delete mode 100644 protocol-designer/src/components/BatchEditForm/__tests__/BatchEditMoveLiquid.test.tsx delete mode 100644 protocol-designer/src/components/BatchEditForm/__tests__/makeBatchEditFieldProps.test.ts delete mode 100644 protocol-designer/src/components/BatchEditForm/index.tsx delete mode 100644 protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts delete mode 100644 protocol-designer/src/components/ColorPicker/ColorPicker.module.css delete mode 100644 protocol-designer/src/components/ColorPicker/index.tsx delete mode 100644 protocol-designer/src/components/ComputingSpinner.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/DeckSetup.module.css delete mode 100644 protocol-designer/src/components/DeckSetup/FlexModuleTag.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/BlockedSlot.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/BrowseLabware.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabwareOffDeck.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareHighlight.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareOverlays.module.css delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/NameThisLabware.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/__tests__/SlotControls.test.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/LabwareOverlays/index.ts delete mode 100644 protocol-designer/src/components/DeckSetup/NullDeckState.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/SlotLabels.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/__tests__/DeckSetup.test.ts delete mode 100644 protocol-designer/src/components/DeckSetup/__tests__/FlexModuleTag.test.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/__tests__/Ot2ModuleTag.test.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/constants.ts delete mode 100644 protocol-designer/src/components/DeckSetup/index.tsx delete mode 100644 protocol-designer/src/components/DeckSetup/utils.ts delete mode 100644 protocol-designer/src/components/DeckSetupManager.tsx delete mode 100644 protocol-designer/src/components/EditModules.tsx delete mode 100644 protocol-designer/src/components/EditableTextField.tsx delete mode 100644 protocol-designer/src/components/FilePage.module.css delete mode 100644 protocol-designer/src/components/FilePage.tsx delete mode 100644 protocol-designer/src/components/FileSidebar/FileSidebar.module.css delete mode 100644 protocol-designer/src/components/FileSidebar/FileSidebar.tsx delete mode 100644 protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx delete mode 100644 protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedEntities.test.ts delete mode 100644 protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedStagingAreas.test.ts delete mode 100644 protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedTrash.test.ts delete mode 100644 protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts delete mode 100644 protocol-designer/src/components/FileSidebar/utils/getUnusedStagingAreas.ts delete mode 100644 protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts delete mode 100644 protocol-designer/src/components/FileSidebar/utils/index.ts delete mode 100644 protocol-designer/src/components/FormManager/index.tsx delete mode 100644 protocol-designer/src/components/Hints/hints.module.css delete mode 100644 protocol-designer/src/components/Hints/index.tsx delete mode 100644 protocol-designer/src/components/Hints/useBlockingHint.tsx delete mode 100644 protocol-designer/src/components/IngredientsList/IngredientsList.module.css delete mode 100644 protocol-designer/src/components/IngredientsList/LabwareDetailsCard/LabwareDetailsCard.tsx delete mode 100644 protocol-designer/src/components/IngredientsList/LabwareDetailsCard/labwareDetailsCard.module.css delete mode 100644 protocol-designer/src/components/IngredientsList/index.tsx delete mode 100644 protocol-designer/src/components/KnowledgeBaseLink/index.tsx delete mode 100644 protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx delete mode 100644 protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx delete mode 100644 protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx delete mode 100644 protocol-designer/src/components/LabwareSelectionModal/__tests__/LabwareSelectionModal.test.tsx delete mode 100644 protocol-designer/src/components/LabwareSelectionModal/styles.module.css delete mode 100644 protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.module.css delete mode 100644 protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.tsx delete mode 100644 protocol-designer/src/components/LiquidPlacementModal.module.css delete mode 100644 protocol-designer/src/components/LiquidPlacementModal.tsx delete mode 100644 protocol-designer/src/components/LiquidsPage/LiquidEditForm.module.css delete mode 100644 protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx delete mode 100644 protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.module.css delete mode 100644 protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.tsx delete mode 100644 protocol-designer/src/components/LiquidsPage/index.tsx delete mode 100644 protocol-designer/src/components/LiquidsSidebar/index.tsx delete mode 100644 protocol-designer/src/components/LiquidsSidebar/styles.module.css delete mode 100644 protocol-designer/src/components/OffDeckLabwareButton.tsx delete mode 100644 protocol-designer/src/components/OffDeckLabwareSlideout.tsx delete mode 100644 protocol-designer/src/components/PrereleaseModeIndicator.tsx delete mode 100644 protocol-designer/src/components/ProtocolEditor.module.css delete mode 100644 protocol-designer/src/components/SelectionRect.module.module.css delete mode 100644 protocol-designer/src/components/SettingsPage/FeatureFlagCard/FeatureFlagCard.tsx delete mode 100644 protocol-designer/src/components/SettingsPage/SettingsApp.tsx delete mode 100644 protocol-designer/src/components/SettingsPage/SettingsPage.module.css delete mode 100644 protocol-designer/src/components/SettingsPage/SettingsSidebar.tsx delete mode 100644 protocol-designer/src/components/SettingsPage/index.tsx delete mode 100644 protocol-designer/src/components/Slideout/index.tsx delete mode 100644 protocol-designer/src/components/StepCreationButton.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/ButtonRow/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/ButtonRow/styles.module.css delete mode 100644 protocol-designer/src/components/StepEditForm/StepEditForm.module.css delete mode 100644 protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/__tests__/utils.test.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/BlowoutZOffsetField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/DropTipField/__tests__/DropTipField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.module.css delete mode 100644 protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/LabwareField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/MixFields.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/MoveLabwareField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/PathField/getDisabledPathMap.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/PickUpTipField/_tests__/PickUpTipField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/PickUpTipField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/PipetteField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TextField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionAllViz.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionInput.module.css delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionModal.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionZAxisViz.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/ZTipPositionModal.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionModal.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/ZTipPositionModal.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/constants.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipPositionField/utils.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/__tests__/TipWellSelectionField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/TiprackField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderInput.module.css delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderModal.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionField.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.module.css delete mode 100644 protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/__tests__/BlowoutZOffsetField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/__tests__/DelayFields.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/__tests__/TiprackField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/__tests__/WellOrderField.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/fields/__tests__/makeSingleEditFieldProps.test.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/index.ts delete mode 100644 protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts delete mode 100644 protocol-designer/src/components/StepEditForm/forms/AspDispSection.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/CommentForm/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/HeaterShakerForm/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/MagnetForm.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/MixForm.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/MoveLabwareForm/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestFields.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/PauseForm.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/TemperatureForm.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/ProfileSettings.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/StateFields.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/ThermocyclerForm/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/__tests__/HeaterShakerForm.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/__tests__/MagnetForm.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/__tests__/MixForm.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/__tests__/SourceDestFields.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/__tests__/TemperatureForm.test.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/forms/index.ts delete mode 100644 protocol-designer/src/components/StepEditForm/index.tsx delete mode 100644 protocol-designer/src/components/StepEditForm/utils.ts delete mode 100644 protocol-designer/src/components/StepSelectionBanner/StepSelectionBannerComponent.tsx delete mode 100644 protocol-designer/src/components/StepSelectionBanner/__tests__/StepSelectionBanner.test.tsx delete mode 100644 protocol-designer/src/components/StepSelectionBanner/index.tsx delete mode 100644 protocol-designer/src/components/TitledListNotes.module.css delete mode 100644 protocol-designer/src/components/TitledListNotes.tsx delete mode 100644 protocol-designer/src/components/WellSelectionInstructions.module.css delete mode 100644 protocol-designer/src/components/WellSelectionInstructions.tsx delete mode 100644 protocol-designer/src/components/__tests__/EditModules.test.tsx delete mode 100644 protocol-designer/src/components/__tests__/FilePage.test.tsx delete mode 100644 protocol-designer/src/components/__tests__/StepCreationButton.test.tsx delete mode 100644 protocol-designer/src/components/alerts/Alerts.tsx delete mode 100644 protocol-designer/src/components/alerts/ErrorContents.tsx delete mode 100644 protocol-designer/src/components/alerts/PDAlert.tsx delete mode 100644 protocol-designer/src/components/alerts/WarningContents.tsx delete mode 100644 protocol-designer/src/components/alerts/alerts.module.css delete mode 100644 protocol-designer/src/components/alerts/types.ts delete mode 100644 protocol-designer/src/components/editableTextField.module.css delete mode 100644 protocol-designer/src/components/forms/forms.module.css delete mode 100644 protocol-designer/src/components/labware/BrowsableLabware.tsx delete mode 100644 protocol-designer/src/components/labware/BrowseLabwareModal.tsx delete mode 100644 protocol-designer/src/components/labware/WellTooltip.tsx delete mode 100644 protocol-designer/src/components/labware/__tests__/utils.test.ts delete mode 100644 protocol-designer/src/components/labware/index.ts delete mode 100644 protocol-designer/src/components/labware/labware.module.css delete mode 100644 protocol-designer/src/components/listButtons.module.css delete mode 100644 protocol-designer/src/components/lists/PDListItem.tsx delete mode 100644 protocol-designer/src/components/lists/PDTitledList.tsx delete mode 100644 protocol-designer/src/components/lists/TitledStepList.tsx delete mode 100644 protocol-designer/src/components/lists/__tests__/TitledStepList.test.tsx delete mode 100644 protocol-designer/src/components/lists/index.ts delete mode 100644 protocol-designer/src/components/lists/styles.module.css delete mode 100644 protocol-designer/src/components/modals/AutoAddPauseUntilTempStepModal.module.css delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/EquipmentOption.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/GoBack.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/HandleEnter.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/InputField.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/MetadataTile.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/PipetteTipsTile.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/PipetteTypeTile.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/RobotTypeTile.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/StagingAreaTile.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/WizardHeader.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/CreateFileWizard.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/EquipmentOption.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/GoBack.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/MetadataTile.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/ModulesAndOtherTile.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/PipetteTipsTile.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/PipetteTypeTile.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/RobotTypeTile.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/StagingAreaTile.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/__tests__/utils.test.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/index.tsx delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/types.ts delete mode 100644 protocol-designer/src/components/modals/CreateFileWizard/utils.ts delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/EditModules.module.css delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/EditMultipleModulesModal.tsx delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/MagneticModuleWarningModalContent.module.css delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/MagneticModuleWarningModalContent.tsx delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/ModelDropdown.tsx delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/SlotDropdown.tsx delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/__tests__/EditModulesModal.test.tsx delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/__tests__/EditMultipleModulesModal.test.tsx delete mode 100644 protocol-designer/src/components/modals/EditModulesModal/index.tsx delete mode 100644 protocol-designer/src/components/modals/EditPipettesModal/StepChangesConfirmModal.module.css delete mode 100644 protocol-designer/src/components/modals/EditPipettesModal/StepChangesConfirmModal.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/FilePipettesModal.module.css delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/ModuleFields.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/PipetteDiagram.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/PipetteFields.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/TiprackOption.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/TiprackSelect.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/__tests__/ModuleFields.test.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/__tests__/PipetteFields.test.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/__tests__/TiprackOptions.test.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/__tests__/TiprackSelect.test.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/__tests__/index.test.tsx delete mode 100644 protocol-designer/src/components/modals/FilePipettesModal/index.tsx delete mode 100644 protocol-designer/src/components/modals/FileUploadMessageModal/FileUploadMessageModal.tsx delete mode 100644 protocol-designer/src/components/modals/FileUploadMessageModal/__tests__/modalContents.test.tsx delete mode 100644 protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.module.css delete mode 100644 protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx delete mode 100644 protocol-designer/src/components/modals/FileUploadMessageModal/types.ts delete mode 100644 protocol-designer/src/components/modals/LabwareUploadMessageModal/LabwareUploadMessageModal.tsx delete mode 100644 protocol-designer/src/components/modals/MoreOptionsModal.module.css delete mode 100644 protocol-designer/src/components/modals/MoreOptionsModal.tsx delete mode 100644 protocol-designer/src/components/modals/__tests__/AutoAddPauseUntilTempStepModal.test.tsx delete mode 100644 protocol-designer/src/components/modals/__tests__/utils.test.tsx delete mode 100644 protocol-designer/src/components/modals/modal.module.css delete mode 100644 protocol-designer/src/components/modals/utils.ts delete mode 100644 protocol-designer/src/components/modules/AdditionalItemsRow.tsx delete mode 100644 protocol-designer/src/components/modules/CrashInfoBox.tsx delete mode 100644 protocol-designer/src/components/modules/EditModulesCard.tsx delete mode 100644 protocol-designer/src/components/modules/FlexSlotMap.tsx delete mode 100644 protocol-designer/src/components/modules/ModuleRow.tsx delete mode 100644 protocol-designer/src/components/modules/MultipleModulesRow.tsx delete mode 100644 protocol-designer/src/components/modules/StagingAreasModal.tsx delete mode 100644 protocol-designer/src/components/modules/StagingAreasRow.tsx delete mode 100644 protocol-designer/src/components/modules/TrashModal.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/AdditionalItemsRow.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/CrashInfoBox.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/EditModulesCard.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/ModuleDiagram.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/ModuleRow.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/MultipleModuleRow.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/StagingAreaModal.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/StagingAreasRow.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/TrashModal.test.tsx delete mode 100644 protocol-designer/src/components/modules/__tests__/utils.test.ts delete mode 100644 protocol-designer/src/components/modules/index.ts delete mode 100644 protocol-designer/src/components/modules/styles.module.css delete mode 100644 protocol-designer/src/components/modules/utils.ts delete mode 100644 protocol-designer/src/components/portals/TopPortal.tsx delete mode 100644 protocol-designer/src/components/steplist/AspirateDispenseHeader.tsx delete mode 100644 protocol-designer/src/components/steplist/CommentStepItems.tsx delete mode 100644 protocol-designer/src/components/steplist/ContextMenu.tsx delete mode 100644 protocol-designer/src/components/steplist/DraggableStepItems.tsx delete mode 100644 protocol-designer/src/components/steplist/IngredPill.tsx delete mode 100644 protocol-designer/src/components/steplist/LabwareTooltipContents.tsx delete mode 100644 protocol-designer/src/components/steplist/MixHeader.tsx delete mode 100644 protocol-designer/src/components/steplist/ModuleStepItems.tsx delete mode 100644 protocol-designer/src/components/steplist/MoveLabwareHeader.tsx delete mode 100644 protocol-designer/src/components/steplist/MultiChannelSubstep.tsx delete mode 100644 protocol-designer/src/components/steplist/MultiSelectToolbar/index.tsx delete mode 100644 protocol-designer/src/components/steplist/PauseStepItems.tsx delete mode 100644 protocol-designer/src/components/steplist/PresavedStepItem.tsx delete mode 100644 protocol-designer/src/components/steplist/SourceDestSubstep.tsx delete mode 100644 protocol-designer/src/components/steplist/StartingDeckStateTerminalItem.tsx delete mode 100644 protocol-designer/src/components/steplist/StepItem.module.css delete mode 100644 protocol-designer/src/components/steplist/StepItem.tsx delete mode 100644 protocol-designer/src/components/steplist/StepList.tsx delete mode 100644 protocol-designer/src/components/steplist/SubstepRow.tsx delete mode 100644 protocol-designer/src/components/steplist/TerminalItem/TerminalItemLink.tsx delete mode 100644 protocol-designer/src/components/steplist/TerminalItem/index.tsx delete mode 100644 protocol-designer/src/components/steplist/TerminalItem/styles.module.css delete mode 100644 protocol-designer/src/components/steplist/__tests__/ModuleStepItems.test.tsx delete mode 100644 protocol-designer/src/components/steplist/__tests__/MultiSelectToolbar.test.tsx delete mode 100644 protocol-designer/src/components/steplist/__tests__/StepItemContents.test.tsx delete mode 100644 protocol-designer/src/components/steplist/__tests__/StepList.test.tsx delete mode 100644 protocol-designer/src/components/steplist/__tests__/TerminalItem.test.tsx delete mode 100644 protocol-designer/src/components/steplist/index.ts delete mode 100644 protocol-designer/src/components/steplist/utils.ts delete mode 100644 protocol-designer/src/containers/ConnectedMainPanel.tsx delete mode 100644 protocol-designer/src/containers/ConnectedNav.tsx delete mode 100644 protocol-designer/src/containers/ConnectedSidebar.tsx delete mode 100644 protocol-designer/src/containers/ConnectedStepItem.tsx delete mode 100644 protocol-designer/src/containers/ConnectedTitleBar.tsx delete mode 100644 protocol-designer/src/containers/NavTab.tsx delete mode 100644 protocol-designer/src/containers/OutsideLinkTab.tsx delete mode 100644 protocol-designer/src/containers/TabbedNavBar.tsx delete mode 100644 protocol-designer/src/containers/TitleBar.module.css delete mode 100644 protocol-designer/src/containers/__tests__/ConnectedStepItem.test.tsx delete mode 100644 protocol-designer/src/containers/navbar.module.css delete mode 100644 protocol-designer/src/css/reset.module.css delete mode 100644 protocol-designer/src/navigation/types.ts delete mode 100644 protocol-designer/src/organisms/AnnouncementModal/AnnouncementModal.module.css rename protocol-designer/src/{components/modals/AutoAddPauseUntilTempStepModal.tsx => organisms/AutoAddPauseUntilTempStepModal/index.tsx} (92%) rename protocol-designer/src/{components/modals/ConfirmDeleteModal.tsx => organisms/ConfirmDeleteModal/index.tsx} (97%) rename protocol-designer/src/{components/swatchColors.ts => organisms/DefineLiquidsModal/swatchColors.tsx} (100%) rename protocol-designer/src/{components/labware => organisms/Labware}/SelectableLabware.tsx (97%) rename protocol-designer/src/{components => organisms/Labware}/SelectionRect.tsx (89%) rename protocol-designer/src/{components/labware => organisms/Labware}/SingleLabware.tsx (100%) create mode 100644 protocol-designer/src/organisms/Labware/WellTooltip.tsx create mode 100644 protocol-designer/src/organisms/Labware/index.tsx rename protocol-designer/src/{components/DeckSetup/LabwareOnDeck.tsx => organisms/LabwareOnDeck/index.tsx} (88%) rename protocol-designer/src/{components/labware => organisms/LabwareOnDeck}/utils.ts (65%) rename protocol-designer/src/{components/portals/MainPageModalPortal.tsx => organisms/Portal/index.tsx} (100%) rename protocol-designer/src/{components/modules => pages/CreateNewProtocolWizard}/ModuleDiagram.tsx (100%) rename protocol-designer/src/{components => pages/Designer}/DeckSetup/SlotWarning.tsx (100%) rename protocol-designer/src/{components/StepEditForm => pages/Designer/ProtocolSteps}/types.ts (91%) create mode 100644 protocol-designer/src/pages/ProtocolOverview/utils.ts delete mode 100644 protocol-designer/src/step-forms/utils/createInitialProfileItems.ts create mode 100644 protocol-designer/src/ui/steps/actions/__tests__/addAndSelectStep.test.ts delete mode 100644 protocol-designer/src/ui/steps/actions/__tests__/addAndSelectStepWithHints.test.ts diff --git a/protocol-designer/src/ProtocolEditor.tsx b/protocol-designer/src/ProtocolEditor.tsx index 244d9d264e0..040a094c987 100644 --- a/protocol-designer/src/ProtocolEditor.tsx +++ b/protocol-designer/src/ProtocolEditor.tsx @@ -7,29 +7,25 @@ import { Flex, OVERFLOW_AUTO, } from '@opentrons/components' -import { PortalRoot as TopPortalRoot } from './components/portals/TopPortal' import { ProtocolRoutes } from './ProtocolRoutes' +import { PortalRoot } from './organisms' -function ProtocolEditorComponent(): JSX.Element { +export function ProtocolEditor(): JSX.Element { return ( - - - - - - - - + + + + + + + + + + ) } - -export const ProtocolEditor = (): JSX.Element => ( - - - -) diff --git a/protocol-designer/src/assets/localization/en/alert.json b/protocol-designer/src/assets/localization/en/alert.json index 2812b58ffcb..21644512e7a 100644 --- a/protocol-designer/src/assets/localization/en/alert.json +++ b/protocol-designer/src/assets/localization/en/alert.json @@ -29,36 +29,6 @@ }, "hint": { "dont_show_again": "Don't show me again", - "add_liquids_and_labware": { - "title": "Your labware has no liquids in it", - "summary": "In {{deck_setup_step}}, hover on labware to add liquids.", - "step1": "Add liquids", - "step2": "Watch liquids move as you build your protocol" - }, - "deck_setup_explanation": { - "title": "Setting up your protocol", - "body1": "If you look to your left you will see the Protocol Timeline, and that the \"Starting Deck State\" step is listed first.", - "body2": "Before you can build a protocol that tells the robot how to move liquid around, you'll need to tell the Protocol Designer where all of your labware is on the deck, and which liquids start in which wells. As you add steps to your protocol the Protocol Designer will move liquid from the starting positions you defined in the Starting Deck State to new positions.", - "body3": "Hover on empty slots in the deck to add labware. Hover on labware to add liquid to the wells." - }, - "custom_labware_with_modules": { - "title": "Cannot verify compatibility of custom labware", - "body": "The Protocol Designer cannot confirm whether or not custom labware is compatible with any module. Proceed if you are confident your custom labware will fit." - }, - "module_without_labware": { - "title": "Missing labware", - "body": "Your module has no labware on it. We recommend you add labware before proceeding." - }, - "multiple_modules_without_labware": { - "title": "Missing labware", - "body": "One or more module has no labware on it. We recommend you add labware before proceeding" - }, - "export_v8_1_protocol_7_3": { - "title": "Robot and app update may be required", - "body1": "This protocol can only run on app and robot server version", - "body2": "7.3.0 or higher", - "body3": ". Please ensure your robot is updated to the correct version." - }, "unused_hardware": { "title": "Protocol has unused hardware" }, @@ -76,25 +46,6 @@ "li1": "If the Thermocycler lid is closed it may take a very long time to reach a cooler temperature.", "li2": "If the room temperature in your lab is higher than the temperature you have defined, the lid will never reach it. This will stall your protocol indefinitely." }, - "protocol_can_enter_batch_edit": { - "title": "Editing multiple steps", - "body1": "Now that your protocol has multiple steps, you can try using Protocol Designer’s batch edit features.", - - "body2": "To select multiple steps:", - "li1a": "Hold ", - "strong_li1": "SHIFT + Click ", - "li1b": "to select a range of steps", - - "li2a": "Use ", - "strong_li2": "CTRL + Click (PC) or ⌘ + Click (Mac) ", - "li2b": "to select a single additional step.", - - "body3a": "To delete or duplicate multiple steps:", - "body3b": "Use the control bar at the top of the Protocol Timeline.", - - "body4a": "To batch edit Transfer or Mix advanced settings:", - "body4b": "Only include Transfer or Mix steps in your selection." - }, "waste_chute_warning": { "title": "Disposing labware", "body1": "Moving labware to the Waste Chute permanently discards it. You can't use this labware in later steps. During a protocol run, the labware will be dropped in the chute and become irretrievable." diff --git a/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx b/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx deleted file mode 100644 index d7bc4c2f32d..00000000000 --- a/protocol-designer/src/components/BatchEditForm/BatchEditMix.tsx +++ /dev/null @@ -1,213 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { - Box, - DeprecatedPrimaryButton, - OutlineButton, - LegacyTooltip, - useHoverTooltip, - TOOLTIP_TOP, - TOOLTIP_FIXED, -} from '@opentrons/components' -import { - BlowoutLocationField, - CheckboxRowField, - DelayFields, - FlowRateField, - TipPositionField, - WellOrderField, -} from '../StepEditForm/fields' -import { - getBlowoutLocationOptionsForForm, - getLabwareFieldForPositioningField, -} from '../StepEditForm/utils' -import { FormColumn } from './FormColumn' -// TODO(IL, 2021-03-01): refactor these fragmented style rules (see #7402) -import formStyles from '../forms/forms.module.css' -import styles from '../StepEditForm/StepEditForm.module.css' -import buttonStyles from '../StepEditForm/ButtonRow/styles.module.css' -import type { FieldPropsByName } from '../StepEditForm/types' -import type { WellOrderOption } from '../../form-types' - -interface BatchEditMixProps { - batchEditFormHasChanges: boolean - propsForFields: FieldPropsByName - handleCancel: () => unknown - handleSave: () => unknown -} -export const BatchEditMix = (props: BatchEditMixProps): JSX.Element => { - const { propsForFields, handleCancel, handleSave } = props - const { t } = useTranslation(['form', 'button', 'tooltip']) - const [cancelButtonTargetProps, cancelButtonTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - strategy: TOOLTIP_FIXED, - }) - const [saveButtonTargetProps, saveButtonTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - strategy: TOOLTIP_FIXED, - }) - const disableSave = !props.batchEditFormHasChanges - - const getLabwareIdForPositioningField = (name: string): string | null => { - const labwareField = getLabwareFieldForPositioningField(name) - const labwareId = propsForFields[labwareField]?.value - return labwareId ? String(labwareId) : null - } - - const getPipetteIdForForm = (): string | null => { - const pipetteId = propsForFields.pipette?.value - return pipetteId ? String(pipetteId) : null - } - - const getWellOrderFieldValue = ( - name: string - ): WellOrderOption | null | undefined => { - const val = propsForFields[name]?.value - if (val === 'l2r' || val === 'r2l' || val === 't2b' || val === 'b2t') { - return val - } else { - return null - } - } - - return ( -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {t('button:discard_changes')} - - - {t('tooltip:cancel_batch_edit')} - - - - - - {t('button:save')} - - - {t( - `tooltip:save_batch_edit.${ - disableSave ? 'disabled' : 'enabled' - }` - )} - - - - -
- ) -} diff --git a/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx b/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx deleted file mode 100644 index 7a0363b6e8c..00000000000 --- a/protocol-designer/src/components/BatchEditForm/BatchEditMoveLiquid.tsx +++ /dev/null @@ -1,232 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { - Box, - DeprecatedPrimaryButton, - OutlineButton, - LegacyTooltip, - useHoverTooltip, - TOOLTIP_TOP, - TOOLTIP_FIXED, -} from '@opentrons/components' -import { - BlowoutLocationField, - CheckboxRowField, - DelayFields, - FlowRateField, - TipPositionField, - WellOrderField, -} from '../StepEditForm/fields' -import { MixFields } from '../StepEditForm/fields/MixFields' -import { - getBlowoutLocationOptionsForForm, - getLabwareFieldForPositioningField, -} from '../StepEditForm/utils' -import { FormColumn } from './FormColumn' -// TODO(IL, 2021-03-01): refactor these fragmented style rules (see #7402) -import formStyles from '../forms/forms.module.css' -import styles from '../StepEditForm/StepEditForm.module.css' -import buttonStyles from '../StepEditForm/ButtonRow/styles.module.css' -import type { FieldPropsByName } from '../StepEditForm/types' -import type { WellOrderOption } from '../../form-types' - -const SourceDestBatchEditMoveLiquidFields = (props: { - prefix: 'aspirate' | 'dispense' - propsForFields: FieldPropsByName -}): JSX.Element => { - const { prefix, propsForFields } = props - const { t } = useTranslation('form') - const addFieldNamePrefix = (name: string): string => `${prefix}_${name}` - - const getLabwareIdForPositioningField = (name: string): string | null => { - const labwareField = getLabwareFieldForPositioningField(name) - const labwareId = propsForFields[labwareField]?.value - return labwareId ? String(labwareId) : null - } - - const getPipetteIdForForm = (): string | null => { - const pipetteId = propsForFields.pipette?.value - return pipetteId ? String(pipetteId) : null - } - - const getWellOrderFieldValue = ( - name: string - ): WellOrderOption | null | undefined => { - const val = propsForFields[name]?.value - if (val === 'l2r' || val === 'r2l' || val === 't2b' || val === 'b2t') { - return val - } else { - return null - } - } - - return ( - - - - - - - - {prefix === 'aspirate' && ( - - )} - - - - - - - {prefix === 'dispense' && ( - - - - )} - - ) -} - -export interface BatchEditMoveLiquidProps { - batchEditFormHasChanges: boolean - propsForFields: FieldPropsByName - handleCancel: () => void - handleSave: () => void -} -export const BatchEditMoveLiquid = ( - props: BatchEditMoveLiquidProps -): JSX.Element => { - const { t } = useTranslation(['button', 'tooltip']) - const { propsForFields, handleCancel, handleSave } = props - const [cancelButtonTargetProps, cancelButtonTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - strategy: TOOLTIP_FIXED, - }) - const [saveButtonTargetProps, saveButtonTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - strategy: TOOLTIP_FIXED, - }) - const disableSave = !props.batchEditFormHasChanges - - return ( -
- - - - - - - - - - {t('discard_changes')} - - - {t('tooltip:cancel_batch_edit')} - - - - - - {t('save')} - - - {t( - `tooltip:save_batch_edit.${ - disableSave ? 'disabled' : 'enabled' - }` - )} - - - - -
- ) -} diff --git a/protocol-designer/src/components/BatchEditForm/FormColumn.tsx b/protocol-designer/src/components/BatchEditForm/FormColumn.tsx deleted file mode 100644 index 684c7654fbb..00000000000 --- a/protocol-designer/src/components/BatchEditForm/FormColumn.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type * as React from 'react' -import { Box } from '@opentrons/components' -// TODO(IL, 2021-03-01): refactor these fragmented style rules (see #7402) -import styles from '../StepEditForm/StepEditForm.module.css' - -export interface FormColumnProps { - children?: React.ReactNode - sectionHeader?: React.ReactNode -} -export const FormColumn = (props: FormColumnProps): JSX.Element => { - return ( - - - - {props.sectionHeader} - - - {props.children} - - ) -} diff --git a/protocol-designer/src/components/BatchEditForm/NoBatchEditSharedSettings.tsx b/protocol-designer/src/components/BatchEditForm/NoBatchEditSharedSettings.tsx deleted file mode 100644 index 326733c6192..00000000000 --- a/protocol-designer/src/components/BatchEditForm/NoBatchEditSharedSettings.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { - Flex, - Text, - ALIGN_CENTER, - C_DARK_GRAY, - JUSTIFY_CENTER, - SPACING_3, -} from '@opentrons/components' - -export const NoBatchEditSharedSettings = (): JSX.Element => { - const { t } = useTranslation('application') - return ( - - - {t('no_batch_edit_shared_settings')} - - - ) -} diff --git a/protocol-designer/src/components/BatchEditForm/__tests__/BatchEditMoveLiquid.test.tsx b/protocol-designer/src/components/BatchEditForm/__tests__/BatchEditMoveLiquid.test.tsx deleted file mode 100644 index 2c68c18480a..00000000000 --- a/protocol-designer/src/components/BatchEditForm/__tests__/BatchEditMoveLiquid.test.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { describe, it } from 'vitest' - -describe('BatchEditMoveLiquid', () => { - it.todo('replace deprecated enzyme test') -}) diff --git a/protocol-designer/src/components/BatchEditForm/__tests__/makeBatchEditFieldProps.test.ts b/protocol-designer/src/components/BatchEditForm/__tests__/makeBatchEditFieldProps.test.ts deleted file mode 100644 index e85878ec81e..00000000000 --- a/protocol-designer/src/components/BatchEditForm/__tests__/makeBatchEditFieldProps.test.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { vi, describe, expect, it, beforeEach, afterEach } from 'vitest' -import noop from 'lodash/noop' -import { makeBatchEditFieldProps } from '../makeBatchEditFieldProps' -import * as stepEditFormUtils from '../../StepEditForm/utils' - -const getFieldDefaultTooltipSpy = vi.spyOn( - stepEditFormUtils, - 'getFieldDefaultTooltip' -) - -const getIndeterminateTooltipSpy = vi.spyOn( - stepEditFormUtils, - 'getFieldIndeterminateTooltip' -) - -vi.mock('react-i18next', () => ({ - useTranslation: vi.fn().mockReturnValue({ - t: (key: string) => key, - }), -})) - -const tMock = (key: string) => key - -beforeEach(() => { - getFieldDefaultTooltipSpy.mockImplementation(name => `tooltip for ${name}`) - getIndeterminateTooltipSpy.mockImplementation(name => `tooltip for ${name}`) -}) - -afterEach(() => { - vi.restoreAllMocks() -}) - -describe('makeBatchEditFieldProps', () => { - it('should create correct props for all fields with the given MultiselectFieldValues obj', () => { - const fieldValues = { - aspirate_flowRate: { - isIndeterminate: false, - value: '1.2', - }, - } - const handleChangeFormInput: any = vi.fn() - - const disabledFields = {} - - const result = makeBatchEditFieldProps( - fieldValues, - disabledFields, - handleChangeFormInput, - tMock - ) - - expect(result).toEqual({ - aspirate_flowRate: { - disabled: false, - errorToShow: null, - isIndeterminate: false, - name: 'aspirate_flowRate', - onFieldBlur: noop, - onFieldFocus: noop, - updateValue: expect.anything(), - value: '1.2', - tooltipContent: 'tooltip for aspirate_flowRate', - }, - }) - - result.aspirate_flowRate.updateValue('42') - expect(handleChangeFormInput).toHaveBeenCalledWith( - 'aspirate_flowRate', - '42' - ) - }) - - it('should make field disabled if it is represented in disabledFields, and show disabled explanation tooltip', () => { - const fieldValues = { - aspirate_flowRate: { - value: '1.2', - isIndeterminate: false, - }, - } - const handleChangeFormInput: any = vi.fn() - - const disabledFields = { - aspirate_flowRate: 'Disabled explanation text here', - } - - const result = makeBatchEditFieldProps( - fieldValues, - disabledFields, - handleChangeFormInput, - tMock - ) - - expect(result.aspirate_flowRate.disabled).toBe(true) - expect(result.aspirate_flowRate.tooltipContent).toBe( - 'Disabled explanation text here' - ) - }) - - it('should make field indeterminate if it is indeterminate', () => { - const fieldValues = { - aspirate_flowRate: { - value: '1.2', - isIndeterminate: true, - }, - } - const handleChangeFormInput: any = vi.fn() - - const disabledFields = {} - - const result = makeBatchEditFieldProps( - fieldValues, - disabledFields, - handleChangeFormInput, - tMock - ) - - expect(result.aspirate_flowRate.isIndeterminate).toBe(true) - }) - - it('should show indeterminate tooltip content for indeterminate checkboxes', () => { - const fieldValues = { - preWetTip: { - value: 'mixed', - isIndeterminate: true, - }, - } - const handleChangeFormInput: any = vi.fn() - - const disabledFields = {} - - const result = makeBatchEditFieldProps( - fieldValues, - disabledFields, - handleChangeFormInput, - tMock - ) - - expect(result.preWetTip.isIndeterminate).toBe(true) - }) - - it('should override indeterminate tooltip content if field is also disabled', () => { - const fieldValues = { - preWetTip: { - value: 'mixed', - isIndeterminate: true, - }, - } - const handleChangeFormInput: any = vi.fn() - - const disabledFields = { - preWetTip: 'Disabled explanation text here', - } - - const result = makeBatchEditFieldProps( - fieldValues, - disabledFields, - handleChangeFormInput, - tMock - ) - - expect(result.preWetTip.isIndeterminate).toBe(true) - expect(result.preWetTip.disabled).toBe(true) - expect(result.preWetTip.tooltipContent).toBe( - 'Disabled explanation text here' - ) - }) -}) diff --git a/protocol-designer/src/components/BatchEditForm/index.tsx b/protocol-designer/src/components/BatchEditForm/index.tsx deleted file mode 100644 index 9d77fd5f6c3..00000000000 --- a/protocol-designer/src/components/BatchEditForm/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { useDispatch, useSelector } from 'react-redux' -import { makeBatchEditFieldProps } from './makeBatchEditFieldProps' -import { NoBatchEditSharedSettings } from './NoBatchEditSharedSettings' -import { - getBatchEditSelectedStepTypes, - getMultiSelectDisabledFields, - getMultiSelectFieldValues, - getMultiSelectItemIds, -} from '../../ui/steps/selectors' -import { getBatchEditFormHasUnsavedChanges } from '../../step-forms/selectors' -import { - changeBatchEditField, - resetBatchEditFieldChanges, - saveStepFormsMulti, -} from '../../step-forms/actions' -import { maskField } from '../../steplist/fieldLevel' -import { BatchEditMoveLiquid } from './BatchEditMoveLiquid' -import { BatchEditMix } from './BatchEditMix' -import type { StepFieldName } from '../../steplist/fieldLevel' -import type { ThunkDispatch } from 'redux-thunk' -import type { BaseState } from '../../types' - -export const BatchEditForm = (): JSX.Element => { - const { t } = useTranslation('tooltip') - const dispatch = useDispatch>() - const fieldValues = useSelector(getMultiSelectFieldValues) - const stepTypes = useSelector(getBatchEditSelectedStepTypes) - const disabledFields = useSelector(getMultiSelectDisabledFields) - const selectedStepIds = useSelector(getMultiSelectItemIds) - const batchEditFormHasChanges = useSelector(getBatchEditFormHasUnsavedChanges) - - const handleChangeFormInput = (name: StepFieldName, value: unknown): void => { - const maskedValue = maskField(name, value) - dispatch(changeBatchEditField({ [name]: maskedValue })) - } - - const handleSave = (): void => { - dispatch(saveStepFormsMulti(selectedStepIds)) - } - - const handleCancel = (): void => { - dispatch(resetBatchEditFieldChanges()) - } - - const stepType = stepTypes.length === 1 ? stepTypes[0] : null - - if (stepType !== null && fieldValues !== null && disabledFields !== null) { - // Valid state for using makeBatchEditFieldProps - const propsForFields = makeBatchEditFieldProps( - fieldValues, - disabledFields, - handleChangeFormInput, - t - ) - switch (stepType) { - case 'moveLiquid': - return ( - - ) - case 'mix': - return ( - - ) - } - } - - return -} diff --git a/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts b/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts deleted file mode 100644 index f84371bf7fd..00000000000 --- a/protocol-designer/src/components/BatchEditForm/makeBatchEditFieldProps.ts +++ /dev/null @@ -1,48 +0,0 @@ -import noop from 'lodash/noop' -import { - getFieldDefaultTooltip, - getFieldIndeterminateTooltip, -} from '../StepEditForm/utils' -import type { - DisabledFields, - MultiselectFieldValues, -} from '../../ui/steps/selectors' -import type { FieldPropsByName } from '../StepEditForm/types' -import type { StepFieldName } from '../../form-types' -export const makeBatchEditFieldProps = ( - fieldValues: MultiselectFieldValues, - disabledFields: DisabledFields, - handleChangeFormInput: (name: string, value: unknown) => void, - t: any -): FieldPropsByName => { - const fieldNames: StepFieldName[] = Object.keys(fieldValues) - return fieldNames.reduce((acc, name) => { - const defaultTooltip = getFieldDefaultTooltip(name, t) - const isIndeterminate = fieldValues[name].isIndeterminate - const indeterminateTooltip = getFieldIndeterminateTooltip(name, t) - let tooltipContent = defaultTooltip // Default to the default content (or blank) - - if (isIndeterminate && indeterminateTooltip) { - tooltipContent = indeterminateTooltip - } - - if (name in disabledFields) { - tooltipContent = disabledFields[name] // Use disabled content if field is disabled, override indeterminate tooltip if applicable - } - - acc[name] = { - disabled: name in disabledFields, - name, - updateValue: value => { - handleChangeFormInput(name, value) - }, - value: fieldValues[name].value, - errorToShow: null, - onFieldBlur: noop, - onFieldFocus: noop, - isIndeterminate: isIndeterminate, - tooltipContent: tooltipContent, - } - return acc - }, {}) -} diff --git a/protocol-designer/src/components/ColorPicker/ColorPicker.module.css b/protocol-designer/src/components/ColorPicker/ColorPicker.module.css deleted file mode 100644 index 61e30efd289..00000000000 --- a/protocol-designer/src/components/ColorPicker/ColorPicker.module.css +++ /dev/null @@ -1,29 +0,0 @@ -.swatch { - display: inline-block; - cursor: pointer; -} - -.swatch:hover, -.swatch_enabled { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.41); -} - -.color { - width: 59px; - height: 24px; - border-radius: 2px; -} - -.popover { - margin-top: 15px; - position: absolute; - right: 24px; -} - -.cover { - position: fixed; - top: 10px; - right: 0; - bottom: 0; - left: 0; -} diff --git a/protocol-designer/src/components/ColorPicker/index.tsx b/protocol-designer/src/components/ColorPicker/index.tsx deleted file mode 100644 index 7b8ee199ab2..00000000000 --- a/protocol-designer/src/components/ColorPicker/index.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useState } from 'react' -import cx from 'classnames' -import { TwitterPicker } from 'react-color' -import { DEFAULT_LIQUID_COLORS } from '@opentrons/shared-data' -import type { ColorResult } from 'react-color' - -import styles from './ColorPicker.module.css' - -interface ColorPickerProps { - value: string - onChange: (hex: ColorResult['hex']) => void -} - -export function ColorPicker(props: ColorPickerProps): JSX.Element { - const { value, onChange } = props - const [showColorPicker, setShowColorPicker] = useState(false) - - return ( - <> -
-
{ - setShowColorPicker(showColorPicker => !showColorPicker) - }} - > -
-
- {showColorPicker ? ( -
-
{ - setShowColorPicker(false) - }} - /> - { - onChange(color.hex) - }} - /> -
- ) : null} -
- - ) -} diff --git a/protocol-designer/src/components/ComputingSpinner.tsx b/protocol-designer/src/components/ComputingSpinner.tsx deleted file mode 100644 index 71c8b527f91..00000000000 --- a/protocol-designer/src/components/ComputingSpinner.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useSelector } from 'react-redux' -import { css } from 'styled-components' -import { Box, CURSOR_WAIT, POSITION_FIXED } from '@opentrons/components' -import * as fileDataSelectors from '../file-data/selectors' - -const waitCursorStyle = css` - cursor: ${CURSOR_WAIT}; -` - -export const ComputingSpinner = (): JSX.Element | null => { - const showSpinner = useSelector(fileDataSelectors.getTimelineIsBeingComputed) - - return showSpinner ? ( - - ) : null -} diff --git a/protocol-designer/src/components/DeckSetup/DeckSetup.module.css b/protocol-designer/src/components/DeckSetup/DeckSetup.module.css deleted file mode 100644 index 2ecfd7e0a58..00000000000 --- a/protocol-designer/src/components/DeckSetup/DeckSetup.module.css +++ /dev/null @@ -1,22 +0,0 @@ -@import '@opentrons/components/styles'; - -.deck_wrapper { - flex: 1; - margin-top: 1rem; -} - -.deck_header { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ - text-align: center; - padding: 1rem 0; -} - -.deck_row { - display: flex; - justify-content: center; - align-items: stretch; - max-height: calc(100vh - 3rem); - overflow-y: hidden; -} diff --git a/protocol-designer/src/components/DeckSetup/FlexModuleTag.tsx b/protocol-designer/src/components/DeckSetup/FlexModuleTag.tsx deleted file mode 100644 index 9c5ba9fc7c5..00000000000 --- a/protocol-designer/src/components/DeckSetup/FlexModuleTag.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { - RobotCoordsForeignDiv, - Text, - COLORS, - SPACING, -} from '@opentrons/components' -import type { ModuleDefinition } from '@opentrons/shared-data' - -interface FlexModuleTagProps { - dimensions: ModuleDefinition['dimensions'] - displayName: string -} - -export function FlexModuleTag(props: FlexModuleTagProps): JSX.Element { - const { dimensions, displayName } = props - return ( - - - {displayName} - - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx deleted file mode 100644 index 3be204f8fd7..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/AdapterControls.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import { useRef } from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { useDrop } from 'react-dnd' -import cx from 'classnames' -import noop from 'lodash/noop' -import { Icon, RobotCoordsForeignDiv } from '@opentrons/components' -import { DND_TYPES } from '../../../constants' -import { - getAdapterLabwareIsAMatch, - getLabwareIsCustom, -} from '../../../utils/labwareModuleCompatibility' -import { - deleteContainer, - moveDeckItem, - openAddLabwareModal, -} from '../../../labware-ingred/actions' -import { selectors as labwareDefSelectors } from '../../../labware-defs' -import { START_TERMINAL_ITEM_ID } from '../../../steplist' -import { BlockedSlot } from './BlockedSlot' - -import type { DropTargetMonitor } from 'react-dnd' -import type { CoordinateTuple, Dimensions } from '@opentrons/shared-data' -import type { TerminalItemId } from '../../../steplist' -import type { LabwareOnDeck } from '../../../step-forms' - -import styles from './LabwareOverlays.module.css' - -interface AdapterControlsProps { - slotPosition: CoordinateTuple - slotBoundingBox: Dimensions - // labwareId is the adapter's labwareId - labwareId: string - allLabware: LabwareOnDeck[] - onDeck: boolean - selectedTerminalItemId?: TerminalItemId | null - handleDragHover?: () => void -} - -interface DroppedItem { - labwareOnDeck: LabwareOnDeck -} - -export const AdapterControls = ( - props: AdapterControlsProps -): JSX.Element | null => { - const { - slotPosition, - slotBoundingBox, - selectedTerminalItemId, - labwareId, - onDeck, - handleDragHover, - allLabware, - } = props - const customLabwareDefs = useSelector( - labwareDefSelectors.getCustomLabwareDefsByURI - ) - const ref = useRef(null) - const dispatch = useDispatch() - - const adapterName = - allLabware.find(labware => labware.id === labwareId)?.def.metadata - .displayName ?? '' - - const [{ itemType, draggedItem, isOver }, drop] = useDrop( - () => ({ - accept: DND_TYPES.LABWARE, - canDrop: (item: DroppedItem) => { - const draggedDef = item.labwareOnDeck?.def - console.assert( - draggedDef, - 'no labware def of dragged item, expected it on drop' - ) - - if (draggedDef != null) { - const isCustomLabware = getLabwareIsCustom( - customLabwareDefs, - item.labwareOnDeck - ) - return ( - getAdapterLabwareIsAMatch( - labwareId, - allLabware, - draggedDef.parameters.loadName - ) || isCustomLabware - ) - } - return true - }, - drop: (item: DroppedItem) => { - const droppedLabware = item - if (droppedLabware.labwareOnDeck != null) { - const droppedSlot = droppedLabware.labwareOnDeck.slot - dispatch(moveDeckItem(droppedSlot, labwareId)) - } - }, - hover: () => { - if (handleDragHover != null) { - handleDragHover() - } - }, - collect: (monitor: DropTargetMonitor) => ({ - itemType: monitor.getItemType(), - isOver: !!monitor.isOver(), - draggedItem: monitor.getItem() as DroppedItem, - }), - }), - [] - ) - - if ( - selectedTerminalItemId !== START_TERMINAL_ITEM_ID || - (itemType !== DND_TYPES.LABWARE && itemType !== null) - ) - return null - const draggedDef = draggedItem?.labwareOnDeck?.def - const isCustomLabware = draggedItem - ? getLabwareIsCustom(customLabwareDefs, draggedItem.labwareOnDeck) - : false - - let slotBlocked: string | null = null - - if (isOver && draggedDef != null && isCustomLabware) { - slotBlocked = 'Custom Labware incompatible with this adapter' - } else if ( - isOver && - draggedDef != null && - !getAdapterLabwareIsAMatch( - labwareId, - allLabware, - draggedDef.parameters.loadName - ) - ) { - slotBlocked = 'Labware incompatible with this adapter' - } - - drop(ref) - - return ( - - {slotBlocked ? ( - - ) : ( - -
dispatch(openAddLabwareModal({ slot: labwareId }))} - > - {!isOver && } - {isOver ? 'Place Here' : 'Add Labware'} - - { - window.confirm( - `"Are you sure you want to remove this ${adapterName}?` - ) && dispatch(deleteContainer({ labwareId: labwareId })) - }} - > - {!isOver && } - {'Delete'} - - - )} - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/BlockedSlot.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/BlockedSlot.tsx deleted file mode 100644 index aabb977e2e0..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/BlockedSlot.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { RobotCoordsForeignDiv } from '@opentrons/components' -import styles from './LabwareOverlays.module.css' - -type BlockedSlotMessage = - | 'MODULE_INCOMPATIBLE_SINGLE_LABWARE' - | 'MODULE_INCOMPATIBLE_LABWARE_SWAP' - | 'LABWARE_INCOMPATIBLE_WITH_ADAPTER' - -interface Props { - x: number - y: number - width: number - height: number - message: BlockedSlotMessage -} - -export const BlockedSlot = (props: Props): JSX.Element => { - const { t } = useTranslation('deck') - const { x, y, width, height, message } = props - return ( - - - - {t(`blocked_slot.${message}`)} - - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/BrowseLabware.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/BrowseLabware.tsx deleted file mode 100644 index 06650910a53..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/BrowseLabware.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { useDispatch } from 'react-redux' -import { Icon } from '@opentrons/components' -import { drillDownOnLabware } from '../../../labware-ingred/actions' -import { resetScrollElements } from '../../../ui/steps/utils' -import styles from './LabwareOverlays.module.css' - -import type { LabwareEntity } from '@opentrons/step-generation' -import type { LabwareOnDeck } from '../../../step-forms' - -interface Props { - labwareOnDeck: LabwareOnDeck | LabwareEntity -} - -export function BrowseLabware(props: Props): JSX.Element | null { - const { t } = useTranslation('deck') - const { labwareOnDeck } = props - const dispatch = useDispatch() - - const drillDown = (): void => { - resetScrollElements() - dispatch(drillDownOnLabware(labwareOnDeck.id)) - } - - if ( - props.labwareOnDeck.def.parameters.isTiprack || - props.labwareOnDeck.def.allowedRoles?.includes('adapter') - ) - return null - return ( - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx deleted file mode 100644 index 3c3e577ecf0..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabware.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useDispatch, useSelector } from 'react-redux' -import cx from 'classnames' -import { Icon } from '@opentrons/components' -import { getLabwareDisplayName } from '@opentrons/shared-data' -import { useDrag, useDrop } from 'react-dnd' -import { NameThisLabware } from './NameThisLabware' -import { DND_TYPES } from '../../../constants' -import { - deleteContainer, - duplicateLabware, - moveDeckItem, - openIngredientSelector, -} from '../../../labware-ingred/actions' -import { selectors as labwareIngredSelectors } from '../../../labware-ingred/selectors' -import styles from './LabwareOverlays.module.css' -import type { DropTargetMonitor } from 'react-dnd' -import type { ThunkDispatch } from '../../../types' -import type { LabwareOnDeck } from '../../../step-forms' - -interface Props { - labwareOnDeck: LabwareOnDeck - setHoveredLabware: (val?: LabwareOnDeck | null) => void - setDraggedLabware: (val?: LabwareOnDeck | null) => void - swapBlocked: boolean -} - -interface DroppedItem { - labwareOnDeck: LabwareOnDeck -} -export const EditLabware = (props: Props): JSX.Element | null => { - const { - labwareOnDeck, - swapBlocked, - setDraggedLabware, - setHoveredLabware, - } = props - const savedLabware = useSelector(labwareIngredSelectors.getSavedLabware) - const dispatch = useDispatch>() - const { t } = useTranslation('deck') - const ref = React.useRef(null) - - const { isTiprack } = labwareOnDeck.def.parameters - const hasName = savedLabware[labwareOnDeck.id] - const isYetUnnamed = !labwareOnDeck.def.parameters.isTiprack && !hasName - - const editLiquids = (): void => { - dispatch(openIngredientSelector(labwareOnDeck.id)) - } - - const [, drag] = useDrag( - () => ({ - type: DND_TYPES.LABWARE, - item: { labwareOnDeck }, - }), - [labwareOnDeck] - ) - - const [{ draggedLabware, isOver }, drop] = useDrop( - () => ({ - accept: DND_TYPES.LABWARE, - canDrop: (item: DroppedItem) => { - const draggedLabware = item?.labwareOnDeck - const isDifferentSlot = - draggedLabware && draggedLabware.slot !== labwareOnDeck.slot - return isDifferentSlot && !swapBlocked - }, - drop: (item: DroppedItem) => { - const draggedLabware = item?.labwareOnDeck - if (draggedLabware != null) { - dispatch(moveDeckItem(draggedLabware.slot, labwareOnDeck.slot)) - } - }, - hover: () => { - setHoveredLabware(labwareOnDeck) - }, - collect: (monitor: DropTargetMonitor) => ({ - isOver: monitor.isOver(), - draggedLabware: monitor.getItem() as DroppedItem, - }), - }), - [labwareOnDeck] - ) - - React.useEffect(() => { - if (draggedLabware?.labwareOnDeck != null) { - setDraggedLabware(draggedLabware?.labwareOnDeck) - } else { - setHoveredLabware(null) - setDraggedLabware(null) - } - }, [draggedLabware]) - - let contents: React.ReactNode | null = null - - const isBeingDragged = - draggedLabware?.labwareOnDeck?.slot === labwareOnDeck.slot - - if (isYetUnnamed && !isTiprack) { - contents = ( - - ) - } else if (swapBlocked) { - contents = null - } else if (draggedLabware != null) { - contents = null - } else { - contents = ( - <> - {!isTiprack ? ( - - - {t('overlay.edit.name_and_liquids')} - - ) : ( -
- )} - dispatch(duplicateLabware(labwareOnDeck.id))} - > - - {t('overlay.edit.duplicate')} - - { - window.confirm( - `Are you sure you want to permanently delete this ${getLabwareDisplayName( - labwareOnDeck.def - )}?` - ) && dispatch(deleteContainer({ labwareId: labwareOnDeck.id })) - }} - > - - {t('overlay.edit.delete')} - - - ) - } - - drag(drop(ref)) - - return ( -
- {contents} -
- ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabwareOffDeck.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabwareOffDeck.tsx deleted file mode 100644 index c6a5a444d0c..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/EditLabwareOffDeck.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { css } from 'styled-components' -import { - ALIGN_FLEX_START, - BORDERS, - COLORS, - DIRECTION_COLUMN, - Icon, - JUSTIFY_SPACE_AROUND, - POSITION_ABSOLUTE, - SPACING, -} from '@opentrons/components' -import { getLabwareDisplayName } from '@opentrons/shared-data' -import { - deleteContainer, - duplicateLabware, - openIngredientSelector, -} from '../../../labware-ingred/actions' -import { selectors as labwareIngredSelectors } from '../../../labware-ingred/selectors' -import { NameThisLabware } from './NameThisLabware' -import styles from './LabwareOverlays.module.css' - -import type { LabwareEntity } from '@opentrons/step-generation' -import type { ThunkDispatch } from '../../../types' - -const NAME_LABWARE_OVERLAY_STYLE = css` - z-index: 1; - bottom: 0; - position: ${POSITION_ABSOLUTE}; - width: 127.76px; - height: 85.45px; - opacity: 0; - &:hover { - opacity: 1; - } -` - -const REGULAR_OVERLAY_STYLE = css` - z-index: 1; - padding: ${SPACING.spacing8}; - background-color: ${COLORS.black90}${COLORS.opacity90HexCode}; - flex-direction: ${DIRECTION_COLUMN}; - color: ${COLORS.white}; - display: flex; - align-items: ${ALIGN_FLEX_START}; - justify-content: ${JUSTIFY_SPACE_AROUND}; - border-radius: ${BORDERS.borderRadius16}; - bottom: 0; - font-size: 0.7rem; - position: ${POSITION_ABSOLUTE}; - width: 127.76px; - height: 85.45px; - opacity: 0; - &:hover { - opacity: 1; - } -` - -interface EditLabwareOffDeckProps { - labwareEntity: LabwareEntity -} - -export function EditLabwareOffDeck( - props: EditLabwareOffDeckProps -): JSX.Element { - const { labwareEntity } = props - const { t } = useTranslation('deck') - const dispatch = useDispatch>() - const allSavedLabware = useSelector(labwareIngredSelectors.getSavedLabware) - const hasName = allSavedLabware[labwareEntity.id] - const { isTiprack } = labwareEntity.def.parameters - - const isYetUnnamed = isTiprack && !hasName - - const editLiquids = (): void => { - dispatch(openIngredientSelector(labwareEntity.id)) - } - - if (isYetUnnamed && !isTiprack) { - return ( -
- -
- ) - } else { - return ( -
- {!isTiprack ? ( - - - {t('overlay.edit.name_and_liquids')} - - ) : ( - - ) - } -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx deleted file mode 100644 index 1c31a962e75..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareControls.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import cx from 'classnames' -import { RobotCoordsForeignDiv } from '@opentrons/components' - -import { START_TERMINAL_ITEM_ID } from '../../../steplist' -import { BlockedSlot } from './BlockedSlot' -import { BrowseLabware } from './BrowseLabware' -import { EditLabware } from './EditLabware' -import { LabwareName } from './LabwareName' -import { LabwareHighlight } from './LabwareHighlight' -import styles from './LabwareOverlays.module.css' - -import type { CoordinateTuple } from '@opentrons/shared-data' -import type { TerminalItemId } from '../../../steplist' -import type { LabwareOnDeck } from '../../../step-forms' - -interface LabwareControlsProps { - labwareOnDeck: LabwareOnDeck - slotPosition: CoordinateTuple - setHoveredLabware: (labware?: LabwareOnDeck | null) => void - setDraggedLabware: (labware?: LabwareOnDeck | null) => void - swapBlocked: boolean - selectedTerminalItemId?: TerminalItemId | null -} - -export const LabwareControls = (props: LabwareControlsProps): JSX.Element => { - const { - labwareOnDeck, - slotPosition, - selectedTerminalItemId, - setHoveredLabware, - setDraggedLabware, - swapBlocked, - } = props - - const canEdit = selectedTerminalItemId === START_TERMINAL_ITEM_ID - const [x, y] = slotPosition - const width = labwareOnDeck.def.dimensions.xDimension - const height = labwareOnDeck.def.dimensions.yDimension - return ( - <> - - - {canEdit ? ( - - ) : ( - - )} - - - {swapBlocked && ( - - )} - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareHighlight.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareHighlight.tsx deleted file mode 100644 index 78d0a8ada5c..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareHighlight.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import cx from 'classnames' -import { useSelector } from 'react-redux' -import { Icon } from '@opentrons/components' -import { getHoveredStepLabware, getHoveredStepId } from '../../../ui/steps' -import { - getLabwareEntities, - getSavedStepForms, -} from '../../../step-forms/selectors' -import { THERMOCYCLER_PROFILE } from '../../../constants' - -import styles from './LabwareOverlays.module.css' -import type { LabwareOnDeck } from '../../../step-forms' - -interface LabwareHighlightProps { - labwareOnDeck: LabwareOnDeck -} - -export const LabwareHighlight = ( - props: LabwareHighlightProps -): JSX.Element | null => { - const { labwareOnDeck } = props - const labwareEntities = useSelector(getLabwareEntities) - const adapterId = - labwareEntities[labwareOnDeck.slot] != null - ? labwareEntities[labwareOnDeck.slot].id - : null - - const highlighted = useSelector(getHoveredStepLabware).includes( - adapterId ?? labwareOnDeck.id - ) - - let isTcProfile = false - const form = useSelector(getSavedStepForms) - const hoveredStepId = useSelector(getHoveredStepId) - const formData = hoveredStepId ? form[hoveredStepId] : null - - if ( - formData && - formData.stepType === 'thermocycler' && - formData.thermocyclerFormType === THERMOCYCLER_PROFILE - ) { - isTcProfile = true - } - if (highlighted) { - return ( -
- {isTcProfile && ( - - )} -
- ) - } - return null -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx deleted file mode 100644 index 15d07bd9886..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareName.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { useSelector } from 'react-redux' -import { LabwareNameOverlay, truncateString } from '@opentrons/components' -import { getLabwareDisplayName } from '@opentrons/shared-data' -import { selectors as uiLabwareSelectors } from '../../../ui/labware' -import type { LabwareOnDeck } from '../../../step-forms' -interface LabwareNameProps { - labwareOnDeck: LabwareOnDeck -} - -export function LabwareName(props: LabwareNameProps): JSX.Element { - const { labwareOnDeck } = props - const nicknames = useSelector(uiLabwareSelectors.getLabwareNicknamesById) - const nickname = nicknames[labwareOnDeck.id] - const truncatedNickName = - nickname != null ? truncateString(nickname, 75, 25) : null - const title = truncatedNickName ?? getLabwareDisplayName(labwareOnDeck.def) - return -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareOverlays.module.css b/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareOverlays.module.css deleted file mode 100644 index 676da1993b3..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/LabwareOverlays.module.css +++ /dev/null @@ -1,155 +0,0 @@ -@import '@opentrons/components/styles'; - -.labware_controls { - height: 100%; - width: 100%; - display: flex; - flex-direction: column; - justify-content: flex-end; - border-radius: 0.5rem; -} - -.labware_controls.can_edit { - cursor: grab; -} - -.slot_overlay { - position: absolute; - - /* from legacy --absolute-fill */ - top: 0; - - /* from legacy --absolute-fill */ - right: 0; - - /* from legacy --absolute-fill */ - bottom: 0; - - /* from legacy --absolute-fill */ - left: 0; - - /* from legacy --absolute-fill */ - - z-index: 1; - padding: 0.5rem; - background-color: color-mod(var(--c-black) alpha(0.75)); - display: flex; - flex-direction: column; - justify-content: space-around; - align-items: flex-start; - color: white; - font-size: var(--fs-body-1); - border-radius: 0.5rem; -} - -.slot_overlay.with_form { - background-color: color-mod(var(--c-black) alpha(1)); -} - -.slot_overlay.disabled { - background-color: color-mod(var(--c-light-gray) alpha(0.7)); - color: var(--c-font-dark); -} - -.name_input_wrapper { - flex: 1; -} - -.name_input { - padding: 0 0 0 0.25rem; - width: 7rem; -} - -.overlay_button { - flex: 1; - text-decoration: none; - color: white; - display: flex; - align-items: center; - cursor: pointer; -} - -.overlay_button:active { - opacity: 0.5; -} - -.overlay_button.drag_text { - color: var(--c-font-dark); -} - -.button_spacer { - flex: 1; -} - -.overlay_icon { - height: 1rem; - width: 1rem; - margin-right: 0.25rem; -} - -.appear_on_mouseover { - opacity: 0; - - &:hover { - opacity: 1; - } -} - -.appear { - opacity: 1; -} - -.drag_preview { - position: absolute; - cursor: grabbing; -} - -.highlighted_border_div { - position: absolute; - - /* from legacy --absolute-fill */ - top: 0; - - /* from legacy --absolute-fill */ - right: 0; - - /* from legacy --absolute-fill */ - bottom: 0; - - /* from legacy --absolute-fill */ - left: 0; - - /* from legacy --absolute-fill */ - - border-color: var(--c-highlight); - border-width: 3px; - border-style: solid; - border-radius: 0.5rem; -} - -.highlight_fill { - display: flex; - align-items: center; - justify-content: center; - background-color: color-mod(var(--c-highlight) alpha(0.25)); -} - -.thermocycler_icon { - height: 60%; - color: var(--c-selected-dark); -} - -.blocked_slot_background { - fill: rgba(200, 115, 0, 0.75); - stroke: var(--c-red); - rx: 6; -} - -.blocked_slot_content { - height: 100%; - margin: -1.5rem 0.5rem; - color: var(--c-white); - font-size: var(--fs-caption); - text-align: center; - line-height: 1.5; -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/NameThisLabware.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/NameThisLabware.tsx deleted file mode 100644 index 71bf91cf2e5..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/NameThisLabware.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' -import cx from 'classnames' -import { Icon, useOnClickOutside } from '@opentrons/components' -import { renameLabware } from '../../../labware-ingred/actions' -import styles from './LabwareOverlays.module.css' - -import type { LabwareEntity } from '@opentrons/step-generation' -import type { ThunkDispatch } from '../../../types' -import type { LabwareOnDeck } from '../../../step-forms' - -interface NameThisLabwareProps { - labwareOnDeck: LabwareOnDeck | LabwareEntity - editLiquids: () => void -} - -export function NameThisLabware(props: NameThisLabwareProps): JSX.Element { - const { labwareOnDeck } = props - const dispatch: ThunkDispatch = useDispatch() - const [inputValue, setInputValue] = React.useState('') - const { t } = useTranslation('deck') - - const setLabwareName = (name: string | null | undefined): void => { - dispatch(renameLabware({ labwareId: labwareOnDeck.id, name })) - } - - const saveNickname = (): void => { - setLabwareName(inputValue ?? null) - } - const wrapperRef: React.RefObject = useOnClickOutside({ - onClickOutside: saveNickname, - }) - - const handleChange = (e: React.ChangeEvent): void => { - setInputValue(e.target.value) - } - - const handleKeyUp = (e: React.KeyboardEvent): void => { - if (e.key === 'Enter') { - saveNickname() - } - } - const addLiquids = (): void => { - saveNickname() - props.editLiquids() - } - - return ( - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx deleted file mode 100644 index 614d2fc9d55..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/SlotControls.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import { useRef } from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector, useDispatch } from 'react-redux' -import noop from 'lodash/noop' -import { useDrop, useDrag } from 'react-dnd' -import cx from 'classnames' -import { Icon, RobotCoordsForeignDiv } from '@opentrons/components' -import { DND_TYPES } from '../../../constants' -import { - getLabwareIsCompatible, - getLabwareIsCustom, -} from '../../../utils/labwareModuleCompatibility' -import { - moveDeckItem, - openAddLabwareModal, -} from '../../../labware-ingred/actions' -import { selectors as labwareDefSelectors } from '../../../labware-defs' -import { START_TERMINAL_ITEM_ID } from '../../../steplist' -import { BlockedSlot } from './BlockedSlot' -import styles from './LabwareOverlays.module.css' - -import type { DropTargetMonitor } from 'react-dnd' -import type { - CoordinateTuple, - Dimensions, - ModuleType, -} from '@opentrons/shared-data' -import type { LabwareOnDeck } from '../../../step-forms' -import type { TerminalItemId } from '../../../steplist' - -interface SlotControlsProps { - slotPosition: CoordinateTuple | null - slotBoundingBox: Dimensions - // NOTE: slotId can be either AddressableAreaName or moduleId - slotId: string - moduleType: ModuleType | null - selectedTerminalItemId?: TerminalItemId | null - handleDragHover?: () => void -} - -interface DroppedItem { - labwareOnDeck: LabwareOnDeck -} - -export const SlotControls = (props: SlotControlsProps): JSX.Element | null => { - const { - slotBoundingBox, - slotPosition, - slotId, - selectedTerminalItemId, - moduleType, - handleDragHover, - } = props - const customLabwareDefs = useSelector( - labwareDefSelectors.getCustomLabwareDefsByURI - ) - const ref = useRef(null) - const dispatch = useDispatch() - - const { t } = useTranslation('deck') - - const [, drag] = useDrag({ - type: DND_TYPES.LABWARE, - item: { labwareOnDeck: null }, - }) - - const [{ draggedItem, itemType, isOver }, drop] = useDrop( - () => ({ - accept: DND_TYPES.LABWARE, - canDrop: (item: DroppedItem) => { - const draggedDef = item?.labwareOnDeck?.def - console.assert( - draggedDef, - 'no labware def of dragged item, expected it on drop' - ) - - if (moduleType != null && draggedDef != null) { - // this is a module slot, prevent drop if the dragged labware is not compatible - const isCustomLabware = getLabwareIsCustom( - customLabwareDefs, - item.labwareOnDeck - ) - - return ( - getLabwareIsCompatible(draggedDef, moduleType) || isCustomLabware - ) - } - return true - }, - drop: (item: DroppedItem) => { - const droppedLabware = item - if (droppedLabware.labwareOnDeck != null) { - const droppedSlot = droppedLabware.labwareOnDeck.slot - dispatch(moveDeckItem(droppedSlot, slotId)) - } - }, - hover: () => { - if (handleDragHover != null) { - handleDragHover() - } - }, - collect: (monitor: DropTargetMonitor) => ({ - itemType: monitor.getItemType(), - isOver: !!monitor.isOver(), - draggedItem: monitor.getItem() as DroppedItem, - }), - }), - [] - ) - - if ( - selectedTerminalItemId !== START_TERMINAL_ITEM_ID || - (itemType !== DND_TYPES.LABWARE && itemType !== null) || - slotPosition == null - ) - return null - - const draggedDef = draggedItem?.labwareOnDeck?.def - - const isCustomLabware = draggedItem - ? getLabwareIsCustom(customLabwareDefs, draggedItem.labwareOnDeck) - : false - - let slotBlocked: string | null = null - if ( - isOver && - moduleType != null && - draggedDef != null && - !getLabwareIsCompatible(draggedDef, moduleType) && - !isCustomLabware - ) { - slotBlocked = 'Labware incompatible with this module' - } - - const isOnHeaterShaker = moduleType === 'heaterShakerModuleType' - const isNoAdapterOption = - moduleType === 'magneticBlockType' || - moduleType === 'magneticModuleType' || - moduleType === 'thermocyclerModuleType' - let overlayText: string = 'add_adapter_or_labware' - if (isOnHeaterShaker) { - overlayText = 'add_adapter' - } else if (isNoAdapterOption) { - overlayText = 'add_labware' - } - - const addLabware = (): void => { - dispatch(openAddLabwareModal({ slot: slotId })) - } - - drag(drop(ref)) - - return ( - - {slotBlocked ? ( - - ) : ( - - - {!isOver && } - {t(`overlay.slot.${isOver ? 'place_here' : overlayText}`)} - - - )} - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/__tests__/SlotControls.test.tsx b/protocol-designer/src/components/DeckSetup/LabwareOverlays/__tests__/SlotControls.test.tsx deleted file mode 100644 index 60972821a90..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/__tests__/SlotControls.test.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { describe, it } from 'vitest' - -describe('SlotControlsComponent', () => { - it.todo('replace deprecated enzyme test') -}) diff --git a/protocol-designer/src/components/DeckSetup/LabwareOverlays/index.ts b/protocol-designer/src/components/DeckSetup/LabwareOverlays/index.ts deleted file mode 100644 index cd857edd17a..00000000000 --- a/protocol-designer/src/components/DeckSetup/LabwareOverlays/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { SlotControls } from './SlotControls' -export { AdapterControls } from './AdapterControls' -export { LabwareControls } from './LabwareControls' diff --git a/protocol-designer/src/components/DeckSetup/NullDeckState.tsx b/protocol-designer/src/components/DeckSetup/NullDeckState.tsx deleted file mode 100644 index f2c26f579cc..00000000000 --- a/protocol-designer/src/components/DeckSetup/NullDeckState.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { useMemo } from 'react' -import { getDeckDefinitions } from '@opentrons/shared-data' -import { useTranslation } from 'react-i18next' -import { - FONT_SIZE_BODY_1, - FONT_WEIGHT_BOLD, - RobotCoordsText, - RobotWorkSpace, - TEXT_TRANSFORM_UPPERCASE, -} from '@opentrons/components' -import { - VIEWBOX_HEIGHT, - VIEWBOX_MIN_X, - VIEWBOX_MIN_Y, - VIEWBOX_WIDTH, -} from './constants' -import { DECK_LAYER_BLOCKLIST } from './index' - -import styles from './DeckSetup.module.css' - -export const NullDeckState = (): JSX.Element => { - const deckDef = useMemo(() => getDeckDefinitions().ot2_standard, []) - const { t } = useTranslation('deck') - return ( -
-
- - {() => ( - - {t('inactive_deck')} - - )} - -
-
- ) -} diff --git a/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx b/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx deleted file mode 100644 index 6c5c7d57b5c..00000000000 --- a/protocol-designer/src/components/DeckSetup/Ot2ModuleTag.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { - RobotCoordsForeignDiv, - Text, - COLORS, - SPACING, -} from '@opentrons/components' -import { - getModuleDisplayName, - THERMOCYCLER_MODULE_V1, - THERMOCYCLER_MODULE_V2, -} from '@opentrons/shared-data' -import type { - ModuleDefinition, - ModuleModel, - ModuleOrientation, -} from '@opentrons/shared-data' - -interface Ot2ModuleTagProps { - dimensions: ModuleDefinition['dimensions'] - model: ModuleModel - orientation: ModuleOrientation -} - -export function Ot2ModuleTag(props: Ot2ModuleTagProps): JSX.Element { - const { dimensions, model, orientation } = props - const displayName = getModuleDisplayName(model) - const isThermocyclerModel = - model === THERMOCYCLER_MODULE_V1 || model === THERMOCYCLER_MODULE_V2 - const xDimension = dimensions.labwareInterfaceXDimension ?? 0 - const xCoordinateForOtherMods = - orientation === 'left' - ? -(xDimension / 2) - : dimensions.labwareInterfaceXDimension - - return ( - - - {displayName} - - - ) -} diff --git a/protocol-designer/src/components/DeckSetup/SlotLabels.tsx b/protocol-designer/src/components/DeckSetup/SlotLabels.tsx deleted file mode 100644 index a4262ba26b9..00000000000 --- a/protocol-designer/src/components/DeckSetup/SlotLabels.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' -import { - DeckInfoLabel, - Flex, - JUSTIFY_CENTER, - RobotCoordsForeignObject, - ALIGN_CENTER, - DIRECTION_COLUMN, -} from '@opentrons/components' - -import type { RobotType } from '@opentrons/shared-data' - -interface SlotLabelsProps { - robotType: RobotType - hasStagingAreas: boolean - hasWasteChute: boolean -} - -/** - * This is an almost copy of SlotLabels in @opentrons/components - * in order to keep the changes between PD and the rest - * of the repo separate - */ -export const SlotLabels = ({ - robotType, - hasStagingAreas, - hasWasteChute, -}: SlotLabelsProps): JSX.Element | null => { - return robotType === FLEX_ROBOT_TYPE ? ( - <> - - - - - - - - - - - - - - - - - - - - - - - - - - - - {hasStagingAreas ? ( - - - - ) : null} - - - - ) : null -} diff --git a/protocol-designer/src/components/DeckSetup/__tests__/DeckSetup.test.ts b/protocol-designer/src/components/DeckSetup/__tests__/DeckSetup.test.ts deleted file mode 100644 index 5051d10610a..00000000000 --- a/protocol-designer/src/components/DeckSetup/__tests__/DeckSetup.test.ts +++ /dev/null @@ -1,233 +0,0 @@ -import { describe, expect, it, beforeEach, afterEach, vi } from 'vitest' -import { - fixture_96_plate, - fixture_24_tuberack, -} from '@opentrons/shared-data/labware/fixtures/2' -import { - MAGNETIC_MODULE_TYPE, - TEMPERATURE_MODULE_TYPE, - MAGNETIC_MODULE_V1, - TEMPERATURE_MODULE_V1, -} from '@opentrons/shared-data' -import { TEMPERATURE_AT_TARGET } from '@opentrons/step-generation' -import * as labwareModuleCompatibility from '../../../utils/labwareModuleCompatibility' -import { getSwapBlocked } from '../utils' - -import type { MockInstance } from 'vitest' -import type { LabwareDefinition2 } from '@opentrons/shared-data' -import type { SwapBlockedArgs } from '../utils' - -describe('DeckSetup', () => { - describe('getSwapBlocked', () => { - const plateInSlot3 = { - labwareDefURI: 'fixture/fixture_96_plate', - id: 'plate123', - slot: '3', - def: fixture_96_plate as LabwareDefinition2, - } - const tuberackInSlot4 = { - labwareDefURI: 'fixture/fixtures_24_tuberack', - id: 'tuberack098', - slot: '4', - def: fixture_24_tuberack as LabwareDefinition2, - } - - const magneticModule = { - id: 'magnet123', - type: MAGNETIC_MODULE_TYPE, - model: MAGNETIC_MODULE_V1, - moduleState: { - type: MAGNETIC_MODULE_TYPE, - engaged: false, - }, - slot: '1', - } - const temperatureModule = { - id: 'temperature098', - type: TEMPERATURE_MODULE_TYPE, - model: TEMPERATURE_MODULE_V1, - moduleState: { - type: TEMPERATURE_MODULE_TYPE, - status: TEMPERATURE_AT_TARGET, - targetTemperature: 45, - }, - slot: '7', - } - - let getLabwareIsCompatibleSpy: MockInstance - beforeEach(() => { - getLabwareIsCompatibleSpy = vi.spyOn( - labwareModuleCompatibility, - 'getLabwareIsCompatible' - ) - }) - - afterEach(() => { - getLabwareIsCompatibleSpy.mockClear() - }) - - it('is not blocked when there is no labware in slot', () => { - const args: SwapBlockedArgs = { - hoveredLabware: null, - draggedLabware: plateInSlot3, - modulesById: {}, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(false) - }) - - it('is not blocked when no dragged labware', () => { - const args: SwapBlockedArgs = { - hoveredLabware: plateInSlot3, - draggedLabware: null, - modulesById: {}, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(false) - }) - - it('is not blocked when dragged labware to swap on module is custom', () => { - tuberackInSlot4.slot = 'magnet123' - getLabwareIsCompatibleSpy.mockReturnValue(false) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - magnet123: magneticModule, - }, - customLabwareDefs: { - 'fixture/fixture_96_plate': fixture_96_plate as LabwareDefinition2, - }, - } - - const isBlocked = getSwapBlocked(args as SwapBlockedArgs) - - expect(isBlocked).toEqual(false) - }) - - it('is blocked when dragged labware on module to swap on another module is not custom and not compatible', () => { - tuberackInSlot4.slot = 'magnet123' - getLabwareIsCompatibleSpy.mockReturnValue(false) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - magnet123: magneticModule, - }, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(true) - }) - - it('is blocked when target labware on module to swap is incompatible with dragged labware', () => { - tuberackInSlot4.slot = 'magnet123' - getLabwareIsCompatibleSpy.mockReturnValue(false) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - magnet123: magneticModule, - }, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(true) - }) - - it('is not blocked when labwares to swap on both modules are compatible', () => { - tuberackInSlot4.slot = 'magnet123' - plateInSlot3.slot = 'temperature098' - getLabwareIsCompatibleSpy.mockReturnValue(true) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - magnet123: magneticModule, - temperature098: temperatureModule, - }, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(false) - }) - - it('is blocked when both dragged and target labwares on the modules are incompatible', () => { - tuberackInSlot4.slot = 'magnet123' - plateInSlot3.slot = 'temperature098' - getLabwareIsCompatibleSpy.mockReturnValue(false) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - magnet123: magneticModule, - temperature098: temperatureModule, - }, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(true) - }) - - it('is not blocked when swapping labware from module with compatible labware on deck slot', () => { - plateInSlot3.slot = 'temperature098' - getLabwareIsCompatibleSpy.mockReturnValue(true) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - temperature098: temperatureModule, - }, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(false) - }) - - it('is not blocked when swapping labware from one deck slot with another labware on deck slot', () => { - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: {}, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(false) - }) - - it('is not blocked when swapping compatible labware on deck slot with labware on module', () => { - tuberackInSlot4.slot = 'magnet123' - getLabwareIsCompatibleSpy.mockReturnValue(true) - const args: SwapBlockedArgs = { - hoveredLabware: tuberackInSlot4, - draggedLabware: plateInSlot3, - modulesById: { - magnet123: magneticModule, - }, - customLabwareDefs: {}, - } - - const isBlocked = getSwapBlocked(args) - - expect(isBlocked).toEqual(false) - }) - }) -}) diff --git a/protocol-designer/src/components/DeckSetup/__tests__/FlexModuleTag.test.tsx b/protocol-designer/src/components/DeckSetup/__tests__/FlexModuleTag.test.tsx deleted file mode 100644 index 4fb9c967c5e..00000000000 --- a/protocol-designer/src/components/DeckSetup/__tests__/FlexModuleTag.test.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import type * as React from 'react' -import { screen } from '@testing-library/react' -import { describe, it, vi } from 'vitest' -import { renderWithProviders } from '../../../__testing-utils__' -import { FlexModuleTag } from '../FlexModuleTag' -import type { ModuleDimensions } from '@opentrons/shared-data' - -vi.mock('@opentrons/components', async () => { - const actual = await vi.importActual('@opentrons/components') - return { - ...actual, - RobotCoordsForeignDiv: ({ children }: { children: React.ReactNode }) => ( -
{children}
- ), - } -}) - -const render = (props: React.ComponentProps) => { - return renderWithProviders()[0] -} - -const mockDimensions: ModuleDimensions = { - labwareInterfaceXDimension: 5, -} as any - -describe('FlexModuleTag', () => { - it('renders the flex module tag for magnetic block', () => { - render({ - dimensions: mockDimensions, - displayName: 'mock Magnetic Block', - }) - screen.getByText('mock Magnetic Block') - }) - it('renders the flex module tag for heater-shaker', () => { - render({ - dimensions: mockDimensions, - displayName: 'mock Heater-shaker', - }) - screen.getByText('mock Heater-shaker') - }) -}) diff --git a/protocol-designer/src/components/DeckSetup/__tests__/Ot2ModuleTag.test.tsx b/protocol-designer/src/components/DeckSetup/__tests__/Ot2ModuleTag.test.tsx deleted file mode 100644 index 279855682a9..00000000000 --- a/protocol-designer/src/components/DeckSetup/__tests__/Ot2ModuleTag.test.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { describe, it } from 'vitest' -import type * as React from 'react' -import { screen } from '@testing-library/react' -import { renderWithProviders } from '../../../__testing-utils__' -import { Ot2ModuleTag } from '../Ot2ModuleTag' -import type { ModuleDimensions } from '@opentrons/shared-data' - -const render = (props: React.ComponentProps) => { - return renderWithProviders()[0] -} - -const mockDimensions: ModuleDimensions = { - labwareInterfaceXDimension: 5, -} as any - -describe('Ot2ModuleTag', () => { - it('renders module tag for left magnetic module', () => { - render({ - dimensions: mockDimensions, - orientation: 'left', - model: 'magneticModuleV1', - }) - screen.getByText('Magnetic Module GEN1') - }) - it('renders module tag for right heater-shaker', () => { - render({ - dimensions: mockDimensions, - orientation: 'right', - model: 'heaterShakerModuleV1', - }) - screen.getByText('Heater-Shaker Module GEN1') - }) - it('renders module tag for thermocycler', () => { - render({ - dimensions: mockDimensions, - orientation: 'left', - model: 'thermocyclerModuleV1', - }) - screen.getByText('Thermocycler Module GEN1') - }) -}) diff --git a/protocol-designer/src/components/DeckSetup/constants.ts b/protocol-designer/src/components/DeckSetup/constants.ts deleted file mode 100644 index 2037126b253..00000000000 --- a/protocol-designer/src/components/DeckSetup/constants.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const VIEWBOX_MIN_X = -64 -export const VIEWBOX_MIN_Y = -10 -export const VIEWBOX_WIDTH = 520 -export const VIEWBOX_HEIGHT = 414 diff --git a/protocol-designer/src/components/DeckSetup/index.tsx b/protocol-designer/src/components/DeckSetup/index.tsx deleted file mode 100644 index 736753e715a..00000000000 --- a/protocol-designer/src/components/DeckSetup/index.tsx +++ /dev/null @@ -1,677 +0,0 @@ -import * as React from 'react' -import { useDispatch, useSelector } from 'react-redux' -import compact from 'lodash/compact' -import values from 'lodash/values' -import { - COLORS, - DeckFromLayers, - FlexTrash, - Module, - RobotCoordinateSpaceWithRef, - SingleSlotFixture, - StagingAreaFixture, - useOnClickOutside, - WasteChuteFixture, - WasteChuteStagingAreaFixture, -} from '@opentrons/components' -import { MODULES_WITH_COLLISION_ISSUES } from '@opentrons/step-generation' -import { - FLEX_ROBOT_TYPE, - getAddressableAreaFromSlotId, - getDeckDefFromRobotType, - getLabwareHasQuirk, - getModuleDef2, - getModuleDisplayName, - getPositionFromSlotId, - inferModuleOrientationFromSlot, - inferModuleOrientationFromXCoordinate, - isAddressableAreaStandardSlot, - OT2_ROBOT_TYPE, - STAGING_AREA_CUTOUTS, - THERMOCYCLER_MODULE_TYPE, - TRASH_BIN_ADAPTER_FIXTURE, - WASTE_CHUTE_CUTOUT, -} from '@opentrons/shared-data' -import { SPAN7_8_10_11_SLOT } from '../../constants' -import { selectors as labwareDefSelectors } from '../../labware-defs' - -import { selectors as featureFlagSelectors } from '../../feature-flags' -import { getStagingAreaAddressableAreas } from '../../utils' -import { getSlotIdsBlockedBySpanning, getSlotIsEmpty } from '../../step-forms' -import * as labwareIngredActions from '../../labware-ingred/actions' -import { getDeckSetupForActiveItem } from '../../top-selectors/labware-locations' -import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import { getSelectedTerminalItemId } from '../../ui/steps' -import { getRobotType } from '../../file-data/selectors' -import { BrowseLabwareModal } from '../labware' -import { SlotWarning } from './SlotWarning' -import { LabwareOnDeck } from './LabwareOnDeck' -import { - AdapterControls, - SlotControls, - LabwareControls, -} from './LabwareOverlays' -import { FlexModuleTag } from './FlexModuleTag' -import { Ot2ModuleTag } from './Ot2ModuleTag' -import { SlotLabels } from './SlotLabels' -import { getHasGen1MultiChannelPipette, getSwapBlocked } from './utils' - -import type { - AdditionalEquipmentEntity, - ModuleTemporalProperties, -} from '@opentrons/step-generation' -import type { StagingAreaLocation, TrashCutoutId } from '@opentrons/components' -import type { - AddressableAreaName, - CutoutFixture, - CutoutId, - DeckDefinition, - RobotType, -} from '@opentrons/shared-data' -import type { TerminalItemId } from '../../steplist' -import type { - InitialDeckSetup, - LabwareOnDeck as LabwareOnDeckType, - ModuleOnDeck, -} from '../../step-forms' - -import styles from './DeckSetup.module.css' - -export const DECK_LAYER_BLOCKLIST = [ - 'calibrationMarkings', - 'fixedBase', - 'doorStops', - 'metalFrame', - 'removalHandle', - 'removableDeckOutline', - 'screwHoles', -] - -const OT2_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST: string[] = [ - 'calibrationMarkings', - 'fixedBase', - 'doorStops', - 'metalFrame', - 'removalHandle', - 'removableDeckOutline', - 'screwHoles', -] - -interface ContentsProps { - activeDeckSetup: InitialDeckSetup - selectedTerminalItemId?: TerminalItemId | null - showGen1MultichannelCollisionWarnings: boolean - deckDef: DeckDefinition - robotType: RobotType - stagingAreaCutoutIds: CutoutId[] - trashSlot: string | null -} - -const lightFill = COLORS.grey35 -const darkFill = COLORS.grey60 - -export const DeckSetupContents = (props: ContentsProps): JSX.Element => { - const { - activeDeckSetup, - showGen1MultichannelCollisionWarnings, - deckDef, - robotType, - trashSlot, - stagingAreaCutoutIds, - } = props - // NOTE: handling module<>labware compat when moving labware to empty module - // is handled by SlotControls. - // But when swapping labware when at least one is on a module, we need to be aware - // of not only what labware is being dragged, but also what labware is **being - // hovered over**. The intrinsic state of `react-dnd` is not designed to handle that. - // So we need to use our own state here to determine - // whether swapping will be blocked due to labware<>module compat: - const [hoveredLabware, setHoveredLabware] = React.useState< - LabwareOnDeckType | null | undefined - >(null) - const [draggedLabware, setDraggedLabware] = React.useState< - LabwareOnDeckType | null | undefined - >(null) - - const customLabwareDefs = useSelector( - labwareDefSelectors.getCustomLabwareDefsByURI - ) - const swapBlocked = getSwapBlocked({ - hoveredLabware, - draggedLabware, - modulesById: activeDeckSetup.modules, - customLabwareDefs, - }) - - const handleHoverEmptySlot = React.useCallback(() => { - setHoveredLabware(null) - }, []) - - const slotIdsBlockedBySpanning = getSlotIdsBlockedBySpanning(activeDeckSetup) - - const allLabware: LabwareOnDeckType[] = Object.keys( - activeDeckSetup.labware - ).reduce((acc, labwareId) => { - const labware = activeDeckSetup.labware[labwareId] - return getLabwareHasQuirk(labware.def, 'fixedTrash') - ? acc - : [...acc, labware] - }, []) - - const allModules: ModuleOnDeck[] = values(activeDeckSetup.modules) - - // NOTE: naively hard-coded to show warning north of slots 1 or 3 when occupied by any module - const multichannelWarningSlotIds: AddressableAreaName[] = showGen1MultichannelCollisionWarnings - ? compact([ - allModules.some( - moduleOnDeck => - moduleOnDeck.slot === '1' && - MODULES_WITH_COLLISION_ISSUES.includes(moduleOnDeck.model) - ) - ? deckDef.locations.addressableAreas.find(s => s.id === '4')?.id - : null, - allModules.some( - moduleOnDeck => - moduleOnDeck.slot === '3' && - MODULES_WITH_COLLISION_ISSUES.includes(moduleOnDeck.model) - ) - ? deckDef.locations.addressableAreas.find(s => s.id === '6')?.id - : null, - ]) - : [] - - return ( - <> - {/* all modules */} - {allModules.map(moduleOnDeck => { - const slotId = - moduleOnDeck.slot === SPAN7_8_10_11_SLOT ? '7' : moduleOnDeck.slot - - const slotPosition = getPositionFromSlotId(slotId, deckDef) - if (slotPosition == null) { - console.warn(`no slot ${slotId} for module ${moduleOnDeck.id}`) - return null - } - const moduleDef = getModuleDef2(moduleOnDeck.model) - - const getModuleInnerProps = ( - moduleState: ModuleTemporalProperties['moduleState'] - ): React.ComponentProps['innerProps'] => { - if (moduleState.type === THERMOCYCLER_MODULE_TYPE) { - let lidMotorState = 'unknown' - if (moduleState.lidOpen === true) { - lidMotorState = 'open' - } else if (moduleState.lidOpen === false) { - lidMotorState = 'closed' - } - return { - lidMotorState, - blockTargetTemp: moduleState.blockTargetTemp, - } - } else if ( - 'targetTemperature' in moduleState && - moduleState.type === 'temperatureModuleType' - ) { - return { - targetTemperature: moduleState.targetTemperature, - } - } else if ('targetTemp' in moduleState) { - return { - targetTemp: moduleState.targetTemp, - } - } - } - const labwareLoadedOnModule = allLabware.find( - lw => lw.slot === moduleOnDeck.id - ) - const shouldHideChildren = - moduleOnDeck.moduleState.type === THERMOCYCLER_MODULE_TYPE && - moduleOnDeck.moduleState.lidOpen === false - const labwareInterfaceBoundingBox = { - xDimension: moduleDef.dimensions.labwareInterfaceXDimension ?? 0, - yDimension: moduleDef.dimensions.labwareInterfaceYDimension ?? 0, - zDimension: 0, - } - - const moduleOrientation = inferModuleOrientationFromSlot( - moduleOnDeck.slot - ) - - const isAdapter = labwareLoadedOnModule?.def.allowedRoles?.includes( - 'adapter' - ) - return ( - - {labwareLoadedOnModule != null && !shouldHideChildren ? ( - <> - - {isAdapter ? ( - - ) : ( - - )} - - ) : null} - - {labwareLoadedOnModule == null && - !shouldHideChildren && - !isAdapter ? ( - - ) : null} - {robotType === FLEX_ROBOT_TYPE ? ( - - ) : ( - - )} - - ) - })} - - {/* on-deck warnings */} - {multichannelWarningSlotIds.map(slotId => { - const slotPosition = getPositionFromSlotId(slotId, deckDef) - const slotBoundingBox = getAddressableAreaFromSlotId(slotId, deckDef) - ?.boundingBox - return slotPosition != null && slotBoundingBox != null ? ( - - ) : null - })} - - {/* SlotControls for all empty deck */} - {deckDef.locations.addressableAreas - .filter(addressableArea => { - const stagingAreaAddressableAreas = getStagingAreaAddressableAreas( - stagingAreaCutoutIds - ) - const addressableAreas = - isAddressableAreaStandardSlot(addressableArea.id, deckDef) || - stagingAreaAddressableAreas.includes(addressableArea.id) - return ( - addressableAreas && - !slotIdsBlockedBySpanning.includes(addressableArea.id) && - getSlotIsEmpty(activeDeckSetup, addressableArea.id) && - addressableArea.id !== trashSlot - ) - }) - .map(addressableArea => { - return ( - - ) - })} - - {/* all labware on deck NOT those in modules */} - {allLabware.map(labware => { - if ( - labware.slot === 'offDeck' || - allModules.some(m => m.id === labware.slot) || - allLabware.some(lab => lab.id === labware.slot) - ) - return null - - const slotPosition = getPositionFromSlotId(labware.slot, deckDef) - const slotBoundingBox = getAddressableAreaFromSlotId( - labware.slot, - deckDef - )?.boundingBox - if (slotPosition == null || slotBoundingBox == null) { - console.warn(`no slot ${labware.slot} for labware ${labware.id}!`) - return null - } - const labwareIsAdapter = labware.def.allowedRoles?.includes('adapter') - return ( - - - - {labwareIsAdapter ? ( - - ) : ( - - )} - - - ) - })} - - {/* all adapters on deck and not on module */} - {allLabware.map(labware => { - if ( - allModules.some(m => m.id === labware.slot) || - labware.slot === 'offDeck' - ) - return null - if ( - deckDef.locations.addressableAreas.some( - addressableArea => addressableArea.id === labware.slot - ) - ) { - return null - } - const slotForOnTheDeck = allLabware.find(lab => lab.id === labware.slot) - ?.slot - const slotForOnMod = allModules.find(mod => mod.id === slotForOnTheDeck) - ?.slot - let slotPosition = null - if (slotForOnMod != null) { - slotPosition = getPositionFromSlotId(slotForOnMod, deckDef) - } else if (slotForOnTheDeck != null) { - slotPosition = getPositionFromSlotId(slotForOnTheDeck, deckDef) - } - if (slotPosition == null) { - console.warn(`no slot ${labware.slot} for labware ${labware.id}!`) - return null - } - return ( - - - - - - - ) - })} - - ) -} - -export const LegacyDeckSetup = (): JSX.Element => { - const drilledDown = - useSelector(labwareIngredSelectors.getDrillDownLabwareId) != null - const selectedTerminalItemId = useSelector(getSelectedTerminalItemId) - const activeDeckSetup = useSelector(getDeckSetupForActiveItem) - const _disableCollisionWarnings = useSelector( - featureFlagSelectors.getDisableModuleRestrictions - ) - const trash = Object.values(activeDeckSetup.additionalEquipmentOnDeck).find( - ae => ae.name === 'trashBin' - ) - - const trashSlot = trash?.location - const robotType = useSelector(getRobotType) - const dispatch = useDispatch() - - const _hasGen1MultichannelPipette = React.useMemo( - () => getHasGen1MultiChannelPipette(activeDeckSetup.pipettes), - [activeDeckSetup.pipettes] - ) - const showGen1MultichannelCollisionWarnings = - !_disableCollisionWarnings && _hasGen1MultichannelPipette - - const deckDef = React.useMemo(() => getDeckDefFromRobotType(robotType), []) - const wrapperRef: React.RefObject = useOnClickOutside({ - onClickOutside: () => { - if (drilledDown) dispatch(labwareIngredActions.drillUpFromLabware()) - }, - }) - const trashBinFixtures = [ - { - cutoutId: trash?.location as CutoutId, - cutoutFixtureId: TRASH_BIN_ADAPTER_FIXTURE, - }, - ] - const wasteChuteFixtures = Object.values( - activeDeckSetup.additionalEquipmentOnDeck - ).filter( - aE => - WASTE_CHUTE_CUTOUT.includes(aE.location as CutoutId) && - aE.name === 'wasteChute' - ) - const stagingAreaFixtures: AdditionalEquipmentEntity[] = Object.values( - activeDeckSetup.additionalEquipmentOnDeck - ).filter( - aE => - STAGING_AREA_CUTOUTS.includes(aE.location as CutoutId) && - aE.name === 'stagingArea' - ) - - const wasteChuteStagingAreaFixtures = Object.values( - activeDeckSetup.additionalEquipmentOnDeck - ).filter( - aE => - STAGING_AREA_CUTOUTS.includes(aE.location as CutoutId) && - aE.name === 'stagingArea' && - aE.location === WASTE_CHUTE_CUTOUT && - wasteChuteFixtures.length > 0 - ) - - const hasWasteChute = - wasteChuteFixtures.length > 0 || wasteChuteStagingAreaFixtures.length > 0 - - const filteredAddressableAreas = deckDef.locations.addressableAreas.filter( - aa => isAddressableAreaStandardSlot(aa.id, deckDef) - ) - return ( -
- {drilledDown && } - -
- - {() => ( - <> - {robotType === OT2_ROBOT_TYPE ? ( - - ) : ( - <> - {filteredAddressableAreas.map(addressableArea => { - const cutoutId = getCutoutIdForAddressableArea( - addressableArea.id, - deckDef.cutoutFixtures - ) - return cutoutId != null ? ( - - ) : null - })} - {stagingAreaFixtures.map(fixture => ( - - ))} - {trash != null - ? trashBinFixtures.map(({ cutoutId }) => - cutoutId != null ? ( - - - - - ) : null - ) - : null} - {wasteChuteFixtures.map(fixture => ( - - ))} - {wasteChuteStagingAreaFixtures.map(fixture => ( - - ))} - - )} - areas.location as CutoutId - )} - {...{ - deckDef, - - showGen1MultichannelCollisionWarnings, - }} - /> - 0} - hasWasteChute={hasWasteChute} - /> - - )} - -
-
- ) -} - -function getCutoutIdForAddressableArea( - addressableArea: AddressableAreaName, - cutoutFixtures: CutoutFixture[] -): CutoutId | null { - return cutoutFixtures.reduce((acc, cutoutFixture) => { - const [cutoutId] = - Object.entries( - cutoutFixture.providesAddressableAreas - ).find(([_cutoutId, providedAAs]) => - providedAAs.includes(addressableArea) - ) ?? [] - return (cutoutId as CutoutId) ?? acc - }, null) -} diff --git a/protocol-designer/src/components/DeckSetup/utils.ts b/protocol-designer/src/components/DeckSetup/utils.ts deleted file mode 100644 index c21607050a1..00000000000 --- a/protocol-designer/src/components/DeckSetup/utils.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { GEN_ONE_MULTI_PIPETTES } from '@opentrons/shared-data' -import { - getLabwareIsCompatible, - getLabwareIsCustom, -} from '../../utils/labwareModuleCompatibility' -import type { InitialDeckSetup, LabwareOnDeck } from '../../step-forms' -import type { ModuleType } from '@opentrons/shared-data' -import type { LabwareDefByDefURI } from '../../labware-defs' - -export interface SwapBlockedArgs { - hoveredLabware?: LabwareOnDeck | null - draggedLabware?: LabwareOnDeck | null - modulesById: InitialDeckSetup['modules'] - customLabwareDefs: LabwareDefByDefURI -} - -export const getSwapBlocked = (args: SwapBlockedArgs): boolean => { - const { - hoveredLabware, - draggedLabware, - modulesById, - customLabwareDefs, - } = args - if (!hoveredLabware || !draggedLabware) { - return false - } - - const sourceModuleType: ModuleType | null = - modulesById[draggedLabware.slot]?.type || null - const destModuleType: ModuleType | null = - modulesById[hoveredLabware.slot]?.type || null - - const draggedLabwareIsCustom = getLabwareIsCustom( - customLabwareDefs, - draggedLabware - ) - const hoveredLabwareIsCustom = getLabwareIsCustom( - customLabwareDefs, - hoveredLabware - ) - - // dragging custom labware to module gives not compat error - const labwareSourceToDestBlocked = sourceModuleType - ? !getLabwareIsCompatible(hoveredLabware.def, sourceModuleType) && - !hoveredLabwareIsCustom - : false - const labwareDestToSourceBlocked = destModuleType - ? !getLabwareIsCompatible(draggedLabware.def, destModuleType) && - !draggedLabwareIsCustom - : false - - return labwareSourceToDestBlocked || labwareDestToSourceBlocked -} - -export const getHasGen1MultiChannelPipette = ( - pipettes: InitialDeckSetup['pipettes'] -): boolean => { - const pipetteIds = Object.keys(pipettes) - return pipetteIds.some(pipetteId => - GEN_ONE_MULTI_PIPETTES.includes(pipettes[pipetteId]?.name) - ) -} diff --git a/protocol-designer/src/components/DeckSetupManager.tsx b/protocol-designer/src/components/DeckSetupManager.tsx deleted file mode 100644 index bbe87287b41..00000000000 --- a/protocol-designer/src/components/DeckSetupManager.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { useSelector } from 'react-redux' -import { - getBatchEditSelectedStepTypes, - getHoveredItem, -} from '../ui/steps/selectors' -import { LegacyDeckSetup } from './DeckSetup' -import { NullDeckState } from './DeckSetup/NullDeckState' -import { OffDeckLabwareButton } from './OffDeckLabwareButton' - -export const DeckSetupManager = (): JSX.Element => { - const batchEditSelectedStepTypes = useSelector(getBatchEditSelectedStepTypes) - const hoveredItem = useSelector(getHoveredItem) - - if (batchEditSelectedStepTypes.length === 0 || hoveredItem !== null) { - // not batch edit mode, or batch edit while item is hovered: show the deck - return ( - <> - - - - ) - } else { - return - } -} diff --git a/protocol-designer/src/components/EditModules.tsx b/protocol-designer/src/components/EditModules.tsx deleted file mode 100644 index 31b392c29a5..00000000000 --- a/protocol-designer/src/components/EditModules.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { useState } from 'react' -import { useSelector, useDispatch } from 'react-redux' -import { - FLEX_ROBOT_TYPE, - HEATERSHAKER_MODULE_TYPE, - MAGNETIC_BLOCK_TYPE, - TEMPERATURE_MODULE_TYPE, -} from '@opentrons/shared-data' -import { - selectors as stepFormSelectors, - actions as stepFormActions, -} from '../step-forms' -import { moveDeckItem } from '../labware-ingred/actions/actions' -import { getRobotType } from '../file-data/selectors' -import { EditMultipleModulesModal } from './modals/EditModulesModal/EditMultipleModulesModal' -import { useBlockingHint } from './Hints/useBlockingHint' -import { MagneticModuleWarningModalContent } from './modals/EditModulesModal/MagneticModuleWarningModalContent' -import { EditModulesModal } from './modals/EditModulesModal' -import type { ModuleModel, ModuleType } from '@opentrons/shared-data' - -export interface EditModulesProps { - moduleToEdit: { - moduleId?: string | null - moduleType: ModuleType - } - onCloseClick: () => void -} - -export interface ModelModuleInfo { - model: ModuleModel - slot: string -} - -export const EditModules = (props: EditModulesProps): JSX.Element => { - const { onCloseClick, moduleToEdit } = props - const { moduleId, moduleType } = moduleToEdit - const _initialDeckSetup = useSelector(stepFormSelectors.getInitialDeckSetup) - const robotType = useSelector(getRobotType) - - const MOAM_MODULE_TYPES: ModuleType[] = [ - TEMPERATURE_MODULE_TYPE, - HEATERSHAKER_MODULE_TYPE, - MAGNETIC_BLOCK_TYPE, - ] - - const showMultipleModuleModal = - robotType === FLEX_ROBOT_TYPE && MOAM_MODULE_TYPES.includes(moduleType) - - const moduleOnDeck = moduleId ? _initialDeckSetup.modules[moduleId] : null - const [ - changeModuleWarningInfo, - displayModuleWarning, - ] = useState(null) - const dispatch = useDispatch() - - const editModuleModel = (selectedModel: ModuleModel): void => { - if (moduleOnDeck?.id != null) { - dispatch( - stepFormActions.editModule({ - id: moduleOnDeck.id, - model: selectedModel, - }) - ) - } else { - console.error( - `cannot edit module model without module id. This shouldn't be able to happen` - ) - } - } - const editModuleSlot = (selectedSlot: string): void => { - if (selectedSlot && moduleOnDeck && moduleOnDeck.slot !== selectedSlot) { - dispatch(moveDeckItem(moduleOnDeck.slot, selectedSlot)) - } - } - - const changeModuleWarning = useBlockingHint({ - hintKey: 'change_magnet_module_model', - handleCancel: () => { - displayModuleWarning(null) - }, - handleContinue: () => { - if (changeModuleWarningInfo) { - editModuleModel(changeModuleWarningInfo.model) - editModuleSlot(changeModuleWarningInfo.slot) - } else { - console.error('no module info set, could not edit module') - } - displayModuleWarning(null) - onCloseClick() - }, - content: , - enabled: changeModuleWarningInfo !== null, - }) - - let modal = ( - - ) - if (showMultipleModuleModal) { - modal = ( - - ) - } - return changeModuleWarning ?? modal -} diff --git a/protocol-designer/src/components/EditableTextField.tsx b/protocol-designer/src/components/EditableTextField.tsx deleted file mode 100644 index 1b5adcb56be..00000000000 --- a/protocol-designer/src/components/EditableTextField.tsx +++ /dev/null @@ -1,74 +0,0 @@ -// TODO: Ian 2018-10-30 if we like this, add it to components library -import * as React from 'react' -import { ClickOutside, Icon, LegacyInputField } from '@opentrons/components' -import styles from './editableTextField.module.css' - -interface Props { - className?: string - value?: string | null - saveEdit: (newValue: string) => unknown -} - -export function EditableTextField(props: Props): JSX.Element { - const { className, value, saveEdit } = props - const [editing, setEditing] = React.useState(false) - const [transientValue, setTransientValue] = React.useState< - string | null | undefined - >(value) - - const enterEditMode = (): void => { - setEditing(true) - setTransientValue(value) - } - const handleCancel = (): void => { - setEditing(false) - setTransientValue(value) - } - - const handleKeyUp = (e: React.KeyboardEvent): void => { - if (e.key === 'Escape') { - handleCancel() - } - } - - const handleSubmit = (): void => { - setEditing(false) - saveEdit(transientValue ?? '') - } - const handleFormSubmit = (e: React.FormEvent): void => { - e.preventDefault() // avoid 'form is not connected' warning - handleSubmit() - } - - const updateValue = (e: React.ChangeEvent): void => { - setTransientValue(e.currentTarget.value) - } - if (editing) { - return ( - - {({ ref }) => ( -
- } - /> - - )} -
- ) - } - - return ( -
-
{value}
- -
- ) -} diff --git a/protocol-designer/src/components/FilePage.module.css b/protocol-designer/src/components/FilePage.module.css deleted file mode 100644 index 787f00b4866..00000000000 --- a/protocol-designer/src/components/FilePage.module.css +++ /dev/null @@ -1,51 +0,0 @@ -@import '@opentrons/components/styles'; - -.file_page { - position: relative; - height: 100%; - min-height: 100vh; -} - -.card_content { - padding: 1rem; -} - -.file_page h1 { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ -} - -.file_page > * { - margin: 1rem 2.5rem; -} - -.pipette_button_row { - display: flex; - justify-content: center; -} - -.swap_button { - display: block; - margin: 0 0.5rem; - width: 8rem; - - &:focus { - background-color: transparent; - } -} - -.edit_button { - display: block; - margin: 0 0.5rem; - width: 8rem; -} - -.update_button { - width: 8rem; - align-self: flex-start; -} - -.continue_button { - width: 14rem; -} diff --git a/protocol-designer/src/components/FilePage.tsx b/protocol-designer/src/components/FilePage.tsx deleted file mode 100644 index 2167ece1071..00000000000 --- a/protocol-designer/src/components/FilePage.tsx +++ /dev/null @@ -1,282 +0,0 @@ -import { useState, useEffect } from 'react' -import { createPortal } from 'react-dom' -import { Controller, useForm } from 'react-hook-form' -import { useTranslation } from 'react-i18next' -import { useSelector, useDispatch } from 'react-redux' -import mapValues from 'lodash/mapValues' -import { format } from 'date-fns' -import cx from 'classnames' - -import { - Card, - FormGroup, - InstrumentGroup, - OutlineButton, - DeprecatedPrimaryButton, - LegacyInputField, -} from '@opentrons/components' -import { resetScrollElements } from '../ui/steps/utils' -import { EditModulesCard } from './modules' -import { EditModules } from './EditModules' - -import styles from './FilePage.module.css' -import modalStyles from '../components/modals/modal.module.css' -import formStyles from '../components/forms/forms.module.css' -import { actions, selectors as fileSelectors } from '../file-data' -import { actions as navActions } from '../navigation' -import { actions as steplistActions } from '../steplist' -import { selectors as stepFormSelectors } from '../step-forms' -import { INITIAL_DECK_SETUP_STEP_ID } from '../constants' -import { FilePipettesModal } from './modals/FilePipettesModal' -import { getTopPortalEl } from './portals/TopPortal' - -import type { ModuleType } from '@opentrons/shared-data' -import type { FileMetadataFields } from '../file-data' - -// TODO(mc, 2020-02-28): explore l10n for these dates -const DATE_ONLY_FORMAT = 'MMM dd, yyyy' -const DATETIME_FORMAT = 'MMM dd, yyyy | h:mm a' -export const FilePage = (): JSX.Element => { - const { t } = useTranslation(['button', 'application']) - const dispatch = useDispatch() - - const formValues = useSelector(fileSelectors.getFileMetadata) - const instruments = useSelector( - stepFormSelectors.getPipettesForInstrumentGroup - ) - const modules = useSelector(stepFormSelectors.getModulesForEditModulesCard) - const initialDeckSetup = useSelector(stepFormSelectors.getInitialDeckSetup) - const [isEditPipetteModalOpen, setEditPipetteModalOpen] = useState( - false - ) - const [moduleToEdit, setModuleToEdit] = useState<{ - moduleType: ModuleType - moduleId?: string | null - } | null>(null) - - const swapPipetteUpdate = mapValues(initialDeckSetup.pipettes, pipette => { - if (!pipette.mount) return pipette.mount - return pipette.mount === 'left' ? 'right' : 'left' - }) - - const openEditPipetteModal = (): void => { - resetScrollElements() - setEditPipetteModalOpen(true) - } - - const closeEditPipetteModal = (): void => { - setEditPipetteModalOpen(false) - } - const handleEditModule = ( - moduleType: ModuleType, - moduleId?: string | null - ): void => { - resetScrollElements() - setModuleToEdit({ moduleType: moduleType, moduleId: moduleId }) - } - - const closeEditModulesModal = (): void => { - setModuleToEdit(null) - } - - const saveFileMetadata = (nextFormValues: FileMetadataFields): void => { - dispatch(actions.saveFileMetadata(nextFormValues)) - setManualDirty(false) - } - const [isManualDirty, setManualDirty] = useState(false) - const { - handleSubmit, - watch, - control, - setValue, - formState: { isDirty }, - } = useForm({ defaultValues: formValues }) - // to ensure that values from watch are up to date if the defaultValues - // change - useEffect(() => { - setValue('protocolName', formValues.protocolName) - setValue('created', formValues.created) - setValue('lastModified', formValues.lastModified) - setValue('author', formValues.author) - setValue('description', formValues.description) - }, [ - formValues.protocolName, - formValues.created, - formValues.lastModified, - formValues.author, - formValues.description, - ]) - - const [created, lastModified, protocolName, author, description] = watch([ - 'created', - 'lastModified', - 'protocolName', - 'author', - 'description', - ]) - return ( -
- -
-
- - {created && format(created, DATE_ONLY_FORMAT)} - - - - {lastModified && format(lastModified, DATETIME_FORMAT)} - -
- -
- - ( - { - setManualDirty(true) - }} - /> - )} - /> - - - - ( - { - setManualDirty(true) - }} - /> - )} - /> - -
- - - ( - { - setManualDirty(true) - }} - /> - )} - /> - -
- - {isManualDirty - ? t('application:update') - : t('application:updated')} - -
-
-
- - -
- -
- - {t('edit')} - - - dispatch( - steplistActions.changeSavedStepForm({ - stepId: INITIAL_DECK_SETUP_STEP_ID, - update: { - pipetteLocationUpdate: swapPipetteUpdate, - }, - }) - ) - } - className={styles.swap_button} - iconName="swap-horizontal" - name="swapPipettes" - disabled={instruments?.left?.pipetteSpecs?.channels === 96} - > - {t('swap')} - -
-
-
- - - -
- dispatch(navActions.navigateToPage('liquids'))} - className={styles.continue_button} - iconName="arrow-right" - name="continueToLiquids" - > - {t('continue_to_liquids')} - -
- {createPortal( - <> - {isEditPipetteModalOpen && ( - - )} - {moduleToEdit != null && ( - - )} - , - getTopPortalEl() - )} -
- ) -} diff --git a/protocol-designer/src/components/FileSidebar/FileSidebar.module.css b/protocol-designer/src/components/FileSidebar/FileSidebar.module.css deleted file mode 100644 index b94d2658d01..00000000000 --- a/protocol-designer/src/components/FileSidebar/FileSidebar.module.css +++ /dev/null @@ -1,16 +0,0 @@ -@import '@opentrons/components/styles'; - -.file_sidebar { - padding: 2rem 4.5rem 0; -} - -.upload_button, -.button { - margin: 0.75rem 0; - width: 100%; -} - -.upload_button input { - position: fixed; - clip: rect(1px 1px 1px 1px); -} diff --git a/protocol-designer/src/components/FileSidebar/FileSidebar.tsx b/protocol-designer/src/components/FileSidebar/FileSidebar.tsx deleted file mode 100644 index 52e312b37e0..00000000000 --- a/protocol-designer/src/components/FileSidebar/FileSidebar.tsx +++ /dev/null @@ -1,475 +0,0 @@ -import * as React from 'react' -import cx from 'classnames' -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { - DeprecatedPrimaryButton, - AlertModal, - OutlineButton, - SidePanel, -} from '@opentrons/components' -import { - actions as loadFileActions, - selectors as loadFileSelectors, -} from '../../load-file' -import { actions, selectors } from '../../navigation' -import { selectors as fileDataSelectors } from '../../file-data' -import { selectors as stepFormSelectors } from '../../step-forms' -import { getRobotType } from '../../file-data/selectors' -import { getAdditionalEquipment } from '../../step-forms/selectors' -import { resetScrollElements } from '../../ui/steps/utils' -import { getMainPagePortalEl } from '../portals/MainPageModalPortal' -import { useBlockingHint } from '../Hints/useBlockingHint' -import { KnowledgeBaseLink } from '../KnowledgeBaseLink' -import { - getUnusedEntities, - getUnusedTrash, - getUnusedStagingAreas, -} from './utils' -import modalStyles from '../modals/modal.module.css' -import styles from './FileSidebar.module.css' - -import type { - CreateCommand, - ProtocolFile, - RobotType, -} from '@opentrons/shared-data' -import type { HintKey } from '../../tutorial' -import type { - InitialDeckSetup, - SavedStepFormState, - ModuleOnDeck, - PipetteOnDeck, -} from '../../step-forms' -import type { ThunkDispatch } from '../../types' -import { createPortal } from 'react-dom' - -export interface AdditionalEquipment { - [additionalEquipmentId: string]: { - name: 'gripper' | 'wasteChute' | 'stagingArea' | 'trashBin' - id: string - location?: string - } -} - -export interface Props { - loadFile: (event: React.ChangeEvent) => unknown - createNewFile?: () => unknown - canDownload: boolean - onDownload: () => unknown - fileData?: ProtocolFile | null - pipettesOnDeck: InitialDeckSetup['pipettes'] - modulesOnDeck: InitialDeckSetup['modules'] - savedStepForms: SavedStepFormState - robotType: RobotType - additionalEquipment: AdditionalEquipment -} - -interface WarningContent { - content: React.ReactNode - heading: string -} - -interface Fixture { - trashBin: boolean - wasteChute: boolean - stagingAreaSlots: string[] -} -interface MissingContent { - noCommands: boolean - pipettesWithoutStep: PipetteOnDeck[] - modulesWithoutStep: ModuleOnDeck[] - gripperWithoutStep: boolean - fixtureWithoutStep: Fixture - t: any -} - -const LOAD_COMMANDS: Array = [ - 'loadLabware', - 'loadModule', - 'loadPipette', - 'loadLiquid', -] - -function getWarningContent({ - noCommands, - pipettesWithoutStep, - modulesWithoutStep, - gripperWithoutStep, - fixtureWithoutStep, - t, -}: MissingContent): WarningContent | null { - if (noCommands) { - return { - content: ( - <> -

{t('export_warnings.no_commands.body1')}

-

- {t('export_warnings.no_commands.body2')} - here. -

- - ), - heading: t('export_warnings.no_commands.heading'), - } - } - - if (gripperWithoutStep) { - return { - content: ( - <> -

{t('export_warnings.unused_gripper.body1')}

-

{t('export_warnings.unused_gripper.body2')}

- - ), - heading: t('export_warnings.unused_gripper.heading'), - } - } - - const pipettesDetails = pipettesWithoutStep - .map(pipette => - pipette.spec.channels === 96 - ? `${pipette.spec.displayName} pipette` - : `${pipette.mount} ${pipette.spec.displayName} pipette` - ) - .join(' and ') - - const unusedModuleCounts = modulesWithoutStep.reduce<{ - [key: string]: number - }>((acc, mod) => { - if (!(mod.type in acc)) { - return { ...acc, [mod.type]: 1 } - } else { - return { ...acc, [mod.type]: acc[mod.type] + 1 } - } - }, {}) - - const modulesDetails = Object.keys(unusedModuleCounts) - // sorting by module count - .sort((k1, k2) => { - if (unusedModuleCounts[k1] < unusedModuleCounts[k2]) { - return 1 - } else if (unusedModuleCounts[k1] > unusedModuleCounts[k2]) { - return -1 - } else { - return 0 - } - }) - .map(modType => - unusedModuleCounts[modType] === 1 - ? t(`modules:module_long_names.${modType}`) - : `${t(`modules:module_long_names.${modType}`)}s` - ) - // transform list of modules with counts to string - .reduce((acc, modName, index, arr) => { - if (arr.length > 2) { - if (index === arr.length - 1) { - return `${acc} and ${modName}` - } else { - return `${acc}${modName}, ` - } - } else if (arr.length === 2) { - return index === 0 ? `${modName} and ` : `${acc}${modName}` - } else { - return modName - } - }, '') - - if (pipettesWithoutStep.length && modulesWithoutStep.length) { - return { - content: ( - <> -

- {t('export_warnings.unused_pipette_and_module.body1', { - modulesDetails, - pipettesDetails, - })} -

-

{t('export_warnings.unused_pipette_and_module.body2')}

- - ), - heading: t('export_warnings.unused_pipette_and_module.heading'), - } - } - - if (pipettesWithoutStep.length) { - return { - content: ( - <> -

- {t('export_warnings.unused_pipette.body1', { - pipettesDetails, - })} -

-

{t('export_warnings.unused_pipette.body2')}

- - ), - heading: t('export_warnings.unused_pipette.heading'), - } - } - - if (modulesWithoutStep.length) { - const moduleCase = - modulesWithoutStep.length > 1 ? 'unused_modules' : 'unused_module' - const slotName = modulesWithoutStep.map(module => module.slot) - return { - content: ( - <> -

- {t(`export_warnings.${moduleCase}.body1`, { - modulesDetails, - slotName: slotName, - })} -

-

{t(`export_warnings.${moduleCase}.body2`)}

- - ), - heading: t(`export_warnings.${moduleCase}.heading`), - } - } - - if (fixtureWithoutStep.trashBin || fixtureWithoutStep.wasteChute) { - return { - content: - (fixtureWithoutStep.trashBin && !fixtureWithoutStep.wasteChute) || - (!fixtureWithoutStep.trashBin && fixtureWithoutStep.wasteChute) ? ( -

- {t('export_warnings.unused_trash.body', { - name: fixtureWithoutStep.trashBin ? 'trash bin' : 'waste chute', - })} -

- ) : ( -

- {t('export_warnings.unused_trash.body_both', { - trashName: 'trash bin', - wasteName: 'waste chute', - })} -

- ), - heading: t('export_warnings.unused_trash.heading'), - } - } - - if (fixtureWithoutStep.stagingAreaSlots.length) { - return { - content: ( - <> -

- {t('export_warnings.unused_staging_area.body1', { - count: fixtureWithoutStep.stagingAreaSlots.length, - slot: fixtureWithoutStep.stagingAreaSlots, - })} -

-

- {t('export_warnings.unused_staging_area.body2', { - count: fixtureWithoutStep.stagingAreaSlots.length, - })} -

- - ), - heading: t('export_warnings.unused_staging_area.heading'), - } - } - - return null -} - -export function v8WarningContent(t: any): JSX.Element { - return ( -
-

- {t(`alert:hint.export_v8_1_protocol_7_3.body1`)}{' '} - {t(`alert:hint.export_v8_1_protocol_7_3.body2`)} - {t(`alert:hint.export_v8_1_protocol_7_3.body3`)} -

-
- ) -} -export function FileSidebar(): JSX.Element { - const fileData = useSelector(fileDataSelectors.createFile) - const currentPage = useSelector(selectors.getCurrentPage) - const canDownload = currentPage !== 'file-splash' - const initialDeckSetup = useSelector(stepFormSelectors.getInitialDeckSetup) - const modulesOnDeck = initialDeckSetup.modules - const pipettesOnDeck = initialDeckSetup.pipettes - const robotType = useSelector(getRobotType) - const additionalEquipment = useSelector(getAdditionalEquipment) - const savedStepForms = useSelector(stepFormSelectors.getSavedStepForms) - const newProtocolModal = useSelector(selectors.getNewProtocolModal) - const hasUnsavedChanges = useSelector(loadFileSelectors.getHasUnsavedChanges) - const canCreateNew = !newProtocolModal - const dispatch: ThunkDispatch = useDispatch() - - const [ - showExportWarningModal, - setShowExportWarningModal, - ] = React.useState(false) - const { t } = useTranslation(['alert', 'modules']) - const isGripperAttached = Object.values(additionalEquipment).some( - equipment => equipment?.name === 'gripper' - ) - const { trashBinUnused, wasteChuteUnused } = getUnusedTrash( - additionalEquipment, - fileData?.commands - ) - - const fixtureWithoutStep: Fixture = { - trashBin: trashBinUnused, - wasteChute: wasteChuteUnused, - stagingAreaSlots: getUnusedStagingAreas( - additionalEquipment, - fileData?.commands - ), - } - const [showBlockingHint, setShowBlockingHint] = React.useState(false) - - const cancelModal = (): void => { - setShowExportWarningModal(false) - } - - const loadFile = ( - fileChangeEvent: React.ChangeEvent - ): void => { - if (!hasUnsavedChanges || window.confirm(t('confirm_import') as string)) { - dispatch(loadFileActions.loadProtocolFile(fileChangeEvent)) - } - } - - const createNewFile = (): void => { - if (canCreateNew) { - dispatch(actions.toggleNewProtocolModal(true)) - } - } - - const nonLoadCommands = - fileData?.commands.filter( - command => !LOAD_COMMANDS.includes(command.commandType) - ) ?? [] - - const gripperInUse = - fileData?.commands.find( - command => - command.commandType === 'moveLabware' && - command.params.strategy === 'usingGripper' - ) != null - - const noCommands = fileData ? nonLoadCommands.length === 0 : true - const pipettesWithoutStep = getUnusedEntities( - pipettesOnDeck, - savedStepForms, - 'pipette', - robotType - ) - const modulesWithoutStep = getUnusedEntities( - modulesOnDeck, - savedStepForms, - 'moduleId', - robotType - ) - const gripperWithoutStep = isGripperAttached && !gripperInUse - - const hasWarning = - noCommands || - modulesWithoutStep.length > 0 || - pipettesWithoutStep.length > 0 || - gripperWithoutStep || - fixtureWithoutStep.trashBin || - fixtureWithoutStep.wasteChute || - fixtureWithoutStep.stagingAreaSlots.length > 0 - - const warning = - hasWarning && - getWarningContent({ - noCommands, - pipettesWithoutStep, - modulesWithoutStep, - gripperWithoutStep, - fixtureWithoutStep, - t, - }) - - const getExportHintContent = (): { - hintKey: HintKey - content: React.ReactNode - } => { - return { - hintKey: 'export_v8_1_protocol_7_3', - content: v8WarningContent(t), - } - } - - const { hintKey, content } = getExportHintContent() - - const blockingExportHint = useBlockingHint({ - enabled: showBlockingHint, - hintKey, - content, - handleCancel: () => { - setShowBlockingHint(false) - }, - handleContinue: () => { - setShowBlockingHint(false) - dispatch(loadFileActions.saveProtocolFile()) - }, - }) - return ( - <> - {blockingExportHint} - {showExportWarningModal && - createPortal( - { - setShowExportWarningModal(false) - setShowBlockingHint(true) - }, - }, - ]} - > - {warning && warning.content} - , - getMainPagePortalEl() - )} - -
- - {t('create_new')} - - - - {t('import')} - - - -
- { - if (hasWarning) { - resetScrollElements() - setShowExportWarningModal(true) - } else { - resetScrollElements() - setShowBlockingHint(true) - } - }} - disabled={!canDownload} - > - {t('export')} - -
-
-
- - ) -} diff --git a/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx b/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx deleted file mode 100644 index c8d2a7c8fe9..00000000000 --- a/protocol-designer/src/components/FileSidebar/__tests__/FileSidebar.test.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest' -import { fireEvent, screen } from '@testing-library/react' -import { FLEX_ROBOT_TYPE, fixtureTiprack300ul } from '@opentrons/shared-data' -import { renderWithProviders } from '../../../__testing-utils__' -import { createFile, getRobotType } from '../../../file-data/selectors' -import { - getCurrentPage, - getNewProtocolModal, -} from '../../../navigation/selectors' -import { i18n } from '../../../assets/localization' -import { - getAdditionalEquipment, - getInitialDeckSetup, - getSavedStepForms, -} from '../../../step-forms/selectors' -import { toggleNewProtocolModal } from '../../../navigation/actions' -import { getHasUnsavedChanges } from '../../../load-file/selectors' -import { useBlockingHint } from '../../Hints/useBlockingHint' -import { getUnusedStagingAreas } from '../utils/getUnusedStagingAreas' -import { getUnusedTrash } from '../utils/getUnusedTrash' -import { FileSidebar } from '../FileSidebar' -import type { LabwareDefinition2 } from '@opentrons/shared-data' - -vi.mock('../../../step-forms/selectors') -vi.mock('../../../load-file/selectors') -vi.mock('../../../navigation/actions') -vi.mock('../../../navigation/selectors') -vi.mock('../../../file-data/selectors') -vi.mock('../../Hints/useBlockingHint') -vi.mock('../utils/getUnusedStagingAreas') -vi.mock('../utils/getUnusedTrash') -const render = () => { - return renderWithProviders(, { i18nInstance: i18n })[0] -} - -describe('FileSidebar', () => { - beforeEach(() => { - vi.mocked(getUnusedStagingAreas).mockReturnValue([]) - vi.mocked(getUnusedTrash).mockReturnValue({ - trashBinUnused: false, - wasteChuteUnused: false, - }) - vi.mocked(getInitialDeckSetup).mockReturnValue({ - modules: {}, - pipettes: {}, - additionalEquipmentOnDeck: {}, - labware: {}, - }) - vi.mocked(getHasUnsavedChanges).mockReturnValue(false) - vi.mocked(getNewProtocolModal).mockReturnValue(false) - vi.mocked(getSavedStepForms).mockReturnValue({}) - vi.mocked(getAdditionalEquipment).mockReturnValue({}) - vi.mocked(getRobotType).mockReturnValue(FLEX_ROBOT_TYPE) - vi.mocked(getCurrentPage).mockReturnValue('settings-app') - vi.mocked(useBlockingHint).mockReturnValue(null) - vi.mocked(createFile).mockReturnValue({ - commands: [ - { - commandType: 'moveToAddressableArea', - params: { - addressableAreaName: 'movableTrashA3', - pipetteId: 'mockId', - offset: { x: 0, y: 0, z: 0 }, - }, - }, - ], - } as any) - }) - afterEach(() => { - vi.resetAllMocks() - }) - it('renders the file sidebar and exports with blocking hint for exporting', () => { - vi.mocked(useBlockingHint).mockReturnValue(
mock blocking hint
) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - expect(vi.mocked(useBlockingHint)).toHaveBeenCalled() - screen.getByText('mock blocking hint') - }) - it('renders the file sidebar and buttons work as expected with no warning upon export', () => { - render() - screen.getByText('Protocol File') - fireEvent.click(screen.getByRole('button', { name: 'Create New' })) - expect(vi.mocked(toggleNewProtocolModal)).toHaveBeenCalled() - screen.getByText('Import') - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - expect(vi.mocked(useBlockingHint)).toHaveBeenCalled() - }) - it('renders the no commands warning', () => { - vi.mocked(createFile).mockReturnValue({ - commands: [], - } as any) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Your protocol has no steps') - }) - it('renders the unused pipette warning', () => { - vi.mocked(getInitialDeckSetup).mockReturnValue({ - modules: {}, - pipettes: { - pipetteId: { - mount: 'left', - name: 'p1000_96', - id: 'pipetteId', - tiprackLabwareDef: [fixtureTiprack300ul as LabwareDefinition2], - tiprackDefURI: ['mockDefUri'], - spec: { - displayName: 'mock display name', - } as any, - }, - }, - additionalEquipmentOnDeck: {}, - labware: {}, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused pipette') - }) - it('renders the unused pieptte and module warning', () => { - vi.mocked(getInitialDeckSetup).mockReturnValue({ - modules: { - moduleId: { - slot: 'A1', - moduleState: {} as any, - id: 'moduleId', - type: 'temperatureModuleType', - model: 'temperatureModuleV2', - }, - }, - pipettes: { - pipetteId: { - mount: 'left', - name: 'p1000_96', - id: 'pipetteId', - tiprackLabwareDef: [fixtureTiprack300ul as LabwareDefinition2], - tiprackDefURI: ['mockDefUri'], - spec: { - displayName: 'mock display name', - } as any, - }, - }, - additionalEquipmentOnDeck: {}, - labware: {}, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused pipette and module') - }) - it('renders the unused trash warning', () => { - vi.mocked(getUnusedTrash).mockReturnValue({ - trashBinUnused: true, - wasteChuteUnused: false, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused trash') - }) - it('renders the unused waste chute warning', () => { - vi.mocked(getUnusedTrash).mockReturnValue({ - trashBinUnused: false, - wasteChuteUnused: true, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused trash') - }) - it('renders the unused staging area slot warning', () => { - vi.mocked(getUnusedStagingAreas).mockReturnValue(['D4']) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('One or more staging area slots are unused') - }) - it('renders the unused gripper warning', () => { - vi.mocked(getAdditionalEquipment).mockReturnValue({ - gripperId: { name: 'gripper', id: 'gripperId' }, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused gripper') - }) - it('renders the unused module warning', () => { - vi.mocked(getInitialDeckSetup).mockReturnValue({ - modules: { - moduleId: { - slot: 'A1', - moduleState: {} as any, - id: 'moduleId', - type: 'temperatureModuleType', - model: 'temperatureModuleV2', - }, - }, - pipettes: {}, - additionalEquipmentOnDeck: {}, - labware: {}, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused module') - screen.getByText( - 'The Temperature module specified in your protocol in Slot A1 is not currently used in any step. In order to run this protocol you will need to power up and connect the module to your robot.' - ) - }) - it('renders the unused modules warning', () => { - vi.mocked(getInitialDeckSetup).mockReturnValue({ - modules: { - moduleId: { - slot: 'A1', - moduleState: {} as any, - id: 'moduleId', - type: 'temperatureModuleType', - model: 'temperatureModuleV2', - }, - moduleId2: { - slot: 'B1', - moduleState: {} as any, - id: 'moduleId2', - type: 'temperatureModuleType', - model: 'temperatureModuleV2', - }, - }, - pipettes: {}, - additionalEquipmentOnDeck: {}, - labware: {}, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText('Unused modules') - screen.getByText( - 'One or more modules specified in your protocol in Slot(s) A1,B1 are not currently used in any step. In order to run this protocol you will need to power up and connect the modules to your robot.' - ) - }) - it('renders the formatted unused pipettes and modules warning sorted by count', () => { - vi.mocked(getInitialDeckSetup).mockReturnValue({ - modules: { - moduleId1: { - slot: 'A1', - moduleState: {} as any, - id: 'moduleId', - type: 'thermocyclerModuleType', - model: 'thermocyclerModuleV2', - }, - moduleId2: { - slot: 'C3', - moduleState: {} as any, - id: 'moduleId1', - type: 'temperatureModuleType', - model: 'temperatureModuleV2', - }, - moduleId3: { - slot: 'D3', - moduleState: {} as any, - id: 'moduleId2', - type: 'temperatureModuleType', - model: 'temperatureModuleV2', - }, - moduleId4: { - slot: 'C1', - moduleState: {} as any, - id: 'moduleId3', - type: 'heaterShakerModuleType', - model: 'heaterShakerModuleV1', - }, - }, - pipettes: { - pipetteId: { - mount: 'left', - name: 'p1000_96', - id: 'pipetteId', - tiprackLabwareDef: [fixtureTiprack300ul as LabwareDefinition2], - tiprackDefURI: ['mockDefUri'], - spec: { - displayName: 'mock display name', - channels: 96, - } as any, - }, - }, - additionalEquipmentOnDeck: {}, - labware: {}, - }) - render() - fireEvent.click(screen.getByRole('button', { name: 'Export' })) - screen.getByText( - 'The mock display name pipette and Temperature modules, Thermocycler module, and Heater-Shaker module in your protocol are not currently used in any step. In order to run this protocol you will need to attach this pipette as well as power up and connect the module to your robot.' - ) - }) -}) diff --git a/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedEntities.test.ts b/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedEntities.test.ts deleted file mode 100644 index 3e2897ec27d..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedEntities.test.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { describe, expect, it } from 'vitest' -import { - fixtureP10Single, - fixtureP300Single, -} from '@opentrons/shared-data/pipette/fixtures/name' -import { fixture_tiprack_10_ul } from '@opentrons/shared-data/labware/fixtures/2' -import { - MAGNETIC_MODULE_TYPE, - TEMPERATURE_MODULE_TYPE, - MAGNETIC_MODULE_V1, - TEMPERATURE_MODULE_V1, - MAGNETIC_BLOCK_TYPE, - MAGNETIC_BLOCK_V1, -} from '@opentrons/shared-data' -import { TEMPERATURE_DEACTIVATED } from '@opentrons/step-generation' -import { getUnusedEntities } from '../getUnusedEntities' -import type { SavedStepFormState } from '../../../../step-forms' - -describe('getUnusedEntities', () => { - it('pipette entities not used in steps are returned', () => { - const stepForms: SavedStepFormState = { - step123: { - pipette: 'pipette123', - id: 'step123', - stepType: 'moveLiquid', - }, - } - const pipettesOnDeck = { - pipette123: { - name: 'string', - id: 'pipette123', - tiprackDefURI: 'test', - tiprackLabwareDef: fixture_tiprack_10_ul, - spec: fixtureP10Single, - mount: 'right', - }, - pipette456: { - name: 'string', - id: 'pipette456', - tiprackDefURI: 'test', - tiprackLabwareDef: fixture_tiprack_10_ul, - spec: fixtureP300Single, - mount: 'left', - }, - } - - const result = getUnusedEntities( - pipettesOnDeck, - stepForms, - 'pipette', - 'OT-2 Standard' - ) - - expect(result).toEqual([pipettesOnDeck.pipette456]) - }) - - it('module entities not used in steps are returned', () => { - const stepForms: SavedStepFormState = { - step123: { - moduleId: 'magnet123', - id: 'step123', - magnetAction: 'engage', - engageHeight: '10', - stepType: 'magnet', - stepName: 'magnet', - stepDetails: '', - }, - } - const modulesOnDeck = { - magnet123: { - id: 'magnet123', - type: MAGNETIC_MODULE_TYPE, - model: MAGNETIC_MODULE_V1, - slot: '3', - moduleState: { - type: MAGNETIC_MODULE_TYPE, - engaged: false, - }, - }, - temperature456: { - id: 'temperature456', - type: TEMPERATURE_MODULE_TYPE, - model: TEMPERATURE_MODULE_V1, - moduleState: { - type: TEMPERATURE_MODULE_TYPE, - status: TEMPERATURE_DEACTIVATED, - targetTemperature: null, - }, - slot: '9', - }, - } - - const result = getUnusedEntities( - modulesOnDeck, - stepForms, - 'moduleId', - 'OT-2 Standard' - ) - - expect(result).toEqual([modulesOnDeck.temperature456]) - }) - - it('filters out magnetic block and shows module entities not used in steps are returned for Flex', () => { - const stepForms: SavedStepFormState = { - step123: { - moduleId: 'magnet123', - id: 'step123', - magnetAction: 'engage', - engageHeight: '10', - stepType: 'magnet', - stepName: 'magnet', - stepDetails: '', - }, - } - const modulesOnDeck = { - magnet123: { - id: 'magnet123', - type: MAGNETIC_BLOCK_TYPE, - model: MAGNETIC_BLOCK_V1, - slot: '3', - moduleState: { - type: MAGNETIC_BLOCK_TYPE, - engaged: false, - }, - }, - temperature456: { - id: 'temperature456', - type: TEMPERATURE_MODULE_TYPE, - model: TEMPERATURE_MODULE_V1, - moduleState: { - type: TEMPERATURE_MODULE_TYPE, - status: TEMPERATURE_DEACTIVATED, - targetTemperature: null, - }, - slot: '9', - }, - } - - const result = getUnusedEntities( - modulesOnDeck, - stepForms, - 'moduleId', - 'OT-3 Standard' - ) - - expect(result).toEqual([modulesOnDeck.temperature456]) - }) -}) diff --git a/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedStagingAreas.test.ts b/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedStagingAreas.test.ts deleted file mode 100644 index 55160505383..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedStagingAreas.test.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { describe, expect, it } from 'vitest' -import { getUnusedStagingAreas } from '../getUnusedStagingAreas' -import type { CreateCommand } from '@opentrons/shared-data' -import type { AdditionalEquipment } from '../../FileSidebar' - -describe('getUnusedStagingAreas', () => { - it('returns true for unused staging area', () => { - const stagingArea = 'stagingAreaId' - const mockAdditionalEquipment = { - [stagingArea]: { - name: 'stagingArea', - id: stagingArea, - location: 'cutoutA3', - }, - } as AdditionalEquipment - - expect(getUnusedStagingAreas(mockAdditionalEquipment, [])).toEqual(['A4']) - }) - it('returns true for multi unused staging areas', () => { - const stagingArea = 'stagingAreaId' - const stagingArea2 = 'stagingAreaId2' - const mockAdditionalEquipment = { - [stagingArea]: { - name: 'stagingArea', - id: stagingArea, - location: 'cutoutA3', - }, - [stagingArea2]: { - name: 'stagingArea', - id: stagingArea2, - location: 'cutoutB3', - }, - } as AdditionalEquipment - - expect(getUnusedStagingAreas(mockAdditionalEquipment, [])).toEqual([ - 'A4', - 'B4', - ]) - }) - it('returns false for unused staging area', () => { - const stagingArea = 'stagingAreaId' - const mockAdditionalEquipment = { - [stagingArea]: { - name: 'stagingArea', - id: stagingArea, - location: 'cutoutA3', - }, - } as AdditionalEquipment - const mockCommand = [ - { - commandType: 'loadLabware', - params: { location: { addressableAreaName: 'A4' } }, - }, - ] as CreateCommand[] - - expect(getUnusedStagingAreas(mockAdditionalEquipment, mockCommand)).toEqual( - [] - ) - }) -}) diff --git a/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedTrash.test.ts b/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedTrash.test.ts deleted file mode 100644 index 658b9d2d7a4..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/__tests__/getUnusedTrash.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { describe, expect, it } from 'vitest' -import { getUnusedTrash } from '../getUnusedTrash' -import { - EIGHT_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, - ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, -} from '@opentrons/shared-data' -import type { CreateCommand } from '@opentrons/shared-data' -import type { AdditionalEquipment } from '../../FileSidebar' - -describe('getUnusedTrash', () => { - it('returns true for unused trash bin', () => { - const mockTrashId = 'mockTrashId' - const mockTrash = { - [mockTrashId]: { - name: 'trashBin', - id: mockTrashId, - location: 'cutoutA3', - }, - } as AdditionalEquipment - - expect(getUnusedTrash(mockTrash, [])).toEqual({ - trashBinUnused: true, - wasteChuteUnused: false, - }) - }) - it('returns false for unused trash bin', () => { - const mockTrashId = 'mockTrashId' - const mockTrash = { - [mockTrashId]: { - name: 'trashBin', - id: mockTrashId, - location: 'cutoutA3', - }, - } as AdditionalEquipment - const mockCommand = [ - { - commandType: 'moveToAddressableArea', - params: { addressableAreaName: 'movableTrashA3' }, - }, - ] as CreateCommand[] - - expect(getUnusedTrash(mockTrash, mockCommand)).toEqual({ - trashBinUnused: false, - wasteChuteUnused: false, - }) - }) - it('returns true for unused waste chute', () => { - const wasteChute = 'wasteChuteId' - const mockAdditionalEquipment = { - [wasteChute]: { - name: 'wasteChute', - id: wasteChute, - location: 'cutoutD3', - }, - } as AdditionalEquipment - expect(getUnusedTrash(mockAdditionalEquipment, [])).toEqual({ - trashBinUnused: false, - wasteChuteUnused: true, - }) - }) - it('returns false for unused waste chute with single channel', () => { - const wasteChute = 'wasteChuteId' - const mockAdditionalEquipment = { - [wasteChute]: { - name: 'wasteChute', - id: wasteChute, - location: 'cutoutD3', - }, - } as AdditionalEquipment - const mockCommand = [ - { - commandType: 'moveToAddressableArea', - params: { - pipetteId: 'mockId', - addressableAreaName: ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, - }, - }, - ] as CreateCommand[] - expect(getUnusedTrash(mockAdditionalEquipment, mockCommand)).toEqual({ - trashBinUnused: false, - wasteChuteUnused: false, - }) - }) - it('returns false for unused waste chute with 8-channel', () => { - const wasteChute = 'wasteChuteId' - const mockAdditionalEquipment = { - [wasteChute]: { - name: 'wasteChute', - id: wasteChute, - location: 'cutoutD3', - }, - } as AdditionalEquipment - const mockCommand = [ - { - commandType: 'moveToAddressableArea', - params: { - pipetteId: 'mockId', - addressableAreaName: EIGHT_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA, - }, - }, - ] as CreateCommand[] - expect(getUnusedTrash(mockAdditionalEquipment, mockCommand)).toEqual({ - trashBinUnused: false, - wasteChuteUnused: false, - }) - }) - it('returns false for unused trash bin with moveToAddressableAreaForDropTip command', () => { - const mockTrashId = 'mockTrashId' - const mockTrash = { - [mockTrashId]: { - name: 'trashBin', - id: mockTrashId, - location: 'cutoutA3', - }, - } as AdditionalEquipment - const mockCommand = [ - { - commandType: 'moveToAddressableAreaForDropTip', - params: { addressableAreaName: 'movableTrashA3', pipetteId: 'mockPip' }, - }, - ] as CreateCommand[] - - expect(getUnusedTrash(mockTrash, mockCommand)).toEqual({ - trashBinUnused: false, - wasteChuteUnused: false, - }) - }) -}) diff --git a/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts b/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts deleted file mode 100644 index 12e34c04e75..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/getUnusedEntities.ts +++ /dev/null @@ -1,36 +0,0 @@ -import some from 'lodash/some' -import reduce from 'lodash/reduce' -import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' -import type { RobotType } from '@opentrons/shared-data' -import type { SavedStepFormState } from '../../../step-forms' - -/** Pull out all entities never specified by step forms. Assumes that all forms share the entityKey */ -export function getUnusedEntities( - entities: Record, - stepForms: SavedStepFormState, - entityKey: 'pipette' | 'moduleId', - robotType: RobotType -): T[] { - const unusedEntities = reduce( - entities, - (acc, entity: T, entityId): T[] => { - const stepContainsEntity = some( - stepForms, - form => form[entityKey] === entityId - ) - - if ( - robotType === FLEX_ROBOT_TYPE && - entityKey === 'moduleId' && - (entity as any).type === 'magneticBlockType' - ) { - return acc - } - - return stepContainsEntity ? acc : [...acc, entity] - }, - [] as T[] - ) - - return unusedEntities -} diff --git a/protocol-designer/src/components/FileSidebar/utils/getUnusedStagingAreas.ts b/protocol-designer/src/components/FileSidebar/utils/getUnusedStagingAreas.ts deleted file mode 100644 index 9c22d52b679..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/getUnusedStagingAreas.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { getStagingAreaAddressableAreas } from '../../../utils' -import type { CreateCommand, CutoutId } from '@opentrons/shared-data' -import type { AdditionalEquipment } from '../FileSidebar' - -export const getUnusedStagingAreas = ( - additionalEquipment: AdditionalEquipment, - commands?: CreateCommand[] -): string[] => { - const stagingAreaCutoutIds = Object.values(additionalEquipment) - .filter(equipment => equipment?.name === 'stagingArea') - .map(equipment => { - if (equipment.location == null) { - console.error( - `expected to find staging area slot location with id ${equipment.id} but could not.` - ) - } - return equipment.location ?? '' - }) - - const stagingAreaAddressableAreaNames = getStagingAreaAddressableAreas( - // TODO(jr, 11/13/23): fix AdditionalEquipment['location'] from type string to CutoutId - stagingAreaCutoutIds as CutoutId[] - ) - - const stagingAreaCommandSlots: string[] = stagingAreaAddressableAreaNames.filter( - location => - (commands ?? [])?.some( - command => - (command.commandType === 'loadLabware' && - command.params.location !== 'offDeck' && - 'addressableAreaName' in command.params.location && - command.params.location.addressableAreaName === location) || - (command.commandType === 'moveLabware' && - command.params.newLocation !== 'offDeck' && - 'addressableAreaName' in command.params.newLocation && - command.params.newLocation.addressableAreaName === location) - ) - ? null - : location - ) - return stagingAreaCommandSlots -} diff --git a/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts b/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts deleted file mode 100644 index 5c97305c16b..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/getUnusedTrash.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - FIXED_TRASH_ID, - MOVABLE_TRASH_ADDRESSABLE_AREAS, - WASTE_CHUTE_ADDRESSABLE_AREAS, -} from '@opentrons/shared-data' -import type { AddressableAreaName, CreateCommand } from '@opentrons/shared-data' -import type { InitialDeckSetup } from '../../../step-forms' - -interface UnusedTrash { - trashBinUnused: boolean - wasteChuteUnused: boolean -} - -export const getUnusedTrash = ( - additionalEquipment: InitialDeckSetup['additionalEquipmentOnDeck'], - commands?: CreateCommand[] -): UnusedTrash => { - const trashBin = Object.values(additionalEquipment).find( - aE => aE.name === 'trashBin' - ) - - const hasTrashBinCommands = - trashBin != null - ? commands?.some( - command => - (command.commandType === 'moveToAddressableArea' && - (MOVABLE_TRASH_ADDRESSABLE_AREAS.includes( - command.params.addressableAreaName as AddressableAreaName - ) || - command.params.addressableAreaName === FIXED_TRASH_ID)) || - command.commandType === 'moveToAddressableAreaForDropTip' - ) - : null - const wasteChute = Object.values(additionalEquipment).find( - aE => aE.name === 'wasteChute' - ) - const hasWasteChuteCommands = - wasteChute != null - ? commands?.some( - command => - (command.commandType === 'moveToAddressableArea' && - WASTE_CHUTE_ADDRESSABLE_AREAS.includes( - command.params.addressableAreaName as AddressableAreaName - )) || - (command.commandType === 'moveLabware' && - command.params.newLocation !== 'offDeck' && - 'addressableAreaName' in command.params.newLocation && - command.params.newLocation.addressableAreaName === - 'gripperWasteChute') - ) - : null - return { - trashBinUnused: trashBin != null && !hasTrashBinCommands, - wasteChuteUnused: wasteChute != null && !hasWasteChuteCommands, - } -} diff --git a/protocol-designer/src/components/FileSidebar/utils/index.ts b/protocol-designer/src/components/FileSidebar/utils/index.ts deleted file mode 100644 index 69cca896b00..00000000000 --- a/protocol-designer/src/components/FileSidebar/utils/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './getUnusedEntities' -export * from './getUnusedStagingAreas' -export * from './getUnusedTrash' diff --git a/protocol-designer/src/components/FormManager/index.tsx b/protocol-designer/src/components/FormManager/index.tsx deleted file mode 100644 index e0241100d94..00000000000 --- a/protocol-designer/src/components/FormManager/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useSelector } from 'react-redux' -import { Box, POSITION_STICKY, C_SELECTED_DARK } from '@opentrons/components' -import { StepEditForm } from '../StepEditForm' -import { BatchEditForm } from '../BatchEditForm' -import { StepSelectionBanner } from '../StepSelectionBanner' -import { getIsMultiSelectMode } from '../../ui/steps/selectors' - -export const FormManager = (): JSX.Element => { - const isMultiSelectMode = useSelector(getIsMultiSelectMode) - - if (isMultiSelectMode) { - return ( - - - - - ) - } - return -} diff --git a/protocol-designer/src/components/Hints/hints.module.css b/protocol-designer/src/components/Hints/hints.module.css deleted file mode 100644 index ebd360b9131..00000000000 --- a/protocol-designer/src/components/Hints/hints.module.css +++ /dev/null @@ -1,71 +0,0 @@ -@import '@opentrons/components/styles'; - -.dont_show_again { - float: left; -} - -.ok_button { - float: right; -} - -.summary { - padding-bottom: 2rem; -} - -.numbered_list { - margin: 0 2rem 2rem 2rem; - - & > li::before { - margin-right: 1rem; - } - - & li span { - position: relative; - left: 1rem; - } -} - -.step_description { - margin-bottom: 1rem; - - & span:first-of-type { - font-weight: var(--fw-semibold); - } -} - -.hint_contents { - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - line-height: var(--lh-copy); - - & p { - margin-bottom: 1rem; - } -} - -.heading { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ - margin-bottom: 1rem; -} - -.column_left { - width: 35%; -} - -.column_right { - margin-left: 5%; - width: 60%; -} - -.column_left, -.column_right { - display: inline-block; - vertical-align: top; - - & > * { - width: 100%; - } -} diff --git a/protocol-designer/src/components/Hints/index.tsx b/protocol-designer/src/components/Hints/index.tsx deleted file mode 100644 index cbc40cb0a97..00000000000 --- a/protocol-designer/src/components/Hints/index.tsx +++ /dev/null @@ -1,177 +0,0 @@ -import { useState, useCallback } from 'react' -import { useTranslation } from 'react-i18next' -import { createPortal } from 'react-dom' -import { useSelector, useDispatch } from 'react-redux' -import { - AlertModal, - DeprecatedCheckboxField, - Flex, - OutlineButton, - Text, -} from '@opentrons/components' -import { actions, selectors } from '../../tutorial' -import { getMainPagePortalEl } from '../portals/MainPageModalPortal' -import styles from './hints.module.css' -import EXAMPLE_ADD_LIQUIDS_IMAGE from '../../assets/images/example_add_liquids.png' -import EXAMPLE_WATCH_LIQUIDS_MOVE_IMAGE from '../../assets/images/example_watch_liquids_move.png' -import EXAMPLE_BATCH_EDIT_IMAGE from '../../assets/images/announcements/multi_select.gif' -import type { HintKey } from '../../tutorial' - -const HINT_IS_ALERT: HintKey[] = ['add_liquids_and_labware'] - -export const Hints = (): JSX.Element | null => { - const { t } = useTranslation(['alert', 'nav', 'button']) - const [rememberDismissal, setRememberDismissal] = useState(false) - - const toggleRememberDismissal = useCallback(() => { - setRememberDismissal(prevDismissal => !prevDismissal) - }, []) - const hintKey = useSelector(selectors.getHint) - const dispatch = useDispatch() - const removeHint = (hintKey: HintKey): void => { - dispatch(actions.removeHint(hintKey, rememberDismissal)) - } - - const makeHandleCloseClick = (hintKey: HintKey): (() => void) => { - return () => { - removeHint(hintKey) - } - } - - const renderHintContents = (hintKey: HintKey): JSX.Element | null => { - // Only hints that have no outside effects should go here. - // For hints that have an effect, use BlockingHint. - switch (hintKey) { - case 'add_liquids_and_labware': - return ( - <> -
- {t('hint.add_liquids_and_labware.summary', { - deck_setup_step: t('nav:terminal_item.__initial_setup__'), - })} -
- - -
- Step 1: - {t('hint.add_liquids_and_labware.step1')} -
- -
- - -
- Step 2: - {t('hint.add_liquids_and_labware.step2')} -
- -
- - ) - case 'deck_setup_explanation': - return ( - <> -

{t(`hint.${hintKey}.body1`)}

-

{t(`hint.${hintKey}.body2`)}

-

{t(`hint.${hintKey}.body3`)}

- - ) - case 'multiple_modules_without_labware': - case 'module_without_labware': - return ( - <> -

{t(`alert:hint.${hintKey}.body`)}

- - ) - - case 'thermocycler_lid_passive_cooling': - return ( - <> -

- {t(`alert:hint.${hintKey}.body1a`)} - {t(`alert:hint.${hintKey}.strong_body1`)} - {t(`alert:hint.${hintKey}.body1b`)} -

-
    -
  1. - {t(`alert:hint.${hintKey}.li1`)} -
  2. -
  3. - {t(`alert:hint.${hintKey}.li2`)} -
  4. -
- - ) - case 'protocol_can_enter_batch_edit': - return ( - <> - - - - -

{t(`alert:hint.${hintKey}.body1`)}

-

- {`alert:hint.${hintKey}.body2`} -

    -
  1. - {t(`alert:hint.${hintKey}.li1a`)} - {t(`alert:hint.${hintKey}.strong_li1`)} - {t(`alert:hint.${hintKey}.li1b`)} -
  2. -
  3. - {t(`alert:hint.${hintKey}.li2a`)} - {t(`alert:hint.${hintKey}.strong_li2`)} - {t(`alert:hint.${hintKey}.li2b`)} -
  4. -
-

-

- {t(`alert:hint.${hintKey}.body3a`)}
- {t(`alert:hint.${hintKey}.body3b`)} -

-

- {t(`alert:hint.${hintKey}.body4a`)}
- {t(`alert:hint.${hintKey}.body4b`)} -

-
- - ) - case 'waste_chute_warning': - return ( - - {t(`hint.${hintKey}.body1`)} - - ) - default: - return null - } - } - - if (hintKey == null) return null - - const headingText = t(`hint.${hintKey}.title`) - const hintIsAlert = HINT_IS_ALERT.includes(hintKey) - return createPortal( - - {!hintIsAlert ? ( -
{headingText}
- ) : null} -
{renderHintContents(hintKey)}
-
- - - {t('button:ok')} - -
-
, - getMainPagePortalEl() - ) -} diff --git a/protocol-designer/src/components/Hints/useBlockingHint.tsx b/protocol-designer/src/components/Hints/useBlockingHint.tsx deleted file mode 100644 index 6b1283bd234..00000000000 --- a/protocol-designer/src/components/Hints/useBlockingHint.tsx +++ /dev/null @@ -1,100 +0,0 @@ -// BlockingHint is an "are you sure" modal that can be dismissed. -// Instances of BlockingHint need to be individually placed by whatever component -// is controlling the flow that this modal will block, via useBlockingHint. -import * as React from 'react' -import { createPortal } from 'react-dom' -import { useTranslation } from 'react-i18next' -import { useDispatch, useSelector } from 'react-redux' -import { ContinueModal, DeprecatedCheckboxField } from '@opentrons/components' -import { actions, selectors } from '../../tutorial' -import { getMainPagePortalEl } from '../portals/MainPageModalPortal' -import styles from './hints.module.css' -import type { HintKey } from '../../tutorial' - -export interface HintProps { - hintKey: HintKey - handleCancel: () => void - handleContinue: () => void - content: React.ReactNode -} - -// This component handles the checkbox and dispatching `removeHint` action on continue/cancel -export const BlockingHint = (props: HintProps): JSX.Element => { - const { t } = useTranslation('alert') - const { hintKey, handleCancel, handleContinue } = props - const dispatch = useDispatch() - - const [rememberDismissal, setRememberDismissal] = React.useState( - false - ) - - const toggleRememberDismissal = React.useCallback(() => { - setRememberDismissal(prevDismissal => !prevDismissal) - }, []) - - const onCancelClick = (): void => { - dispatch(actions.removeHint(hintKey, rememberDismissal)) - handleCancel() - } - - const onContinueClick = (): void => { - dispatch(actions.removeHint(hintKey, rememberDismissal)) - handleContinue() - } - - return createPortal( - -
{props.content}
-
- -
-
, - getMainPagePortalEl() - ) -} - -export interface HintArgs { - /** `enabled` should be a condition that the parent uses to toggle whether the hint should be active or not. - * If the hint is enabled but has been dismissed, it will automatically call `handleContinue` when enabled. - * useBlockingHint expects the parent to disable the hint on cancel/continue */ - enabled: boolean - hintKey: HintKey - content: React.ReactNode - handleCancel: () => void - handleContinue: () => void -} - -export const useBlockingHint = (args: HintArgs): JSX.Element | null => { - const { enabled, hintKey, handleCancel, handleContinue, content } = args - const isDismissed = useSelector(selectors.getDismissedHints).includes(hintKey) - - if (isDismissed) { - if (enabled) { - handleContinue() - } - return null - } - - if (!enabled) { - return null - } - - return ( - - ) -} diff --git a/protocol-designer/src/components/IngredientsList/IngredientsList.module.css b/protocol-designer/src/components/IngredientsList/IngredientsList.module.css deleted file mode 100644 index d6e76be8236..00000000000 --- a/protocol-designer/src/components/IngredientsList/IngredientsList.module.css +++ /dev/null @@ -1,16 +0,0 @@ -@import '@opentrons/components/styles'; - -.close_icon { - & > svg { - width: 100%; - max-height: 1rem; - } - - &:hover { - color: var(--c-red); - } -} - -.ingredient_row_header { - font-weight: var(--fw-bold); -} diff --git a/protocol-designer/src/components/IngredientsList/LabwareDetailsCard/LabwareDetailsCard.tsx b/protocol-designer/src/components/IngredientsList/LabwareDetailsCard/LabwareDetailsCard.tsx deleted file mode 100644 index 80afd8f9624..00000000000 --- a/protocol-designer/src/components/IngredientsList/LabwareDetailsCard/LabwareDetailsCard.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { getLabwareDisplayName } from '@opentrons/shared-data' -import { selectors as stepFormSelectors } from '../../../step-forms' -import { selectors as uiLabwareSelectors } from '../../../ui/labware' -import { selectors as labwareIngredSelectors } from '../../../labware-ingred/selectors' -import * as labwareIngredActions from '../../../labware-ingred/actions' -import { PDTitledList, PDListItem } from '../../lists' -import { EditableTextField } from '../../EditableTextField' -import styles from './labwareDetailsCard.module.css' -import type { ThunkDispatch } from '../../../types' - -export function LabwareDetailsCard(): JSX.Element { - const { t } = useTranslation('form') - const dispatch = useDispatch>() - const labwareNicknamesById = useSelector( - uiLabwareSelectors.getLabwareNicknamesById - ) - const labwareId = useSelector(labwareIngredSelectors.getSelectedLabwareId) - const labwareEntities = useSelector(stepFormSelectors.getLabwareEntities) - const labwareDefDisplayName = - labwareId != null - ? getLabwareDisplayName(labwareEntities[labwareId].def) - : null - - console.assert( - labwareId, - 'Expected labware id to exist in connected labware details card' - ) - - const renameLabware = (name: string): void => { - console.assert( - labwareId, - 'renameLabware in LabwareDetailsCard expected a labwareId' - ) - - if (labwareId) { - dispatch( - labwareIngredActions.renameLabware({ - labwareId: labwareId, - name, - }) - ) - } - } - - return ( - - -
- - {t('generic.labware_type')} - - {labwareDefDisplayName} -
-
- -
- - {t('generic.nickname')} - - -
-
-
- ) -} diff --git a/protocol-designer/src/components/IngredientsList/LabwareDetailsCard/labwareDetailsCard.module.css b/protocol-designer/src/components/IngredientsList/LabwareDetailsCard/labwareDetailsCard.module.css deleted file mode 100644 index 76d446c0767..00000000000 --- a/protocol-designer/src/components/IngredientsList/LabwareDetailsCard/labwareDetailsCard.module.css +++ /dev/null @@ -1,22 +0,0 @@ -@import '@opentrons/components/styles'; - -.column_1_3 { - lost-column: 1/3; -} - -.column_2_3 { - lost-column: 2/3; - margin-bottom: 0.2rem; - overflow: hidden; - display: inline-block; - text-overflow: ellipsis; -} - -.row { - lost-utility: clearfix; - text-align: left; -} - -.label { - font-weight: var(--fw-bold); -} diff --git a/protocol-designer/src/components/IngredientsList/index.tsx b/protocol-designer/src/components/IngredientsList/index.tsx deleted file mode 100644 index 125b81e6a10..00000000000 --- a/protocol-designer/src/components/IngredientsList/index.tsx +++ /dev/null @@ -1,210 +0,0 @@ -// TODO: Ian 2018-10-09 figure out what belongs in LiquidsSidebar vs IngredientsList after #2427 -import { useState } from 'react' -import { useTranslation } from 'react-i18next' -import { useDispatch, useSelector } from 'react-redux' -import { IconButton, SidePanel, truncateString } from '@opentrons/components' -import { sortWells } from '@opentrons/shared-data' -import * as wellSelectionSelectors from '../../top-selectors/well-contents' -import { removeWellsContents } from '../../labware-ingred/actions' -import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import { PDTitledList, PDListItem } from '../lists' -import { TitledListNotes } from '../TitledListNotes' -import { swatchColors } from '../swatchColors' -import { LabwareDetailsCard } from './LabwareDetailsCard/LabwareDetailsCard' -import styles from './IngredientsList.module.css' - -import type { SingleLabwareLiquidState } from '@opentrons/step-generation' -import type { LiquidGroup } from '../../labware-ingred/types' -import type { ThunkDispatch } from '../../types' - -type RemoveWellsContents = (args: { - liquidGroupId: string - wells: string[] -}) => unknown - -// Props used by both IngredientsList and LiquidGroupCard -export interface CommonProps { - removeWellsContents: RemoveWellsContents - selected?: boolean -} - -type LiquidGroupCardProps = CommonProps & { - groupId: string - ingredGroup: LiquidGroup - labwareWellContents: SingleLabwareLiquidState -} - -const LiquidGroupCard = (props: LiquidGroupCardProps): JSX.Element | null => { - const { - ingredGroup, - removeWellsContents, - selected, - groupId, - labwareWellContents, - } = props - const { t } = useTranslation(['card', 'application']) - const showName = ingredGroup.serialize - - const [expanded, setExpanded] = useState(true) - - const toggleAccordion = (): void => { - setExpanded(!expanded) - } - - const wellsWithIngred = Object.keys(labwareWellContents) - .sort(sortWells) - .filter(well => labwareWellContents[well][groupId]) - const liquidDisplayColors = useSelector( - labwareIngredSelectors.getLiquidDisplayColors - ) - - if (wellsWithIngred.length < 1) { - // do not show liquid card if it has no instances for this labware - return null - } - const truncatedName = - ingredGroup.name != null ? truncateString(ingredGroup.name, 25) : null - return ( - } - > - - {t('well')} - {t('application:units.microliter')} - {showName && {t('name')}} - - - - {wellsWithIngred.map((well, i) => { - const wellIngredForCard = labwareWellContents[well][groupId] - const volume = - wellIngredForCard != null ? wellIngredForCard.volume : null - - if (volume == null) { - console.warn( - `Got null-ish volume for well: ${well}, ingred: ${groupId}` - ) - return null - } - - return ( - - ) - })} - - ) -} - -interface IndividProps { - name?: string | null - wellName: string - volume: number - // concentration?: string, - canDelete: boolean - groupId: string - removeWellsContents: RemoveWellsContents -} - -function IngredIndividual(props: IndividProps): JSX.Element { - const { - name, - wellName, - volume, - // concentration, // TODO LATER Ian 2018-02-22: concentration is removed from MVP. Remove all traces of it, or add it back in - canDelete, - groupId, - removeWellsContents, - } = props - const { t } = useTranslation('application') - return ( - - {wellName} - - {Boolean(volume) ? volume + ` ${t('units.microliter')}` : '-'} - - {name != null ? {name} : null} - {canDelete && ( - { - if ( - window.confirm( - t('are_you_sure_delete_well', { well: wellName }) as string - ) - ) - removeWellsContents({ liquidGroupId: groupId, wells: [wellName] }) - }} - /> - )} - - ) -} - -export function IngredientsList(): JSX.Element { - const selectedLabwareId = useSelector( - labwareIngredSelectors.getSelectedLabwareId - ) - const allLabwareWellContents = useSelector( - labwareIngredSelectors.getLiquidsByLabwareId - ) - - const liquidGroupsById = useSelector( - labwareIngredSelectors.getLiquidGroupsById - ) - const selectedIngredientGroupId = useSelector( - wellSelectionSelectors.getSelectedWellsCommonIngredId - ) - const { t } = useTranslation('nav') - const dispatch = useDispatch>() - - const labwareWellContents = - (selectedLabwareId != null - ? allLabwareWellContents[selectedLabwareId] - : null) ?? {} - - return ( - - - - {Object.keys(liquidGroupsById).map(groupIdForCard => ( - { - if (selectedLabwareId != null) { - dispatch( - removeWellsContents({ - labwareId: selectedLabwareId, - liquidGroupId, - wells, - }) - ) - } - }} - labwareWellContents={labwareWellContents} - ingredGroup={liquidGroupsById[groupIdForCard]} - groupId={groupIdForCard} - selected={selectedIngredientGroupId === groupIdForCard} - /> - ))} - - ) -} diff --git a/protocol-designer/src/components/KnowledgeBaseLink/index.tsx b/protocol-designer/src/components/KnowledgeBaseLink/index.tsx deleted file mode 100644 index a21f8a0fc6d..00000000000 --- a/protocol-designer/src/components/KnowledgeBaseLink/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import type * as React from 'react' -import { Link } from '@opentrons/components' - -export const KNOWLEDGEBASE_ROOT_URL = - 'https://support.opentrons.com/s/protocol-designer' - -export const links = { - airGap: `https://support.opentrons.com/en/articles/4398106-air-gap`, - multiDispense: `https://support.opentrons.com/en/articles/4170341-paths`, - protocolSteps: `https://support.opentrons.com/s/protocol-designer?tabset-92ba3=2`, - customLabware: `https://support.opentrons.com/en/articles/3136504-creating-custom-labware-definitions`, - recommendedLabware: - 'https://support.opentrons.com/s/article/What-labware-can-I-use-with-my-modules', - pipetteGen1MultiModuleCollision: - 'https://support.opentrons.com/en/articles/4168741-module-placement', - betaReleases: `https://support.opentrons.com/en/articles/3854833-opentrons-beta-software-releases`, - magneticModuleGenerations: - 'http://support.opentrons.com/en/articles/1820112-magnetic-module', -} as const - -interface Props { - to: keyof typeof links - children: React.ReactNode - className?: string -} - -/** Link which opens a page on the knowledge base to a new tab/window */ -export function KnowledgeBaseLink(props: Props): JSX.Element { - return ( - - {props.children} - - ) -} diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx b/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx deleted file mode 100644 index 33ba3393765..00000000000 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwareItem.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { Icon } from '@opentrons/components' -import { PDListItem } from '../lists' -import styles from './styles.module.css' -import { - getLabwareDefURI, - getLabwareDefIsStandard, - getLabwareDisplayName, -} from '@opentrons/shared-data' -import type { LabwareDefinition2 } from '@opentrons/shared-data' -import type { IconName } from '@opentrons/components' - -interface Props { - disabled?: boolean | null - icon?: IconName | null - labwareDef: LabwareDefinition2 - onMouseEnter: () => any - onMouseLeave: () => any - selectLabware: (labwareLoadName: string) => unknown -} - -const LABWARE_LIBRARY_PAGE_PATH = 'https://labware.opentrons.com' - -export function LabwareItem(props: Props): JSX.Element { - const { - disabled, - icon, - labwareDef, - onMouseLeave, - onMouseEnter, - selectLabware, - } = props - const { t } = useTranslation('modal') - const displayName = getLabwareDisplayName(labwareDef) - const labwareURI = getLabwareDefURI(labwareDef) - const labwareLoadName = labwareDef.parameters.loadName - - return ( - { - if (!disabled) { - selectLabware(labwareURI) - } - }} - onMouseEnter={onMouseEnter} - onMouseLeave={onMouseLeave} - > - {icon ? : null} -
- {displayName} -
- {getLabwareDefIsStandard(labwareDef) ? ( - { - e.stopPropagation() - }} - > - {t('labware_selection.view_measurements')} - - ) : null} -
- ) -} diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx b/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx deleted file mode 100644 index 5d82ec73191..00000000000 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import reduce from 'lodash/reduce' -import { useTranslation } from 'react-i18next' -import { - Icon, - LabwareRender, - LabeledValue, - RobotWorkSpace, -} from '@opentrons/components' -import { - getLabwareDisplayName, - getLabwareDefIsStandard, -} from '@opentrons/shared-data' -import styles from './styles.module.css' -import type { LabwareDefinition2 } from '@opentrons/shared-data' - -interface Props { - labwareDef?: LabwareDefinition2 | null - moduleCompatibility?: - | 'recommended' - | 'potentiallyCompatible' - | 'notCompatible' - | null -} - -export const LabwarePreview = (props: Props): JSX.Element | null => { - const { labwareDef, moduleCompatibility } = props - const { t } = useTranslation(['modal', 'application']) - if (!labwareDef) return null - const maxVolumes = reduce( - labwareDef.wells, - (acc, well) => acc.add(well.totalLiquidVolume), - new Set() - ) - const formattedVolumes = Array.from(maxVolumes) - .map(vol => `${vol}${t('application:units.microliter')}`) - .join(', ') - - // NOTE: this is a temporary magic value that positions the preview component - // in a fixed place relative to the labware dropdown, while still letting - // it overflow the sidebar nav if necessary - const leftValue = (global.innerWidth - 365) / 2 - 260 - - return ( -
-
-

- {props.labwareDef ? getLabwareDisplayName(props.labwareDef) : ''} -

- {moduleCompatibility != null ? ( -
- {moduleCompatibility === 'recommended' ? ( - - ) : null} - {t(`labware_selection.module_compatibility.${moduleCompatibility}`)} -
- ) : null} -
-
- - {() => } - -
-
- {getLabwareDefIsStandard(labwareDef) && ( - - )} -
- - -
-
-
-
-
- ) -} diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx b/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx deleted file mode 100644 index 81941119f45..00000000000 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx +++ /dev/null @@ -1,601 +0,0 @@ -import * as React from 'react' -import { createPortal } from 'react-dom' -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import startCase from 'lodash/startCase' -import reduce from 'lodash/reduce' -import { - useOnClickOutside, - DeprecatedCheckboxField, - Icon, - OutlineButton, -} from '@opentrons/components' -import { - getLabwareDefURI, - getLabwareDefIsStandard, - getIsLabwareAboveHeight, - TEMPERATURE_MODULE_TYPE, - MAGNETIC_MODULE_TYPE, - THERMOCYCLER_MODULE_TYPE, - HEATERSHAKER_MODULE_TYPE, - MAGNETIC_BLOCK_TYPE, - MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM, - getModuleType, - THERMOCYCLER_MODULE_V2, - getAreSlotsHorizontallyAdjacent, - ABSORBANCE_READER_TYPE, -} from '@opentrons/shared-data' -import { - closeLabwareSelector, - createContainer, -} from '../../labware-ingred/actions' -import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import { - actions as labwareDefActions, - selectors as labwareDefSelectors, -} from '../../labware-defs' -import { selectors as stepFormSelectors } from '../../step-forms' -import { SPAN7_8_10_11_SLOT } from '../../constants' -import { - getLabwareIsCompatible as _getLabwareIsCompatible, - getLabwareCompatibleWithAdapter, - ADAPTER_96_CHANNEL, -} from '../../utils/labwareModuleCompatibility' -import { getPipetteEntities } from '../../step-forms/selectors' -import { getHas96Channel } from '../../utils' -import { getOnlyLatestDefs } from '../../labware-defs/utils' -import { getTopPortalEl } from '../portals/TopPortal' -import { PDTitledList } from '../lists' -import { useBlockingHint } from '../Hints/useBlockingHint' -import { KnowledgeBaseLink } from '../KnowledgeBaseLink' -import { LabwareItem } from './LabwareItem' -import { LabwarePreview } from './LabwarePreview' -import styles from './styles.module.css' - -import type { - LabwareDefinition2, - ModuleType, - ModuleModel, -} from '@opentrons/shared-data' -import type { DeckSlot, ThunkDispatch } from '../../types' -import type { LabwareDefByDefURI } from '../../labware-defs' -import type { ModuleOnDeck } from '../../step-forms' - -export interface Props { - onClose: (e?: any) => unknown - onUploadLabware: (event: React.ChangeEvent) => unknown - selectLabware: (containerType: string) => unknown - customLabwareDefs: LabwareDefByDefURI - /** the slot you're literally adding labware to (may be a module slot) */ - slot?: DeckSlot | null - /** if adding to a module, the slot of the parent (for display) */ - parentSlot?: DeckSlot | null - /** if adding to a module, the module's model */ - moduleModel?: ModuleModel | null - /** tipracks that may be added to deck (depends on pipette<>tiprack assignment) */ - permittedTipracks: string[] - isNextToHeaterShaker: boolean - has96Channel: boolean - adapterLoadName?: string -} - -const LABWARE_CREATOR_URL = 'https://labware.opentrons.com/create' -const CUSTOM_CATEGORY = 'custom' -const adapterCompatibleLabware = 'adapterCompatibleLabware' - -const orderedCategories: string[] = [ - 'tipRack', - 'tubeRack', - 'wellPlate', - 'reservoir', - 'aluminumBlock', - 'adapter', - // 'trash', // NOTE: trash intentionally hidden -] - -const RECOMMENDED_LABWARE_BY_MODULE: { [K in ModuleType]: string[] } = { - [TEMPERATURE_MODULE_TYPE]: [ - 'opentrons_24_aluminumblock_generic_2ml_screwcap', - 'opentrons_96_well_aluminum_block', - 'opentrons_96_aluminumblock_generic_pcr_strip_200ul', - 'opentrons_24_aluminumblock_nest_1.5ml_screwcap', - 'opentrons_24_aluminumblock_nest_1.5ml_snapcap', - 'opentrons_24_aluminumblock_nest_2ml_screwcap', - 'opentrons_24_aluminumblock_nest_2ml_snapcap', - 'opentrons_24_aluminumblock_nest_0.5ml_screwcap', - 'opentrons_aluminum_flat_bottom_plate', - 'opentrons_96_deep_well_temp_mod_adapter', - ], - [MAGNETIC_MODULE_TYPE]: [ - 'nest_96_wellplate_100ul_pcr_full_skirt', - 'nest_96_wellplate_2ml_deep', - 'opentrons_96_wellplate_200ul_pcr_full_skirt', - ], - [THERMOCYCLER_MODULE_TYPE]: [ - 'nest_96_wellplate_100ul_pcr_full_skirt', - 'opentrons_96_wellplate_200ul_pcr_full_skirt', - ], - [HEATERSHAKER_MODULE_TYPE]: [ - 'opentrons_96_deep_well_adapter', - 'opentrons_96_flat_bottom_adapter', - 'opentrons_96_pcr_adapter', - 'opentrons_universal_flat_adapter', - ], - [MAGNETIC_BLOCK_TYPE]: [ - 'nest_96_wellplate_100ul_pcr_full_skirt', - 'nest_96_wellplate_2ml_deep', - 'opentrons_96_wellplate_200ul_pcr_full_skirt', - ], - [ABSORBANCE_READER_TYPE]: [], -} - -export const getLabwareIsRecommended = ( - def: LabwareDefinition2, - moduleModel?: ModuleModel | null -): boolean => { - // special-casing the thermocycler module V2 recommended labware - // since its different from V1 - const moduleType = moduleModel != null ? getModuleType(moduleModel) : null - if (moduleModel === THERMOCYCLER_MODULE_V2) { - return ( - def.parameters.loadName === 'opentrons_96_wellplate_200ul_pcr_full_skirt' - ) - } else { - return moduleType != null - ? RECOMMENDED_LABWARE_BY_MODULE[moduleType].includes( - def.parameters.loadName - ) - : false - } -} -export function LabwareSelectionModal(): JSX.Element | null { - const { t } = useTranslation(['modules', 'modal', 'button', 'alert']) - const dispatch = useDispatch>() - const selectedLabwareSlot = useSelector( - labwareIngredSelectors.selectedAddLabwareSlot - ) - const pipetteEntities = useSelector(getPipetteEntities) - const permittedTipracks = useSelector(stepFormSelectors.getPermittedTipracks) - const customLabwareDefs = useSelector( - labwareDefSelectors.getCustomLabwareDefsByURI - ) - const deckSetup = useSelector(stepFormSelectors.getInitialDeckSetup) - const has96Channel = getHas96Channel(pipetteEntities) - const modulesById = deckSetup.modules - const labwareById = deckSetup.labware - const slot = selectedLabwareSlot === false ? null : selectedLabwareSlot - - const onClose = (): void => { - dispatch(closeLabwareSelector()) - } - const selectLabware = (labwareDefURI: string): void => { - if (slot) { - dispatch( - createContainer({ - slot: slot, - labwareDefURI, - }) - ) - } - } - - const onUploadLabware = ( - fileChangeEvent: React.ChangeEvent - ): void => { - dispatch(labwareDefActions.createCustomLabwareDef(fileChangeEvent)) - } - - const initialModules: ModuleOnDeck[] = Object.keys(modulesById).map( - moduleId => modulesById[moduleId] - ) - const parentModule = - (slot != null && - initialModules.find(moduleOnDeck => moduleOnDeck.id === slot)) || - null - const parentSlot = parentModule != null ? parentModule.slot : null - const moduleModel = parentModule != null ? parentModule.model : null - const isNextToHeaterShaker = initialModules.some( - hardwareModule => - hardwareModule.type === HEATERSHAKER_MODULE_TYPE && - getAreSlotsHorizontallyAdjacent(hardwareModule.slot, parentSlot ?? slot) - ) - const adapterLoadName = Object.values(labwareById) - .filter(labwareOnDeck => slot === labwareOnDeck.id) - .map(labwareOnDeck => labwareOnDeck.def.parameters.loadName)[0] - - const defs = getOnlyLatestDefs() - const moduleType = moduleModel != null ? getModuleType(moduleModel) : null - const URIs = Object.keys(defs) - const [selectedCategory, setSelectedCategory] = React.useState( - null - ) - const [previewedLabware, setPreviewedLabware] = React.useState< - LabwareDefinition2 | null | undefined - >(null) - const [filterRecommended, setFilterRecommended] = React.useState( - false - ) - - const [filterHeight, setFilterHeight] = React.useState(false) - const [enqueuedLabwareType, setEnqueuedLabwareType] = React.useState< - string | null - >(null) - - const blockingCustomLabwareHint = useBlockingHint({ - enabled: enqueuedLabwareType !== null, - hintKey: 'custom_labware_with_modules', - content:

{t(`alert:hint.custom_labware_with_modules.body`)}

, - handleCancel: () => { - setEnqueuedLabwareType(null) - }, - handleContinue: () => { - setEnqueuedLabwareType(null) - if (enqueuedLabwareType !== null) { - // NOTE: this needs to be wrapped for Flow, IRL we know enqueuedLabwareType is not null - // because `enabled` prop above ensures it's !== null. - selectLabware(enqueuedLabwareType) - } else { - console.error( - 'could not select labware because enqueuedLabwareType is null. This should not happen' - ) - } - }, - }) - - const handleSelectCustomLabware = React.useCallback( - (containerType: string) => { - if (moduleType == null) { - selectLabware(containerType) - } else { - // show the BlockingHint - setEnqueuedLabwareType(containerType) - } - }, - [moduleType, selectLabware, setEnqueuedLabwareType] - ) - - // if you're adding labware to a module, check the recommended filter by default - React.useEffect(() => { - setFilterRecommended(moduleType != null) - setFilterHeight(isNextToHeaterShaker) - }, [moduleType, isNextToHeaterShaker]) - - const getLabwareCompatible = React.useCallback( - (def: LabwareDefinition2) => { - // assume that custom (non-standard) labware is (potentially) compatible - if (moduleType == null || !getLabwareDefIsStandard(def)) { - return true - } - return _getLabwareIsCompatible(def, moduleType) - }, - [moduleType] - ) - - const getIsLabwareFiltered = React.useCallback( - (labwareDef: LabwareDefinition2) => { - const { dimensions, parameters } = labwareDef - const { xDimension, yDimension } = dimensions - - const isSmallXDimension = xDimension < 127.75 - const isSmallYDimension = yDimension < 85.48 - const isIrregularSize = isSmallXDimension && isSmallYDimension - - const isAdapter = labwareDef.allowedRoles?.includes('adapter') - const isAdapter96Channel = parameters.loadName === ADAPTER_96_CHANNEL - - return ( - (filterRecommended && - !getLabwareIsRecommended(labwareDef, moduleModel)) || - (filterHeight && - getIsLabwareAboveHeight( - labwareDef, - MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM - )) || - !getLabwareCompatible(labwareDef) || - (isAdapter && - isIrregularSize && - !slot?.includes(HEATERSHAKER_MODULE_TYPE)) || - (isAdapter96Channel && !has96Channel) || - (slot === 'offDeck' && isAdapter) - ) - }, - [filterRecommended, filterHeight, getLabwareCompatible, moduleType, slot] - ) - const getTitleText = (): string => { - if (isNextToHeaterShaker) { - return `Slot ${slot}, Labware to the side of ${t( - `module_long_names.heaterShakerModuleType` - )}` - } - if (adapterLoadName != null) { - const adapterDisplayName = - Object.values(defs).find( - def => def.parameters.loadName === adapterLoadName - )?.metadata.displayName ?? '' - return `Labware on top of the ${adapterDisplayName}` - } - if (parentSlot != null && moduleType != null) { - return `Slot ${parentSlot === SPAN7_8_10_11_SLOT ? '7' : parentSlot}, ${t( - `module_long_names.${moduleType}` - )} Labware` - } - return `Slot ${slot} Labware` - } - - const getLabwareAdapterItem = ( - index: number, - labwareDefUri?: string - ): JSX.Element | null => { - const labwareDef = labwareDefUri != null ? defs[labwareDefUri] : null - return labwareDef != null ? ( - { - setPreviewedLabware(labwareDef) - }} - onMouseLeave={() => { - // @ts-expect-error(sa, 2021-6-22): setPreviewedLabware expects an argument (even if nullsy) - setPreviewedLabware() - }} - /> - ) : null - } - - const customLabwareURIs: string[] = React.useMemo( - () => Object.keys(customLabwareDefs), - [customLabwareDefs] - ) - - const labwareByCategory = React.useMemo(() => { - return reduce< - LabwareDefByDefURI, - { [category: string]: LabwareDefinition2[] } - >( - defs, - (acc, def: typeof defs[keyof typeof defs]) => { - const category: string = def.metadata.displayCategory - // filter out non-permitted tipracks - if ( - category === 'tipRack' && - !permittedTipracks.includes(getLabwareDefURI(def)) - ) { - return acc - } - - return { - ...acc, - [category]: [...(acc[category] || []), def], - } - }, - {} - ) - }, [permittedTipracks]) - - const populatedCategories: { [category: string]: boolean } = React.useMemo( - () => - orderedCategories.reduce( - (acc, category) => - labwareByCategory[category] - ? { - ...acc, - [category]: labwareByCategory[category].some( - def => !getIsLabwareFiltered(def) - ), - } - : acc, - {} - ), - [labwareByCategory, getIsLabwareFiltered] - ) - - const wrapperRef: React.RefObject = useOnClickOutside({ - onClickOutside: () => { - // don't close when clicking on the custom labware hint - if (!enqueuedLabwareType) { - onClose() - } - }, - }) - - // do not render without a slot - if (!slot) return null - - const makeToggleCategory = (category: string) => () => { - setSelectedCategory(selectedCategory === category ? null : category) - } - - const getFilterCheckbox = (): JSX.Element | null => { - if (isNextToHeaterShaker || moduleType != null) { - return ( -
-
Filters
-
- ) => { - isNextToHeaterShaker - ? setFilterHeight(e.currentTarget.checked) - : setFilterRecommended(e.currentTarget.checked) - }} - value={isNextToHeaterShaker ? filterHeight : filterRecommended} - /> - {isNextToHeaterShaker && ( - - )} - - {t( - isNextToHeaterShaker - ? 'modal:labware_selection.heater_shaker_labware_filter' - : 'modal:labware_selection.recommended_labware_filter' - )}{' '} - - here - - . - -
-
- ) - } - return null - } - - let moduleCompatibility: React.ComponentProps< - typeof LabwarePreview - >['moduleCompatibility'] = null - if (previewedLabware && moduleType) { - if (getLabwareIsRecommended(previewedLabware, moduleModel)) { - moduleCompatibility = 'recommended' - } else if (getLabwareCompatible(previewedLabware)) { - moduleCompatibility = 'potentiallyCompatible' - } else { - moduleCompatibility = 'notCompatible' - } - } - - return ( - <> - {createPortal( - , - getTopPortalEl() - )} - {blockingCustomLabwareHint} -
-
{getTitleText()}
- {getFilterCheckbox()} -
    - {customLabwareURIs.length > 0 ? ( - - {customLabwareURIs.map((labwareURI, index) => ( - { - setPreviewedLabware(customLabwareDefs[labwareURI]) - }} - onMouseLeave={() => { - // @ts-expect-error(sa, 2021-6-22): need to pass in a nullsy value - setPreviewedLabware() - }} - /> - ))} - - ) : null} - {adapterLoadName == null ? ( - orderedCategories.map(category => { - const isPopulated = populatedCategories[category] - if (isPopulated) { - return ( - - {labwareByCategory[category]?.map((labwareDef, index) => { - const isFiltered = getIsLabwareFiltered(labwareDef) - if (!isFiltered) { - return ( - { - setPreviewedLabware(labwareDef) - }} - onMouseLeave={() => { - // @ts-expect-error(sa, 2021-6-22): setPreviewedLabware expects an argument (even if nullsy) - setPreviewedLabware() - }} - /> - ) - } - })} - - ) - } - }) - ) : ( - - {has96Channel && adapterLoadName === ADAPTER_96_CHANNEL - ? permittedTipracks.map((tiprackDefUri, index) => { - const labwareDefUri = URIs.find( - defUri => defUri === tiprackDefUri - ) - return getLabwareAdapterItem(index, labwareDefUri) - }) - : getLabwareCompatibleWithAdapter(adapterLoadName).map( - (adapterDefUri, index) => { - const labwareDefUri = URIs.find( - defUri => defUri === adapterDefUri - ) - return getLabwareAdapterItem(index, labwareDefUri) - } - )} - - )} -
- - - {t('button:upload_custom_labware')} - { - onUploadLabware(e) - setSelectedCategory(CUSTOM_CATEGORY) - }} - /> - -
- {t('modal:labware_selection.creating_labware_defs')}{' '} - {/* TODO: Ian 2019-10-15 use LinkOut component once it's in components library, see Opentrons/opentrons#4229 */} - - here - - . -
- - {t('button:close')} -
- - ) -} diff --git a/protocol-designer/src/components/LabwareSelectionModal/__tests__/LabwareSelectionModal.test.tsx b/protocol-designer/src/components/LabwareSelectionModal/__tests__/LabwareSelectionModal.test.tsx deleted file mode 100644 index ab56ace5c46..00000000000 --- a/protocol-designer/src/components/LabwareSelectionModal/__tests__/LabwareSelectionModal.test.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { vi, describe, it, expect, beforeEach } from 'vitest' -import { fireEvent, screen } from '@testing-library/react' -import { - renderWithProviders, - nestedTextMatcher, -} from '../../../__testing-utils__' -import { - getIsLabwareAboveHeight, - MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM, -} from '@opentrons/shared-data' -import { selectors as labwareIngredSelectors } from '../../../labware-ingred/selectors' -import { - ADAPTER_96_CHANNEL, - getLabwareCompatibleWithAdapter, -} from '../../../utils/labwareModuleCompatibility' -import { i18n } from '../../../assets/localization' -import { LabwareSelectionModal } from '../LabwareSelectionModal' -import { - getInitialDeckSetup, - getPermittedTipracks, - getPipetteEntities, -} from '../../../step-forms/selectors' -import { getHas96Channel } from '../../../utils' -import { getCustomLabwareDefsByURI } from '../../../labware-defs/selectors' -import type * as SharedData from '@opentrons/shared-data' - -vi.mock('../../../utils/labwareModuleCompatibility') -vi.mock('../../../step-forms/selectors') -vi.mock('../../../labware-defs/selectors') -vi.mock('../../Hints/useBlockingHint') -vi.mock('../../../utils') -vi.mock('../../../labware-ingred/selectors') -vi.mock('@opentrons/shared-data', async importOriginal => { - const actual = await importOriginal() - return { - ...actual, - getIsLabwareAboveHeight: vi.fn(), - } -}) - -const render = () => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} - -const mockTipUri = 'fixture/fixture_tiprack_1000_ul/1' -const mockPermittedTipracks = [mockTipUri] - -describe('LabwareSelectionModal', () => { - beforeEach(() => { - vi.mocked(getLabwareCompatibleWithAdapter).mockReturnValue([]) - vi.mocked(getInitialDeckSetup).mockReturnValue({ - labware: {}, - modules: {}, - pipettes: {}, - additionalEquipmentOnDeck: {}, - }) - vi.mocked(labwareIngredSelectors.selectedAddLabwareSlot).mockReturnValue( - '2' - ) - vi.mocked(getHas96Channel).mockReturnValue(false) - vi.mocked(getPermittedTipracks).mockReturnValue(mockPermittedTipracks) - vi.mocked(getPipetteEntities).mockReturnValue({ - mockPip: { - tiprackLabwareDef: {} as any, - spec: {} as any, - name: 'p1000_single', - id: 'mockId', - tiprackDefURI: [mockTipUri], - }, - }) - vi.mocked(getCustomLabwareDefsByURI).mockReturnValue({}) - }) - it('should NOT filter out labware above 57 mm when the slot is NOT next to a heater shaker', () => { - render() - expect(vi.mocked(getIsLabwareAboveHeight)).not.toHaveBeenCalled() - }) - it('should filter out labware above 57 mm when the slot is next to a heater shaker', () => { - vi.mocked(getInitialDeckSetup).mockReturnValue({ - labware: {}, - modules: { - heaterShaker: { - id: 'mockId', - type: 'heaterShakerModuleType', - model: 'heaterShakerModuleV1', - moduleState: {} as any, - slot: '1', - } as any, - }, - pipettes: {}, - additionalEquipmentOnDeck: {}, - }) - render() - expect(vi.mocked(getIsLabwareAboveHeight)).toHaveBeenCalledWith( - expect.any(Object), - MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM - ) - }) - it.only('should display only permitted tipracks if the 96-channel is attached', () => { - vi.mocked(getHas96Channel).mockReturnValue(true) - vi.mocked(labwareIngredSelectors.selectedAddLabwareSlot).mockReturnValue( - 'adapter' - ) - vi.mocked(getInitialDeckSetup).mockReturnValue({ - labware: { - adapter: { - id: 'adapter', - labwareDefURI: `opentrons/${ADAPTER_96_CHANNEL}/1`, - slot: 'A2', - def: { parameters: { loadName: ADAPTER_96_CHANNEL } } as any, - }, - }, - modules: {}, - pipettes: {}, - additionalEquipmentOnDeck: {}, - }) - render() - fireEvent.click( - screen.getByText(nestedTextMatcher('Adapter Compatible Labware')) - ) - screen.getByText('Opentrons GEB 1000uL Tiprack') - }) -}) diff --git a/protocol-designer/src/components/LabwareSelectionModal/styles.module.css b/protocol-designer/src/components/LabwareSelectionModal/styles.module.css deleted file mode 100644 index 27097e62ee8..00000000000 --- a/protocol-designer/src/components/LabwareSelectionModal/styles.module.css +++ /dev/null @@ -1,181 +0,0 @@ -@import '@opentrons/components/styles'; - -.title { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ - padding-bottom: 1rem; -} - -.labware_dropdown { - position: absolute; - background-color: var(--c-white); - box-shadow: var(--shadow-lvl-2); - left: 0; - right: 0; - top: 12%; - max-width: 28rem; - margin: auto; - padding: 1rem 2rem; - user-select: none; - z-index: 1; - - & button { - margin-top: 2rem; - float: right; - } -} - -/* ----- */ - -.view_measurements_link, -.labware_name { - padding: 1rem 0.5rem; -} - -.view_measurements_link { - flex: 0.6; - text-transform: uppercase; - text-align: center; - cursor: pointer; - text-decoration: none; - color: inherit; - - &:hover { - background-color: var(--c-bg-hover); - } -} - -.labware_list_item { - display: flex; - padding: 0; - - & .view_measurements_link { - display: none; - } - - &:hover .view_measurements_link { - display: inherit; - } -} - -.labware_preview_wrapper { - position: absolute; - display: flex; - align-items: center; - justify-content: center; - height: 100%; - z-index: 10; -} - -.labware_preview { - width: 25.25rem; - height: 12.8125rem; - background-color: var(--c-white); - box-shadow: var(--shadow-lvl-2); - padding: 1rem; - z-index: 100; - display: flex; - justify-content: space-between; - flex-direction: column; -} - -.labware_preview_header { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ -} - -.labware_preview_module_compat { - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - display: flex; - align-items: center; -} - -.labware_render_wrapper { - height: 7.125rem; - width: 10.75rem; -} - -.labware_detail_row { - display: flex; - justify-content: space-between; - flex-direction: row; -} - -.labware_detail_column { - display: flex; - justify-content: space-between; - flex-direction: column; - flex: 1; - padding: 0.25rem 1rem; -} - -.labware_name { - text-align: left; -} - -/* TODO: Ian 2019-08-05 copied from FileSidebar.css, consider merging as new component */ -.upload_button { - margin: 0.75rem 0; - width: 100%; -} - -.upload_button input { - position: fixed; - clip: rect(1px 1px 1px 1px); -} - -.upload_helper_copy { - font-size: var(--fs-body-1); /* from legacy --font-body-1-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-1-dark */ - color: var(--c-font-dark); /* from legacy --font-body-1-dark */ -} - -/* TODO: Ian 2019-09-03 similar styles for links exist in multiple projects */ -.link { - color: var(--c-blue); - text-decoration: none; - cursor: pointer; -} - -.labware_item_icon { - flex: 0 1 auto; - margin-left: 0.5rem; -} - -.icon, -.labware_item_icon { - height: 1.25rem; - fill: var(--c-near-black); -} - -.filters_heading { - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - font-weight: var(--fw-semibold); -} - -.filter_checkbox { - display: inline-block; - padding-right: 0.75rem; -} - -.filters_section { - display: flex; - align-items: center; - margin: 0.25rem 0; -} - -.filters_section_copy { - font-size: var(--fs-body-1); /* from legacy --font-body-1-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-1-dark */ - color: var(--c-font-dark); /* from legacy --font-body-1-dark */ - padding-left: 0.15rem; -} - -.disabled { - color: var(--c-font-disabled); -} diff --git a/protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.module.css b/protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.module.css deleted file mode 100644 index 16d370b63e5..00000000000 --- a/protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.module.css +++ /dev/null @@ -1,30 +0,0 @@ -@import '@opentrons/components/styles'; - -/* fields */ - -.field_row { - lost-utility: clearfix; - margin-bottom: 2rem; -} - -.liquid_field { - lost-column: 8/16; -} - -.volume_field { - lost-column: 3/16; -} - -/* buttons */ - -.button_row { - lost-utility: clearfix; - - & > * { - lost-column: 4/16; - } - - & > *:nth-child(2) { - lost-offset: 4/16; - } -} diff --git a/protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.tsx b/protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.tsx deleted file mode 100644 index 1221d479448..00000000000 --- a/protocol-designer/src/components/LiquidPlacementForm/LiquidPlacementForm.tsx +++ /dev/null @@ -1,260 +0,0 @@ -import type * as React from 'react' -import { Controller, useForm } from 'react-hook-form' -import isEmpty from 'lodash/isEmpty' -import { useTranslation } from 'react-i18next' -import { useSelector, useDispatch } from 'react-redux' - -import * as wellContentsSelectors from '../../top-selectors/well-contents' -import * as fieldProcessors from '../../steplist/fieldLevel/processing' -import { - DropdownField, - FormGroup, - OutlineButton, - DeprecatedPrimaryButton, - LegacyInputField, -} from '@opentrons/components' -import styles from './LiquidPlacementForm.module.css' -import formStyles from '../forms/forms.module.css' -import stepEditFormStyles from '../StepEditForm/StepEditForm.module.css' -import { deselectAllWells } from '../../well-selection/actions' -import { - removeWellsContents, - setWellContents, -} from '../../labware-ingred/actions' -import { getSelectedWells } from '../../well-selection/selectors' - -import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' - -interface ValidFormValues { - selectedLiquidId: string - volume: string -} -interface LiquidPlacementFormValues { - selectedLiquidId?: string | null - volume?: string | null -} - -export const LiquidPlacementForm = (): JSX.Element | null => { - const { t } = useTranslation(['form', 'button', 'application']) - const selectedWellGroups = useSelector(getSelectedWells) - const selectedWells = Object.keys(selectedWellGroups) - const showForm = !isEmpty(selectedWellGroups) - const dispatch = useDispatch() - const labwareId = useSelector(labwareIngredSelectors.getSelectedLabwareId) - const liquidLocations = useSelector( - labwareIngredSelectors.getLiquidsByLabwareId - ) - const commonSelectedLiquidId = useSelector( - wellContentsSelectors.getSelectedWellsCommonIngredId - ) - const commonSelectedVolume = useSelector( - wellContentsSelectors.getSelectedWellsCommonVolume - ) - const selectedWellsMaxVolume = useSelector( - wellContentsSelectors.getSelectedWellsMaxVolume - ) - const liquidSelectionOptions = useSelector( - labwareIngredSelectors.getLiquidSelectionOptions - ) - - const selectionHasLiquids = Boolean( - labwareId != null && - liquidLocations[labwareId] != null && - Object.keys(selectedWellGroups).some( - well => liquidLocations[labwareId][well] - ) - ) - - const getInitialValues: () => ValidFormValues = () => { - return { - selectedLiquidId: commonSelectedLiquidId ?? '', - volume: - commonSelectedVolume != null ? commonSelectedVolume.toString() : '', - } - } - - const { - handleSubmit, - watch, - control, - setValue, - formState: { errors, touchedFields }, - } = useForm({ - defaultValues: getInitialValues(), - }) - - const selectedLiquidId = watch('selectedLiquidId') - const volume = watch('volume') - - const handleCancelForm = (): void => { - dispatch(deselectAllWells()) - } - - const handleClearWells: () => void = () => { - if (labwareId != null && selectedWells != null && selectionHasLiquids) { - if (global.confirm(t('application:are_you_sure') as string)) { - dispatch( - removeWellsContents({ - labwareId, - wells: selectedWells, - }) - ) - } - } - } - - const handleChangeVolume: ( - e: React.ChangeEvent - ) => void = e => { - const value: string | null | undefined = e.currentTarget.value - const masked = fieldProcessors.composeMaskers( - fieldProcessors.maskToFloat, - fieldProcessors.onlyPositiveNumbers, - fieldProcessors.trimDecimals(1) - )(value) as string - setValue('volume', masked) - } - - const handleSaveForm = (values: LiquidPlacementFormValues): void => { - const volume = Number(values.volume) - const { selectedLiquidId } = values - console.assert( - labwareId != null, - 'when saving liquid placement form, expected a selected labware ID' - ) - console.assert( - selectedWells != null && selectedWells.length > 0, - `when saving liquid placement form, expected selected wells to be array with length > 0 but got ${String( - selectedWells - )}` - ) - console.assert( - selectedLiquidId != null, - `when saving liquid placement form, expected selectedLiquidId to be non-nullsy but got ${String( - selectedLiquidId - )}` - ) - console.assert( - volume > 0, - `when saving liquid placement form, expected volume > 0, got ${volume}` - ) - - if (labwareId != null && selectedLiquidId != null) { - dispatch( - setWellContents({ - liquidGroupId: selectedLiquidId, - labwareId, - wells: selectedWells ?? [], - volume: Number(values.volume), - }) - ) - } - } - - const handleSaveSubmit: ( - values: LiquidPlacementFormValues - ) => void = values => { - handleSaveForm(values) - } - - if (!showForm) return null - - let volumeErrors: string | null = null - if (Boolean(touchedFields.volume)) { - if (volume == null || volume === '0') { - volumeErrors = t('generic.error.more_than_zero') - } else if (parseInt(volume) > selectedWellsMaxVolume) { - volumeErrors = t('liquid_placement.volume_exceeded', { - volume: selectedWellsMaxVolume, - }) - } - } - - return ( -
-
-
- - ( - - )} - /> - - - ( - - )} - /> - -
- -
- - {t('button:clear_wells')} - - - {t('button:cancel')} - - - {t('button:save')} - -
-
-
- ) -} diff --git a/protocol-designer/src/components/LiquidPlacementModal.module.css b/protocol-designer/src/components/LiquidPlacementModal.module.css deleted file mode 100644 index c63a9946758..00000000000 --- a/protocol-designer/src/components/LiquidPlacementModal.module.css +++ /dev/null @@ -1,34 +0,0 @@ -@import '@opentrons/components/styles'; - -.labware { - margin: 2rem auto; - max-width: 50rem; -} - -.liquid_placement_modal { - position: absolute; - - /* from legacy --absolute-fill */ - top: 0; - - /* from legacy --absolute-fill */ - right: 0; - - /* from legacy --absolute-fill */ - bottom: 0; - - /* from legacy --absolute-fill */ - left: 0; - - /* from legacy --absolute-fill */ - - background-color: rgba(0, 0, 0, 0.9); - z-index: 4; - - /* make up lost space for overlay */ - height: 103%; - - &.expanded { - height: 127%; - } -} diff --git a/protocol-designer/src/components/LiquidPlacementModal.tsx b/protocol-designer/src/components/LiquidPlacementModal.tsx deleted file mode 100644 index 307255ae846..00000000000 --- a/protocol-designer/src/components/LiquidPlacementModal.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { useState } from 'react' - -import { useDispatch, useSelector } from 'react-redux' -import cx from 'classnames' -import isEmpty from 'lodash/isEmpty' -import { WELL_LABEL_OPTIONS } from '@opentrons/components' - -import { - wellFillFromWellContents, - SelectableLabware, -} from '../components/labware' -import { selectors } from '../labware-ingred/selectors' -import { selectors as stepFormSelectors } from '../step-forms' -import * as wellContentsSelectors from '../top-selectors/well-contents' -import { getSelectedWells } from '../well-selection/selectors' -import { selectWells, deselectWells } from '../well-selection/actions' -import { LiquidPlacementForm } from './LiquidPlacementForm/LiquidPlacementForm' -import { WellSelectionInstructions } from './WellSelectionInstructions' - -import styles from './LiquidPlacementModal.module.css' -import type { WellGroup } from '@opentrons/components' - -export function LiquidPlacementModal(): JSX.Element | null { - const [highlightedWells, setHighlightedWells] = useState({}) - const labwareId = useSelector(selectors.getSelectedLabwareId) - const selectedWells = useSelector(getSelectedWells) - const dispatch = useDispatch() - const labwareEntities = useSelector(stepFormSelectors.getLabwareEntities) - const allWellContents = useSelector( - wellContentsSelectors.getWellContentsAllLabware - ) - const liquidNamesById = useSelector(selectors.getLiquidNamesById) - const liquidDisplayColors = useSelector(selectors.getLiquidDisplayColors) - if (labwareId == null) { - console.assert( - false, - 'LiquidPlacementModal: No labware is selected, and no labwareId was given to LiquidPlacementModal' - ) - return null - } - - const labwareDef = labwareEntities[labwareId]?.def - const wellContents = allWellContents[labwareId] - - return ( -
- - - {labwareDef && ( -
- dispatch(selectWells(wells))} - deselectWells={(wells: WellGroup) => dispatch(deselectWells(wells))} - updateHighlightedWells={(wells: WellGroup) => { - setHighlightedWells(wells) - }} - ingredNames={liquidNamesById} - wellContents={wellContents} - nozzleType={null} - /> -
- )} - - -
- ) -} diff --git a/protocol-designer/src/components/LiquidsPage/LiquidEditForm.module.css b/protocol-designer/src/components/LiquidsPage/LiquidEditForm.module.css deleted file mode 100644 index d89e24f154e..00000000000 --- a/protocol-designer/src/components/LiquidsPage/LiquidEditForm.module.css +++ /dev/null @@ -1,26 +0,0 @@ -@import '@opentrons/components/styles'; - -.form_card { - margin: 1rem; - padding: 1rem; -} - -.section { - padding-bottom: 2rem; -} - -.info_text { - padding-bottom: 1.5rem; -} - -.button_row { - lost-utility: clearfix; - - & > * { - lost-column: 1/6; - } - - & > *:nth-child(2) { - lost-offset: 3/6; - } -} diff --git a/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx b/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx deleted file mode 100644 index f7697dc2add..00000000000 --- a/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx +++ /dev/null @@ -1,236 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import { Controller, useForm } from 'react-hook-form' -import { yupResolver } from '@hookform/resolvers/yup' -import { useSelector } from 'react-redux' -import * as Yup from 'yup' -import { - Card, - DeprecatedCheckboxField, - DeprecatedPrimaryButton, - Flex, - FormGroup, - JUSTIFY_END, - LegacyInputField, - OutlineButton, - TYPOGRAPHY, -} from '@opentrons/components' -import { DEPRECATED_WHALE_GREY } from '@opentrons/shared-data' -import { selectors } from '../../labware-ingred/selectors' -import { swatchColors } from '../swatchColors' -import { ColorPicker } from '../ColorPicker' -import styles from './LiquidEditForm.module.css' -import formStyles from '../forms/forms.module.css' - -import type { ColorResult } from 'react-color' -import type { LiquidGroup } from '../../labware-ingred/types' - -interface LiquidEditFormProps { - serialize: boolean - canDelete: boolean - deleteLiquidGroup: () => void - cancelForm: () => void - saveForm: (liquidGroup: LiquidGroup) => void - displayColor?: string - name?: string | null - description?: string | null -} - -interface LiquidEditFormValues { - name: string - displayColor: string - description?: string | null - serialize?: boolean - [key: string]: unknown -} - -function checkColor(hex: string): boolean { - const cleanHex = hex.replace('#', '') - const red = parseInt(cleanHex.slice(0, 2), 16) - const green = parseInt(cleanHex.slice(2, 4), 16) - const blue = parseInt(cleanHex.slice(4, 6), 16) - const luminance = (0.299 * red + 0.587 * green + 0.114 * blue) / 255 - return luminance < 0.1 || luminance > 0.9 -} - -const INVALID_DISPLAY_COLORS = ['#000000', '#ffffff', DEPRECATED_WHALE_GREY] - -const liquidEditFormSchema: any = Yup.object().shape({ - name: Yup.string().required('liquid name is required'), - displayColor: Yup.string().test( - 'disallowed-color', - 'Invalid display color', - value => { - if (value == null) { - return true - } - return !INVALID_DISPLAY_COLORS.includes(value) - ? !checkColor(value) - : false - } - ), - description: Yup.string(), - serialize: Yup.boolean(), -}) - -export function LiquidEditForm(props: LiquidEditFormProps): JSX.Element { - const { - deleteLiquidGroup, - cancelForm, - canDelete, - saveForm, - displayColor, - name: propName, - description: propDescription, - serialize, - } = props - const selectedLiquid = useSelector(selectors.getSelectedLiquidGroupState) - const nextGroupId = useSelector(selectors.getNextLiquidGroupId) - const liquidId = selectedLiquid.liquidGroupId ?? nextGroupId - const { t } = useTranslation(['form', 'button']) - const initialValues: LiquidEditFormValues = { - name: propName ?? '', - displayColor: displayColor ?? swatchColors(liquidId), - description: propDescription ?? '', - serialize: serialize || false, - } - - const { - handleSubmit, - formState: { errors, touchedFields, isDirty }, - control, - watch, - setValue, - } = useForm({ - defaultValues: initialValues, - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - resolver: yupResolver(liquidEditFormSchema), - }) - const name = watch('name') - const description = watch('description') - const color = watch('displayColor') - - const handleLiquidEdits = (values: LiquidEditFormValues): void => { - saveForm({ - name: values.name, - displayColor: values.displayColor, - description: values.description ?? null, - serialize: values.serialize ?? false, - }) - } - - return ( - -
-
-
{t('liquid_edit.details')}
-
- - ( - - )} - /> - - - ( - - )} - /> - - - ( - { - setValue('displayColor', color) - field.onChange(color) - }} - /> - )} - /> - -
- - {errors.displayColor != null ? errors.displayColor.message : null} - -
-
-
- {t('liquid_edit.serialize_title')} -
-

- {t('liquid_edit.serialize_explanation')} -

- ( - ) => { - field.onChange(e) - }} - /> - )} - /> -
- -
- - {t('button:delete')} - - - {t('button:cancel')} - - - {t('button:save')} - -
-
-
- ) -} diff --git a/protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.module.css b/protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.module.css deleted file mode 100644 index 2da07d1398f..00000000000 --- a/protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.module.css +++ /dev/null @@ -1,27 +0,0 @@ -@import '@opentrons/components/styles'; - -.info_wrapper { - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - text-align: center; - max-width: 38rem; - margin: 2rem auto; -} - -.header { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ -} - -.instruction { - margin: 2rem 0; - line-height: 1.5; -} - -.inline_icon { - color: var(--c-font-dark); - height: 1.5em; - padding: 0 0.25em; -} diff --git a/protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.tsx b/protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.tsx deleted file mode 100644 index 22f73b55db3..00000000000 --- a/protocol-designer/src/components/LiquidsPage/LiquidsPageInfo.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Icon } from '@opentrons/components' -import styles from './LiquidsPageInfo.module.css' - -export function LiquidsPageInfo(): JSX.Element { - return ( -
-

Define your liquids

- -
- This is your inventory of the reagents and samples your protocol uses. - Use the New Liquid button in the sidebar to start defining liquids. -
- -
- {"After you've added your liquids, continue to the"} - - tab where you can specify where labware and liquids start on your deck. -
-
- ) -} diff --git a/protocol-designer/src/components/LiquidsPage/index.tsx b/protocol-designer/src/components/LiquidsPage/index.tsx deleted file mode 100644 index 761b4ef5d73..00000000000 --- a/protocol-designer/src/components/LiquidsPage/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { useDispatch, useSelector } from 'react-redux' - -import * as labwareIngredActions from '../../labware-ingred/actions' -import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import { LiquidEditForm } from './LiquidEditForm' -import { LiquidsPageInfo } from './LiquidsPageInfo' - -import type { LiquidGroup } from '../../labware-ingred/types' -import type { ThunkDispatch } from '../../types' - -export function LiquidsPage(): JSX.Element { - const dispatch = useDispatch>() - const selectedLiquidGroupState = useSelector( - labwareIngredSelectors.getSelectedLiquidGroupState - ) - const allIngredientGroupFields = useSelector( - labwareIngredSelectors.allIngredientGroupFields - ) - - const liquidGroupId = - selectedLiquidGroupState && selectedLiquidGroupState.liquidGroupId - const selectedIngredFields = - liquidGroupId != null ? allIngredientGroupFields[liquidGroupId] : null - const showForm = Boolean( - selectedLiquidGroupState.liquidGroupId || - selectedLiquidGroupState.newLiquidGroup - ) - const formKey = liquidGroupId || '__new_form__' - - const deleteLiquidGroup = (): void => { - if (liquidGroupId != null) - dispatch(labwareIngredActions.deleteLiquidGroup(liquidGroupId)) - } - const cancelForm = (): void => { - dispatch(labwareIngredActions.deselectLiquidGroup()) - } - - const saveForm = (formData: LiquidGroup): void => { - dispatch( - labwareIngredActions.editLiquidGroup({ - ...formData, - liquidGroupId: liquidGroupId, - }) - ) - } - - return showForm ? ( - - ) : ( - - ) -} diff --git a/protocol-designer/src/components/LiquidsSidebar/index.tsx b/protocol-designer/src/components/LiquidsSidebar/index.tsx deleted file mode 100644 index 174422b1878..00000000000 --- a/protocol-designer/src/components/LiquidsSidebar/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { useDispatch, useSelector } from 'react-redux' -import { - DeprecatedPrimaryButton, - SidePanel, - truncateString, -} from '@opentrons/components' -import { selectors as labwareIngredSelectors } from '../../labware-ingred/selectors' -import * as labwareIngredActions from '../../labware-ingred/actions' -import { PDTitledList } from '../lists' -import { swatchColors } from '../swatchColors' -import listButtonStyles from '../listButtons.module.css' -import styles from './styles.module.css' - -import type { ThunkDispatch } from '../../types' - -export function LiquidsSidebar(): JSX.Element { - const { t } = useTranslation('button') - const selectedLiquidGroup = useSelector( - labwareIngredSelectors.getSelectedLiquidGroupState - ) - const liquids = useSelector(labwareIngredSelectors.allIngredientNamesIds) - const dispatch: ThunkDispatch = useDispatch() - - const selectLiquid = (liquidGroupId: string): void => { - dispatch(labwareIngredActions.selectLiquidGroup(liquidGroupId)) - } - const selectedLiquid = - selectedLiquidGroup && selectedLiquidGroup.liquidGroupId - return ( - - {liquids.map(({ ingredientId, name, displayColor }) => ( - { - selectLiquid(ingredientId) - }} - iconName="circle" - iconProps={{ - style: { - fill: displayColor ?? swatchColors(ingredientId), - }, - ...{ - className: styles.liquid_icon_container, - }, - }} - title={ - truncateString(name ?? '', 25) ?? - `Unnamed Ingredient ${ingredientId}` - } // fallback, should not happen - /> - ))} -
- dispatch(labwareIngredActions.createNewLiquidGroup())} - > - {t('new_liquid')} - -
-
- ) -} diff --git a/protocol-designer/src/components/LiquidsSidebar/styles.module.css b/protocol-designer/src/components/LiquidsSidebar/styles.module.css deleted file mode 100644 index 7f805134826..00000000000 --- a/protocol-designer/src/components/LiquidsSidebar/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -@import '@opentrons/components/styles'; - -.liquid_icon_container { - border-style: solid; - border-width: 1px; - border-color: #e3e3e3; - border-radius: 4px; - background-color: var(--c-white); - height: 2.25rem; - padding: 0.5rem; -} diff --git a/protocol-designer/src/components/OffDeckLabwareButton.tsx b/protocol-designer/src/components/OffDeckLabwareButton.tsx deleted file mode 100644 index 585cf6aca12..00000000000 --- a/protocol-designer/src/components/OffDeckLabwareButton.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useState } from 'react' -import { useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { - DeprecatedPrimaryButton, - Flex, - POSITION_ABSOLUTE, - POSITION_RELATIVE, - SPACING, -} from '@opentrons/components' -import { getSelectedTerminalItemId } from '../ui/steps' -import { OffDeckLabwareSlideout } from './OffDeckLabwareSlideout' - -export const OffDeckLabwareButton = (): JSX.Element => { - const selectedTerminalItemId = useSelector(getSelectedTerminalItemId) - const { t } = useTranslation('button') - const [showSlideout, setShowSlideout] = useState(false) - - return ( - - - { - setShowSlideout(true) - }} - > - {t('edit_off_deck')} - - - {showSlideout ? ( - { - setShowSlideout(false) - }} - initialSetupTerminalItemId={ - selectedTerminalItemId === '__initial_setup__' - } - /> - ) : null} - - ) -} diff --git a/protocol-designer/src/components/OffDeckLabwareSlideout.tsx b/protocol-designer/src/components/OffDeckLabwareSlideout.tsx deleted file mode 100644 index 1fd8be9814c..00000000000 --- a/protocol-designer/src/components/OffDeckLabwareSlideout.tsx +++ /dev/null @@ -1,181 +0,0 @@ -import { useDispatch, useSelector } from 'react-redux' -import { css } from 'styled-components' -import { useTranslation } from 'react-i18next' -import { - LegacyTooltip, - DeprecatedPrimaryButton, - useHoverTooltip, - Flex, - COLORS, - Icon, - SPACING, - Text, - DIRECTION_COLUMN, - BORDERS, - LabwareRender, - RobotWorkSpace, - LabwareNameOverlay, - RobotCoordsForeignDiv, - ALIGN_CENTER, - JUSTIFY_CENTER, - TYPOGRAPHY, - truncateString, - POSITION_ABSOLUTE, -} from '@opentrons/components' -import { getLabwareDisplayName } from '@opentrons/shared-data' -import { openAddLabwareModal } from '../labware-ingred/actions' -import { getLabwareEntities } from '../step-forms/selectors' -import { selectors } from '../labware-ingred/selectors' -import { getAllWellContentsForActiveItem } from '../top-selectors/well-contents' -import { getRobotStateAtActiveItem } from '../top-selectors/labware-locations' -import { getLabwareNicknamesById } from '../ui/labware/selectors' -import { EditLabwareOffDeck } from './DeckSetup/LabwareOverlays/EditLabwareOffDeck' -import { BrowseLabware } from './DeckSetup/LabwareOverlays/BrowseLabware' -import { Slideout } from './Slideout' -import { wellFillFromWellContents } from './labware' - -interface OffDeckLabwareSlideoutProps { - initialSetupTerminalItemId: boolean - isExpanded: boolean - onCloseClick: () => void -} - -export const OffDeckLabwareSlideout = ( - props: OffDeckLabwareSlideoutProps -): JSX.Element => { - const { t } = useTranslation(['deck', 'button', 'tooltip']) - const [targetProps, tooltipProps] = useHoverTooltip() - const dispatch = useDispatch() - const disabled = props.initialSetupTerminalItemId === false - const robotState = useSelector(getRobotStateAtActiveItem) - const labwareEntities = useSelector(getLabwareEntities) - const allWellContentsForActiveItem = useSelector( - getAllWellContentsForActiveItem - ) - const liquidDisplayColors = useSelector(selectors.getLiquidDisplayColors) - const labwareNickNames = useSelector(getLabwareNicknamesById) - - const offDeckEntries = - robotState?.labware != null - ? Object.entries(robotState?.labware).filter( - ([key, value]) => value.slot === 'offDeck' - ) - : null - const offDeck = - offDeckEntries != null && offDeckEntries.length > 0 - ? Object.fromEntries(offDeckEntries) - : null - - return ( - - dispatch(openAddLabwareModal({ slot: 'offDeck' }))} - marginTop={SPACING.spacing16} - marginRight={SPACING.spacing16} - disabled={disabled} - > - {t('button:add_off_deck')} - - {disabled ? ( - - {t(`tooltip:disabled_off_deck`)} - - ) : null} -
- } - > - {offDeck == null ? ( - - - {t('off_deck.slideout_empty_state')} - - ) : ( - Object.keys(offDeck).map(labwareId => { - const labwareNickName = labwareNickNames[labwareId] - const truncatedNickName = - labwareNickName != null - ? truncateString(labwareNickName, 75, 25) - : null - const wellContents = - allWellContentsForActiveItem != null - ? allWellContentsForActiveItem[labwareId] - : null - const definition = - labwareEntities[labwareId] != null - ? labwareEntities[labwareId].def - : null - return definition != null ? ( - - {() => ( - <> - - - - {disabled ? ( -
- -
- ) : ( - - )} -
- - )} -
- ) : null - }) - )} - - ) -} diff --git a/protocol-designer/src/components/PrereleaseModeIndicator.tsx b/protocol-designer/src/components/PrereleaseModeIndicator.tsx deleted file mode 100644 index 344a4fbf183..00000000000 --- a/protocol-designer/src/components/PrereleaseModeIndicator.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useSelector } from 'react-redux' -import { Icon } from '@opentrons/components' -import { selectors as featureFlagSelectors } from '../feature-flags' - -export const PrereleaseModeIndicator = (): JSX.Element | null => { - const prereleaseModeEnabled = useSelector( - featureFlagSelectors.getEnabledPrereleaseMode - ) - - return prereleaseModeEnabled === true ? ( -
- -
- ) : null -} diff --git a/protocol-designer/src/components/ProtocolEditor.module.css b/protocol-designer/src/components/ProtocolEditor.module.css deleted file mode 100644 index 21c591d7b38..00000000000 --- a/protocol-designer/src/components/ProtocolEditor.module.css +++ /dev/null @@ -1,27 +0,0 @@ -@import '@opentrons/components/styles'; - -.wrapper { - display: flex; - flex-direction: row; - align-items: stretch; - width: 100%; - min-height: 100vh; -} - -.main_page_wrapper { - /* Wraps TitleBar + page content */ - display: flex; - flex-direction: column; - width: 100%; - - /* somehow ensure flex children shrink rather than overflow */ - overflow-x: hidden; -} - -.main_page_content { - position: absolute; - top: 3rem; - bottom: 0; - width: calc(100% - 22.8125rem); - overflow-y: scroll; -} diff --git a/protocol-designer/src/components/SelectionRect.module.module.css b/protocol-designer/src/components/SelectionRect.module.module.css deleted file mode 100644 index 0f75e7bc043..00000000000 --- a/protocol-designer/src/components/SelectionRect.module.module.css +++ /dev/null @@ -1,21 +0,0 @@ -@import '@opentrons/components/styles'; - -.selection_rect { - pointer-events: none; /* prevents this div from occluding wells during document.elementFromPoint sampling */ -} - -rect.selection_rect { - /* svg version */ - fill: var(--c-selection-overlay); - stroke: var(--c-highlight); - stroke-width: 0.4; -} - -div.selection_rect { - /* normal html version */ - background-color: var(--c-selection-overlay); - position: fixed; - z-index: 1000; - border-radius: 0; - border: 1px solid var(--c-highlight); -} diff --git a/protocol-designer/src/components/SettingsPage/FeatureFlagCard/FeatureFlagCard.tsx b/protocol-designer/src/components/SettingsPage/FeatureFlagCard/FeatureFlagCard.tsx deleted file mode 100644 index 2b05ceb6ce4..00000000000 --- a/protocol-designer/src/components/SettingsPage/FeatureFlagCard/FeatureFlagCard.tsx +++ /dev/null @@ -1,141 +0,0 @@ -import { useState } from 'react' -import { createPortal } from 'react-dom' -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import sortBy from 'lodash/sortBy' -import { ContinueModal, Card, ToggleButton } from '@opentrons/components' -import { resetScrollElements } from '../../../ui/steps/utils' -import { - userFacingFlags, - actions as featureFlagActions, - selectors as featureFlagSelectors, -} from '../../../feature-flags' -import { getMainPagePortalEl } from '../../portals/MainPageModalPortal' -import styles from '../SettingsPage.module.css' -import modalStyles from '../../modals/modal.module.css' -import type { FlagTypes } from '../../../feature-flags' - -export function FeatureFlagCard(): JSX.Element { - const flags = useSelector(featureFlagSelectors.getFeatureFlagData) - const dispatch = useDispatch() - - const [modalFlagName, setModalFlagName] = useState(null) - const { t } = useTranslation(['modal', 'card', 'feature_flags']) - - const setFeatureFlags = ( - flags: Partial> - ): void => { - dispatch(featureFlagActions.setFeatureFlags(flags)) - } - - const prereleaseModeEnabled = flags.PRERELEASE_MODE === true - - // @ts-expect-error(sa, 2021-6-21): Object.keys not smart enough to take keys from props.flags - const allFlags: FlagTypes[] = sortBy(Object.keys(flags)) - - const userFacingFlagNames = allFlags.filter(flagName => - userFacingFlags.includes(flagName) - ) - - const prereleaseFlagNames = allFlags.filter( - flagName => !userFacingFlags.includes(flagName) - ) - - const getDescription = (flag: FlagTypes): JSX.Element => { - const RICH_DESCRIPTIONS: Partial> = { - OT_PD_ALLOW_ALL_TIPRACKS: ( - <> -

{t(`feature_flags:${flag}.description`)}

- - ), - OT_PD_DISABLE_MODULE_RESTRICTIONS: ( - <> -

{t(`feature_flags:${flag}.description_1`)}

-

{t(`feature_flags:${flag}.description_2`)}

- - ), - } - return ( - RICH_DESCRIPTIONS[flag] ||

{t(`feature_flags:${flag}.description`)}

- ) - } - - const toFlagRow = (flagName: FlagTypes): JSX.Element => ( -
-
-

- {t(`feature_flags:${flagName}.title`)} -

- { - resetScrollElements() - setModalFlagName(flagName) - }} - /> -
-
- {getDescription(flagName)} -
-
- ) - - const noFlagsFallback = ( -

- No experimental settings are available in this version of Protocol - Designer. -

- ) - - const userFacingFlagRows = userFacingFlagNames.map(toFlagRow) - const prereleaseFlagRows = prereleaseFlagNames.map(toFlagRow) - - let flagSwitchDirection: string = 'on' - - if (modalFlagName) { - const isFlagOn: boolean | null | undefined = flags[modalFlagName] - flagSwitchDirection = isFlagOn ? 'off' : 'on' - } - return ( - <> - {modalFlagName && - createPortal( - { - setModalFlagName(null) - }} - onContinueClick={() => { - setFeatureFlags({ - [modalFlagName as string]: !flags[modalFlagName], - }) - setModalFlagName(null) - }} - > -

- {t(`experimental_feature_warning.${flagSwitchDirection}.body1`)} -

-

- {t(`experimental_feature_warning.${flagSwitchDirection}.body2`)} -

-
, - getMainPagePortalEl() - )} - -
- {userFacingFlagRows.length > 0 ? userFacingFlagRows : noFlagsFallback} -
-
- {prereleaseModeEnabled && ( - -
{prereleaseFlagRows}
-
- )} - - ) -} diff --git a/protocol-designer/src/components/SettingsPage/SettingsApp.tsx b/protocol-designer/src/components/SettingsPage/SettingsApp.tsx deleted file mode 100644 index 20a31121010..00000000000 --- a/protocol-designer/src/components/SettingsPage/SettingsApp.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { - Card, - OutlineButton, - ToggleButton, - LabeledValue, -} from '@opentrons/components' -import { - actions as analyticsActions, - selectors as analyticsSelectors, -} from '../../analytics' -import { - actions as tutorialActions, - selectors as tutorialSelectors, -} from '../../tutorial' -import { OLDEST_MIGRATEABLE_VERSION } from '../../load-file/migration' -import styles from './SettingsPage.module.css' -import { FeatureFlagCard } from './FeatureFlagCard/FeatureFlagCard' - -export function SettingsApp(): JSX.Element { - const dispatch = useDispatch() - const hasOptedIn = useSelector(analyticsSelectors.getHasOptedIn) - const canClearHintDismissals = useSelector( - tutorialSelectors.getCanClearHintDismissals - ) - const _toggleOptedIn = hasOptedIn - ? analyticsActions.optOut - : analyticsActions.optIn - - const { t } = useTranslation(['card', 'application', 'button']) - return ( - <> -
- -
-
- - {/* TODO: BC 2019-02-26 add release notes link here, when there are release notes */} -
-
-
-
-
- -
-
- {t('body.restore_hints')} - - dispatch(tutorialActions.clearAllHintDismissals()) - } - > - {canClearHintDismissals - ? t('button:restore') - : t('button:restored')} - -
-
-
-
-
- -
-
-

{t('toggle.share_session')}

- dispatch(_toggleOptedIn())} - /> -
- -

- {t('body.reason_for_collecting_data')}{' '} - {t('body.data_collected_is_internal')}. -

-
-
-
-
- -
- - ) -} diff --git a/protocol-designer/src/components/SettingsPage/SettingsPage.module.css b/protocol-designer/src/components/SettingsPage/SettingsPage.module.css deleted file mode 100644 index 475bea4ee89..00000000000 --- a/protocol-designer/src/components/SettingsPage/SettingsPage.module.css +++ /dev/null @@ -1,92 +0,0 @@ -@import '@opentrons/components/styles'; - -:root { - --mw-labeled-toggle: 25rem; -} - -.sidebar_item { - background-color: white; - margin: 0.4rem 0.125rem; - color: var(--c-dark-gray); -} - -.page_row { - padding: 0.5rem; -} - -.card_point_list { - margin-top: 1rem; - margin-left: 4rem; -} - -.card_content { - padding: 1rem; - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - line-height: 1.5; - - & p { - margin-bottom: 1rem; - max-width: 70%; - min-width: 20rem; - line-height: 1.5; - } -} - -.setting_row { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; -} - -.feature_flag_description { - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - - & p { - margin-bottom: 1rem; - } -} - -.toggle_label { - font-size: var(--fs-body-2); /* from legacy --font-body-2-dark */ - color: var(--c-font-dark); /* from legacy --font-body-2-dark */ - max-width: var(--mw-labeled-toggle); - display: inline-block; - font-weight: var(--fw-semibold); - margin-top: 1rem; -} - -.toggle_wrapper { - display: flex; - justify-content: space-between; -} - -.toggle_button { - float: right; - width: 2rem; - margin-right: 1rem; - padding: 0; - - &:hover { - background-color: transparent; - } -} - -.button { - float: right; -} - -.body_wrapper { - margin: 0.375rem 0 0.625rem; - line-height: 1.5; - padding: 2rem 1rem; -} - -.labeled_value p { - font-size: var(--fs-body-2); - max-width: 100%; -} diff --git a/protocol-designer/src/components/SettingsPage/SettingsSidebar.tsx b/protocol-designer/src/components/SettingsPage/SettingsSidebar.tsx deleted file mode 100644 index b5a4619ffae..00000000000 --- a/protocol-designer/src/components/SettingsPage/SettingsSidebar.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { SidePanel } from '@opentrons/components' -import { selectors } from '../../navigation' -import { PDTitledList } from '../lists' -import styles from './SettingsPage.module.css' - -export const SettingsSidebar = (): JSX.Element => { - const currentPage = useSelector(selectors.getCurrentPage) - const { t } = useTranslation('nav') - return ( - - - - ) -} diff --git a/protocol-designer/src/components/SettingsPage/index.tsx b/protocol-designer/src/components/SettingsPage/index.tsx deleted file mode 100644 index 793914acd33..00000000000 --- a/protocol-designer/src/components/SettingsPage/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { useSelector } from 'react-redux' - -import { selectors } from '../../navigation' -import { SettingsApp } from './SettingsApp' - -export { SettingsSidebar } from './SettingsSidebar' - -export function SettingsPage(): JSX.Element { - const currentPage = useSelector(selectors.getCurrentPage) - switch (currentPage) { - // TODO: Ian 2019-08-21 when we have other pages, put them here - case 'settings-app': - default: - return - } -} diff --git a/protocol-designer/src/components/Slideout/index.tsx b/protocol-designer/src/components/Slideout/index.tsx deleted file mode 100644 index 37c3df180fd..00000000000 --- a/protocol-designer/src/components/Slideout/index.tsx +++ /dev/null @@ -1,223 +0,0 @@ -import * as React from 'react' -import { css } from 'styled-components' -import { - ALIGN_CENTER, - Box, - Btn, - COLORS, - DIRECTION_COLUMN, - DIRECTION_ROW, - Flex, - Icon, - JUSTIFY_SPACE_BETWEEN, - OVERFLOW_WRAP_ANYWHERE, - Overlay, - POSITION_FIXED, - SPACING, - Text, - TYPOGRAPHY, -} from '@opentrons/components' - -export interface SlideoutProps { - title: string | React.ReactElement - children: React.ReactNode - onCloseClick: () => unknown - // isExpanded is for collapse and expand animation - isExpanded?: boolean - footer?: React.ReactNode -} - -const SHARED_STYLE = css` - z-index: 2; - overflow: hidden; - @keyframes slidein { - from { - transform: translateX(100%); - } - to { - transform: translateX(0); - } - } - @keyframes slideout { - from { - transform: translateX(0); - } - to { - transform: translateX(100%); - } - } - @keyframes overlayin { - from { - opacity: 0; - } - to { - opacity: 0.35; - } - } - @keyframes overlayout { - from { - opacity: 0.35; - visibility: visible; - } - to { - opacity: 0; - visibility: hidden; - } - } -` -const EXPANDED_STYLE = css` - ${SHARED_STYLE} - animation: slidein 300ms forwards; -` -const COLLAPSED_STYLE = css` - ${SHARED_STYLE} - animation: slideout 300ms forwards; -` -const INITIALLY_COLLAPSED_STYLE = css` - ${SHARED_STYLE} - animation: slideout 0ms forwards; -` -const OVERLAY_IN_STYLE = css` - ${SHARED_STYLE} - animation: overlayin 300ms forwards; -` -const OVERLAY_OUT_STYLE = css` - ${SHARED_STYLE} - animation: overlayout 300ms forwards; -` -const INITIALLY_OVERLAY_OUT_STYLE = css` - ${SHARED_STYLE} - animation: overlayout 0ms forwards; -` - -const CLOSE_ICON_STYLE = css` - border-radius: 50%; - - &:hover { - background: ${COLORS.grey30}; - } - &:active { - background: ${COLORS.grey35}; - } -` - -export const Slideout = (props: SlideoutProps): JSX.Element => { - const { isExpanded, title, onCloseClick, children, footer } = props - const slideOutRef = React.useRef(null) - const [isReachedBottom, setIsReachedBottom] = React.useState(false) - - const hasBeenExpanded = React.useRef(isExpanded ?? false) - const handleScroll = (): void => { - if (slideOutRef.current == null) return - const { scrollTop, scrollHeight, clientHeight } = slideOutRef.current - if (scrollTop + clientHeight === scrollHeight) { - setIsReachedBottom(true) - } else { - setIsReachedBottom(false) - } - } - - React.useEffect(() => { - handleScroll() - }, [slideOutRef]) - - const handleClose = (): void => { - hasBeenExpanded.current = true - onCloseClick() - } - - const collapsedStyle = hasBeenExpanded.current - ? COLLAPSED_STYLE - : INITIALLY_COLLAPSED_STYLE - const overlayOutStyle = hasBeenExpanded.current - ? OVERLAY_OUT_STYLE - : INITIALLY_OVERLAY_OUT_STYLE - return ( - <> - - - - {typeof title === 'string' ? ( - - - {title} - - - - - - - - ) : ( - <>{title} - )} - - - {children} - - {footer != null ? ( - - {footer} - - ) : null} - - - - ) -} diff --git a/protocol-designer/src/components/StepCreationButton.tsx b/protocol-designer/src/components/StepCreationButton.tsx deleted file mode 100644 index fef01bd8015..00000000000 --- a/protocol-designer/src/components/StepCreationButton.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import * as React from 'react' -import { useDispatch, useSelector } from 'react-redux' -import { createPortal } from 'react-dom' -import { useTranslation } from 'react-i18next' -import { - LegacyTooltip, - DeprecatedPrimaryButton, - useHoverTooltip, - TOOLTIP_RIGHT, - TOOLTIP_TOP, - TOOLTIP_FIXED, -} from '@opentrons/components' -import { - HEATERSHAKER_MODULE_TYPE, - MAGNETIC_MODULE_TYPE, - TEMPERATURE_MODULE_TYPE, - THERMOCYCLER_MODULE_TYPE, -} from '@opentrons/shared-data' -import { actions as stepsActions, getIsMultiSelectMode } from '../ui/steps' -import { - selectors as stepFormSelectors, - getIsModuleOnDeck, -} from '../step-forms' -import { getEnableComment } from '../feature-flags/selectors' -import { - ConfirmDeleteModal, - CLOSE_UNSAVED_STEP_FORM, -} from './modals/ConfirmDeleteModal' -import { getMainPagePortalEl } from './portals/MainPageModalPortal' -import { stepIconsByType } from '../form-types' -import styles from './listButtons.module.css' -import type { ThunkDispatch } from 'redux-thunk' -import type { BaseState } from '../types' -import type { StepType } from '../form-types' - -interface StepButtonComponentProps { - children: React.ReactNode - expanded: boolean - disabled: boolean - setExpanded: (expanded: boolean) => void -} - -// TODO: Ian 2019-01-17 move out to centralized step info file - see #2926 - -export const StepCreationButtonComponent = ( - props: StepButtonComponentProps -): JSX.Element => { - const { t } = useTranslation(['tooltip', 'button']) - const { children, expanded, setExpanded, disabled } = props - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - strategy: TOOLTIP_FIXED, - }) - return ( -
{ - setExpanded(false) - }} - {...targetProps} - > - {disabled && ( - - {t(`disabled_step_creation`)} - - )} - { - setExpanded(!expanded) - }} - disabled={disabled} - > - {t('button:add_step')} - - -
{expanded && children}
-
- ) -} - -export interface StepButtonItemProps { - onClick: () => void - stepType: StepType -} - -export function StepButtonItem(props: StepButtonItemProps): JSX.Element { - const { onClick, stepType } = props - const { t } = useTranslation(['tooltip', 'application']) - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: TOOLTIP_RIGHT, - strategy: TOOLTIP_FIXED, - }) - const tooltipMessage = t(`step_description.${stepType}`) - return ( - <> -
- - {t(`application:stepType.${stepType}`, stepType)} - -
- {tooltipMessage} - - ) -} - -export const StepCreationButton = (): JSX.Element => { - const enableComment = useSelector(getEnableComment) - - const getSupportedSteps = (): Array< - Exclude - > => - enableComment - ? [ - 'comment', - 'moveLabware', - 'moveLiquid', - 'mix', - 'pause', - 'heaterShaker', - 'magnet', - 'temperature', - 'thermocycler', - ] - : [ - 'moveLabware', - 'moveLiquid', - 'mix', - 'pause', - 'heaterShaker', - 'magnet', - 'temperature', - 'thermocycler', - ] - - const currentFormIsPresaved = useSelector( - stepFormSelectors.getCurrentFormIsPresaved - ) - const formHasChanges = useSelector( - stepFormSelectors.getCurrentFormHasUnsavedChanges - ) - const isStepCreationDisabled = useSelector(getIsMultiSelectMode) - const modules = useSelector(stepFormSelectors.getInitialDeckSetup).modules - const isStepTypeEnabled: Record< - Exclude, - boolean - > = { - comment: enableComment, - moveLabware: true, - moveLiquid: true, - mix: true, - pause: true, - magnet: getIsModuleOnDeck(modules, MAGNETIC_MODULE_TYPE), - temperature: getIsModuleOnDeck(modules, TEMPERATURE_MODULE_TYPE), - thermocycler: getIsModuleOnDeck(modules, THERMOCYCLER_MODULE_TYPE), - heaterShaker: getIsModuleOnDeck(modules, HEATERSHAKER_MODULE_TYPE), - } - const [expanded, setExpanded] = React.useState(false) - const [ - enqueuedStepType, - setEnqueuedStepType, - ] = React.useState(null) - const dispatch = useDispatch>() - - const addStep = ( - stepType: StepType - ): ReturnType => - dispatch(stepsActions.addAndSelectStepWithHints({ stepType })) - - const items = getSupportedSteps() - .filter(stepType => isStepTypeEnabled[stepType]) - .map(stepType => ( - { - setExpanded(false) - - if (currentFormIsPresaved || formHasChanges) { - setEnqueuedStepType(stepType) - } else { - addStep(stepType) - } - }} - /> - )) - - return ( - <> - {enqueuedStepType !== null && - createPortal( - { - setEnqueuedStepType(null) - }} - onContinueClick={() => { - if (enqueuedStepType !== null) { - addStep(enqueuedStepType) - setEnqueuedStepType(null) - } - }} - />, - getMainPagePortalEl() - )} - - {items} - - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/ButtonRow/index.tsx b/protocol-designer/src/components/StepEditForm/ButtonRow/index.tsx deleted file mode 100644 index 1f8faf42024..00000000000 --- a/protocol-designer/src/components/StepEditForm/ButtonRow/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { OutlineButton, DeprecatedPrimaryButton } from '@opentrons/components' - -import modalStyles from '../../modals/modal.module.css' -import styles from './styles.module.css' - -interface ButtonRowProps { - handleClickMoreOptions: () => unknown - handleClose: () => unknown - handleSave: () => unknown - handleDelete: () => unknown - canSave: boolean -} - -export const ButtonRow = (props: ButtonRowProps): JSX.Element => { - const { - handleDelete, - handleClickMoreOptions, - handleClose, - handleSave, - canSave, - } = props - const { t } = useTranslation('button') - return ( -
-
- - {t('delete')} - - - {t('notes')} - -
-
- - {t('close')} - - - {t('save')} - -
-
- ) -} diff --git a/protocol-designer/src/components/StepEditForm/ButtonRow/styles.module.css b/protocol-designer/src/components/StepEditForm/ButtonRow/styles.module.css deleted file mode 100644 index c88f64a61c1..00000000000 --- a/protocol-designer/src/components/StepEditForm/ButtonRow/styles.module.css +++ /dev/null @@ -1,21 +0,0 @@ -:root { - --form-max-width: 55rem; /* 'breakpoint' for gutter */ - --form-button-width: 6.25rem; - --form-button-margin: 0.625rem; -} - -.form_wrapper { - max-width: var(--form-max-width); -} - -.form_button { - width: var(--form-button-width); -} - -.form_button:not(:last-child) { - margin-right: var(--form-button-margin); -} - -.button_auto { - width: auto; -} diff --git a/protocol-designer/src/components/StepEditForm/StepEditForm.module.css b/protocol-designer/src/components/StepEditForm/StepEditForm.module.css deleted file mode 100644 index 439dccbdf8c..00000000000 --- a/protocol-designer/src/components/StepEditForm/StepEditForm.module.css +++ /dev/null @@ -1,448 +0,0 @@ -@import '@opentrons/components/styles'; - -.advanced_settings_panel { - background-color: #f6f6f6; /* TODO Ian 2019-03-15 add to colors.css? */ - margin: -0.5rem -0.75rem 0 -0.75rem; - padding: 0 0.75rem 0 0.75rem; -} - -.form_wrapper { - max-width: 55rem; /* 'breakpoint' for gutter */ -} - -.disposal_vol_wrapper, -.form_row, -.checkbox_column { - margin: 1rem 0; - width: auto; -} - -.form_row { - min-height: 2.25rem; - display: flex; - align-items: flex-start; -} - -.wrap_group { - display: flex; - flex-direction: row; - justify-content: flex-start; -} - -.field, -.small_field, -.large_field { - margin-right: 0.5rem; -} - -.large_field { - width: 12rem; -} - -.small_field { - width: 5.75rem; - min-width: 5.75rem; -} - -.full_width_field { - width: 100%; -} - -/* TODO: Ian 2019-03-25 make this a component library input? */ -.textarea_field { - font-size: var(--fs-body-1); - background-color: var(--c-light-gray); - border-radius: var(--bd-radius-form-field); - padding: 0.25rem 0.25rem 0.25rem 0.5rem; - height: 100%; - width: 100%; - - /* resets */ - border: none; - overflow: auto; - outline: none; - box-shadow: none; - resize: none; -} - -.orphan_field { - margin: 0; -} - -.checkbox_row { - margin-top: 0.5rem; - height: 1.5rem; - display: flex; - flex-direction: row; -} - -.checkbox_field, -.toggle_field { - text-transform: capitalize; -} - -.captioned_field { - margin-bottom: 1rem; -} - -.no_label { - margin-top: 0.5rem; -} - -.form_button { - width: 6.25rem; -} - -.form_button:not(:last-child) { - margin-right: 0.625rem; -} - -.sub_label_no_checkbox { - font-size: var(--fs-body-1); /* from legacy --font-body-1-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-1-dark */ - color: var(--c-font-dark); /* from legacy --font-body-1-dark */ - width: 5rem; - display: flex; - align-items: center; - line-height: 1; - flex: 0 0 auto; - padding: 0 0.5rem; - margin: 0.5rem 0 0.5rem 1.4rem; -} - -.advanced_settings_button_wrapper { - float: right; - height: 2.25rem; - width: 2.25rem; -} - -.advanced_settings_button { - padding: 0.375rem; -} - -.section_wrapper { - display: flex; - justify-content: space-between; - margin-bottom: 0.5rem; - min-height: 4rem; -} - -.section_column { - flex: 1; - max-width: 20rem; -} - -.section_header { - display: flex; - justify-content: space-between; - align-items: baseline; - min-height: 1.25rem; /* Same height with and without gear icon */ - border-bottom: 1px solid var(--c-light-gray); - width: 100%; - padding-top: 0.25rem; -} - -.section_header_text { - /* TODO: Ian 2019-03-20: if it's reused, do typography.css entry for the below? - And add this color to colors.css? */ - color: #666; - letter-spacing: 1px; - font-size: var(--fs-body-2); - font-weight: var(--fw-semibold); - text-transform: uppercase; -} - -.section_header_text_column { - flex: 1; - max-width: 20rem; - color: #666; - letter-spacing: 1px; - font-size: var(--fs-body-2); - font-weight: var(--fw-semibold); - text-transform: uppercase; -} - -.path_option { - width: 2.275rem; - height: 1.55rem; - margin-right: 0.25rem; - cursor: pointer; - border-radius: 2px; - border: 1px solid #c4c4c4; -} - -.path_option.selected { - background-color: var(--c-light-gray); - border-radius: 2px; - border: 1.5px solid var(--c-black); -} - -.path_option.disabled { - color: var(--c-light-gray); - opacity: 0.16; - cursor: default; - pointer-events: inherit; -} - -.path_options { - display: flex; - flex-direction: row; - list-style: none; -} - -.tooltip { - line-height: 1rem; - max-width: 18rem; -} - -.path_tooltip_image { - padding: 0.5rem; -} - -.path_tooltip_image.disabled { - opacity: 0.5; -} - -.path_tooltip_title { - font-size: var(--fs-header); - text-align: center; -} - -.path_tooltip_title.disabled { - opacity: 0.5; -} - -.path_tooltip_subtitle { - font-size: var(--fs-body-2); - text-align: center; -} - -.disposal_vol_wrapper { - min-height: 3.5rem; - margin-bottom: 1rem; -} - -.magnet_section_wrapper { - display: flex; - justify-content: flex-start; - min-height: 4rem; -} - -.magnet_form_group { - flex-basis: 0 1 11rem; - margin: 1rem 4.25rem 1rem 0; -} - -.temperature_section_wrapper { - margin-bottom: 2rem; -} - -.temperature_form_group { - margin: 1rem 0; -} - -.module_labware_text { - max-width: 11rem; - margin-top: 0.5rem; - font-size: var(--fs-body-1); - overflow: hidden; - white-space: pre-wrap; - text-overflow: ellipsis; -} - -.select_module_message { - font-size: var(--fs-body-1); -} - -/* -TODO (ka 2020-1-30): This is a workaround since component library -RadioGroup does not support a disabled option. Should revisit if -and when that is implemented. -*/ -.disabled { - opacity: 0.5; - pointer-events: none; -} - -.diagram_row { - display: flex; - margin: 1rem 0 2rem 14rem; -} - -.tc_step_group { - margin: 1rem 0; -} - -.tc_step_option { - margin-bottom: 0.5rem; -} - -.toggle_form_group { - min-width: 20%; - margin: 0 0 1rem 1.75rem; -} - -.set_plate_latch_form_group { - min-width: 20%; - margin: 0 0 0 1.75rem; -} - -.toggle_row { - display: flex; - flex-direction: row; - align-items: flex-start; -} - -.toggle_field { - margin-right: 1rem; -} - -.toggle_temperature_field { - margin-top: 0.125rem; -} - -.profile_form { - padding-left: 1.75rem; -} - -.profile_settings_group { - margin-right: 1rem; -} - -.profile_settings_lid { - font-size: var(--fs-body-1); - line-height: 2; -} - -.profile_step_labels { - font-size: var(--fs-body-1); /* from legacy --font-form-default */ - color: var(--c-font-dark); /* from legacy --font-form-default */ - display: grid; - grid-template-columns: 12.5rem 7.25rem 7.25rem; - font-weight: var(--fw-semibold); - padding: 1rem 0 0.25rem 2.125rem; -} - -.profile_step_number { - font-size: var(--fs-body-1); /* from legacy --font-body-1-dark */ - font-weight: var(--fw-regular); /* from legacy --font-body-1-dark */ - color: var(--c-font-dark); /* from legacy --font-body-1-dark */ - width: 1.5rem; - text-align: right; - padding: 0.5rem 0.5rem 0 0; -} - -.profile_step_row { - display: flex; - align-items: center; - padding: 0.25rem 0; - - &.cycle { - padding: 0; - } -} - -.profile_step_fields { - display: flex; - align-items: flex-start; - border: var(--bd-light); - width: 100%; - min-width: 36rem; - padding: 0.5rem; -} - -.profile_cycle_fields { - width: 36rem; - border: none; -} - -.step_input_wrapper { - margin-right: 1.5rem; -} - -.title { - width: 11rem; -} - -.profile_field { - width: 5.75rem; -} - -.delete_step_icon { - color: var(--c-med-gray); - width: 1.5rem; - margin-top: 0.25rem; - cursor: pointer; -} - -.profile_cycle_wrapper { - display: flex; - width: 100%; -} - -.cycle_steps { - display: flex; -} - -.cycle_row { - display: flex; - flex-direction: column; - position: relative; - border-right: 1px solid var(--c-light-gray); - padding: 0; - margin-top: 0.25rem; - margin-right: 0.75rem; - - &::before { - content: ''; - background: var(--c-light-gray); - position: absolute; - top: 0; - right: 0; - height: 1px; - width: 1rem; - } - - &::after { - content: ''; - background: var(--c-light-gray); - position: absolute; - bottom: 0; - right: 0; - height: 1px; - width: 1rem; - } -} - -.profile_cycle_group { - border: var(--bd-light); - width: 100%; - padding-right: 0.5rem; - padding-left: 0.375rem; -} - -.cycle_step_delete { - height: 3rem; - - & > .delete_step_icon { - margin-top: 0.75rem; - } -} - -.cycles_field { - margin-top: 1rem; -} - -.add_cycle_step { - text-align: right; - margin: 0.75rem 0 1rem; -} - -.profile_button_group { - padding: 1rem 1.5rem 0; - text-align: right; - - & :first-child { - margin-right: 1.5rem; - } -} diff --git a/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx b/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx deleted file mode 100644 index 672b562b0ec..00000000000 --- a/protocol-designer/src/components/StepEditForm/StepEditFormComponent.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import type * as React from 'react' -import cx from 'classnames' -import get from 'lodash/get' -import { MoreOptionsModal } from '../modals/MoreOptionsModal' -import { - MixForm, - MoveLabwareForm, - MoveLiquidForm, - PauseForm, - CommentForm, - MagnetForm, - TemperatureForm, - ThermocyclerForm, - HeaterShakerForm, -} from './forms' -import { Alerts } from '../alerts/Alerts' -import { ButtonRow } from './ButtonRow' -import formStyles from '../forms/forms.module.css' -import styles from './StepEditForm.module.css' -import type { StepFieldName } from '../../steplist/fieldLevel' -import type { FormData, StepType } from '../../form-types' -import type { FieldPropsByName, FocusHandlers, StepFormProps } from './types' - -type StepFormMap = { - [K in StepType]?: React.ComponentType | null -} - -const STEP_FORM_MAP: StepFormMap = { - mix: MixForm, - pause: PauseForm, - moveLabware: MoveLabwareForm, - moveLiquid: MoveLiquidForm, - magnet: MagnetForm, - temperature: TemperatureForm, - thermocycler: ThermocyclerForm, - heaterShaker: HeaterShakerForm, - comment: CommentForm, -} - -interface Props { - canSave: boolean - dirtyFields: string[] - focusHandlers: FocusHandlers - focusedField: StepFieldName | null - formData: FormData - propsForFields: FieldPropsByName - handleClose: () => unknown - handleDelete: () => unknown - handleSave: () => unknown - showMoreOptionsModal: boolean - toggleMoreOptionsModal: () => unknown -} - -export const StepEditFormComponent = (props: Props): JSX.Element => { - const { - formData, - focusHandlers, - canSave, - handleClose, - handleDelete, - dirtyFields, - handleSave, - propsForFields, - showMoreOptionsModal, - toggleMoreOptionsModal, - focusedField, - } = props - - const FormComponent: typeof STEP_FORM_MAP[keyof typeof STEP_FORM_MAP] = get( - STEP_FORM_MAP, - formData.stepType - ) - if (!FormComponent) { - // early-exit if step form doesn't exist - return ( -
-
Todo: support {formData && formData.stepType} step
-
- ) - } - - return ( - <> - {showMoreOptionsModal && ( - - )} - -
- - -
- - ) -} diff --git a/protocol-designer/src/components/StepEditForm/__tests__/utils.test.ts b/protocol-designer/src/components/StepEditForm/__tests__/utils.test.ts deleted file mode 100644 index c2d46ce7546..00000000000 --- a/protocol-designer/src/components/StepEditForm/__tests__/utils.test.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { describe, expect, it, beforeEach } from 'vitest' -import { - SOURCE_WELL_BLOWOUT_DESTINATION, - DEST_WELL_BLOWOUT_DESTINATION, -} from '@opentrons/step-generation' -import { getBlowoutLocationOptionsForForm } from '../utils' -import type { LegacyDropdownOption } from '@opentrons/components' - -describe('getBlowoutLocationOptionsForForm', () => { - let destOption: LegacyDropdownOption - let sourceOption: LegacyDropdownOption - let disabledSourceOption: LegacyDropdownOption - let disabledDestOption: LegacyDropdownOption - const sourceName = 'Source Well' - const destName = 'Destination Well' - - beforeEach(() => { - destOption = { name: destName, value: DEST_WELL_BLOWOUT_DESTINATION } - disabledDestOption = { - name: destName, - value: DEST_WELL_BLOWOUT_DESTINATION, - disabled: true, - } - sourceOption = { name: sourceName, value: SOURCE_WELL_BLOWOUT_DESTINATION } - disabledSourceOption = { - name: sourceName, - value: SOURCE_WELL_BLOWOUT_DESTINATION, - disabled: true, - } - }) - - it('should just return destination option for Mix steps', () => { - const result = getBlowoutLocationOptionsForForm({ stepType: 'mix' }) - expect(result).toEqual([destOption]) - }) - - it('should return enabled source + enabled destination options for moveLiquid steps, "single" path', () => { - const result = getBlowoutLocationOptionsForForm({ - stepType: 'moveLiquid', - path: 'single', - }) - expect(result).toEqual([sourceOption, destOption]) - }) - - it('should return disabled source + enabled destination options for moveLiquid steps, "multiAspirate" path', () => { - const result = getBlowoutLocationOptionsForForm({ - stepType: 'moveLiquid', - path: 'multiAspirate', - }) - expect(result).toEqual([disabledSourceOption, destOption]) - }) - - it('should return enabled source + disabled destination options for moveLiquid steps, "multiDispense" path', () => { - const result = getBlowoutLocationOptionsForForm({ - stepType: 'moveLiquid', - path: 'multiDispense', - }) - expect(result).toEqual([sourceOption, disabledDestOption]) - }) - - it('should return empty array for other step types', () => { - const result = getBlowoutLocationOptionsForForm({ stepType: 'magnet' }) - expect(result).toEqual([]) - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx b/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx deleted file mode 100644 index 99e5846782e..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/BlowoutLocationField.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import type * as React from 'react' -import { useSelector } from 'react-redux' -import { DropdownField } from '@opentrons/components' -import cx from 'classnames' -import { selectors as uiLabwareSelectors } from '../../../ui/labware' -import styles from '../StepEditForm.module.css' -import type { Options } from '@opentrons/components' -import type { FieldProps } from '../types' - -type BlowoutLocationDropdownProps = FieldProps & { - options: Options - className?: string -} - -export const BlowoutLocationField = ( - props: BlowoutLocationDropdownProps -): JSX.Element => { - const { - className, - disabled, - onFieldBlur, - onFieldFocus, - updateValue, - value, - } = props - - const disposalOptions = useSelector(uiLabwareSelectors.getDisposalOptions) - const options = [...disposalOptions, ...props.options] - - return ( - ) => { - updateValue(e.currentTarget.value) - }} - /> - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/BlowoutZOffsetField.tsx b/protocol-designer/src/components/StepEditForm/fields/BlowoutZOffsetField.tsx deleted file mode 100644 index 8c6785d6689..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/BlowoutZOffsetField.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { useState } from 'react' -import { useSelector } from 'react-redux' -import { - DEST_WELL_BLOWOUT_DESTINATION, - SOURCE_WELL_BLOWOUT_DESTINATION, -} from '@opentrons/step-generation' -import { getWellDepth } from '@opentrons/shared-data' -import { - COLORS, - Flex, - Icon, - LegacyTooltip, - useHoverTooltip, -} from '@opentrons/components' -import { getLabwareEntities } from '../../../step-forms/selectors' -import { ZTipPositionModal } from './TipPositionField/ZTipPositionModal' -import type { FieldProps } from '../types' - -interface BlowoutZOffsetFieldProps extends FieldProps { - destLabwareId: unknown - sourceLabwareId?: unknown - blowoutLabwareId?: unknown -} - -export function BlowoutZOffsetField( - props: BlowoutZOffsetFieldProps -): JSX.Element { - const { - disabled, - value, - destLabwareId, - sourceLabwareId, - blowoutLabwareId, - tooltipContent, - name, - updateValue, - } = props - const [isModalOpen, setModalOpen] = useState(false) - const [targetProps, tooltipProps] = useHoverTooltip() - const labwareEntities = useSelector(getLabwareEntities) - - let labwareId = null - if (blowoutLabwareId === SOURCE_WELL_BLOWOUT_DESTINATION) { - labwareId = sourceLabwareId - } else if (blowoutLabwareId === DEST_WELL_BLOWOUT_DESTINATION) { - labwareId = destLabwareId - } - - const labwareWellDepth = - labwareId != null && labwareEntities[String(labwareId)]?.def != null - ? getWellDepth(labwareEntities[String(labwareId)].def, 'A1') - : 0 - - return ( - <> - {tooltipContent} - {isModalOpen ? ( - { - setModalOpen(false) - }} - name={name} - zValue={Number(value)} - updateValue={updateValue} - wellDepthMm={labwareWellDepth} - /> - ) : null} - { - setModalOpen(true) - } - } - id={`BlowoutZOffsetField_${name}`} - data-testid={`BlowoutZOffsetField_${name}`} - > - - - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts b/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts deleted file mode 100644 index e3032825128..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/getDisabledChangeTipOptions.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { getWellRatio } from '../../../../steplist/utils' -import type { PathOption, StepType } from '../../../../form-types' -import type { ChangeTipOptions } from '@opentrons/step-generation' -export interface DisabledChangeTipArgs { - aspirateWells?: string[] - dispenseWells?: string[] - stepType?: StepType - path?: PathOption | null | undefined -} -export const getDisabledChangeTipOptions = ( - args: DisabledChangeTipArgs -): Set | null | undefined => { - const { path, aspirateWells, dispenseWells, stepType } = args - - switch (stepType) { - case 'moveLiquid': { - const wellRatio = getWellRatio(aspirateWells, dispenseWells) - - // ensure wells are selected - if (wellRatio != null && path === 'single') { - if (wellRatio === '1:many') { - return new Set(['perSource']) - } - - return new Set(['perDest']) - } - - // path is multi - return new Set(['perSource', 'perDest']) - } - - case 'mix': { - return new Set(['perSource', 'perDest']) - } - - default: { - console.warn( - `getChangeTipOptions for stepType ${String( - stepType - )} not yet implemented!` - ) - return null - } - } -} diff --git a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx deleted file mode 100644 index f367fabcff6..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/ChangeTipField/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { - FormGroup, - SelectField, - LegacyTooltip, - useHoverTooltip, - TOOLTIP_FIXED, -} from '@opentrons/components' -import { getDisabledChangeTipOptions } from './getDisabledChangeTipOptions' -import styles from '../../StepEditForm.module.css' -import type { DisabledChangeTipArgs } from './getDisabledChangeTipOptions' -import type { ChangeTipOptions } from '@opentrons/step-generation' -import type { FieldProps } from '../../types' - -const ALL_CHANGE_TIP_VALUES: ChangeTipOptions[] = [ - 'always', - 'once', - 'perSource', - 'perDest', - 'never', -] -type Props = FieldProps & DisabledChangeTipArgs - -export const ChangeTipField = (props: Props): JSX.Element => { - const { - aspirateWells, - dispenseWells, - name, - path, - stepType, - updateValue, - value, - } = props - const { t } = useTranslation('form') - const disabledOptions = getDisabledChangeTipOptions({ - aspirateWells, - dispenseWells, - path, - stepType, - }) - - const options = ALL_CHANGE_TIP_VALUES.map(value => ({ - value, - isDisabled: disabledOptions ? disabledOptions.has(value) : false, - })) - - return ( - - { - updateValue(value) - }} - formatOptionLabel={({ value }) => ( - - )} - /> - - ) -} - -interface LabelProps { - value: string -} - -const ChangeTipOptionLabel = (props: LabelProps): JSX.Element => { - const { value } = props - const { t } = useTranslation('form') - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: 'bottom-start', - strategy: TOOLTIP_FIXED, - }) - return ( - <> -
- {t(`step_edit_form.field.change_tip.option.${value}`)} - -
- {t(`step_edit_form.field.change_tip.option_tooltip.${value}`)} -
-
-
- - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx b/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx deleted file mode 100644 index 92483f5cb16..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/CheckboxRowField.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type * as React from 'react' -import { - DeprecatedCheckboxField, - useHoverTooltip, - LegacyTooltip, - TOOLTIP_TOP, -} from '@opentrons/components' -import cx from 'classnames' -import styles from '../StepEditForm.module.css' -import type { FieldProps } from '../types' -import type { Placement } from '@opentrons/components' - -type CheckboxRowProps = FieldProps & { - children?: React.ReactNode - className?: string - label?: string - tooltipContent?: React.ReactNode - tooltipPlacement?: Placement -} - -export const CheckboxRowField = (props: CheckboxRowProps): JSX.Element => { - const { - children, - className, - disabled, - isIndeterminate, - label, - name, - tooltipContent, - updateValue, - value, - tooltipPlacement = TOOLTIP_TOP, - } = props - - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: tooltipPlacement, - }) - return ( - <> - {tooltipContent && ( - - {tooltipContent} - - )} -
- ) => { - updateValue(!value) - }} - value={disabled ? false : Boolean(value)} - /> - {value && !disabled && !isIndeterminate ? children : null} -
- - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx b/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx deleted file mode 100644 index b39ce3c0ac8..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/Configure96ChannelField.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { ALL, COLUMN } from '@opentrons/shared-data' -import { - FormGroup, - SelectField, - LegacyTooltip, - TOOLTIP_FIXED, - useHoverTooltip, -} from '@opentrons/components' -import { getInitialDeckSetup } from '../../../step-forms/selectors' -import styles from '../StepEditForm.module.css' -import type { StepFormDropdown } from './StepFormDropdownField' - -export function Configure96ChannelField( - props: Omit, 'options'> -): JSX.Element { - const { t } = useTranslation('form') - const { value: dropdownItem, name, updateValue } = props - const deckSetup = useSelector(getInitialDeckSetup) - const tipracks = Object.values(deckSetup.labware).filter( - labware => labware.def.parameters.isTiprack - ) - const tipracksNotOnAdapter = tipracks.filter( - tiprack => deckSetup.labware[tiprack.slot] == null - ) - - const options = [ - { name: 'all', value: ALL }, - { - name: 'column', - value: COLUMN, - isDisabled: tipracksNotOnAdapter.length === 0, - }, - ] - - const [selectedValue, setSelectedValue] = React.useState( - dropdownItem || options[0].value - ) - React.useEffect(() => { - updateValue(selectedValue) - }, [selectedValue]) - - return ( - - { - updateValue(value) - setSelectedValue(value) - }} - formatOptionLabel={({ value, isDisabled }) => ( - - )} - /> - - ) -} - -interface OptionLabelProps { - value: string - disabled?: boolean -} - -const OptionLabel = (props: OptionLabelProps): JSX.Element => { - const { value, disabled } = props - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: 'bottom-start', - strategy: TOOLTIP_FIXED, - }) - const { t } = useTranslation('form') - return ( - <> -
- {t(`step_edit_form.field.nozzles.option.${value}`)} - {disabled ? ( - -
- {t(`step_edit_form.field.nozzles.option_tooltip.${value}`)} -
-
- ) : null} -
- - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx b/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx deleted file mode 100644 index 41fa2e36a4d..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/DelayFields.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { TextField } from './TextField' -import { CheckboxRowField } from './CheckboxRowField' -import { TipPositionField } from './TipPositionField' -import styles from '../StepEditForm.module.css' -import type { FieldPropsByName } from '../types' -import type { StepFieldName } from '../../../form-types' - -export interface DelayFieldProps { - checkboxFieldName: StepFieldName // TODO(IL, 2021-03-03): strictly, could be DelayCheckboxFields! - labwareId?: string | null - propsForFields: FieldPropsByName - secondsFieldName: StepFieldName // TODO(IL, 2021-03-03): strictly, could be DelaySecondFields! - tipPositionFieldName?: StepFieldName // TODO(IL, 2021-03-03): strictly, could be TipOffsetFields! -} - -export const DelayFields = (props: DelayFieldProps): JSX.Element => { - const { - checkboxFieldName, - secondsFieldName, - tipPositionFieldName, - propsForFields, - labwareId, - } = props - const { t } = useTranslation(['form', 'application']) - return ( - - - {tipPositionFieldName && ( - - )} - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx b/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx deleted file mode 100644 index 0363181edc2..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/DisposalVolumeField.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import cx from 'classnames' - -import { - FormGroup, - DeprecatedCheckboxField, - DropdownField, - Flex, - DIRECTION_COLUMN, - SPACING, -} from '@opentrons/components' -import { getMaxDisposalVolumeForMultidispense } from '../../../steplist/formLevel/handleFormChange/utils' -import { selectors as stepFormSelectors } from '../../../step-forms' -import { selectors as uiLabwareSelectors } from '../../../ui/labware' -import { getBlowoutLocationOptionsForForm } from '../utils' -import { TextField } from './TextField' -import { FlowRateField } from './FlowRateField' -import { BlowoutZOffsetField } from './BlowoutZOffsetField' - -import type { Options } from '@opentrons/components' -import type { PathOption, StepType } from '../../../form-types' -import type { FieldProps, FieldPropsByName } from '../types' - -import styles from '../StepEditForm.module.css' - -interface DropdownFormFieldProps extends FieldProps { - options: Options - className?: string -} -const DropdownFormField = (props: DropdownFormFieldProps): JSX.Element => { - return ( - { - props.updateValue(e.currentTarget.value) - }} - onFocus={props.onFieldFocus} - /> - ) -} -interface DisposalVolumeFieldProps { - path: PathOption - pipette: string | null - propsForFields: FieldPropsByName - stepType: StepType - volume: string | null - aspirate_airGap_checkbox?: boolean | null - aspirate_airGap_volume?: string | null - tipRack?: string | null -} - -export const DisposalVolumeField = ( - props: DisposalVolumeFieldProps -): JSX.Element => { - const { - path, - stepType, - volume, - pipette, - propsForFields, - aspirate_airGap_checkbox, - aspirate_airGap_volume, - tipRack, - } = props - const { t } = useTranslation(['application', 'form']) - - const disposalOptions = useSelector(uiLabwareSelectors.getDisposalOptions) - const pipetteEntities = useSelector(stepFormSelectors.getPipetteEntities) - const blowoutLocationOptions = getBlowoutLocationOptionsForForm({ - path, - stepType, - }) - const maxDisposalVolume = getMaxDisposalVolumeForMultidispense( - { - aspirate_airGap_checkbox, - aspirate_airGap_volume, - path, - pipette, - volume, - tipRack, - }, - pipetteEntities - ) - const disposalDestinationOptions = [ - ...disposalOptions, - ...blowoutLocationOptions, - ] - - const volumeBoundsCaption = - maxDisposalVolume != null - ? `max ${maxDisposalVolume} ${t('units.microliter')}` - : null - - const volumeField = ( -
- -
- ) - - const { value, updateValue } = propsForFields.disposalVolume_checkbox - return ( - - <> -
- ) => { - updateValue(!value) - }} - /> - {value ? volumeField : null} -
- {value ? ( -
-
{t('blowout')}
- - - - - -
- ) : null} - -
- ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/DropTipField/__tests__/DropTipField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/DropTipField/__tests__/DropTipField.test.tsx deleted file mode 100644 index 195096f0c07..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/DropTipField/__tests__/DropTipField.test.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import type * as React from 'react' -import { screen } from '@testing-library/react' -import { describe, it, vi, beforeEach, expect } from 'vitest' -import { fixtureTiprack1000ul } from '@opentrons/shared-data' - -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { getAllTiprackOptions } from '../../../../../ui/labware/selectors' -import { getEnableReturnTip } from '../../../../../feature-flags/selectors' -import { - getAdditionalEquipmentEntities, - getLabwareEntities, -} from '../../../../../step-forms/selectors' -import { DropTipField } from '../index' -import type { LabwareDefinition2 } from '@opentrons/shared-data' - -vi.mock('../../../../../step-forms/selectors') -vi.mock('../../../../../ui/labware/selectors') -vi.mock('../../../../../feature-flags/selectors') -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} -const mockDropTip = 'dropTip_location' -const mockTrashBin = 'trashBinId' -const mockLabwareId = 'mockId' -describe('DropTipField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - name: mockDropTip, - value: mockTrashBin, - updateValue: vi.fn(), - onFieldBlur: vi.fn(), - onFieldFocus: vi.fn(), - disabled: false, - } - - vi.mocked(getAdditionalEquipmentEntities).mockReturnValue({ - [mockTrashBin]: { name: 'trashBin', location: 'A3', id: mockTrashBin }, - }) - vi.mocked(getEnableReturnTip).mockReturnValue(true) - vi.mocked(getAllTiprackOptions).mockReturnValue([ - { name: 'mock tip', value: mockLabwareId }, - ]) - vi.mocked(getLabwareEntities).mockReturnValue({ - [mockLabwareId]: { - id: mockLabwareId, - labwareDefURI: 'mock uri', - def: fixtureTiprack1000ul as LabwareDefinition2, - }, - }) - }) - it('renders the label and dropdown field with trash bin selected as default', () => { - render(props) - screen.getByText('Tip drop location') - screen.getByRole('combobox', { name: '' }) - screen.getByRole('option', { name: 'Trash Bin' }) - screen.getByRole('option', { name: 'mock tip' }) - }) - it('renders dropdown as disabled', () => { - props.disabled = true - render(props) - expect(screen.getByRole('combobox', { name: '' })).toBeDisabled() - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx deleted file mode 100644 index 00902b75915..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/DropTipField/index.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { useEffect } from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { DropdownField, FormGroup } from '@opentrons/components' -import { - getAdditionalEquipmentEntities, - getLabwareEntities, -} from '../../../../step-forms/selectors' -import { getAllTiprackOptions } from '../../../../ui/labware/selectors' -import { getEnableReturnTip } from '../../../../feature-flags/selectors' - -import type { ComponentProps, ChangeEvent } from 'react' -import type { DropdownOption } from '@opentrons/components' -import type { StepFormDropdown } from '../StepFormDropdownField' - -import styles from '../../StepEditForm.module.css' - -export function DropTipField( - props: Omit, 'options'> & {} -): JSX.Element { - const { - value: dropdownItem, - name, - onFieldBlur, - onFieldFocus, - updateValue, - disabled, - } = props - const { t } = useTranslation('form') - const additionalEquipment = useSelector(getAdditionalEquipmentEntities) - const labwareEntities = useSelector(getLabwareEntities) - const tiprackOptions = useSelector(getAllTiprackOptions) - const enableReturnTip = useSelector(getEnableReturnTip) - - const wasteChute = Object.values(additionalEquipment).find( - aE => aE.name === 'wasteChute' - ) - const trashBin = Object.values(additionalEquipment).find( - aE => aE.name === 'trashBin' - ) - const wasteChuteOption: DropdownOption = { - name: 'Waste Chute', - value: wasteChute?.id ?? '', - } - const trashOption: DropdownOption = { - name: 'Trash Bin', - value: trashBin?.id ?? '', - } - - const options: DropdownOption[] = [] - if (wasteChute != null) options.push(wasteChuteOption) - if (trashBin != null) options.push(trashOption) - - useEffect(() => { - if ( - additionalEquipment[String(dropdownItem)] == null && - labwareEntities[String(dropdownItem)] == null - ) { - updateValue(null) - } - }, [dropdownItem]) - - return ( - - ) => { - updateValue(e.currentTarget.value) - }} - /> - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.module.css b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.module.css deleted file mode 100644 index a809deff4a1..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.module.css +++ /dev/null @@ -1,19 +0,0 @@ -@import '@opentrons/components/styles'; - -.description { - padding: 2rem 0; -} - -/* TODO: Ian 2018-08-24 use some `title` prop of a yet-to-be-built modal component - (AlertModal gets us 90% there) */ -.header { - font-size: var(--fs-header); /* from legacy --font-header-dark */ - font-weight: var(--fw-semibold); /* from legacy --font-header-dark */ - color: var(--c-font-dark); /* from legacy --font-header-dark */ -} - -.flow_rate_type_label { - font-weight: var(--fw-semibold); - text-transform: capitalize; - margin-bottom: 1rem; -} diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx deleted file mode 100644 index ef54c68f68e..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx +++ /dev/null @@ -1,248 +0,0 @@ -import * as React from 'react' -import { createPortal } from 'react-dom' -import round from 'lodash/round' -import { useTranslation } from 'react-i18next' -import { - AlertModal, - FormGroup, - RadioGroup, - LegacyInputField, - Flex, - useHoverTooltip, - LegacyTooltip, -} from '@opentrons/components' -import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' -import type { FieldProps } from '../../types' - -import modalStyles from '../../../modals/modal.module.css' -import stepFormStyles from '../../StepEditForm.module.css' -import styles from './FlowRateInput.module.css' - -const DECIMALS_ALLOWED = 1 - -/** When flow rate is falsey (including 0), it means 'use default' */ -export interface FlowRateInputProps extends FieldProps { - defaultFlowRate?: number | null - flowRateType: 'aspirate' | 'dispense' | 'blowout' - label?: string | null - minFlowRate: number - maxFlowRate: number - pipetteDisplayName?: string | null - className?: string -} - -interface State { - isPristine: boolean - modalFlowRate?: string | null - modalUseDefault: boolean - showModal: boolean -} - -export const FlowRateInput = (props: FlowRateInputProps): JSX.Element => { - const { - className, - defaultFlowRate, - disabled, - flowRateType, - isIndeterminate, - label, - maxFlowRate, - minFlowRate, - name, - pipetteDisplayName, - tooltipContent, - } = props - const [targetProps, tooltipProps] = useHoverTooltip() - const { t } = useTranslation(['form', 'application', 'shared']) - const DEFAULT_LABEL = t('step_edit_form.field.flow_rate.label') - - const initialState: State = { - isPristine: true, - modalFlowRate: props.value ? String(props.value) : null, - modalUseDefault: !props.value && !isIndeterminate, - showModal: false, - } - - const [isPristine, setIsPristine] = React.useState( - initialState.isPristine - ) - - const [modalFlowRate, setModalFlowRate] = React.useState< - State['modalFlowRate'] - >(initialState.modalFlowRate) - - const [modalUseDefault, setModalUseDefault] = React.useState< - State['modalUseDefault'] - >(initialState.modalUseDefault) - - const [showModal, setShowModal] = React.useState( - initialState.showModal - ) - - const resetModalState = (): void => { - setShowModal(initialState.showModal) - setModalFlowRate(initialState.modalFlowRate) - setModalUseDefault(initialState.modalUseDefault) - setIsPristine(initialState.isPristine) - } - - const cancelModal = resetModalState - - const openModal = (): void => { - setShowModal(true) - } - - const makeSaveModal = (allowSave: boolean) => (): void => { - setIsPristine(false) - - if (allowSave) { - const newFlowRate = modalUseDefault ? null : Number(modalFlowRate) - props.updateValue(newFlowRate) - resetModalState() - } - } - - const handleChangeRadio = (e: React.ChangeEvent): void => { - setModalUseDefault(e.target.value !== 'custom') - } - - const handleChangeNumber = (e: React.ChangeEvent): void => { - const value = e.target.value - if (value === '' || value === '.' || !Number.isNaN(Number(value))) { - setModalFlowRate(value) - setModalUseDefault(false) - } - } - - const modalFlowRateNum = Number(modalFlowRate) - - // show 0.1 not 0 as minimum, since bottom of range is non-inclusive - const displayMinFlowRate = minFlowRate || Math.pow(10, -DECIMALS_ALLOWED) - const rangeDescription = t('step_edit_form.field.flow_rate.range', { - min: displayMinFlowRate, - max: maxFlowRate, - }) - const outOfBounds = - modalFlowRateNum === 0 || - minFlowRate > modalFlowRateNum || - modalFlowRateNum > maxFlowRate - const correctDecimals = - round(modalFlowRateNum, DECIMALS_ALLOWED) === modalFlowRateNum - const allowSave = modalUseDefault || (!outOfBounds && correctDecimals) - - let errorMessage = null - // validation only happens when "Custom" is selected, not "Default" - // and pristinity only masks the outOfBounds error, not the correctDecimals error - if (!modalUseDefault) { - if (!Number.isNaN(modalFlowRateNum) && !correctDecimals) { - errorMessage = t('step_edit_form.field.flow_rate.error_decimals', { - decimals: `${DECIMALS_ALLOWED}`, - }) - } else if (!isPristine && outOfBounds) { - errorMessage = t('step_edit_form.field.flow_rate.error_out_of_bounds', { - min: displayMinFlowRate, - max: maxFlowRate, - }) - } - } - - const FlowRateInputField = ( - - ) - - const FlowRateModal = - pipetteDisplayName && - createPortal( - -

{DEFAULT_LABEL}

- -
- {t('step_edit_form.field.flow_rate.default_text', { - displayName: pipetteDisplayName, - })} -
- -
- {`${flowRateType} speed`} -
- - -
, - getMainPagePortalEl() - ) - - return ( - <> - {flowRateType === 'blowout' ? ( - - - {tooltipContent} - - ) : ( - - - - )} - - {showModal && FlowRateModal} - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx deleted file mode 100644 index f1420438aa9..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import type * as React from 'react' -import '@testing-library/jest-dom/vitest' -import { describe, it, vi, beforeEach, expect } from 'vitest' -import { fireEvent, screen } from '@testing-library/react' -import { fixtureP100096V2Specs } from '@opentrons/shared-data' -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { getPipetteEntities } from '../../../../../step-forms/selectors' -import { FlowRateField } from '../index' - -vi.mock('../../../../../step-forms/selectors') -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} -const mockMockId = 'mockId' -describe('FlowRateField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - disabled: false, - flowRateType: 'aspirate', - volume: 100, - value: null, - name: 'flowRate', - tiprack: 'tipRack:opentrons_flex_96_tiprack_1000ul', - updateValue: vi.fn(), - onFieldBlur: vi.fn(), - onFieldFocus: vi.fn(), - pipetteId: mockMockId, - } - vi.mocked(getPipetteEntities).mockReturnValue({ - [mockMockId]: { - name: 'p50_single_flex', - spec: { - liquids: fixtureP100096V2Specs.liquids, - displayName: 'mockPipDisplayName', - } as any, - id: mockMockId, - tiprackLabwareDef: [ - { - parameters: { - loadName: 'opentrons_flex_96_tiprack_1000ul', - tipLength: 1000, - }, - metadata: { displayName: 'mockDisplayName' }, - } as any, - ], - tiprackDefURI: ['mockDefURI1', 'mockDefURI2'], - }, - }) - }) - it('renders the flowRateInput and clicking on it opens the modal with all the text', () => { - render(props) - screen.getByText('Flow Rate') - fireEvent.click(screen.getByRole('textbox')) - screen.getByText( - 'The default mockPipDisplayName flow rate is optimal for handling aqueous liquids' - ) - screen.getByText('aspirate speed') - screen.getByText('160 μL/s (default)') - screen.getByText('Custom') - screen.getByText('between 0.1 and Infinity') - screen.getByText('Cancel') - screen.getByText('Done') - }) - it('renders the information for blowout field', () => { - props.flowRateType = 'blowout' - render(props) - expect(screen.queryByText('Flow Rate')).not.toBeInTheDocument() - fireEvent.click(screen.getByRole('textbox')) - screen.getByText( - 'The default mockPipDisplayName flow rate is optimal for handling aqueous liquids' - ) - screen.getByText('blowout speed') - screen.getByText('80 μL/s (default)') - screen.getByText('Custom') - screen.getByText('between 0.1 and Infinity') - screen.getByText('Cancel') - screen.getByText('Done') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx deleted file mode 100644 index 9f489d5bcf0..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { FlowRateInput } from './FlowRateInput' -import { useSelector } from 'react-redux' -import { selectors as stepFormSelectors } from '../../../../step-forms' -import { getMatchingTipLiquidSpecs } from '../../../../utils' -import type { FieldProps } from '../../types' -import type { FlowRateInputProps } from './FlowRateInput' - -interface FlowRateFieldProps extends FieldProps { - flowRateType: FlowRateInputProps['flowRateType'] - volume: unknown - tiprack: unknown - pipetteId?: string | null - className?: FlowRateInputProps['className'] - label?: FlowRateInputProps['label'] -} - -export function FlowRateField(props: FlowRateFieldProps): JSX.Element { - const { - pipetteId, - flowRateType, - value, - volume, - tiprack, - name, - ...passThruProps - } = props - const pipetteEntities = useSelector(stepFormSelectors.getPipetteEntities) - const pipette = pipetteId != null ? pipetteEntities[pipetteId] : null - const pipetteDisplayName = pipette ? pipette.spec.displayName : 'pipette' - const innerKey = `${name}:${String(value || 0)}` - const matchingTipLiquidSpecs = - pipette != null - ? getMatchingTipLiquidSpecs(pipette, volume as number, tiprack as string) - : null - - let defaultFlowRate - if (pipette) { - if (flowRateType === 'aspirate') { - defaultFlowRate = - matchingTipLiquidSpecs?.defaultAspirateFlowRate.default ?? 0 - } else if (flowRateType === 'dispense') { - defaultFlowRate = - matchingTipLiquidSpecs?.defaultDispenseFlowRate.default ?? 0 - } else if (flowRateType === 'blowout') { - defaultFlowRate = - matchingTipLiquidSpecs?.defaultBlowOutFlowRate.default ?? 0 - } - } - return ( - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/LabwareField.tsx b/protocol-designer/src/components/StepEditForm/fields/LabwareField.tsx deleted file mode 100644 index 7a0e1a06efe..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/LabwareField.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { useSelector } from 'react-redux' -import { - getDisposalOptions, - getLabwareOptions, -} from '../../../ui/labware/selectors' -import { StepFormDropdown } from './StepFormDropdownField' -import type { FieldProps } from '../types' - -export const LabwareField = (props: FieldProps): JSX.Element => { - const disposalOptions = useSelector(getDisposalOptions) - const options = useSelector(getLabwareOptions) - const allOptions = - props.name === 'dispense_labware' - ? [...options, ...disposalOptions] - : [...options] - - return -} diff --git a/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx deleted file mode 100644 index 1d38ad8d0a6..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import type * as React from 'react' -import { useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { - WASTE_CHUTE_CUTOUT, - getModuleDisplayName, -} from '@opentrons/shared-data' -import { - getAdditionalEquipmentEntities, - getLabwareEntities, - getModuleEntities, -} from '../../../../step-forms/selectors' -import { - getRobotStateAtActiveItem, - getUnoccupiedLabwareLocationOptions, -} from '../../../../top-selectors/labware-locations' -import { StepFormDropdown } from '../StepFormDropdownField' -import { getHasWasteChute } from '../../../labware' - -export function LabwareLocationField( - props: Omit, 'options'> & { - useGripper: boolean - } & { canSave: boolean } & { labware: string } -): JSX.Element { - const { labware, useGripper, value } = props - const { t } = useTranslation('form') - const additionalEquipmentEntities = useSelector( - getAdditionalEquipmentEntities - ) - const labwareEntities = useSelector(getLabwareEntities) - const robotState = useSelector(getRobotStateAtActiveItem) - const moduleEntities = useSelector(getModuleEntities) - const isLabwareOffDeck = - labware != null ? robotState?.labware[labware]?.slot === 'offDeck' : false - - let unoccupiedLabwareLocationsOptions = - useSelector(getUnoccupiedLabwareLocationOptions) ?? [] - - if (useGripper || isLabwareOffDeck) { - unoccupiedLabwareLocationsOptions = unoccupiedLabwareLocationsOptions.filter( - option => option.value !== 'offDeck' - ) - } - - if (!useGripper && getHasWasteChute(additionalEquipmentEntities)) { - unoccupiedLabwareLocationsOptions = unoccupiedLabwareLocationsOptions.filter( - option => option.value !== WASTE_CHUTE_CUTOUT - ) - } - - const location: string = value as string - - const bothFieldsSelected = labware != null && value != null - const labwareDisplayName = - labware != null ? labwareEntities[labware]?.def.metadata.displayName : '' - let locationString = `slot ${location}` - if (location != null) { - if (robotState?.modules[location] != null) { - const moduleSlot = robotState?.modules[location].slot ?? '' - locationString = `${getModuleDisplayName( - moduleEntities[location].model - )} in slot ${moduleSlot}` - } else if (robotState?.labware[location] != null) { - const adapterSlot = robotState?.labware[location].slot - locationString = - robotState?.modules[adapterSlot] != null - ? `${getModuleDisplayName( - moduleEntities[adapterSlot].model - )} in slot ${robotState?.modules[adapterSlot].slot}` - : `slot ${robotState?.labware[location].slot}` ?? '' - } - } - return ( - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx b/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx deleted file mode 100644 index 623227b6c9b..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/MixFields.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { CheckboxRowField, TextField } from './' -import styles from '../StepEditForm.module.css' -import type { FieldPropsByName } from '../types' - -export const MixFields = (props: { - propsForFields: FieldPropsByName - checkboxFieldName: string - volumeFieldName: string - timesFieldName: string -}): JSX.Element => { - const { t } = useTranslation(['form', 'application']) - const { - propsForFields, - checkboxFieldName, - volumeFieldName, - timesFieldName, - } = props - - return ( - - - - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/MoveLabwareField.tsx b/protocol-designer/src/components/StepEditForm/fields/MoveLabwareField.tsx deleted file mode 100644 index 137ce6de586..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/MoveLabwareField.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { useSelector } from 'react-redux' -import { getMoveLabwareOptions } from '../../../ui/labware/selectors' -import { StepFormDropdown } from './StepFormDropdownField' -import type { FieldProps } from '../types' - -export function MoveLabwareField(props: FieldProps): JSX.Element { - const options = useSelector(getMoveLabwareOptions) - return -} diff --git a/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx b/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx deleted file mode 100644 index 5710963c4b4..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/PathField/PathField.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import type * as React from 'react' -import { useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { - FormGroup, - LegacyTooltip, - useHoverTooltip, -} from '@opentrons/components' -import { selectors as stepFormSelectors } from '../../../../step-forms' -import SINGLE_IMAGE from '../../../../assets/images/path_single_transfers.svg' -import MULTI_DISPENSE_IMAGE from '../../../../assets/images/path_multi_dispense.svg' -import MULTI_ASPIRATE_IMAGE from '../../../../assets/images/path_multi_aspirate.svg' -import { getDisabledPathMap } from './getDisabledPathMap' -import styles from '../../StepEditForm.module.css' -import type { PathOption } from '../../../../form-types' -import type { FieldProps } from '../../types' -import type { DisabledPathMap, ValuesForPath } from './getDisabledPathMap' - -const PATH_ANIMATION_IMAGES = { - single: new URL('../../../../assets/images/path_single.gif', import.meta.url) - .href, - multiAspirate: new URL( - '../../../../assets/images/path_multiAspirate.gif', - import.meta.url - ).href, - multiDispense: new URL( - '../../../../assets/images/path_multiDispense.gif', - import.meta.url - ).href, -} - -const ALL_PATH_OPTIONS: Array<{ name: PathOption; image: string }> = [ - { - name: 'single', - image: SINGLE_IMAGE, - }, - { - name: 'multiAspirate', - image: MULTI_ASPIRATE_IMAGE, - }, - { - name: 'multiDispense', - image: MULTI_DISPENSE_IMAGE, - }, -] - -type PathFieldProps = FieldProps & ValuesForPath - -interface ButtonProps { - children?: React.ReactNode - disabled: boolean - id?: string - selected: boolean - subtitle: string - onClick: (e: React.MouseEvent) => unknown - path: PathOption -} - -const PathButton = (buttonProps: ButtonProps): JSX.Element => { - const { - children, - disabled, - onClick, - id, - path, - selected, - subtitle, - } = buttonProps - const [targetProps, tooltipProps] = useHoverTooltip() - const { t } = useTranslation('form') - const tooltip = ( - -
- {t(`step_edit_form.field.path.title.${path}`)} -
- -
{subtitle}
-
- ) - - const pathButtonData = `PathButton_${selected ? 'selected' : 'deselected'}_${ - disabled ? 'disabled' : 'enabled' - }` - - return ( - <> - {tooltip} -
  • - {children} -
  • - - ) -} - -const getSubtitle = ( - path: PathOption, - disabledPathMap: DisabledPathMap -): string => { - const reasonForDisabled = disabledPathMap && disabledPathMap[path] - return reasonForDisabled || '' -} - -export const PathField = (props: PathFieldProps): JSX.Element => { - const { - aspirate_airGap_checkbox, - aspirate_airGap_volume, - aspirate_wells, - changeTip, - dispense_wells, - pipette, - volume, - value, - updateValue, - tipRack, - } = props - const { t } = useTranslation('form') - const pipetteEntities = useSelector(stepFormSelectors.getPipetteEntities) - const disabledPathMap = getDisabledPathMap( - { - aspirate_airGap_checkbox, - aspirate_airGap_volume, - aspirate_wells, - changeTip, - dispense_wells, - pipette, - volume, - tipRack, - }, - pipetteEntities, - t - ) - return ( - -
      - {ALL_PATH_OPTIONS.map(option => ( - { - updateValue(option.name) - }} - > - - - ))} -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/PathField/getDisabledPathMap.ts b/protocol-designer/src/components/StepEditForm/fields/PathField/getDisabledPathMap.ts deleted file mode 100644 index cce8162be10..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/PathField/getDisabledPathMap.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { getWellRatio } from '../../../../steplist/utils' -import { getPipetteCapacity } from '../../../../pipettes/pipetteData' -import { - volumeInCapacityForMultiDispense, - volumeInCapacityForMultiAspirate, -} from '../../../../steplist/formLevel/handleFormChange/utils' -import type { - ChangeTipOptions, - PipetteEntities, -} from '@opentrons/step-generation' -import type { PathOption } from '../../../../form-types' -export type DisabledPathMap = Partial> | null -export interface ValuesForPath { - aspirate_airGap_checkbox?: boolean | null - aspirate_airGap_volume?: string | null - aspirate_wells?: string[] | null - changeTip: ChangeTipOptions - dispense_wells?: string[] | null - pipette?: string | null - volume?: string | null - tipRack?: string | null -} -export function getDisabledPathMap( - values: ValuesForPath, - pipetteEntities: PipetteEntities, - t: any -): DisabledPathMap { - const { - aspirate_airGap_checkbox, - aspirate_wells, - changeTip, - dispense_wells, - pipette, - tipRack, - } = values - if (!pipette) return null - const wellRatio = getWellRatio(aspirate_wells, dispense_wells) - let disabledPathMap: Partial> = {} - - // changeTip is lowest priority disable reasoning - if (changeTip === 'perDest') { - disabledPathMap = { - ...disabledPathMap, - multiDispense: t( - 'step_edit_form.field.path.subtitle.incompatible_with_per_dest' - ), - } - } else if (changeTip === 'perSource') { - disabledPathMap = { - ...disabledPathMap, - multiAspirate: t( - 'step_edit_form.field.path.subtitle.incompatible_with_per_source' - ), - } - } - - // transfer volume overwrites change tip disable reasoning - const pipetteEntity = pipetteEntities[pipette] - const pipetteCapacity = - pipetteEntity && getPipetteCapacity(pipetteEntity, tipRack) - const volume = Number(values.volume) - const airGapChecked = aspirate_airGap_checkbox - let airGapVolume = airGapChecked ? Number(values.aspirate_airGap_volume) : 0 - airGapVolume = Number.isFinite(airGapVolume) ? airGapVolume : 0 - const withinCapacityForMultiDispense = volumeInCapacityForMultiDispense({ - volume, - pipetteCapacity, - airGapVolume, - }) - const withinCapacityForMultiAspirate = volumeInCapacityForMultiAspirate({ - volume, - pipetteCapacity, - airGapVolume, - }) - - if (!withinCapacityForMultiDispense) { - disabledPathMap = { - ...disabledPathMap, - multiDispense: t('step_edit_form.field.path.subtitle.volume_too_high'), - } - } - - if (!withinCapacityForMultiAspirate) { - disabledPathMap = { - ...disabledPathMap, - multiAspirate: t('step_edit_form.field.path.subtitle.volume_too_high'), - } - } - - // wellRatio overwrites all other disable reasoning - if (wellRatio === '1:many') { - disabledPathMap = { - ...disabledPathMap, - multiAspirate: t('step_edit_form.field.path.subtitle.only_many_to_1'), - } - } else if (wellRatio === 'many:1') { - disabledPathMap = { - ...disabledPathMap, - multiDispense: t('step_edit_form.field.path.subtitle.only_1_to_many'), - } - } else { - disabledPathMap = { - ...disabledPathMap, - multiAspirate: t('step_edit_form.field.path.subtitle.only_many_to_1'), - multiDispense: t('step_edit_form.field.path.subtitle.only_1_to_many'), - } - } - return disabledPathMap -} diff --git a/protocol-designer/src/components/StepEditForm/fields/PickUpTipField/_tests__/PickUpTipField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/PickUpTipField/_tests__/PickUpTipField.test.tsx deleted file mode 100644 index eba32213728..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/PickUpTipField/_tests__/PickUpTipField.test.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import type * as React from 'react' -import { screen } from '@testing-library/react' -import { describe, it, vi, beforeEach, expect } from 'vitest' - -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { getAllTiprackOptions } from '../../../../../ui/labware/selectors' -import { PickUpTipField } from '../index' - -vi.mock('../../../../../ui/labware/selectors') -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} -const mockPickUpTip = 'pickUpTip_location' -const mockLabwareId = 'mockId' -describe('PickUpTipField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - name: mockPickUpTip, - value: '', - updateValue: vi.fn(), - onFieldBlur: vi.fn(), - onFieldFocus: vi.fn(), - disabled: false, - } - vi.mocked(getAllTiprackOptions).mockReturnValue([ - { name: 'mock tip', value: mockLabwareId }, - ]) - }) - it('renders the label and dropdown field with default pick up tip selected as default', () => { - render(props) - screen.getByText('pick up tip') - screen.getByRole('combobox', { name: '' }) - screen.getByRole('option', { name: 'Default - get next tip' }) - screen.getByRole('option', { name: 'mock tip' }) - }) - it('renders dropdown as disabled', () => { - props.disabled = true - render(props) - expect(screen.getByRole('combobox', { name: '' })).toBeDisabled() - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/PickUpTipField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/PickUpTipField/index.tsx deleted file mode 100644 index f9b89679ac0..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/PickUpTipField/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { DropdownField, FormGroup } from '@opentrons/components' -import { getAllTiprackOptions } from '../../../../ui/labware/selectors' -import type { DropdownOption } from '@opentrons/components' -import type { StepFormDropdown } from '../StepFormDropdownField' - -import styles from '../../StepEditForm.module.css' - -export function PickUpTipField( - props: Omit, 'options'> & {} -): JSX.Element { - const { - value: dropdownItem, - name, - onFieldBlur, - onFieldFocus, - updateValue, - disabled, - } = props - const { t } = useTranslation('form') - const tiprackOptions = useSelector(getAllTiprackOptions) - const defaultOption: DropdownOption = { - name: 'Default - get next tip', - value: '', - } - - return ( - - ) => { - updateValue(e.currentTarget.value) - }} - /> - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/PipetteField.tsx b/protocol-designer/src/components/StepEditForm/fields/PipetteField.tsx deleted file mode 100644 index 10b569a5f23..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/PipetteField.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { FormGroup, DropdownField } from '@opentrons/components' -import { selectors as stepFormSelectors } from '../../../step-forms' -import styles from '../StepEditForm.module.css' -import type { FieldProps } from '../types' - -export const PipetteField = (props: FieldProps): JSX.Element => { - const { onFieldBlur, onFieldFocus, updateValue, value } = props - const pipetteOptions = useSelector( - stepFormSelectors.getEquippedPipetteOptions - ) - - const { t } = useTranslation('form') - return ( - - ) => { - updateValue(e.currentTarget.value) - }} - /> - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx b/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx deleted file mode 100644 index be535bd0283..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/ProfileItemRows.tsx +++ /dev/null @@ -1,364 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' -import cx from 'classnames' -import { - Icon, - LegacyInputField, - OutlineButton, - LegacyTooltip, - useConditionalConfirm, - useHoverTooltip, - TOOLTIP_TOP, - TOOLTIP_TOP_END, -} from '@opentrons/components' -import * as steplistActions from '../../../steplist/actions' -import { PROFILE_CYCLE } from '../../../form-types' -import { - getProfileFieldErrors, - maskProfileField, -} from '../../../steplist/fieldLevel' -import { - ConfirmDeleteModal, - DELETE_PROFILE_CYCLE, -} from '../../modals/ConfirmDeleteModal' -import { getDynamicFieldFocusHandlerId } from '../utils' -import styles from '../StepEditForm.module.css' - -import type { - ProfileStepItem, - ProfileItem, - ProfileCycleItem, -} from '../../../form-types' -import type { FocusHandlers } from '../types' - -export const showProfileFieldErrors = ({ - fieldId, - focusedField, - dirtyFields, -}: { - fieldId: string - focusedField?: string | null - dirtyFields: string[] -}): boolean => - !(fieldId === focusedField) && dirtyFields && dirtyFields.includes(fieldId) - -interface ProfileCycleRowProps { - cycleItem: ProfileCycleItem - focusHandlers: FocusHandlers - stepOffset: number -} -export const ProfileCycleRow = (props: ProfileCycleRowProps): JSX.Element => { - const { cycleItem, focusHandlers, stepOffset } = props - const dispatch = useDispatch() - const { t } = useTranslation(['tooltip', 'application']) - const addStepToCycle = (): void => { - dispatch(steplistActions.addProfileStep({ cycleId: cycleItem.id })) - } - - // TODO IMMEDIATELY make conditional - const deleteProfileCycle = (): steplistActions.DeleteProfileCycleAction => - dispatch(steplistActions.deleteProfileCycle({ id: cycleItem.id })) - - const [ - addStepToCycleTargetProps, - addStepToCycleTooltipProps, - ] = useHoverTooltip({ - placement: TOOLTIP_TOP_END, - }) - const { - confirm: confirmDeleteCycle, - showConfirmation: showConfirmDeleteCycle, - cancel: cancelConfirmDeleteCycle, - } = useConditionalConfirm(deleteProfileCycle, true) - - const [deleteCycleTargetProps, deleteCycleTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - }) - - return ( - <> - {showConfirmDeleteCycle && ( - - )} - -
    -
    - {cycleItem.steps.length > 0 && ( -
    -
    - {cycleItem.steps.map((stepItem, index) => { - return ( - - ) - })} -
    - - - dispatch( - steplistActions.editProfileCycle({ - id: cycleItem.id, - fields: { [name]: value }, - }) - ) - } - /> -
    - )} - - {t('profile.add_step_to_cycle')} - -
    - + Step -
    -
    -
    - - {t('profile.delete_cycle')} - - -
    -
    - - ) -} - -export interface ProfileItemRowsProps { - focusHandlers: FocusHandlers - orderedProfileItems: string[] - profileItemsById: { - [key: string]: ProfileItem - } -} - -export const ProfileItemRows = (props: ProfileItemRowsProps): JSX.Element => { - const { orderedProfileItems, profileItemsById } = props - const { t } = useTranslation(['tooltip', 'form']) - const dispatch = useDispatch() - const addProfileCycle = (): void => { - dispatch(steplistActions.addProfileCycle(null)) - } - const addProfileStep = (): void => { - dispatch(steplistActions.addProfileStep(null)) - } - - const [addCycleTargetProps, addCycleTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - }) - const [addStepTargetProps, addStepTooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - }) - - let counter = 0 - - const rows = orderedProfileItems.map((itemId, index) => { - const itemFields: ProfileItem = profileItemsById[itemId] - - if (itemFields.type === PROFILE_CYCLE) { - const cycleRow = ( - - ) - - counter += itemFields.steps.length - - return cycleRow - } - counter++ - return ( - - ) - }) - - return ( - <> - {rows.length > 0 && ( -
    -
    Name:
    -
    Temperature:
    -
    Time:
    -
    - )} - {rows} - - {t('profile.add_step')} - - - {t('profile.add_cycle')} - -
    - - {t('form:step_edit_form.field.thermocyclerProfile.add_step_button')} - - - {t('form:step_edit_form.field.thermocyclerProfile.add_cycle_button')} - -
    - - ) -} - -interface ProfileFieldProps { - name: string - focusHandlers: FocusHandlers - profileItem: ProfileItem - units?: React.ReactNode - className?: string - updateValue: (name: string, value: unknown) => unknown -} -const ProfileField = (props: ProfileFieldProps): JSX.Element => { - const { - focusHandlers, - name, - profileItem, - units, - className, - updateValue, - } = props - const value = profileItem[name as keyof ProfileItem] // this is not very safe but I don't know how else to tell TS that name should be keyof ProfileItem without being a discriminated union - const fieldId = getDynamicFieldFocusHandlerId({ - id: profileItem.id, - name, - }) - - const onChange = (e: React.ChangeEvent): void => { - const value = e.currentTarget.value - const maskedValue = maskProfileField(name, value) - updateValue(name, maskedValue) - } - - const showErrors = showProfileFieldErrors({ - fieldId, - focusedField: focusHandlers.focusedField, - dirtyFields: focusHandlers.dirtyFields, - }) - const errors = getProfileFieldErrors(name, value) - const errorToShow = showErrors && errors.length > 0 ? errors.join(', ') : null - - const onBlur = (): void => { - focusHandlers.blur(fieldId) - } - const onFocus = (): void => { - focusHandlers.focus(fieldId) - } - return ( -
    - -
    - ) -} - -interface ProfileStepRowProps { - focusHandlers: FocusHandlers - profileStepItem: ProfileStepItem - stepNumber: number - isCycle?: boolean | null -} - -const ProfileStepRow = (props: ProfileStepRowProps): JSX.Element => { - const { focusHandlers, profileStepItem, isCycle } = props - const { t } = useTranslation(['application', 'tooltip']) - const dispatch = useDispatch() - - const updateStepFieldValue = (name: string, value: unknown): void => { - dispatch( - steplistActions.editProfileStep({ - id: profileStepItem.id, - fields: { [name]: value }, - }) - ) - } - - const deleteProfileStep = (): void => { - dispatch(steplistActions.deleteProfileStep({ id: profileStepItem.id })) - } - const names = [ - 'title', - 'temperature', - 'durationMinutes', - 'durationSeconds', - ] as const - const units: Record = { - title: null, - temperature: t('units.degrees'), - durationMinutes: t('units.minutes'), - durationSeconds: t('units.seconds'), - } - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - }) - const fields = names.map(name => { - const className = name === 'title' ? styles.title : styles.profile_field - return ( - - ) - }) - return ( -
    -
    - {props.stepNumber}. - {fields} -
    -
    - - {t('tooltip:profile.delete_step')} - - -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx b/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx deleted file mode 100644 index 05048abf216..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/RadioGroupField.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type * as React from 'react' -import { RadioGroup } from '@opentrons/components' -import type { StepFieldName } from '../../../steplist/fieldLevel' -import type { FieldProps } from '../types' - -interface RadioGroupFieldProps extends FieldProps { - name: StepFieldName - options: React.ComponentProps['options'] - className?: string -} - -export const RadioGroupField = (props: RadioGroupFieldProps): JSX.Element => { - const { - className, - errorToShow, - isIndeterminate, // TODO(IL, 2021-02-05): if we need indeterminate RadioGroupField, we'll want to pass this down into RadioGroup - name, - onFieldBlur, - onFieldFocus, - tooltipContent, - updateValue, - value, - ...radioGroupProps - } = props - return ( - ) => { - updateValue(e.currentTarget.value) - // NOTE(IL, 2020-01-29): to allow the intented pristinity UX, this component "blurs" onchange - if (onFieldBlur) { - onFieldBlur() - } - }} - /> - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx b/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx deleted file mode 100644 index 0237b6d2ebc..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/StepFormDropdownField.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import type * as React from 'react' -import { DropdownField } from '@opentrons/components' -import cx from 'classnames' -import styles from '../StepEditForm.module.css' -import type { Options } from '@opentrons/components' -import type { StepFieldName } from '../../../steplist/fieldLevel' -import type { FieldProps } from '../types' - -export interface StepFormDropdownProps extends FieldProps { - options: Options - name: StepFieldName - className?: string -} - -export const StepFormDropdown = (props: StepFormDropdownProps): JSX.Element => { - const { - options, - name, - className, - onFieldBlur, - onFieldFocus, - value, - updateValue, - errorToShow, - } = props - // TODO: BC abstract e.currentTarget.value inside onChange with fn like onChangeValue of type (value: unknown) => {} - // blank out the dropdown if labware id does not exist - const availableOptionIds = options.map(opt => opt.value) - // @ts-expect-error (ce, 2021-06-21) unknown not assignable to string - const fieldValue = availableOptionIds.includes(value) ? String(value) : null - - return ( - ) => { - updateValue(e.currentTarget.value) - }} - /> - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TextField.tsx b/protocol-designer/src/components/StepEditForm/fields/TextField.tsx deleted file mode 100644 index 8db378b24c5..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TextField.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { LegacyInputField } from '@opentrons/components' -import type { FieldProps } from '../types' - -type TextFieldProps = FieldProps & { - className?: string - caption?: string | null - units?: string | null -} - -export const TextField = (props: TextFieldProps): JSX.Element => { - const { - errorToShow, - onFieldBlur, - onFieldFocus, - tooltipContent, - updateValue, - value, - ...otherProps - } = props - - return ( - { - updateValue(e.currentTarget.value) - }} - value={value ? String(value) : null} - /> - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionAllViz.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionAllViz.tsx deleted file mode 100644 index 73604a085f6..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionAllViz.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import round from 'lodash/round' - -import PIPETTE_TIP_IMAGE from '../../../../assets/images/pipette_tip.svg' -import WELL_CROSS_SECTION_IMAGE from '../../../../assets/images/well_cross_section.svg' - -import styles from './TipPositionInput.module.css' - -const WELL_HEIGHT_PIXELS = 145 -const WELL_WIDTH_PIXELS = 100 -const PIXEL_DECIMALS = 2 - -interface TipPositionAllVizProps { - mmFromBottom: number - xPosition: number - wellDepthMm: number - xWidthMm: number -} - -export function TipPositionAllViz(props: TipPositionAllVizProps): JSX.Element { - const { mmFromBottom, xPosition, wellDepthMm, xWidthMm } = props - const fractionOfWellHeight = mmFromBottom / wellDepthMm - const pixelsFromBottom = - Number(fractionOfWellHeight) * WELL_HEIGHT_PIXELS - WELL_HEIGHT_PIXELS - const roundedPixelsFromBottom = round(pixelsFromBottom, PIXEL_DECIMALS) - const bottomPx = wellDepthMm - ? roundedPixelsFromBottom - : mmFromBottom - WELL_HEIGHT_PIXELS - - const xPx = (WELL_WIDTH_PIXELS / xWidthMm) * xPosition - const roundedXPx = round(xPx, PIXEL_DECIMALS) - return ( -
    - - - {props.wellDepthMm !== null && ( - {props.wellDepthMm}mm - )} - -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionInput.module.css b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionInput.module.css deleted file mode 100644 index ef185908342..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionInput.module.css +++ /dev/null @@ -1,77 +0,0 @@ -@import '@opentrons/components/styles'; - -.modal_header { - display: flex; - flex-direction: column; - justify-content: space-evenly; - height: 4rem; -} - -.main_row { - display: flex; - flex-direction: row; - justify-content: space-between; - margin: 1rem 0 2rem; -} - -.position_from_bottom_input { - padding-left: 1.5rem; - width: 6rem; - white-space: nowrap; -} - -.adjustment_buttons { - display: flex; - flex-direction: column; -} - -.adjustment_button { - height: 34px; - width: 34px; - cursor: pointer; - margin-top: 0.5em; -} - -.viz_group { - display: flex; - align-items: flex-end; -} - -.viz_wrapper { - position: relative; - width: 200px; - height: 200px; - display: flex; - flex-direction: column; - justify-content: flex-end; - overflow: hidden; -} - -.pipette_tip_image { - position: relative; -} - -.well_height_label { - font-size: var(--fs-caption); - font-weight: var(--fw-semibold); - color: var(--c-blue); - position: absolute; - bottom: 45px; - align-self: flex-end; -} - -.well_cross_section_image { - position: relative; - left: 9px; -} - -.tip_position_icon { - height: 1.5rem; - width: 1.5rem; - cursor: pointer; - color: #24313f; /* black80 */ -} - -.tip_position_icon:hover { - background-color: #e6e6e6; -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionModal.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionModal.tsx deleted file mode 100644 index ddbdd527c02..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionModal.tsx +++ /dev/null @@ -1,383 +0,0 @@ -import * as React from 'react' -import { createPortal } from 'react-dom' -import cx from 'classnames' -import { useTranslation } from 'react-i18next' -import { - AlertModal, - DIRECTION_COLUMN, - Flex, - LegacyInputField, - RadioGroup, - SPACING, - LegacyStyledText, - LegacyTooltip, - useHoverTooltip, -} from '@opentrons/components' -import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' -import { getIsTouchTipField } from '../../../../form-types' -import { PDAlert } from '../../../alerts/PDAlert' -import { TOO_MANY_DECIMALS, PERCENT_RANGE_TO_SHOW_WARNING } from './constants' -import { TipPositionAllViz } from './TipPositionAllViz' -import * as utils from './utils' - -import styles from './TipPositionInput.module.css' -import modalStyles from '../../../modals/modal.module.css' - -import type { StepFieldName } from '../../../../form-types' - -type Offset = 'x' | 'y' | 'z' -interface PositionSpec { - name: StepFieldName - value: number | null - updateValue: (val?: number | null) => void -} -export type PositionSpecs = Record - -interface TipPositionModalProps { - closeModal: () => void - specs: PositionSpecs - wellDepthMm: number - wellXWidthMm: number - wellYWidthMm: number - isIndeterminate?: boolean -} - -export const TipPositionModal = ( - props: TipPositionModalProps -): JSX.Element | null => { - const { - isIndeterminate, - specs, - wellDepthMm, - wellXWidthMm, - wellYWidthMm, - closeModal, - } = props - const [targetProps, tooltipProps] = useHoverTooltip() - const zSpec = specs.z - const ySpec = specs.y - const xSpec = specs.x - - const { t } = useTranslation(['modal', 'button', 'tooltip']) - - if (zSpec == null || xSpec == null || ySpec == null) { - console.error( - 'expected to find specs for one of the positions but could not' - ) - } - - const defaultMmFromBottom = utils.getDefaultMmFromBottom({ - name: zSpec.name, - wellDepthMm, - }) - - const [zValue, setZValue] = React.useState( - zSpec?.value == null ? String(defaultMmFromBottom) : String(zSpec?.value) - ) - const [yValue, setYValue] = React.useState( - ySpec?.value == null ? null : String(ySpec?.value) - ) - const [xValue, setXValue] = React.useState( - xSpec?.value == null ? null : String(xSpec?.value) - ) - - const [isDefault, setIsDefault] = React.useState( - !isIndeterminate && - zSpec.value === null && - ySpec.value === 0 && - xSpec.value === 0 - ) - // in this modal, pristinity hides the OUT_OF_BOUNDS error only. - const [isPristine, setPristine] = React.useState(true) - - const getMinMaxMmFromBottom = (): { - maxMmFromBottom: number - minMmFromBottom: number - } => { - if (getIsTouchTipField(zSpec?.name ?? '')) { - return { - maxMmFromBottom: utils.roundValue(wellDepthMm, 'up'), - minMmFromBottom: utils.roundValue(wellDepthMm / 2, 'up'), - } - } - return { - maxMmFromBottom: utils.roundValue(wellDepthMm * 2, 'up'), - minMmFromBottom: 0, - } - } - - const { maxMmFromBottom, minMmFromBottom } = getMinMaxMmFromBottom() - const { minValue: yMinWidth, maxValue: yMaxWidth } = utils.getMinMaxWidth( - wellYWidthMm - ) - const { minValue: xMinWidth, maxValue: xMaxWidth } = utils.getMinMaxWidth( - wellXWidthMm - ) - - const createErrors = ( - value: string | null, - min: number, - max: number - ): utils.Error[] => { - return utils.getErrors({ isDefault, minMm: min, maxMm: max, value }) - } - const zErrors = createErrors(zValue, minMmFromBottom, maxMmFromBottom) - const xErrors = createErrors(xValue, xMinWidth, xMaxWidth) - const yErrors = createErrors(yValue, yMinWidth, yMaxWidth) - - const hasErrors = - zErrors.length > 0 || xErrors.length > 0 || yErrors.length > 0 - const hasVisibleErrors = isPristine - ? zErrors.includes(TOO_MANY_DECIMALS) || - xErrors.includes(TOO_MANY_DECIMALS) || - yErrors.includes(TOO_MANY_DECIMALS) - : hasErrors - - const createErrorText = ( - errors: utils.Error[], - min: number, - max: number - ): string | null => { - return utils.getErrorText({ errors, minMm: min, maxMm: max, isPristine, t }) - } - - const roundedXMin = utils.roundValue(xMinWidth, 'up') - const roundedYMin = utils.roundValue(yMinWidth, 'up') - const roundedXMax = utils.roundValue(xMaxWidth, 'down') - const roundedYMax = utils.roundValue(yMaxWidth, 'down') - - const zErrorText = createErrorText(zErrors, minMmFromBottom, maxMmFromBottom) - const xErrorText = createErrorText(xErrors, roundedXMin, roundedXMax) - const yErrorText = createErrorText(yErrors, roundedYMin, roundedYMax) - - const handleDone = (): void => { - setPristine(false) - if (!hasErrors) { - if (isDefault) { - zSpec?.updateValue(null) - xSpec?.updateValue(0) - ySpec?.updateValue(0) - } else { - zSpec?.updateValue(zValue === null ? null : Number(zValue)) - xSpec?.updateValue(xValue === null ? null : Number(xValue)) - ySpec?.updateValue(yValue === null ? null : Number(yValue)) - } - closeModal() - } - } - - const handleCancel = (): void => { - closeModal() - } - - const handleZChange = (newValueRaw: string | number): void => { - // if string, strip non-number characters from string and cast to number - const newValue = - typeof newValueRaw === 'string' - ? newValueRaw.replace(/[^.0-9]/, '') - : String(newValueRaw) - - if (newValue === '.') { - setZValue('0.') - } else { - setZValue(Number(newValue) >= 0 ? newValue : '0') - } - } - - const handleZInputFieldChange = ( - e: React.ChangeEvent - ): void => { - handleZChange(e.currentTarget.value) - } - - const handleXChange = (newValueRaw: string | number): void => { - // if string, strip non-number characters from string and cast to number - const newValue = - typeof newValueRaw === 'string' - ? newValueRaw.replace(/[^-.0-9]/g, '') - : String(newValueRaw) - - if (newValue === '.') { - setXValue('0.') - } else { - setXValue(newValue) - } - } - - const handleXInputFieldChange = ( - e: React.ChangeEvent - ): void => { - handleXChange(e.currentTarget.value) - } - - const handleYChange = (newValueRaw: string | number): void => { - // if string, strip non-number characters from string and cast to number - const newValue = - typeof newValueRaw === 'string' - ? newValueRaw.replace(/[^-.0-9]/g, '') - : String(newValueRaw) - - if (newValue === '.') { - setYValue('0.') - } else { - setYValue(newValue) - } - } - - const handleYInputFieldChange = ( - e: React.ChangeEvent - ): void => { - handleYChange(e.currentTarget.value) - } - const isXValueNearEdge = - xValue != null && - (parseInt(xValue) > PERCENT_RANGE_TO_SHOW_WARNING * xMaxWidth || - parseInt(xValue) < PERCENT_RANGE_TO_SHOW_WARNING * xMinWidth) - const isYValueNearEdge = - yValue != null && - (parseInt(yValue) > PERCENT_RANGE_TO_SHOW_WARNING * yMaxWidth || - parseInt(yValue) < PERCENT_RANGE_TO_SHOW_WARNING * yMinWidth) - const isZValueAtBottom = zValue != null && zValue === '0' - - const TipPositionInputField = !isDefault ? ( - - - - {t('tip_position.field_titles.x_position')} - - - - - - {t('tip_position.field_titles.y_position')} - - - - {t('tooltip:y_position_value')} - - - - - {t('tip_position.field_titles.z_position')} - - - - - ) : null - - // Mix Form's asp/disp tip position field has different default value text - const isMixAspDispField = zSpec?.name === 'mix_mmFromBottom' - - return createPortal( - -
    -

    {t('tip_position.title')}

    -

    {t(`tip_position.body.${zSpec?.name}`)}

    -
    - - {(isXValueNearEdge || isYValueNearEdge || isZValueAtBottom) && - !isDefault ? ( - - - - ) : null} - -
    - - - ) => { - setIsDefault(e.currentTarget.value === 'default') - }} - options={[ - { - name: isMixAspDispField - ? t('tip_position.radio_button.mix') - : t('tip_position.radio_button.default', { - defaultMmFromBottom, - }), - value: 'default', - }, - { - name: t('tip_position.radio_button.custom'), - value: 'custom', - }, - ]} - name="TipPositionOptions" - /> - {TipPositionInputField} - - -
    - -
    -
    -
    -
    , - getMainPagePortalEl() - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionZAxisViz.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionZAxisViz.tsx deleted file mode 100644 index c86364a11c6..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/TipPositionZAxisViz.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import round from 'lodash/round' - -import PIPETTE_TIP_IMAGE from '../../../../assets/images/pipette_tip.svg' -import WELL_CROSS_SECTION_IMAGE from '../../../../assets/images/well_cross_section.svg' - -import styles from './TipPositionInput.module.css' - -const WELL_HEIGHT_PIXELS = 145 -const TIP_X_OFFSET_PIXELS = 22 -const PIXEL_DECIMALS = 2 -interface TipPositionZAxisVizProps { - wellDepthMm: number - mmFromBottom?: number - mmFromTop?: number -} - -export function TipPositionZAxisViz( - props: TipPositionZAxisVizProps -): JSX.Element { - const { mmFromBottom, mmFromTop, wellDepthMm } = props - const positionInTube = mmFromBottom ?? mmFromTop ?? 0 - const fractionOfWellHeight = positionInTube / wellDepthMm - const pixelsFromBottom = - fractionOfWellHeight * WELL_HEIGHT_PIXELS - - (mmFromBottom != null ? WELL_HEIGHT_PIXELS : 0) - const bottomPx = round(pixelsFromBottom, PIXEL_DECIMALS) - - return ( -
    - - {props.wellDepthMm !== null && ( - {props.wellDepthMm}mm - )} - -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/ZTipPositionModal.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/ZTipPositionModal.tsx deleted file mode 100644 index 45b16cb228a..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/ZTipPositionModal.tsx +++ /dev/null @@ -1,292 +0,0 @@ -import * as React from 'react' -import { createPortal } from 'react-dom' -import cx from 'classnames' -import { useTranslation } from 'react-i18next' -import { - AlertModal, - Flex, - HandleKeypress, - Icon, - LegacyInputField, - OutlineButton, - RadioGroup, -} from '@opentrons/components' -import { DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP } from '../../../../constants' -import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' -import { getIsTouchTipField } from '../../../../form-types' -import { TipPositionZAxisViz } from './TipPositionZAxisViz' -import * as utils from './utils' -import { LARGE_STEP_MM, SMALL_STEP_MM, TOO_MANY_DECIMALS } from './constants' - -import type { StepFieldName } from '../../../../form-types' - -import modalStyles from '../../../modals/modal.module.css' -import styles from './TipPositionInput.module.css' - -interface ZTipPositionModalProps { - closeModal: () => void - zValue: number | null - name: StepFieldName - updateValue: (val?: number | null) => unknown - wellDepthMm: number - isIndeterminate?: boolean -} - -export function ZTipPositionModal(props: ZTipPositionModalProps): JSX.Element { - const { - isIndeterminate, - name, - wellDepthMm, - zValue, - closeModal, - updateValue, - } = props - const { t } = useTranslation(['modal', 'button']) - - const isBlowout = name === 'blowout_z_offset' - const defaultMm = isBlowout - ? 0 - : utils.getDefaultMmFromBottom({ - name, - wellDepthMm, - }) - - const [value, setValue] = React.useState( - zValue !== null ? String(zValue) : null - ) - const isSetDefault = isBlowout ? zValue === 0 : zValue === null - const [isDefault, setIsDefault] = React.useState( - !isIndeterminate && isSetDefault - ) - // in this modal, pristinity hides the OUT_OF_BOUNDS error only. - const [isPristine, setPristine] = React.useState(true) - - const getMinMaxMmFromBottom = (): { - maxMmFromBottom: number - minMmFromBottom: number - } => { - if (getIsTouchTipField(name)) { - return { - maxMmFromBottom: utils.roundValue(wellDepthMm, 'up'), - minMmFromBottom: utils.roundValue(wellDepthMm / 2, 'up'), - } - } - return { - maxMmFromBottom: utils.roundValue(wellDepthMm * 2, 'up'), - minMmFromBottom: 0, - } - } - const { maxMmFromBottom, minMmFromBottom } = getMinMaxMmFromBottom() - - // For blowout from the top of the well - const minFromTop = DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP - const maxFromTop = -wellDepthMm - - const minMm = isBlowout ? maxFromTop : minMmFromBottom - const maxMm = isBlowout ? minFromTop : maxMmFromBottom - - const errors = utils.getErrors({ - isDefault, - minMm, - maxMm, - value, - }) - const hasErrors = errors.length > 0 - const hasVisibleErrors = isPristine - ? errors.includes(TOO_MANY_DECIMALS) - : hasErrors - - const errorText = utils.getErrorText({ - errors, - minMm, - maxMm, - isPristine, - t, - }) - - const handleDone = (): void => { - setPristine(false) - - if (!hasErrors) { - if (isDefault) { - updateValue(null) - } else { - updateValue(value === null ? null : Number(value)) - } - closeModal() - } - } - - const handleCancel = (): void => { - closeModal() - } - - const handleChange = (newValueRaw: string | number): void => { - // if string, strip non-number characters from string and cast to number - const newValue = - typeof newValueRaw === 'string' - ? newValueRaw.replace(/[^-.0-9]/, '') - : String(newValueRaw) - - if (newValue === '.') { - setValue('0.') - } else if (newValue === '-0') { - setValue('0') - } else { - isBlowout - ? setValue(newValue) - : setValue(Number(newValue) >= 0 ? newValue : '0') - } - } - - const handleInputFieldChange = ( - e: React.ChangeEvent - ): void => { - handleChange(e.currentTarget.value) - } - - const handleIncrementDecrement = (delta: number): void => { - const prevValue = value === null ? defaultMm : Number(value) - setIsDefault(false) - handleChange(utils.roundValue(prevValue + delta, 'up')) - } - - const makeHandleIncrement = (step: number): (() => void) => () => { - handleIncrementDecrement(step) - } - - const makeHandleDecrement = (step: number): (() => void) => () => { - handleIncrementDecrement(step * -1) - } - - const TipPositionInputField = !isDefault && ( - - ) - - return createPortal( - - -
    -

    {t('tip_position.title')}

    -

    {t(`tip_position.body.${name}`)}

    -
    -
    - -
    - ) => { - setIsDefault(e.currentTarget.value === 'default') - }} - options={[ - { - name: isBlowout - ? t('tip_position.radio_button.blowout') - : t('tip_position.radio_button.default', { - defaultMm, - }), - value: 'default', - }, - { - name: t('tip_position.radio_button.custom'), - value: 'custom', - }, - ]} - name="TipPositionOptions" - /> - {TipPositionInputField} -
    - -
    - {!isDefault ? ( -
    - - - - - - -
    - ) : null} - -
    -
    -
    -
    -
    , - getMainPagePortalEl() - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionField.test.tsx deleted file mode 100644 index 96896fa7baa..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionField.test.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import type * as React from 'react' -import { fireEvent, screen } from '@testing-library/react' -import { describe, it, expect, vi, beforeEach } from 'vitest' -import { fixture96Plate } from '@opentrons/shared-data' -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { getLabwareEntities } from '../../../../../step-forms/selectors' -import { ZTipPositionModal } from '../ZTipPositionModal' -import { TipPositionModal } from '../TipPositionModal' -import { TipPositionField } from '../index' -import type { LabwareDefinition2 } from '@opentrons/shared-data' - -vi.mock('../../../../../step-forms/selectors') -vi.mock('../ZTipPositionModal') -vi.mock('../TipPositionModal') -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} -const mockDelay = 'aspirate_delay_mmFromBottom' -const mockAspirate = 'aspirate_mmFromBottom' -const mockLabwareId = 'mockId' -describe('TipPositionField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - zField: mockDelay, - labwareId: mockLabwareId, - propsForFields: { - [mockDelay]: { - name: mockDelay, - value: null, - updateValue: vi.fn(), - tooltipContent: 'mock content', - isIndeterminate: false, - disabled: false, - } as any, - }, - } - vi.mocked(TipPositionModal).mockReturnValue( -
    mock TipPositionModal
    - ) - vi.mocked(ZTipPositionModal).mockReturnValue( -
    mock ZTipPositionModal
    - ) - vi.mocked(getLabwareEntities).mockReturnValue({ - [mockLabwareId]: { - id: mockLabwareId, - labwareDefURI: 'mock uri', - def: fixture96Plate as LabwareDefinition2, - }, - }) - }) - it('renders the input field and header when x and y fields are not provided', () => { - render(props) - screen.getByText('mm') - fireEvent.click(screen.getByRole('textbox', { name: '' })) - expect(screen.getByRole('textbox', { name: '' })).not.toBeDisabled() - screen.getByText('mock ZTipPositionModal') - }) - it('renders the input field but it is disabled', () => { - props = { - ...props, - propsForFields: { - [mockDelay]: { - name: mockDelay, - value: null, - updateValue: vi.fn(), - tooltipContent: 'mock content', - isIndeterminate: false, - disabled: true, - } as any, - }, - } - render(props) - expect(screen.getByRole('textbox', { name: '' })).toBeDisabled() - }) - it('renders the icon when x,y, and z fields are provided', () => { - const mockX = 'aspirate_x_position' - const mockY = 'aspirate_y_position' - props = { - zField: mockAspirate, - xField: mockX, - yField: mockY, - labwareId: mockLabwareId, - propsForFields: { - [mockAspirate]: { - name: mockAspirate, - value: null, - updateValue: vi.fn(), - tooltipContent: 'mock content', - isIndeterminate: false, - disabled: false, - } as any, - [mockX]: { - name: mockX, - value: null, - updateValue: vi.fn(), - } as any, - [mockY]: { - name: mockY, - value: null, - updateValue: vi.fn(), - } as any, - }, - } - render(props) - fireEvent.click(screen.getByTestId('TipPositionIcon_aspirate_mmFromBottom')) - screen.getByText('mock TipPositionModal') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionModal.test.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionModal.test.tsx deleted file mode 100644 index 44443796a90..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/TipPositionModal.test.tsx +++ /dev/null @@ -1,140 +0,0 @@ -import type * as React from 'react' -import { fireEvent, screen } from '@testing-library/react' -import { describe, it, expect, vi, beforeEach } from 'vitest' -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { TipPositionModal } from '../TipPositionModal' -import { TipPositionAllViz } from '../TipPositionAllViz' - -vi.mock('../TipPositionAllViz') -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} - -const mockUpdateZSpec = vi.fn() -const mockUpdateXSpec = vi.fn() -const mockUpdateYSpec = vi.fn() - -describe('TipPositionModal', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - closeModal: vi.fn(), - wellDepthMm: 50, - wellXWidthMm: 10.3, - wellYWidthMm: 10.5, - isIndeterminate: false, - specs: { - z: { - name: 'aspirate_mmFromBottom', - value: null, - updateValue: mockUpdateZSpec, - }, - y: { - name: 'aspirate_y_position', - value: 0, - updateValue: mockUpdateXSpec, - }, - x: { - name: 'aspirate_x_position', - value: 0, - updateValue: mockUpdateYSpec, - }, - }, - } - vi.mocked(TipPositionAllViz).mockReturnValue(
    mock TipPositionViz
    ) - }) - it('renders the modal text and radio button text', () => { - render(props) - screen.getByText('Tip Positioning') - screen.getByText('Change where in the well the robot aspirates from.') - screen.getByRole('radio', { name: '1 mm from the bottom center (default)' }) - screen.getByRole('radio', { name: 'Custom' }) - fireEvent.click(screen.getByText('cancel')) - expect(props.closeModal).toHaveBeenCalled() - fireEvent.click(screen.getByText('done')) - expect(props.closeModal).toHaveBeenCalled() - expect(mockUpdateXSpec).toHaveBeenCalled() - expect(mockUpdateYSpec).toHaveBeenCalled() - expect(mockUpdateZSpec).toHaveBeenCalled() - }) - it('renders the alert if the x/y position values are too close to the max/min for x value', () => { - props.specs.x.value = 9.7 - render(props) - screen.getByText('warning') - screen.getByText( - 'Tip position is close to the edge of the well and may cause collisions.' - ) - }) - it('renders the alert if the x/y position values are too close to the max/min for y value', () => { - props.specs.y.value = -9.7 - render(props) - screen.getByText('warning') - screen.getByText( - 'Tip position is close to the edge of the well and may cause collisions.' - ) - }) - it('renders the custom options, captions, and visual', () => { - render(props) - fireEvent.click(screen.getByRole('radio', { name: 'Custom' })) - expect(screen.getAllByRole('textbox', { name: '' })).toHaveLength(3) - screen.getByText('X position') - screen.getByText('between -5.1 and 5.1') - screen.getByText('Y position') - screen.getByText('between -5.2 and 5.2') - screen.getByText('Z position') - screen.getByText('between 0 and 100') - screen.getByText('mock TipPositionViz') - }) - it('renders a custom input field and clicks on it, calling the mock updates', () => { - render(props) - fireEvent.click(screen.getByRole('radio', { name: 'Custom' })) - const xInputField = screen.getAllByRole('textbox', { name: '' })[0] - fireEvent.change(xInputField, { target: { value: 3 } }) - const yInputField = screen.getAllByRole('textbox', { name: '' })[1] - fireEvent.change(yInputField, { target: { value: -2 } }) - const zInputField = screen.getAllByRole('textbox', { name: '' })[2] - fireEvent.change(zInputField, { target: { value: 10 } }) - fireEvent.click(screen.getByText('done')) - expect(props.closeModal).toHaveBeenCalled() - expect(mockUpdateXSpec).toHaveBeenCalled() - expect(mockUpdateYSpec).toHaveBeenCalled() - expect(mockUpdateZSpec).toHaveBeenCalled() - }) - it('renders custom input fields and displays error texts', () => { - props = { - ...props, - specs: { - z: { - name: 'aspirate_mmFromBottom', - value: 101, - updateValue: mockUpdateZSpec, - }, - y: { - name: 'aspirate_y_position', - value: -500, - updateValue: mockUpdateXSpec, - }, - x: { - name: 'aspirate_x_position', - value: 10.7, - updateValue: mockUpdateYSpec, - }, - }, - } - render(props) - fireEvent.click(screen.getByText('done')) - // display out of bounds error - screen.getByText('accepted range is 0 to 100') - screen.getByText('accepted range is -5.2 to 5.2') - screen.getByText('accepted range is -5.1 to 5.1') - const xInputField = screen.getAllByRole('textbox', { name: '' })[0] - fireEvent.change(xInputField, { target: { value: 3.55555 } }) - fireEvent.click(screen.getByText('done')) - // display too many decimals error - screen.getByText('a max of 1 decimal place is allowed') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/ZTipPositionModal.test.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/ZTipPositionModal.test.tsx deleted file mode 100644 index 837739cdc02..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/__tests__/ZTipPositionModal.test.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import type * as React from 'react' -import { fireEvent, screen } from '@testing-library/react' -import { describe, it, expect, vi, beforeEach } from 'vitest' -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { ZTipPositionModal } from '../ZTipPositionModal' -import { TipPositionZAxisViz } from '../TipPositionZAxisViz' - -vi.mock('../TipPositionZAxisViz') -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} - -describe('ZTipPositionModal', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - closeModal: vi.fn(), - zValue: -2, - updateValue: vi.fn(), - wellDepthMm: 30, - name: 'blowout_z_offset', - } - vi.mocked(TipPositionZAxisViz).mockReturnValue( -
    mock TipPositionZAxisViz
    - ) - }) - it('renders the text and radio buttons', () => { - render(props) - screen.getByText('Tip Positioning') - screen.getByText('Change where in the well the robot performs the blowout.') - screen.getByRole('radio', { name: '0 mm from the top center (default)' }) - screen.getByRole('radio', { name: 'Custom' }) - fireEvent.click(screen.getByText('cancel')) - expect(props.closeModal).toHaveBeenCalled() - fireEvent.click(screen.getByText('done')) - expect(props.closeModal).toHaveBeenCalled() - expect(props.updateValue).toHaveBeenCalled() - }) - it('renders the custom option, caption, and visual', () => { - render(props) - fireEvent.click(screen.getByRole('radio', { name: 'Custom' })) - expect(screen.getAllByRole('textbox', { name: '' })).toHaveLength(1) - screen.getByText('between -30 and 0') - screen.getByText('mock TipPositionZAxisViz') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/constants.ts b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/constants.ts deleted file mode 100644 index 528d9a0262e..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/constants.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const DECIMALS_ALLOWED = 1 -export const SMALL_STEP_MM = 1 -export const LARGE_STEP_MM = 10 -export const TOO_MANY_DECIMALS: 'TOO_MANY_DECIMALS' = 'TOO_MANY_DECIMALS' -export const PERCENT_RANGE_TO_SHOW_WARNING = 0.9 diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx deleted file mode 100644 index f853e12f55f..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/index.tsx +++ /dev/null @@ -1,229 +0,0 @@ -import * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { - COLORS, - Flex, - FormGroup, - Icon, - LegacyInputField, - LegacyTooltip, - useHoverTooltip, -} from '@opentrons/components' -import { getWellsDepth, getWellDimension } from '@opentrons/shared-data' -import { - getIsTouchTipField, - getIsDelayPositionField, -} from '../../../../form-types' -import { selectors as stepFormSelectors } from '../../../../step-forms' -import { TipPositionModal } from './TipPositionModal' -import { getDefaultMmFromBottom } from './utils' -import { ZTipPositionModal } from './ZTipPositionModal' -import type { - TipXOffsetFields, - TipYOffsetFields, - TipZOffsetFields, -} from '../../../../form-types' -import type { UseHoverTooltipTargetProps } from '@opentrons/components' -import type { FieldPropsByName } from '../../types' -import type { PositionSpecs } from './TipPositionModal' - -import stepFormStyles from '../../StepEditForm.module.css' -import styles from './TipPositionInput.module.css' - -interface TipPositionFieldProps { - propsForFields: FieldPropsByName - zField: TipZOffsetFields - xField?: TipXOffsetFields - yField?: TipYOffsetFields - labwareId?: string | null -} - -export function TipPositionField(props: TipPositionFieldProps): JSX.Element { - const { labwareId, propsForFields, zField, xField, yField } = props - const { - name: zName, - value: rawZValue, - updateValue: zUpdateValue, - tooltipContent, - isIndeterminate, - disabled, - } = propsForFields[zField] - - const { t } = useTranslation('application') - const [targetProps, tooltipProps] = useHoverTooltip() - const [isModalOpen, setModalOpen] = React.useState(false) - const labwareEntities = useSelector(stepFormSelectors.getLabwareEntities) - const labwareDef = - labwareId != null && labwareEntities[labwareId] != null - ? labwareEntities[labwareId].def - : null - - let wellDepthMm = 0 - let wellXWidthMm = 0 - let wellYWidthMm = 0 - - if (labwareDef != null) { - // NOTE: only taking depth of first well in labware def, UI not currently equipped for multiple depths/widths - const firstWell = labwareDef.wells.A1 - if (firstWell) { - wellDepthMm = getWellsDepth(labwareDef, ['A1']) - wellXWidthMm = getWellDimension(labwareDef, ['A1'], 'x') - wellYWidthMm = getWellDimension(labwareDef, ['A1'], 'y') - } - } - - if ( - (wellDepthMm === 0 || wellXWidthMm === 0 || wellYWidthMm === 0) && - labwareId != null && - labwareDef != null - ) { - console.error( - `expected to find all well dimensions mm with labwareId ${labwareId} but could not` - ) - } - - const handleOpen = (has3Specs: boolean): void => { - if (has3Specs && wellDepthMm && wellXWidthMm && wellYWidthMm) { - setModalOpen(true) - } - if (!has3Specs && wellDepthMm) { - setModalOpen(true) - } - } - const handleClose = (): void => { - setModalOpen(false) - } - const isTouchTipField = getIsTouchTipField(zName) - const isDelayPositionField = getIsDelayPositionField(zName) - let zValue: string | number = '0' - const mmFromBottom = typeof rawZValue === 'number' ? rawZValue : null - if (wellDepthMm !== null) { - // show default value for field in parens if no mmFromBottom value is selected - zValue = - mmFromBottom ?? getDefaultMmFromBottom({ name: zName, wellDepthMm }) - } - let modal = ( - - ) - if (yField != null && xField != null) { - const { - name: xName, - value: rawXValue, - updateValue: xUpdateValue, - } = propsForFields[xField] - const { - name: yName, - value: rawYValue, - updateValue: yUpdateValue, - } = propsForFields[yField] - - const specs: PositionSpecs = { - z: { - name: zName, - value: mmFromBottom, - updateValue: zUpdateValue, - }, - x: { - name: xName, - value: rawXValue != null ? Number(rawXValue) : null, - updateValue: xUpdateValue, - }, - y: { - name: yName, - value: rawYValue != null ? Number(rawYValue) : null, - updateValue: yUpdateValue, - }, - } - - modal = ( - - ) - } - - return ( - <> - {tooltipContent} - {isModalOpen ? modal : null} - - {yField != null && xField != null ? ( - { - handleOpen(true) - } - : () => {} - } - id={`TipPositionIcon_${zName}`} - data-testid={`TipPositionIcon_${zName}`} - width="5rem" - > - - - ) : ( - { - handleOpen(false) - }} - value={String(zValue)} - isIndeterminate={isIndeterminate} - units={t('units.millimeter')} - id={`TipPositionField_${zName}`} - /> - )} - - - ) -} - -interface WrapperProps { - isTouchTipField: boolean - isDelayPositionField: boolean - children: React.ReactNode - disabled: boolean - targetProps: UseHoverTooltipTargetProps -} - -const Wrapper = (props: WrapperProps): JSX.Element => { - const { t } = useTranslation('form') - return props.isTouchTipField || props.isDelayPositionField ? ( -
    {props.children}
    - ) : ( - - - {props.children} - - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/utils.ts b/protocol-designer/src/components/StepEditForm/fields/TipPositionField/utils.ts deleted file mode 100644 index 4648aa78933..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipPositionField/utils.ts +++ /dev/null @@ -1,127 +0,0 @@ -import floor from 'lodash/floor' -import round from 'lodash/round' -import { getIsTouchTipField } from '../../../../form-types' -import { - DEFAULT_MM_FROM_BOTTOM_ASPIRATE, - DEFAULT_MM_FROM_BOTTOM_DISPENSE, - DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP, -} from '../../../../constants' -import { DECIMALS_ALLOWED, TOO_MANY_DECIMALS } from './constants' -import type { StepFieldName } from '../../../../form-types' - -// TODO: Ian + Brian 2019-02-13 this should switch on stepType, not use field -// name to infer step type! -// -// TODO(IL, 2021-03-10): after resolving #7470, use this util instead -// of directly using these constants, wherever these constants are used. See also #7469 -export function getDefaultMmFromBottom(args: { - name: StepFieldName - wellDepthMm: number -}): number { - const { name, wellDepthMm } = args - - switch (name) { - case 'aspirate_mmFromBottom': - return DEFAULT_MM_FROM_BOTTOM_ASPIRATE - - case 'aspirate_delay_mmFromBottom': - return DEFAULT_MM_FROM_BOTTOM_ASPIRATE - - case 'dispense_mmFromBottom': - return DEFAULT_MM_FROM_BOTTOM_DISPENSE - - case 'dispense_delay_mmFromBottom': - return DEFAULT_MM_FROM_BOTTOM_DISPENSE - - case 'mix_mmFromBottom': - // TODO: Ian 2018-11-131 figure out what offset makes most sense for mix - return DEFAULT_MM_FROM_BOTTOM_DISPENSE - - default: - // touch tip fields - console.assert( - getIsTouchTipField(name), - `getDefaultMmFromBottom fn does not know what to do with field ${name}` - ) - return DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP + wellDepthMm - } -} - -export const roundValue = ( - value: number | string | null, - direction: 'up' | 'down' -): number => { - if (value === null) return 0 - - switch (direction) { - case 'up': { - return round(Number(value), DECIMALS_ALLOWED) - } - case 'down': { - return floor(Number(value), DECIMALS_ALLOWED) - } - } -} - -const OUT_OF_BOUNDS: 'OUT_OF_BOUNDS' = 'OUT_OF_BOUNDS' -export type Error = typeof TOO_MANY_DECIMALS | typeof OUT_OF_BOUNDS - -export const getErrorText = (args: { - errors: Error[] - maxMm: number - minMm: number - isPristine: boolean - t: any -}): string | null => { - const { errors, minMm, maxMm, isPristine, t } = args - - if (errors.includes(TOO_MANY_DECIMALS)) { - return t('tip_position.errors.TOO_MANY_DECIMALS') - } else if (!isPristine && errors.includes(OUT_OF_BOUNDS)) { - return t('tip_position.errors.OUT_OF_BOUNDS', { - minMm, - maxMm, - }) - } else { - return null - } -} - -export const getErrors = (args: { - isDefault: boolean - value: string | null - maxMm: number - minMm: number -}): Error[] => { - const { isDefault, value: rawValue, maxMm, minMm } = args - const errors: Error[] = [] - if (isDefault) return errors - - const value = Number(rawValue) - if (rawValue === null || Number.isNaN(value)) { - // blank or otherwise invalid should show this error as a fallback - return [OUT_OF_BOUNDS] - } - const incorrectDecimals = round(value, DECIMALS_ALLOWED) !== value - const outOfBounds = value > maxMm || value < minMm - - if (incorrectDecimals) { - errors.push(TOO_MANY_DECIMALS) - } - if (outOfBounds) { - errors.push(OUT_OF_BOUNDS) - } - return errors -} - -interface MinMaxValues { - minValue: number - maxValue: number -} - -export const getMinMaxWidth = (width: number): MinMaxValues => { - return { - minValue: -width * 0.5, - maxValue: width * 0.5, - } -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/__tests__/TipWellSelectionField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/__tests__/TipWellSelectionField.test.tsx deleted file mode 100644 index 935856747fc..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/__tests__/TipWellSelectionField.test.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import type * as React from 'react' -import { fireEvent, screen } from '@testing-library/react' -import { describe, it, vi, beforeEach } from 'vitest' - -import { renderWithProviders } from '../../../../../__testing-utils__' -import { i18n } from '../../../../../assets/localization' -import { getPipetteEntities } from '../../../../../step-forms/selectors' -import { WellSelectionModal } from '../../WellSelectionField/WellSelectionModal' -import { TipWellSelectionField } from '../index' - -vi.mock('../../../../../step-forms/selectors') -vi.mock('../../WellSelectionField/WellSelectionModal') - -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} - -const mockPipId = 'mockId' - -describe('TipWellSelectionField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - name: 'well', - value: [], - updateValue: vi.fn(), - onFieldBlur: vi.fn(), - onFieldFocus: vi.fn(), - disabled: false, - pipetteId: mockPipId, - labwareId: 'mockLabwareId', - nozzles: null, - } - vi.mocked(getPipetteEntities).mockReturnValue({ - [mockPipId]: { - name: 'p50_single_flex', - spec: {} as any, - id: mockPipId, - tiprackLabwareDef: [], - tiprackDefURI: ['mockDefURI1', 'mockDefURI2'], - }, - }) - vi.mocked(WellSelectionModal).mockReturnValue( -
    mock WellSelectionModal
    - ) - }) - it('renders the readOnly input field and clicking on it renders the modal', () => { - render(props) - screen.getByText('wells') - fireEvent.click(screen.getByRole('textbox', { name: '' })) - screen.getByText('mock WellSelectionModal') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/index.tsx deleted file mode 100644 index 1a059dc8033..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TipWellSelectionField/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { useState } from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { createPortal } from 'react-dom' -import { FormGroup, LegacyInputField } from '@opentrons/components' -import { getPipetteEntities } from '../../../../step-forms/selectors' -import { getNozzleType } from '../../utils' -import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' -import { WellSelectionModal } from '../WellSelectionField/WellSelectionModal' -import type { StepFormDropdown } from '../StepFormDropdownField' - -import styles from '../../StepEditForm.module.css' - -type TipWellSelectionFieldProps = Omit< - React.ComponentProps, - 'options' -> & { - pipetteId: unknown - labwareId: unknown - nozzles: string | null -} - -export function TipWellSelectionField( - props: TipWellSelectionFieldProps -): JSX.Element { - const { - value: selectedWells, - errorToShow, - name, - updateValue, - disabled, - pipetteId, - labwareId, - nozzles, - } = props - const { t } = useTranslation('form') - const pipetteEntities = useSelector(getPipetteEntities) - const primaryWellCount = - Array.isArray(selectedWells) && selectedWells.length > 0 - ? selectedWells.length.toString() - : null - const [openModal, setOpenModal] = useState(false) - const pipette = pipetteId != null ? pipetteEntities[String(pipetteId)] : null - const nozzleType = getNozzleType(pipette, nozzles) - - return ( - <> - {createPortal( - { - setOpenModal(false) - }} - pipetteId={String(pipetteId)} - updateValue={updateValue} - value={selectedWells} - nozzleType={nozzleType} - />, - - getMainPagePortalEl() - )} - - - { - setOpenModal(true) - }} - /> - - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/TiprackField.tsx b/protocol-designer/src/components/StepEditForm/fields/TiprackField.tsx deleted file mode 100644 index a6bf5dfcb3a..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/TiprackField.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import * as React from 'react' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { - FormGroup, - DropdownField, - useHoverTooltip, - LegacyTooltip, - Box, -} from '@opentrons/components' -import { selectors as uiLabwareSelectors } from '../../../ui/labware' -import { getPipetteEntities } from '../../../step-forms/selectors' -import type { FieldProps } from '../types' - -import styles from '../StepEditForm.module.css' - -interface TiprackFieldProps extends FieldProps { - pipetteId?: unknown -} -export function TiprackField(props: TiprackFieldProps): JSX.Element { - const { - name, - value, - onFieldBlur, - onFieldFocus, - updateValue, - pipetteId, - } = props - const { t } = useTranslation(['form', 'tooltip']) - const [targetProps, tooltipProps] = useHoverTooltip() - const pipetteEntities = useSelector(getPipetteEntities) - const options = useSelector(uiLabwareSelectors.getTiprackOptions) - const defaultTiprackUris = - pipetteId != null ? pipetteEntities[pipetteId as string].tiprackDefURI : [] - const tiprackOptions = options.filter(option => - defaultTiprackUris.includes(option.value) - ) - - React.useEffect(() => { - // if default value is not included in the pipette's tiprack uris then - // change it so it is - if (!defaultTiprackUris.includes(value as string)) { - updateValue(defaultTiprackUris[0]) - } - }, [defaultTiprackUris, value, updateValue]) - const hasMissingTiprack = defaultTiprackUris.length > tiprackOptions.length - return ( - - - ) => { - updateValue(e.currentTarget.value) - }} - /> - - {hasMissingTiprack ? ( - - {t('tooltip:missing_tiprack')} - - ) : null} - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx b/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx deleted file mode 100644 index e3a8bf4bcdd..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/ToggleRowField.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import cx from 'classnames' - -import { ToggleField } from '@opentrons/components' - -import styles from '../StepEditForm.module.css' - -import type { FieldProps } from '../types' - -type ToggleRowProps = FieldProps & { - offLabel?: string - onLabel?: string - className?: string -} -export const ToggleRowField = (props: ToggleRowProps): JSX.Element => { - const { - updateValue, - value, - name, - offLabel, - onLabel, - disabled, - className, - } = props - return ( - { - updateValue(!value) - }} - disabled={disabled} - /> - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx b/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx deleted file mode 100644 index 61592213ca6..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/VolumeField.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { - FormGroup, - LegacyTooltip, - useHoverTooltip, - TOOLTIP_TOP, - TOOLTIP_FIXED, -} from '@opentrons/components' -import { getFieldDefaultTooltip } from '../utils' -import { TextField } from './TextField' -import styles from '../StepEditForm.module.css' -import type { StepType } from '../../../form-types' -import type { FieldProps } from '../types' - -type Props = FieldProps & { - stepType: StepType - label: string - className: string -} -export const VolumeField = (props: Props): JSX.Element => { - const { t } = useTranslation(['tooltip', 'application']) - const { stepType, label, className, ...propsForVolumeField } = props - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: TOOLTIP_TOP, - strategy: TOOLTIP_FIXED, - }) - - return ( -
    - - {getFieldDefaultTooltip(propsForVolumeField.name, t)} - - - - -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderInput.module.css b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderInput.module.css deleted file mode 100644 index 0793c50e5fe..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderInput.module.css +++ /dev/null @@ -1,100 +0,0 @@ -@import '@opentrons/components/styles'; - -.well_order_icon { - height: 1.5rem; - width: 1.5rem; - cursor: pointer; - margin: 0.25rem 0; -} - -.icon_with_label { - margin: 0 0.25rem; -} - -.well_order_icon:hover { - background-color: #e6e6e6; -} - -.modal_header { - display: flex; - flex-direction: column; - justify-content: space-evenly; - height: 5rem; -} - -.main_row { - display: flex; - flex-direction: row; - justify-content: space-between; - margin: 3rem 0; -} - -.field_row { - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.well_order_dropdown { - width: 9rem; -} - -.field_spacer { - margin: 6px 12px; -} - -.viz_wrapper { - position: relative; - width: 100px; - height: 100px; -} - -.wells_image { - height: 100px; - width: 100px; - position: relative; -} - -.path_image { - height: 60px; - width: 60px; - position: relative; - left: 20px; - top: -80px; -} - -.b2t_first.l2r_second { - /* default orientation */ -} - -.l2r_first.t2b_second { - transform: rotate(90deg); -} - -.t2b_first.r2l_second { - transform: rotate(180deg); -} - -.r2l_first.b2t_second { - transform: rotate(270deg); -} - -.b2t_first.r2l_second { - filter: FlipH; - transform: scaleX(-1); -} - -.l2r_first.b2t_second { - filter: FlipH; - transform: scaleX(-1) rotate(270deg); -} - -.t2b_first.l2r_second { - filter: FlipH; - transform: scaleX(-1) rotate(180deg); -} - -.r2l_first.t2b_second { - filter: FlipH; - transform: scaleX(-1) rotate(90deg); -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderModal.tsx b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderModal.tsx deleted file mode 100644 index 0051be0ebb2..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderModal.tsx +++ /dev/null @@ -1,244 +0,0 @@ -import * as React from 'react' -import { createPortal } from 'react-dom' -import cx from 'classnames' -import { useTranslation } from 'react-i18next' -import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' -import { - LegacyModal, - OutlineButton, - DeprecatedPrimaryButton, - FormGroup, - DropdownField, -} from '@opentrons/components' -import { WellOrderViz } from './WellOrderViz' -import type { WellOrderOption } from '../../../../form-types' - -import modalStyles from '../../../modals/modal.module.css' -import stepEditStyles from '../../StepEditForm.module.css' -import styles from './WellOrderInput.module.css' - -const DEFAULT_FIRST: WellOrderOption = 't2b' -const DEFAULT_SECOND: WellOrderOption = 'l2r' -const VERTICAL_VALUES: WellOrderOption[] = ['t2b', 'b2t'] -const HORIZONTAL_VALUES: WellOrderOption[] = ['l2r', 'r2l'] -const WELL_ORDER_VALUES: WellOrderOption[] = [ - ...VERTICAL_VALUES, - ...HORIZONTAL_VALUES, -] - -export interface WellOrderModalProps { - isOpen: boolean - closeModal: () => unknown - prefix: 'aspirate' | 'dispense' | 'mix' - firstValue?: WellOrderOption | null - secondValue?: WellOrderOption | null - firstName: string - secondName: string - updateValues: ( - firstValue?: WellOrderOption | null, - secondValue?: WellOrderOption | null - ) => void -} - -interface State { - firstValue: WellOrderOption - secondValue: WellOrderOption -} - -export const ResetButton = (props: { onClick: () => void }): JSX.Element => { - const { t } = useTranslation('button') - return ( - - {t('reset')} - - ) -} - -export const CancelButton = (props: { onClick: () => void }): JSX.Element => { - const { t } = useTranslation('button') - - return ( - - {t('cancel')} - - ) -} -export const DoneButton = (props: { onClick: () => void }): JSX.Element => { - const { t } = useTranslation('button') - - return ( - - {t('done')} - - ) -} - -export const WellOrderModal = ( - props: WellOrderModalProps -): JSX.Element | null => { - const { t } = useTranslation(['form', 'modal']) - const { - isOpen, - closeModal, - firstName, - secondName, - updateValues, - firstValue, - secondValue, - } = props - const getInitialFirstValues = (): { - initialFirstValue: WellOrderOption - initialSecondValue: WellOrderOption - } => { - if (firstValue == null || secondValue == null) { - return { - initialFirstValue: DEFAULT_FIRST, - initialSecondValue: DEFAULT_SECOND, - } - } - return { - initialFirstValue: firstValue, - initialSecondValue: secondValue, - } - } - const { initialFirstValue, initialSecondValue } = getInitialFirstValues() - - const [wellOrder, setWellOrder] = React.useState({ - firstValue: initialFirstValue, - secondValue: initialSecondValue, - }) - - React.useEffect(() => { - setWellOrder({ - firstValue: initialFirstValue, - secondValue: initialSecondValue, - }) - }, [initialFirstValue, initialSecondValue]) - - const applyChanges = (): void => { - updateValues(wellOrder.firstValue, wellOrder.secondValue) - } - - const handleReset = (): void => { - setWellOrder({ firstValue: DEFAULT_FIRST, secondValue: DEFAULT_SECOND }) - applyChanges() - closeModal() - } - - const handleCancel = (): void => { - const { initialFirstValue, initialSecondValue } = getInitialFirstValues() - setWellOrder({ - firstValue: initialFirstValue, - secondValue: initialSecondValue, - }) - closeModal() - } - - const handleDone = (): void => { - applyChanges() - closeModal() - } - - const makeOnChange = (ordinality: 'first' | 'second') => ( - event: React.ChangeEvent - ): void => { - const { value } = event.currentTarget - let nextState: State = { ...wellOrder, [`${ordinality}Value`]: value } - - if (ordinality === 'first') { - if ( - VERTICAL_VALUES.includes(value as WellOrderOption) && - VERTICAL_VALUES.includes(wellOrder.secondValue) - ) { - nextState = { ...nextState, secondValue: HORIZONTAL_VALUES[0] } - } else if ( - HORIZONTAL_VALUES.includes(value as WellOrderOption) && - HORIZONTAL_VALUES.includes(wellOrder.secondValue) - ) { - nextState = { ...nextState, secondValue: VERTICAL_VALUES[0] } - } - } - setWellOrder(nextState) - } - - const isSecondOptionDisabled = (value: WellOrderOption): boolean => { - if (VERTICAL_VALUES.includes(wellOrder.firstValue)) { - return VERTICAL_VALUES.includes(value) - } else if (HORIZONTAL_VALUES.includes(wellOrder.firstValue)) { - return HORIZONTAL_VALUES.includes(value) - } else { - return false - } - } - - if (!isOpen) return null - - return createPortal( - -
    -

    {t('modal:well_order.title')}

    -

    {t('modal:well_order.body')}

    -
    -
    - -
    - ({ - value, - name: t(`step_edit_form.field.well_order.option.${value}`), - }))} - /> - - {t('modal:well_order.then')} - - ({ - value, - name: t(`step_edit_form.field.well_order.option.${value}`), - disabled: isSecondOptionDisabled(value), - }))} - /> -
    -
    - - - -
    -
    - -
    - - -
    -
    -
    , - getMainPagePortalEl() - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx deleted file mode 100644 index 2f1af411cb7..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/WellOrderViz.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import cx from 'classnames' - -import WELLS_IMAGE from '../../../../assets/images/well_order_wells.svg' -import PATH_IMAGE from '../../../../assets/images/well_order_path.svg' - -import type { WellOrderOption } from '../../../../form-types' - -import styles from './WellOrderInput.module.css' - -interface Props { - firstValue: WellOrderOption - secondValue: WellOrderOption -} - -export const WellOrderViz = (props: Props): JSX.Element => { - const { firstValue, secondValue } = props - - return ( -
    - - -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx deleted file mode 100644 index cf54bb141e1..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellOrderField/index.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import { useState } from 'react' -import { useTranslation } from 'react-i18next' -import { css } from 'styled-components' -import { - FormGroup, - Text, - LegacyTooltip, - useHoverTooltip, - FONT_WEIGHT_SEMIBOLD, - FONT_SIZE_BODY_1, - C_LIGHT_GRAY, -} from '@opentrons/components' -import cx from 'classnames' -import ZIG_ZAG_IMAGE from '../../../../assets/images/zig_zag_icon.svg' -import { WellOrderModal } from './WellOrderModal' -import stepEditStyles from '../../StepEditForm.module.css' -import styles from './WellOrderInput.module.css' -import type { FieldProps } from '../../types' -import type { WellOrderOption } from '../../../../form-types' - -export interface WellOrderFieldProps { - className?: string | null - label?: string - prefix: 'aspirate' | 'dispense' | 'mix' - firstValue?: WellOrderOption | null - secondValue?: WellOrderOption | null - firstName: string - secondName: string - updateFirstWellOrder: FieldProps['updateValue'] - updateSecondWellOrder: FieldProps['updateValue'] -} - -export const WellOrderField = (props: WellOrderFieldProps): JSX.Element => { - const { - firstValue, - secondValue, - firstName, - secondName, - updateFirstWellOrder, - updateSecondWellOrder, - } = props - const { t } = useTranslation(['form', 'modal']) - const [isModalOpen, setModalOpen] = useState(false) - - const handleOpen = (): void => { - setModalOpen(true) - } - const handleClose = (): void => { - setModalOpen(false) - } - - const updateValues = (firstValue: unknown, secondValue: unknown): void => { - updateFirstWellOrder(firstValue) - updateSecondWellOrder(secondValue) - } - - const getIconClassNames = (): string[] => { - const iconClassNames = [] - if (firstValue) { - iconClassNames.push(styles[`${firstValue}_first`]) - } - if (secondValue) { - iconClassNames.push(styles[`${secondValue}_second`]) - } - return iconClassNames - } - - const [targetProps, tooltipProps] = useHoverTooltip() - - const className = cx(props.className, { - [styles.small_field]: !props.label, - [stepEditStyles.no_label]: !props.label, - }) - - const mixedWellOrderStyles = css` - font-weight: ${FONT_WEIGHT_SEMIBOLD}; - font-size: ${FONT_SIZE_BODY_1}; - padding-top: 0.5rem; - padding-bottom: 0.325rem; - - &:hover { - background-color: ${C_LIGHT_GRAY}; - } - ` - - return ( - <> - - {t('step_edit_form.field.well_order.label')} - -
    - - {firstValue != null && secondValue != null ? ( - - ) : ( - - {t('step_edit_form.field.well_order.mixed')} - - )} - -
    - - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionField.tsx b/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionField.tsx deleted file mode 100644 index c1ed96d7dad..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionField.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { createPortal } from 'react-dom' -import { useDispatch, useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { FormGroup, LegacyInputField } from '@opentrons/components' -import { COLUMN } from '@opentrons/shared-data' -import { - actions as stepsActions, - getSelectedStepId, - getWellSelectionLabwareKey, -} from '../../../../ui/steps' -import { selectors as stepFormSelectors } from '../../../../step-forms' -import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' -import { getNozzleType } from '../../utils' -import { WellSelectionModal } from './WellSelectionModal' -import styles from '../../StepEditForm.module.css' - -import type { FieldProps } from '../../types' - -export type Props = FieldProps & { - nozzles: string | null - pipetteId?: string | null - labwareId?: string | null -} - -export const WellSelectionField = (props: Props): JSX.Element => { - const { t } = useTranslation('form') - const { - nozzles, - labwareId, - pipetteId, - onFieldFocus, - value: selectedWells, - updateValue, - onFieldBlur, - name, - disabled, - errorToShow, - } = props - const dispatch = useDispatch() - const stepId = useSelector(getSelectedStepId) - const pipetteEntities = useSelector(stepFormSelectors.getPipetteEntities) - const wellSelectionLabwareKey = useSelector(getWellSelectionLabwareKey) - const primaryWellCount = - Array.isArray(selectedWells) && selectedWells.length > 0 - ? selectedWells.length.toString() - : undefined - const pipette = pipetteId != null ? pipetteEntities[pipetteId] : null - const nozzleType = getNozzleType(pipette, nozzles) - - const getModalKey = (): string => { - return `${String(stepId)}${name}${pipetteId || 'noPipette'}${ - labwareId || 'noLabware' - }` - } - - const onOpen = (key: string): void => { - dispatch(stepsActions.setWellSelectionLabwareKey(key)) - } - const handleOpen = (): void => { - if (onFieldFocus) { - onFieldFocus() - } - if (labwareId && pipetteId) { - onOpen(getModalKey()) - } - } - - const handleClose = (): void => { - if (onFieldBlur) { - onFieldBlur() - } - dispatch(stepsActions.clearWellSelectionLabwareKey()) - } - - const modalKey = getModalKey() - const label = - nozzleType === '8-channel' || nozzleType === COLUMN - ? t('step_edit_form.wellSelectionLabel.columns') - : t('step_edit_form.wellSelectionLabel.wells') - return ( - - - {createPortal( - , - getMainPagePortalEl() - )} - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.module.css b/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.module.css deleted file mode 100644 index 61fb8a26e32..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.module.css +++ /dev/null @@ -1,24 +0,0 @@ -@import '@opentrons/components/styles'; - -.inverted_text { - font-size: var(--fs-body-2); - color: var(--c-white); -} - -.top_row { - lost-utility: clearfix; - padding: 0 1rem; - - & > * { - lost-column: 1/3; - - &:last-child { - lost-offset: 1/3; - } - } -} - -.bottom_row { - padding-top: 2rem; - text-align: center; -} diff --git a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx b/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx deleted file mode 100644 index 4709da773e9..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/WellSelectionField/WellSelectionModal.tsx +++ /dev/null @@ -1,200 +0,0 @@ -import * as React from 'react' -import cx from 'classnames' -import { useSelector } from 'react-redux' -import omit from 'lodash/omit' - -import { - LegacyModal, - OutlineButton, - LabeledValue, - WELL_LABEL_OPTIONS, -} from '@opentrons/components' -import { sortWells } from '@opentrons/shared-data' - -import { arrayToWellGroup } from '../../../../utils' -import * as wellContentsSelectors from '../../../../top-selectors/well-contents' -import { selectors } from '../../../../labware-ingred/selectors' -import { selectors as stepFormSelectors } from '../../../../step-forms' -import { WellSelectionInstructions } from '../../../WellSelectionInstructions' -import { SelectableLabware, wellFillFromWellContents } from '../../../labware' - -import type { LabwareDefinition2, PipetteV2Specs } from '@opentrons/shared-data' -import type { WellGroup } from '@opentrons/components' -import type { ContentsByWell } from '../../../../labware-ingred/types' -import type { WellIngredientNames } from '../../../../steplist/types' -import type { StepFieldName } from '../../../../form-types' -import type { NozzleType } from '../../../../types' - -import styles from './WellSelectionModal.module.css' -import modalStyles from '../../../modals/modal.module.css' - -interface WellSelectionModalProps { - isOpen: boolean - name: StepFieldName - onCloseClick: (e?: React.MouseEvent) => unknown - value: unknown - updateValue: (val: unknown | null | undefined) => void - nozzleType?: NozzleType | null - labwareId?: string | null - pipetteId?: string | null -} - -interface WellSelectionModalComponentProps { - deselectWells: (wellGroup: WellGroup) => unknown - nozzleType: NozzleType | null - handleSave: () => unknown - highlightedWells: WellGroup - ingredNames: WellIngredientNames - onCloseClick: (e?: React.MouseEvent) => unknown - selectedPrimaryWells: WellGroup - selectWells: (wellGroup: WellGroup) => unknown - updateHighlightedWells: (wellGroup: WellGroup) => unknown - wellContents: ContentsByWell - labwareDef?: LabwareDefinition2 | null - pipetteSpec?: PipetteV2Specs | null -} - -const WellSelectionModalComponent = ( - props: WellSelectionModalComponentProps -): JSX.Element => { - const { - deselectWells, - handleSave, - highlightedWells, - ingredNames, - labwareDef, - onCloseClick, - pipetteSpec, - selectedPrimaryWells, - selectWells, - wellContents, - updateHighlightedWells, - nozzleType, - } = props - const liquidDisplayColors = useSelector(selectors.getLiquidDisplayColors) - - return ( - -
    - - - SAVE SELECTION - -
    - - {labwareDef != null ? ( - - ) : null} - - -
    - ) -} - -export const WellSelectionModal = ( - props: WellSelectionModalProps -): JSX.Element | null => { - const { - isOpen, - labwareId, - onCloseClick, - pipetteId, - nozzleType = null, - updateValue, - } = props - const wellFieldData = props.value - // selector data - const allWellContentsForStep = useSelector( - wellContentsSelectors.getAllWellContentsForActiveItem - ) - - const ingredNames = useSelector(selectors.getLiquidNamesById) - const labwareEntities = useSelector(stepFormSelectors.getLabwareEntities) - const pipetteEntities = useSelector(stepFormSelectors.getPipetteEntities) - - // selector-derived data - const labwareDef = - (labwareId != null ? labwareEntities[labwareId]?.def : null) ?? null - const pipette = pipetteId != null ? pipetteEntities[pipetteId] : null - - const initialSelectedPrimaryWells = Array.isArray(wellFieldData) - ? arrayToWellGroup(wellFieldData as string[]) - : {} - - // component state - const [ - selectedPrimaryWells, - setSelectedPrimaryWells, - ] = React.useState(initialSelectedPrimaryWells) - const [highlightedWells, setHighlightedWells] = React.useState({}) - - // actions - const selectWells = (wells: WellGroup): void => { - setSelectedPrimaryWells(prev => ({ ...prev, ...wells })) - setHighlightedWells({}) - } - - const deselectWells = (deselectedWells: WellGroup): void => { - setSelectedPrimaryWells(prev => omit(prev, Object.keys(deselectedWells))) - setHighlightedWells({}) - } - - const handleSave = (): void => { - const sortedWells = Object.keys(selectedPrimaryWells).sort(sortWells) - updateValue(sortedWells) - onCloseClick() - } - - if (!isOpen) return null - - return ( - - ) -} diff --git a/protocol-designer/src/components/StepEditForm/fields/__tests__/BlowoutZOffsetField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/__tests__/BlowoutZOffsetField.test.tsx deleted file mode 100644 index e994e2f8bed..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/__tests__/BlowoutZOffsetField.test.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import type * as React from 'react' -import { describe, it, vi, beforeEach } from 'vitest' -import { fireEvent, screen } from '@testing-library/react' -import { fixture96Plate } from '@opentrons/shared-data' -import { SOURCE_WELL_BLOWOUT_DESTINATION } from '@opentrons/step-generation' -import { getLabwareEntities } from '../../../../step-forms/selectors' -import { renderWithProviders } from '../../../../__testing-utils__' -import { ZTipPositionModal } from '../TipPositionField/ZTipPositionModal' -import { BlowoutZOffsetField } from '../BlowoutZOffsetField' -import type { LabwareDefinition2 } from '@opentrons/shared-data' - -vi.mock('../../../../step-forms/selectors') -vi.mock('../TipPositionField/ZTipPositionModal') -const render = (props: React.ComponentProps) => { - return renderWithProviders()[0] -} -const mockSourceId = 'sourceId' -describe('BlowoutZOffsetField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - disabled: false, - value: null, - name: 'blowout_z_offset', - updateValue: vi.fn(), - onFieldBlur: vi.fn(), - onFieldFocus: vi.fn(), - destLabwareId: SOURCE_WELL_BLOWOUT_DESTINATION, - sourceLabwareId: mockSourceId, - blowoutLabwareId: 'blowoutId', - } - vi.mocked(getLabwareEntities).mockReturnValue({ - [mockSourceId]: { - id: 'mockLabwareId', - labwareDefURI: 'mock uri', - def: fixture96Plate as LabwareDefinition2, - }, - }) - vi.mocked(ZTipPositionModal).mockReturnValue( -
    mock ZTipPositionModal
    - ) - }) - it('renders the input field', () => { - render(props) - screen.getByTestId('BlowoutZOffsetField_blowout_z_offset') - }) - it('renders the modal when input field is clicked on', () => { - render(props) - fireEvent.click(screen.getByTestId('BlowoutZOffsetField_blowout_z_offset')) - screen.getByText('mock ZTipPositionModal') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/__tests__/DelayFields.test.tsx b/protocol-designer/src/components/StepEditForm/fields/__tests__/DelayFields.test.tsx deleted file mode 100644 index 596ddb35eff..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/__tests__/DelayFields.test.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { describe, it } from 'vitest' - -describe('DelayFields', () => { - it.todo('replace deprecated enzyme test') -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/__tests__/TiprackField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/__tests__/TiprackField.test.tsx deleted file mode 100644 index 3ce28a17ee8..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/__tests__/TiprackField.test.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import type * as React from 'react' -import { describe, it, vi, beforeEach } from 'vitest' -import { screen } from '@testing-library/react' -import { i18n } from '../../../../assets/localization' -import { getPipetteEntities } from '../../../../step-forms/selectors' -import { renderWithProviders } from '../../../../__testing-utils__' -import { getTiprackOptions } from '../../../../ui/labware/selectors' -import { TiprackField } from '../TiprackField' - -vi.mock('../../../../ui/labware/selectors') -vi.mock('../../../../step-forms/selectors') - -const render = (props: React.ComponentProps) => { - return renderWithProviders(, { - i18nInstance: i18n, - })[0] -} -const mockMockId = 'mockId' -describe('TiprackField', () => { - let props: React.ComponentProps - - beforeEach(() => { - props = { - disabled: false, - value: null, - name: 'tipRackt', - updateValue: vi.fn(), - onFieldBlur: vi.fn(), - onFieldFocus: vi.fn(), - pipetteId: mockMockId, - } - vi.mocked(getPipetteEntities).mockReturnValue({ - [mockMockId]: { - name: 'p50_single_flex', - spec: {} as any, - id: mockMockId, - tiprackLabwareDef: [], - tiprackDefURI: ['mockDefURI1', 'mockDefURI2'], - }, - }) - vi.mocked(getTiprackOptions).mockReturnValue([ - { - value: 'mockDefURI1', - name: 'tiprack1', - }, - { - value: 'mockDefURI2', - name: 'tiprack2', - }, - ]) - }) - it('renders the dropdown field and texts', () => { - render(props) - screen.getByText('tip rack') - screen.getByText('tiprack1') - screen.getByText('tiprack2') - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/__tests__/WellOrderField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/__tests__/WellOrderField.test.tsx deleted file mode 100644 index 7c5518c7489..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/__tests__/WellOrderField.test.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { describe, it } from 'vitest' - -describe('WellOrderField', () => { - it.todo('replace deprecated enzyme test') -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/__tests__/makeSingleEditFieldProps.test.ts b/protocol-designer/src/components/StepEditForm/fields/__tests__/makeSingleEditFieldProps.test.ts deleted file mode 100644 index d0a403bb8d5..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/__tests__/makeSingleEditFieldProps.test.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { vi, beforeEach, afterEach, expect, describe, it } from 'vitest' -import { makeSingleEditFieldProps } from '../makeSingleEditFieldProps' -import { - getDisabledFields, - getDefaultsForStepType, -} from '../../../../steplist/formLevel' -import { getFieldErrors } from '../../../../steplist/fieldLevel' -import * as stepEditFormUtils from '../../utils' -import type { HydratedFormdata } from '../../../../form-types' - -vi.mock('../../../../steplist/formLevel') -vi.mock('../../../../steplist/fieldLevel') - -const getFieldDefaultTooltipSpy = vi.spyOn( - stepEditFormUtils, - 'getFieldDefaultTooltip' -) - -const getSingleSelectDisabledTooltipSpy = vi.spyOn( - stepEditFormUtils, - 'getSingleSelectDisabledTooltip' -) - -beforeEach(() => { - getFieldDefaultTooltipSpy.mockImplementation(name => `tooltip for ${name}`) - getSingleSelectDisabledTooltipSpy.mockImplementation( - name => `disabled tooltip for ${name}` - ) -}) - -afterEach(() => { - vi.restoreAllMocks() -}) - -describe('makeSingleEditFieldProps', () => { - it('should create correct props for all fields in the given stepType', () => { - const focusedField = 'focused_error_field' - const dirtyFields = ['dirty_error_field', 'focused_error_field'] - - const focus: any = vi.fn() - const blur: any = vi.fn() - const handleChangeFormInput: any = vi.fn() - - const formData: any = { - stepType: 'fakeStepType', - some_field: '123', - disabled_field: '404', - pristine_error_field: '', - dirty_error_field: '', - focused_error_field: '', - } - - vi.mocked(getDisabledFields).mockImplementation( - (form: HydratedFormdata): Set => { - expect(form).toBe(formData) - const disabled = new Set() - disabled.add('disabled_field') - return disabled - } - ) - - vi.mocked(getDefaultsForStepType).mockImplementation(stepType => { - expect(stepType).toEqual('fakeStepType') - return { - some_field: 'default', - disabled_field: 'default', - pristine_error_field: '', - dirty_error_field: '', - focused_error_field: '', - } - }) - - vi.mocked(getFieldErrors).mockImplementation((name, value) => { - // pretend all the '*_error_field' fields have errors - // (though downstream of getFieldErrors, these errors won't be shown - // in errorToShow if field is pristine/focused) - if ( - name === 'pristine_error_field' || - name === 'dirty_error_field' || - name === 'focused_error_field' - ) { - return ['invalid value', 'field is required'] - } - return [] - }) - - const focusHandlers = { - focusedField, - dirtyFields, - focus, - blur, - } - const result = makeSingleEditFieldProps( - focusHandlers, - formData, - handleChangeFormInput, - formData, - [] - ) - expect(result).toEqual({ - some_field: { - disabled: false, - errorToShow: null, - name: 'some_field', - onFieldBlur: expect.anything(), - onFieldFocus: expect.anything(), - updateValue: expect.anything(), - value: '123', - tooltipContent: 'tooltip for some_field', - }, - disabled_field: { - disabled: true, - errorToShow: null, - name: 'disabled_field', - onFieldBlur: expect.anything(), - onFieldFocus: expect.anything(), - updateValue: expect.anything(), - value: '404', - tooltipContent: 'disabled tooltip for disabled_field', - }, - pristine_error_field: { - disabled: false, - errorToShow: null, - name: 'pristine_error_field', - onFieldBlur: expect.anything(), - onFieldFocus: expect.anything(), - updateValue: expect.anything(), - value: '', - tooltipContent: 'tooltip for pristine_error_field', - }, - dirty_error_field: { - disabled: false, - errorToShow: 'invalid value, field is required', - name: 'dirty_error_field', - onFieldBlur: expect.anything(), - onFieldFocus: expect.anything(), - updateValue: expect.anything(), - value: '', - tooltipContent: 'tooltip for dirty_error_field', - }, - focused_error_field: { - disabled: false, - errorToShow: null, - name: 'focused_error_field', - onFieldBlur: expect.anything(), - onFieldFocus: expect.anything(), - updateValue: expect.anything(), - value: '', - tooltipContent: 'tooltip for focused_error_field', - }, - }) - - // ensure the callbacks are wired up - ;[ - 'some_field', - 'disabled_field', - 'pristine_error_field', - 'dirty_error_field', - 'focused_error_field', - ].forEach(name => { - const { onFieldBlur, onFieldFocus, updateValue } = result[name] - - onFieldBlur() - expect(blur).toHaveBeenCalledWith(name) - - onFieldFocus() - expect(focus).toHaveBeenCalledWith(name) - - updateValue('foo') - expect(handleChangeFormInput).toHaveBeenCalledWith(name, 'foo') - - expect(vi.mocked(getFieldErrors)).toHaveBeenCalledWith( - name, - formData[name] - ) - }) - }) -}) diff --git a/protocol-designer/src/components/StepEditForm/fields/index.ts b/protocol-designer/src/components/StepEditForm/fields/index.ts deleted file mode 100644 index d89f07e4d5e..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* Generic Fields */ - -export { CheckboxRowField } from './CheckboxRowField' -export { RadioGroupField } from './RadioGroupField' -export { TextField } from './TextField' - -/* Specialized Fields */ - -export { BlowoutLocationField } from './BlowoutLocationField' -export { BlowoutZOffsetField } from './BlowoutZOffsetField' -export { ChangeTipField } from './ChangeTipField' -export { Configure96ChannelField } from './Configure96ChannelField' -export { DelayFields } from './DelayFields' -export { DisposalVolumeField } from './DisposalVolumeField' -export { DropTipField } from './DropTipField' -export { FlowRateField } from './FlowRateField' -export { LabwareField } from './LabwareField' -export { LabwareLocationField } from './LabwareLocationField' -export { MoveLabwareField } from './MoveLabwareField' -export { PathField } from './PathField/PathField' -export { PickUpTipField } from './PickUpTipField' -export { PipetteField } from './PipetteField' -export { ProfileItemRows } from './ProfileItemRows' -export { StepFormDropdown } from './StepFormDropdownField' -export { TipPositionField } from './TipPositionField' -export { TiprackField } from './TiprackField' -export { TipWellSelectionField } from './TipWellSelectionField' -export { ToggleRowField } from './ToggleRowField' -export { VolumeField } from './VolumeField' -export { WellOrderField } from './WellOrderField' -export { WellSelectionField } from './WellSelectionField/WellSelectionField' diff --git a/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts b/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts deleted file mode 100644 index 251f44d3a9d..00000000000 --- a/protocol-designer/src/components/StepEditForm/fields/makeSingleEditFieldProps.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { getFieldErrors } from '../../../steplist/fieldLevel' -import { - getDisabledFields, - getDefaultsForStepType, -} from '../../../steplist/formLevel' -import { - getFieldDefaultTooltip, - getSingleSelectDisabledTooltip, -} from '../utils' -import type { StepFieldName, FormData } from '../../../form-types' -import type { FieldProps, FieldPropsByName, FocusHandlers } from '../types' -interface ShowFieldErrorParams { - name: StepFieldName - focusedField: StepFieldName | null - dirtyFields?: StepFieldName[] -} -export const showFieldErrors = ({ - name, - focusedField, - dirtyFields, -}: ShowFieldErrorParams): boolean | undefined | StepFieldName[] => - !(name === focusedField) && dirtyFields && dirtyFields.includes(name) -export const makeSingleEditFieldProps = ( - focusHandlers: FocusHandlers, - formData: FormData, - handleChangeFormInput: (name: string, value: unknown) => void, - hydratedForm: { [key: string]: any }, // TODO: create real HydratedFormData type - t: any -): FieldPropsByName => { - const { dirtyFields, blur, focusedField, focus } = focusHandlers - const fieldNames: string[] = Object.keys( - getDefaultsForStepType(formData.stepType) - ) - return fieldNames.reduce((acc, name) => { - const disabled = hydratedForm - ? getDisabledFields(hydratedForm).has(name) - : false - const value = formData ? formData[name] : null - const showErrors = showFieldErrors({ - name, - focusedField, - dirtyFields, - }) - const errors = getFieldErrors(name, value) - const errorToShow = - showErrors && errors.length > 0 ? errors.join(', ') : null - - const updateValue = (value: unknown): void => { - handleChangeFormInput(name, value) - } - - const onFieldBlur = (): void => { - blur(name) - } - - const onFieldFocus = (): void => { - focus(name) - } - - const defaultTooltip = getFieldDefaultTooltip(name, t) - const disabledTooltip = getSingleSelectDisabledTooltip( - name, - formData.stepType, - t - ) - const fieldProps: FieldProps = { - disabled, - errorToShow, - name, - updateValue, - value, - onFieldBlur, - onFieldFocus, - tooltipContent: disabled ? disabledTooltip : defaultTooltip, - } - return { ...acc, [name]: fieldProps } - }, {}) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/AspDispSection.tsx b/protocol-designer/src/components/StepEditForm/forms/AspDispSection.tsx deleted file mode 100644 index fd8acbaed20..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/AspDispSection.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import { - IconButton, - LegacyTooltip, - useHoverTooltip, -} from '@opentrons/components' -import styles from '../StepEditForm.module.css' - -interface Props { - className?: string | null - collapsed?: boolean | null - toggleCollapsed: () => void - prefix: 'aspirate' | 'dispense' - children?: React.ReactNode -} - -export const AspDispSection = (props: Props): JSX.Element => { - const { children, className, collapsed, toggleCollapsed, prefix } = props - const [targetProps, tooltipProps] = useHoverTooltip() - const { t } = useTranslation('tooltip') - return ( - // @ts-expect-error(sa, 2021-7-2): className might be null -
    -
    - {prefix} - - {t('advanced_settings')} - -
    - -
    -
    - {children} -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/CommentForm/index.tsx b/protocol-designer/src/components/StepEditForm/forms/CommentForm/index.tsx deleted file mode 100644 index 80f02c775e5..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/CommentForm/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { FormGroup, SPACING } from '@opentrons/components' -import { TextField } from '../../fields' -import type { StepFormProps } from '../../types' - -import styles from '../../StepEditForm.module.css' - -export function CommentForm(props: StepFormProps): JSX.Element { - const { t } = useTranslation(['tooltip', 'application', 'form']) - - const { propsForFields } = props - - return ( -
    -
    - - {t('application:stepType.comment')} - -
    -
    - - - -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/HeaterShakerForm/index.tsx b/protocol-designer/src/components/StepEditForm/forms/HeaterShakerForm/index.tsx deleted file mode 100644 index 1c851f3608b..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/HeaterShakerForm/index.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import cx from 'classnames' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { - FormGroup, - Flex, - SPACING, - useHoverTooltip, - LegacyTooltip, - TOOLTIP_BOTTOM, -} from '@opentrons/components' -import { getHeaterShakerLabwareOptions } from '../../../../ui/modules/selectors' -import { - ToggleRowField, - TextField, - CheckboxRowField, - StepFormDropdown, -} from '../../fields' -import styles from '../../StepEditForm.module.css' - -import type { StepFormProps } from '../../types' - -export const HeaterShakerForm = (props: StepFormProps): JSX.Element | null => { - const moduleLabwareOptions = useSelector(getHeaterShakerLabwareOptions) - const [targetLatchProps, tooltipLatchProps] = useHoverTooltip({ - placement: TOOLTIP_BOTTOM, - }) - const { t } = useTranslation(['application', 'form']) - const { propsForFields, formData } = props - - return ( -
    - - {t('stepType.heaterShaker')} - - - - - -
    - -
    - - {formData.setHeaterShakerTemperature === true && ( - - )} -
    -
    - - -
    - - {formData.setShake === true && ( - - )} -
    -
    - - - - - -
    - - - - - - - - {propsForFields.latchOpen.disabled && ( - - {propsForFields.latchOpen.tooltipContent} - - )} - -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/MagnetForm.tsx b/protocol-designer/src/components/StepEditForm/forms/MagnetForm.tsx deleted file mode 100644 index 523e6c5f3f5..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/MagnetForm.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { FormGroup } from '@opentrons/components' -import { MAGNETIC_MODULE_V1 } from '@opentrons/shared-data' -import { selectors as uiModuleSelectors } from '../../../ui/modules' -import { getModuleEntities } from '../../../step-forms/selectors' -import { - MAX_ENGAGE_HEIGHT_V1, - MAX_ENGAGE_HEIGHT_V2, - MIN_ENGAGE_HEIGHT_V1, - MIN_ENGAGE_HEIGHT_V2, -} from '../../../constants' -import { TextField, RadioGroupField } from '../fields' -import type { StepFormProps } from '../types' - -import styles from '../StepEditForm.module.css' - -export function MagnetForm(props: StepFormProps): JSX.Element { - const moduleLabwareOptions = useSelector( - uiModuleSelectors.getMagneticLabwareOptions - ) - const moduleEntities = useSelector(getModuleEntities) - const { t } = useTranslation(['application', 'form']) - const { propsForFields, formData } = props - const { magnetAction, moduleId } = formData - - const moduleModel = moduleEntities[moduleId].model - const moduleOption: string | null | undefined = moduleLabwareOptions[0] - ? moduleLabwareOptions[0].name - : 'No magnetic module' - - const defaultEngageHeight = useSelector( - uiModuleSelectors.getMagnetLabwareEngageHeight - ) - const engageHeightMinMax = - moduleModel === MAGNETIC_MODULE_V1 - ? t('magnet_height_caption', { - low: MIN_ENGAGE_HEIGHT_V1, - high: MAX_ENGAGE_HEIGHT_V1, - }) - : t('magnet_height_caption', { - low: MIN_ENGAGE_HEIGHT_V2, - high: MAX_ENGAGE_HEIGHT_V2, - }) - const engageHeightDefault = - defaultEngageHeight != null - ? t('magnet_recommended', { default: defaultEngageHeight }) - : '' - const engageHeightCaption = `${engageHeightMinMax} ${engageHeightDefault}` - - return ( -
    -
    - - {t('stepType.magnet')} - -
    - -
    - -

    {moduleOption}

    -
    - - - - - {magnetAction === 'engage' && ( - - - - )} -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx b/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx deleted file mode 100644 index 492ed633423..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx +++ /dev/null @@ -1,298 +0,0 @@ -import { useState } from 'react' -import cx from 'classnames' -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { FormGroup } from '@opentrons/components' -import { - getLabwareEntities, - getPipetteEntities, -} from '../../../step-forms/selectors' -import { getEnableReturnTip } from '../../../feature-flags/selectors' -import { - BlowoutLocationField, - BlowoutZOffsetField, - ChangeTipField, - CheckboxRowField, - Configure96ChannelField, - DelayFields, - DropTipField, - FlowRateField, - LabwareField, - PickUpTipField, - PipetteField, - TextField, - TipPositionField, - TiprackField, - TipWellSelectionField, - VolumeField, - WellOrderField, - WellSelectionField, -} from '../fields' -import { - getBlowoutLocationOptionsForForm, - getLabwareFieldForPositioningField, -} from '../utils' -import { AspDispSection } from './AspDispSection' - -import type { StepFormProps } from '../types' - -import styles from '../StepEditForm.module.css' - -export const MixForm = (props: StepFormProps): JSX.Element => { - const [collapsed, setCollapsed] = useState(true) - const pipettes = useSelector(getPipetteEntities) - const enableReturnTip = useSelector(getEnableReturnTip) - const labwares = useSelector(getLabwareEntities) - const { t } = useTranslation(['application', 'form']) - - const { propsForFields, formData } = props - const is96Channel = - propsForFields.pipette.value != null && - pipettes[String(propsForFields.pipette.value)].name === 'p1000_96' - const userSelectedPickUpTipLocation = - labwares[String(propsForFields.pickUpTip_location.value)] != null - const userSelectedDropTipLocation = - labwares[String(propsForFields.dropTip_location.value)] != null - - const toggleCollapsed = (): void => { - setCollapsed(prevCollapsed => !prevCollapsed) - } - return ( -
    -
    - {t('stepType.mix')} -
    -
    - - - {is96Channel ? ( - - ) : null} - - - - -
    -
    - - - - -
    -
    - -
    - - -
    - - {!collapsed && ( -
    -
    -
    - - - -
    - -
    - -
    -
    - -
    -
    - - - - - - - - - - -
    -
    -
    - )} - -
    - - {t('form:step_edit_form.section.sterility')} - - - {t('form:step_edit_form.section.dropTip')} - -
    -
    -
    - -
    -
    -
    - - {enableReturnTip - ? t('form:step_edit_form.section.pickUpAndDrop') - : t('form:step_edit_form.section.dropTip')} - -
    -
    - {enableReturnTip ? ( - <> - - {userSelectedPickUpTipLocation ? ( - - ) : null} - - ) : null} - - {userSelectedDropTipLocation ? ( - - ) : null} -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/MoveLabwareForm/index.tsx b/protocol-designer/src/components/StepEditForm/forms/MoveLabwareForm/index.tsx deleted file mode 100644 index 87811db0087..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/MoveLabwareForm/index.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { - ALIGN_CENTER, - Flex, - FormGroup, - SPACING, - LegacyTooltip, - TOOLTIP_BOTTOM, - TOOLTIP_FIXED, - useHoverTooltip, -} from '@opentrons/components' -import { - LabwareLocationField, - CheckboxRowField, - MoveLabwareField, -} from '../../fields' -import styles from '../../StepEditForm.module.css' -import { FLEX_ROBOT_TYPE } from '@opentrons/shared-data' -import { getRobotType } from '../../../../file-data/selectors' -import { - getAdditionalEquipment, - getCurrentFormCanBeSaved, -} from '../../../../step-forms/selectors' -import type { StepFormProps } from '../../types' - -export const MoveLabwareForm = (props: StepFormProps): JSX.Element => { - const { propsForFields } = props - const { t } = useTranslation(['application', 'form', 'tooltip']) - const robotType = useSelector(getRobotType) - const canSave = useSelector(getCurrentFormCanBeSaved) - const additionalEquipment = useSelector(getAdditionalEquipment) - const isGripperAttached = Object.values(additionalEquipment).some( - equipment => equipment?.name === 'gripper' - ) - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: TOOLTIP_BOTTOM, - strategy: TOOLTIP_FIXED, - }) - return ( -
    -
    - - {t('stepType.moveLabware')} - -
    -
    - - - - {robotType === FLEX_ROBOT_TYPE ? ( - - {!isGripperAttached ? ( - - {t('tooltip:step_fields.moveLabware.disabled.gripper_not_used')} - - ) : null} -
    - - - -
    -
    - ) : null} -
    -
    - - - -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestFields.tsx b/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestFields.tsx deleted file mode 100644 index a47f47eb7d4..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestFields.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import { useSelector } from 'react-redux' -import { useTranslation } from 'react-i18next' -import { getAdditionalEquipmentEntities } from '../../../../step-forms/selectors' - -import { - BlowoutLocationField, - CheckboxRowField, - DelayFields, - FlowRateField, - TextField, - TipPositionField, - WellOrderField, - BlowoutZOffsetField, -} from '../../fields' -import { MixFields } from '../../fields/MixFields' -import { - getBlowoutLocationOptionsForForm, - getLabwareFieldForPositioningField, -} from '../../utils' -import styles from '../../StepEditForm.module.css' - -import type { FormData } from '../../../../form-types' -import type { StepFieldName } from '../../../../steplist/fieldLevel' -import type { FieldPropsByName } from '../../types' - -interface SourceDestFieldsProps { - className?: string | null - prefix: 'aspirate' | 'dispense' - propsForFields: FieldPropsByName - formData: FormData -} - -const makeAddFieldNamePrefix = (prefix: string) => ( - fieldName: string -): StepFieldName => `${prefix}_${fieldName}` - -export const SourceDestFields = (props: SourceDestFieldsProps): JSX.Element => { - const { className, formData, prefix, propsForFields } = props - const { t } = useTranslation(['form', 'application']) - - const additionalEquipmentEntities = useSelector( - getAdditionalEquipmentEntities - ) - const isWasteChuteSelected = - propsForFields.dispense_labware?.value != null - ? additionalEquipmentEntities[ - String(propsForFields.dispense_labware.value) - ]?.name === 'wasteChute' - : false - const isTrashBinSelected = - propsForFields.dispense_labware?.value != null - ? additionalEquipmentEntities[ - String(propsForFields.dispense_labware.value) - ]?.name === 'trashBin' - : false - - const addFieldNamePrefix = makeAddFieldNamePrefix(prefix) - const getDelayFields = (): JSX.Element => ( - - ) - - const hideWellOrderField = - prefix === 'dispense' && (isWasteChuteSelected || isTrashBinSelected) - - const getMixFields = (): JSX.Element => ( - - ) - - return ( - // @ts-expect-error(sa, 2021-7-2): className might be null -
    -
    - - - {hideWellOrderField ? null : ( - - )} -
    - -
    - {prefix === 'aspirate' && ( - <> - - {getMixFields()} - {getDelayFields()} - - )} - {prefix === 'dispense' && ( - <> - {getDelayFields()} - {getMixFields()} - - )} - - {prefix === 'dispense' && ( - - - - - - )} - - - - - - - - -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx b/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx deleted file mode 100644 index 7e1aab6c5ff..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/SourceDestHeaders.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' -import { FormGroup } from '@opentrons/components' -import { getAdditionalEquipmentEntities } from '../../../../step-forms/selectors' -import { LabwareField, WellSelectionField } from '../../fields' -import { AspDispSection } from '../AspDispSection' -import type { StepFieldName } from '../../../../steplist/fieldLevel' -import type { FormData } from '../../../../form-types' -import type { FieldPropsByName } from '../../types' - -import styles from '../../StepEditForm.module.css' - -interface Props { - className?: string | null - collapsed?: boolean | null - formData: FormData - prefix: 'aspirate' | 'dispense' - propsForFields: FieldPropsByName - toggleCollapsed: () => void -} - -const makeAddFieldNamePrefix = (prefix: string) => ( - fieldName: string -): StepFieldName => `${prefix}_${fieldName}` - -export const SourceDestHeaders = (props: Props): JSX.Element => { - const { - className, - collapsed, - toggleCollapsed, - prefix, - propsForFields, - formData, - } = props - const { t } = useTranslation('form') - const addFieldNamePrefix = makeAddFieldNamePrefix(prefix) - const additionalEquipmentEntities = useSelector( - getAdditionalEquipmentEntities - ) - const labwareLabel = t(`step_edit_form.labwareLabel.${prefix}`) - const trashOrLabwareId = formData[addFieldNamePrefix('labware')] - const isDisposalLocation = - additionalEquipmentEntities[trashOrLabwareId]?.name === 'wasteChute' || - additionalEquipmentEntities[trashOrLabwareId]?.name === 'trashBin' - - return ( - -
    - - - - {isDisposalLocation ? null : ( - - )} -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/index.tsx b/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/index.tsx deleted file mode 100644 index 959d5b4c99f..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/MoveLiquidForm/index.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import { useState } from 'react' -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { useSelector } from 'react-redux' -import { - getLabwareEntities, - getPipetteEntities, -} from '../../../../step-forms/selectors' -import { getEnableReturnTip } from '../../../../feature-flags/selectors' -import { - VolumeField, - PipetteField, - ChangeTipField, - DisposalVolumeField, - PathField, - TiprackField, - DropTipField, - PickUpTipField, - TipWellSelectionField, - Configure96ChannelField, -} from '../../fields' -import { SourceDestFields } from './SourceDestFields' -import { SourceDestHeaders } from './SourceDestHeaders' -import type { StepFormProps } from '../../types' - -import styles from '../../StepEditForm.module.css' - -// TODO: BC 2019-01-25 instead of passing path from here, put it in connect fields where needed -// or question if it even needs path - -export const MoveLiquidForm = (props: StepFormProps): JSX.Element => { - const { propsForFields, formData } = props - const { stepType, path } = formData - const { t } = useTranslation(['application', 'form']) - const [collapsed, _setCollapsed] = useState(true) - const enableReturnTip = useSelector(getEnableReturnTip) - const labwares = useSelector(getLabwareEntities) - const pipettes = useSelector(getPipetteEntities) - const toggleCollapsed = (): void => { - _setCollapsed(!collapsed) - } - const userSelectedPickUpTipLocation = - labwares[String(propsForFields.pickUpTip_location.value)] != null - const userSelectedDropTipLocation = - labwares[String(propsForFields.dropTip_location.value)] != null - - const is96Channel = - propsForFields.pipette.value != null && - pipettes[String(propsForFields.pipette.value)].name === 'p1000_96' - - return ( -
    -
    - - {t('stepType.moveLiquid')} - -
    -
    - - - {is96Channel ? ( - - ) : null} - -
    - -
    - - -
    - - {!collapsed && ( -
    - - -
    - )} - -
    - - {t('form:step_edit_form.section.sterility&motion')} - -
    -
    -
    - - -
    -
    - {path === 'multiDispense' && ( - - )} -
    -
    -
    - - {enableReturnTip - ? t('form:step_edit_form.section.pickUpAndDrop') - : t('form:step_edit_form.section.dropTip')} - -
    -
    - {enableReturnTip ? ( - <> - - {userSelectedPickUpTipLocation ? ( - - ) : null} - - ) : null} - - {userSelectedDropTipLocation && enableReturnTip ? ( - - ) : null} -
    -
    - ) -} diff --git a/protocol-designer/src/components/StepEditForm/forms/PauseForm.tsx b/protocol-designer/src/components/StepEditForm/forms/PauseForm.tsx deleted file mode 100644 index 01fb333f9b2..00000000000 --- a/protocol-designer/src/components/StepEditForm/forms/PauseForm.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import type * as React from 'react' -import { useTranslation } from 'react-i18next' -import cx from 'classnames' -import { useSelector } from 'react-redux' -import { - FormGroup, - useHoverTooltip, - LegacyTooltip, - TOOLTIP_BOTTOM, - TOOLTIP_FIXED, -} from '@opentrons/components' - -import { selectors as uiModuleSelectors } from '../../../ui/modules' -import { - PAUSE_UNTIL_RESUME, - PAUSE_UNTIL_TIME, - PAUSE_UNTIL_TEMP, -} from '../../../constants' -import { TextField, RadioGroupField, StepFormDropdown } from '../fields' -import { getSingleSelectDisabledTooltip } from '../utils' -import styles from '../StepEditForm.module.css' - -import type { StepFormProps } from '../types' - -export const PauseForm = (props: StepFormProps): JSX.Element => { - const tempModuleLabwareOptions = useSelector( - uiModuleSelectors.getTemperatureLabwareOptions - ) - const { t } = useTranslation(['tooltip', 'application', 'form']) - - const heaterShakerModuleLabwareOptions = useSelector( - uiModuleSelectors.getHeaterShakerLabwareOptions - ) - - const moduleLabwareOptions = [ - ...tempModuleLabwareOptions, - ...heaterShakerModuleLabwareOptions, - ] - - const pauseUntilTempEnabled = useSelector( - uiModuleSelectors.getTempModuleIsOnDeck - ) - - const pauseUntilHeaterShakerEnabled = useSelector( - uiModuleSelectors.getHeaterShakerModuleIsOnDeck - ) - - const pauseUntilModuleEnabled = - pauseUntilTempEnabled || pauseUntilHeaterShakerEnabled - - const [targetProps, tooltipProps] = useHoverTooltip({ - placement: TOOLTIP_BOTTOM, - strategy: TOOLTIP_FIXED, - }) - - const { propsForFields } = props - const { pauseAction } = props.formData - - return ( -
    -
    - - {t('application:stepType.pause')} - -
    - -
    -
    -
    - -
    -
    - -
    - {pauseAction === PAUSE_UNTIL_TIME && ( -
    - - - -
    - )} - - {pauseUntilModuleEnabled ? null : ( - - {getSingleSelectDisabledTooltip( - 'wait_until_temp', - 'pauseAction', - t - )} - - )} -
    -
    - -
    - {pauseAction === PAUSE_UNTIL_TEMP && ( -
    - - - - - - -
    - )} -
    -
    -
    - {pauseAction === PAUSE_UNTIL_TEMP ? null : ( -
    - {/* TODO: Ian 2019-03-25 consider making this a component eg `TextAreaField.js` if used anywhere else */} - -

    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 z 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