<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <!-- # public interface preferences -->
    <preference for="Temando\Shipping\Api\Data\Checkout\AddressInterface"
                type="Temando\Shipping\Model\Checkout\Address" />
    <preference for="Temando\Shipping\Api\Data\Delivery\CollectionPointSearchRequestInterface"
                type="Temando\Shipping\Model\Delivery\CollectionPointSearchRequest" />
    <preference for="Temando\Shipping\Api\Data\Delivery\CollectionPointSearchResultInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\CollectionPointSearchResult" />
    <preference for="Temando\Shipping\Api\Data\Delivery\OrderCollectionPointInterface"
                type="Temando\Shipping\Model\Delivery\OrderCollectionPoint" />
    <preference for="Temando\Shipping\Api\Data\Delivery\OrderPickupLocationInterface"
                type="Temando\Shipping\Model\Delivery\OrderPickupLocation" />
    <preference for="Temando\Shipping\Api\Data\Delivery\PickupLocationSearchRequestInterface"
                type="Temando\Shipping\Model\Delivery\PickupLocationSearchRequest" />
    <preference for="Temando\Shipping\Api\Data\Delivery\PickupLocationSearchResultInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\PickupLocationSearchResult" />
    <preference for="Temando\Shipping\Api\Data\Delivery\QuoteCollectionPointInterface"
                type="Temando\Shipping\Model\Delivery\QuoteCollectionPoint" />
    <preference for="Temando\Shipping\Api\Data\Delivery\QuotePickupLocationInterface"
                type="Temando\Shipping\Model\Delivery\QuotePickupLocation" />
    <preference for="Temando\Shipping\Api\Data\Order\OrderReferenceInterface"
                type="Temando\Shipping\Model\Order\OrderReference" />
    <preference for="Temando\Shipping\Api\Data\Order\ShippingExperienceInterface"
                type="Temando\Shipping\Model\Order\ShippingExperience" />
    <preference for="Temando\Shipping\Api\Data\Shipment\ShipmentReferenceInterface"
                type="Temando\Shipping\Model\Shipment\ShipmentReference" />

    <preference for="Temando\Shipping\Api\Checkout\CartCollectionPointManagementInterface"
                type="Temando\Shipping\Model\Checkout\Delivery\CartCollectionPointManagement" />
    <preference for="Temando\Shipping\Api\Checkout\CartPickupLocationManagementInterface"
                type="Temando\Shipping\Model\Checkout\Delivery\CartPickupLocationManagement" />
    <preference for="Temando\Shipping\Api\Checkout\GuestCartCollectionPointManagementInterface"
                type="Temando\Shipping\Model\Checkout\Delivery\GuestCartCollectionPointManagement" />
    <preference for="Temando\Shipping\Api\Checkout\GuestCartPickupLocationManagementInterface"
                type="Temando\Shipping\Model\Checkout\Delivery\GuestCartPickupLocationManagement" />

    <preference for="Temando\Shipping\Api\Quote\ShippingMethodManagementInterface"
                type="Temando\Shipping\Model\Quote\ShippingMethodManagement" />
    <preference for="Temando\Shipping\Api\Quote\CartCheckoutFieldManagementInterface"
                type="Temando\Shipping\Model\Quote\CartCheckoutFieldManagement" />
    <preference for="Temando\Shipping\Api\Quote\GuestCartCheckoutFieldManagementInterface"
                type="Temando\Shipping\Model\Quote\GuestCartCheckoutFieldManagement" />
    <preference for="Temando\Shipping\Api\Quote\CartDeliveryOptionManagementInterface"
                type="Temando\Shipping\Model\Quote\CartDeliveryOptionManagement" />
    <preference for="Temando\Shipping\Api\Quote\GuestCartDeliveryOptionManagementInterface"
                type="Temando\Shipping\Model\Quote\GuestCartDeliveryOptionManagement" />
    <preference for="Temando\Shipping\Api\Rma\RmaShipmentManagementInterface"
                type="Temando\Shipping\Model\Rma\RmaShipmentManagement" />
    <preference for="Temando\Shipping\Api\Shipment\ShipmentStatusInterface"
                type="Temando\Shipping\Model\Shipment\ShipmentStatus" />

    <preference for="Temando\Shipping\Model\ResourceModel\Repository\AttributeMappingProductRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Attribute\Mapping\ProductRepository" />
    <preference for="Temando\Shipping\Api\Attribute\Mapping\ProductManagementInterface"
                type="Temando\Shipping\Model\Attribute\Mapping\ProductManagement" />
    <preference for="Temando\Shipping\Model\Attribute\Mapping\ProductInterface"
                type="Temando\Shipping\Model\Attribute\Mapping\Product" />

    <!-- # internal data interface preferences -->
    <!-- ## webservice request types -->
    <preference for="Temando\Shipping\Rest\Request\FulfillmentRequestInterface"
                type="Temando\Shipping\Rest\Request\FulfillmentRequest"/>
    <preference for="Temando\Shipping\Rest\Request\ItemRequestInterface"
                type="Temando\Shipping\Rest\Request\ItemRequest"/>
    <preference for="Temando\Shipping\Rest\Request\ListRequestInterface"
                type="Temando\Shipping\Rest\Request\ListRequest"/>
    <preference for="Temando\Shipping\Rest\Request\RequestHeadersInterface"
                type="\Temando\Shipping\Rest\Request\RequestHeaders"/>
    <preference for="Temando\Shipping\Rest\Request\StreamCreateRequestInterface"
                type="Temando\Shipping\Rest\Request\StreamCreateRequest"/>
    <preference for="Temando\Shipping\Rest\Request\Type\FulfillmentRequestTypeInterface"
                type="Temando\Shipping\Rest\Request\Type\FulfillmentRequestType"/>
    <preference for="Temando\Shipping\Rest\Request\Type\OrderRequestTypeInterface"
                type="Temando\Shipping\Rest\Request\Type\OrderRequestType"/>
    <preference for="Temando\Shipping\Rest\Request\UpdateRequestInterface"
                type="Temando\Shipping\Rest\Request\UpdateRequest" />

    <!-- ## account data return types -->
    <preference for="Temando\Shipping\Model\ExperienceInterface"
                type="Temando\Shipping\Model\Experience" />
    <preference for="Temando\Shipping\Model\LocationInterface"
                type="Temando\Shipping\Model\Location" />
    <preference for="Temando\Shipping\Model\PackagingInterface"
                type="Temando\Shipping\Model\Packaging" />

    <!-- ## shipment/dispatch/return shipment documentation -->
    <preference for="Temando\Shipping\Model\DocumentationInterface"
                type="Temando\Shipping\Model\Documentation" />

    <!-- ## shipment entity and related (sub-)types -->
    <preference for="Temando\Shipping\Model\ShipmentInterface"
                type="Temando\Shipping\Model\Shipment" />
    <preference for="Temando\Shipping\Model\Shipment\CapabilityInterface"
                type="Temando\Shipping\Model\Shipment\Capability" />
    <preference for="Temando\Shipping\Model\Shipment\ExportDeclarationInterface"
                type="Temando\Shipping\Model\Shipment\ExportDeclaration" />
    <preference for="Temando\Shipping\Model\Shipment\FulfillmentInterface"
                type="Temando\Shipping\Model\Shipment\Fulfillment" />
    <preference for="Temando\Shipping\Model\Shipment\LocationInterface"
                type="Temando\Shipping\Model\Shipment\Location" />
    <preference for="Temando\Shipping\Model\Shipment\PackageInterface"
                type="Temando\Shipping\Model\Shipment\Package" />
    <preference for="Temando\Shipping\Model\Shipment\PackageItemInterface"
                type="Temando\Shipping\Model\Shipment\PackageItem" />
    <preference for="Temando\Shipping\Model\Shipment\ShipmentErrorInterface"
                type="Temando\Shipping\Model\Shipment\ShipmentError" />
    <preference for="Temando\Shipping\Model\Shipment\ShipmentItemInterface"
                type="Temando\Shipping\Model\Shipment\ShipmentItem" />
    <preference for="Temando\Shipping\Model\Shipment\ShipmentSummaryInterface"
                type="Temando\Shipping\Model\Shipment\ShipmentSummary" />

    <!-- ## dispatch entity and related (sub-)types -->
    <preference for="Temando\Shipping\Model\DispatchInterface"
                type="Temando\Shipping\Model\Dispatch" />
    <preference for="Temando\Shipping\Model\Dispatch\ErrorInterface"
                type="Temando\Shipping\Model\Dispatch\Error" />
    <preference for="Temando\Shipping\Model\Dispatch\PickupChargeInterface"
                type="Temando\Shipping\Model\Dispatch\PickupCharge" />
    <preference for="Temando\Shipping\Model\Dispatch\ShipmentInterface"
                type="Temando\Shipping\Model\Dispatch\Shipment" />

    <!-- ## batch entity and related (sub-)types -->
    <preference for="Temando\Shipping\Model\BatchInterface"
                type="Temando\Shipping\Model\Batch" />

	<!-- ## pickup entity -->
    <preference for="Temando\Shipping\Model\PickupInterface"
                type="Temando\Shipping\Model\Pickup" />

    <!-- ## order entity and related (sub-)types -->
    <preference for="Temando\Shipping\Model\OrderInterface"
                type="Temando\Shipping\Model\Order" />
    <preference for="Temando\Shipping\Model\Order\OrderBillingInterface"
                type="Temando\Shipping\Model\Order\OrderBilling" />
    <preference for="Temando\Shipping\Model\Order\OrderItemInterface"
                type="Temando\Shipping\Model\Order\OrderItem" />
    <preference for="Temando\Shipping\Model\Order\OrderRecipientInterface"
                type="Temando\Shipping\Model\Order\OrderRecipient" />
    <preference for="Temando\Shipping\Model\Order\CustomAttributesInterface"
                type="Temando\Shipping\Model\Order\CustomAttributes" />

    <!-- ## dynamic checkout fields -->
    <preference for="Temando\Shipping\Model\Order\CheckoutFieldContainerInterface"
                type="Temando\Shipping\Model\Order\CheckoutFieldContainer" />
    <preference for="Temando\Shipping\Model\Checkout\Attribute\CheckoutFieldInterface"
                type="Temando\Shipping\Model\Checkout\Attribute\CheckoutField" />

    <!-- ## stream synchronization -->
    <preference for="Temando\Shipping\Model\StreamEventInterface"
                type="Temando\Shipping\Model\StreamEvent" />

    <!-- # internal service interface preferences -->
    <!-- ## repositories -->
    <preference for="Temando\Shipping\Model\ResourceModel\EventStream\EventRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\EventStream\EventRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\EventStream\StreamRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\EventStream\StreamRepository"/>
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\AddressRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Checkout\AddressRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\CollectionPointSearchRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\CollectionPointSearchRequestRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\BatchRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Batch\BatchRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\DispatchRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Dispatch\DispatchRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\ExperienceRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Experience\ExperienceRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\LocationRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Location\LocationRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\OrderAttributeRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Order\OrderAttributeRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\OrderCollectionPointRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\OrderCollectionPointRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\OrderRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Order\OrderRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\PackagingRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Packaging\PackagingRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\PickupRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Pickup\PickupRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\QuoteCollectionPointRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\QuoteCollectionPointRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\RmaShipmentRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Rma\RmaShipmentRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\ShipmentReferenceRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Shipment\ShipmentReferenceRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\ShipmentRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Shipment\ShipmentRepository" />

    <preference for="Temando\Shipping\Model\ResourceModel\Repository\PickupLocationSearchRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\PickupLocationSearchRequestRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\QuotePickupLocationRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\QuotePickupLocationRepository" />
    <preference for="Temando\Shipping\Model\ResourceModel\Repository\OrderPickupLocationRepositoryInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\OrderPickupLocationRepository" />

    <!-- ## webservice authentication -->
    <preference for="Temando\Shipping\Rest\AuthenticationInterface"
                type="Temando\Shipping\Rest\Authentication"/>

    <!-- ## webservice adapters / clients -->
    <preference for="Temando\Shipping\Rest\Adapter\AuthenticationApiInterface"
                type="Temando\Shipping\Rest\AuthAdapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\CompletionApiInterface"
                type="Temando\Shipping\Rest\Adapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\BatchApiInterface"
                type="Temando\Shipping\Rest\ShipmentAdapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\ContainerApiInterface"
                type="Temando\Shipping\Rest\Adapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\EventStreamApiInterface"
                type="Temando\Shipping\Rest\Adapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\ExperienceApiInterface"
                type="Temando\Shipping\Rest\ExperienceAdapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\FulfillmentApiInterface"
                type="Temando\Shipping\Rest\FulfillmentAdapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\LocationApiInterface"
                type="Temando\Shipping\Rest\Adapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\OrderApiInterface"
                type="Temando\Shipping\Rest\OrderAdapter"/>
    <preference for="Temando\Shipping\Rest\Adapter\ShipmentApiInterface"
                type="Temando\Shipping\Rest\ShipmentAdapter"/>
    <preference for="Temando\Shipping\Rest\RestClientInterface"
                type="Temando\Shipping\Rest\RestClient"/>
    <preference for="Temando\Shipping\Webservice\HttpClientInterface"
                type="Temando\Shipping\Webservice\HttpClient" />

    <!-- ## webservice response deserialization -->
    <preference for="Temando\Shipping\Rest\SchemaMapper\JsonApi\ResourceContainerInterface"
                type="Temando\Shipping\Rest\SchemaMapper\JsonApi\ResourceContainer"/>
    <preference for="Temando\Shipping\Rest\SchemaMapper\JsonApi\TypeMapInterface"
                type="Temando\Shipping\Rest\SchemaMapper\JsonApi\TypeMap"/>
    <preference for="Temando\Shipping\Rest\SchemaMapper\Reflection\ReflectionInterface"
                type="Temando\Shipping\Rest\SchemaMapper\Reflection"/>
    <preference for="Temando\Shipping\Rest\SchemaMapper\Reflection\PropertyHandlerInterface"
                type="Temando\Shipping\Rest\SchemaMapper\Reflection\PropertyHandler"/>
    <preference for="Temando\Shipping\Rest\SchemaMapper\Reflection\TypeHandlerInterface"
                type="Temando\Shipping\Rest\SchemaMapper\TypeHandler"/>
    <preference for="Temando\Shipping\Rest\SchemaMapper\ParserInterface"
                type="Temando\Shipping\Rest\SchemaMapper\Json"/>

    <!-- ## others -->
    <preference for="Temando\Shipping\Model\BatchProviderInterface"
                type="Temando\Shipping\Model\BatchProvider" />
    <preference for="Temando\Shipping\Model\Config\ModuleConfigInterface"
                type="Temando\Shipping\Model\Config\ModuleConfig"/>
    <preference for="Temando\Shipping\Model\DispatchProviderInterface"
                type="Temando\Shipping\Model\DispatchProvider" />
    <preference for="Temando\Shipping\Model\Order\AutoProcessing\AutoFulfillInterface"
                type="Temando\Shipping\Model\Order\AutoProcessing\AutoFulfill" />
    <preference for="Temando\Shipping\Model\Shipment\ShipmentProviderInterface"
                type="Temando\Shipping\Model\Shipment\ShipmentProvider" />
    <preference for="Temando\Shipping\Webservice\Config\WsConfigInterface"
                type="Temando\Shipping\Model\Config\ModuleConfig"/>
    <preference for="Temando\Shipping\Webservice\Logger\LogAnonymizerInterface"
                type="Temando\Shipping\Rest\Logger\Anonymizer"/>
    <preference for="Temando\Shipping\Model\PickupProviderInterface"
                type="Temando\Shipping\Model\PickupProvider" />

    <!-- # virtual types -->
    <!-- ## third party library adapters -->
    <virtualType name="Temando\Shipping\Http\VirtualClient" type="Zend\Http\Client" shared="false" />

    <!-- ## other virtual types -->
    <virtualType name="Temando\Shipping\Api\SearchCriteria\CollectionProcessor\ShipmentReferenceFilterProcessor" type="Magento\Framework\Api\SearchCriteria\CollectionProcessor\FilterProcessor">
        <arguments>
            <argument name="fieldMapping" xsi:type="array">
                <item name="id" xsi:type="string">r.entity_id</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Api\SearchCriteria\ShipmentReferenceCollectionProcessor" type="Magento\Framework\Api\SearchCriteria\CollectionProcessor">
        <arguments>
            <argument name="processors" xsi:type="array">
                <item name="filters" xsi:type="object">Temando\Shipping\Api\SearchCriteria\CollectionProcessor\ShipmentReferenceFilterProcessor</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Webservice\Processor\CollectRatesProcessorPool" type="Temando\Shipping\Webservice\Processor\OrderQualificationProcessorPool">
        <arguments>
            <argument name="ratesProcessors" xsi:type="array">
                <item name="tsDefaultRatesProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\RatesProcessor</item>
                <item name="tsCollectionPointSearchProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\CollectionPointSearchProcessor</item>
                <item name="tsCollectionPointRatesProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\CollectionPointRatesProcessor</item>
                <item name="tsPickupLocationSearchProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\PickupLocationSearchProcessor</item>
                <item name="tsPickupLocationRatesProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\PickupLocationRatesProcessor</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Webservice\Processor\ManifestOrderProcessorPool" type="Temando\Shipping\Webservice\Processor\OrderOperationProcessorPool">
        <arguments>
            <argument name="saveProcessors" xsi:type="array">
                <item name="tsAutoFulfillProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\AutoFulfillProcessor</item>
                <item name="tsCollectionPointProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\CollectionPointManifestProcessor</item>
                <item name="tsPickupLocationProcessor" xsi:type="object">Temando\Shipping\Webservice\Processor\OrderOperation\PickupLocationManifestProcessor</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Virtual\CheckoutTableNameIterator" type="Magento\Framework\ForeignKey\Migration\TableNameArrayIterator">
        <arguments>
            <argument name="tableNames" xsi:type="array">
                <item name="temando_checkout_address" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_CHECKOUT_ADDRESS</item>
                <item name="temando_collection_point_search" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_COLLECTION_POINT_SEARCH</item>
                <item name="temando_pickup_location_search" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_PICKUP_LOCATION_SEARCH</item>
                <item name="temando_quote_collection_point" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_QUOTE_COLLECTION_POINT</item>
                <item name="temando_quote_pickup_location" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_QUOTE_PICKUP_LOCATION</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Virtual\SalesTableNameIterator" type="Magento\Framework\ForeignKey\Migration\TableNameArrayIterator">
        <arguments>
            <argument name="tableNames" xsi:type="array">
                <item name="temando_shipment" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_SHIPMENT</item>
                <item name="temando_order" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_ORDER</item>
                <item name="temando_order_collection_point" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_ORDER_COLLECTION_POINT</item>
                <item name="temando_order_pickup_location" xsi:type="const">Temando\Shipping\Setup\SetupSchema::TABLE_ORDER_PICKUP_LOCATION</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Virtual\Rest\Filter\PickupFilterConverter" type="Temando\Shipping\Rest\Filter\FilterConverter">
        <arguments>
            <argument name="entityMapper" xsi:type="object">Temando\Shipping\Rest\EntityMapper\FulfillmentResponseMapper\Proxy</argument>
            <argument name="fieldMap" xsi:type="array">
                <item name="origin_location" xsi:type="const">Temando\Shipping\Model\PickupInterface::LOCATION_ID</item>
            </argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Virtual\Rest\Filter\PackagingFilterConverter" type="Temando\Shipping\Rest\Filter\FilterConverter">
        <arguments>
            <argument name="entityMapper" xsi:type="object">Temando\Shipping\Rest\EntityMapper\PackagingResponseMapper\Proxy</argument>
        </arguments>
    </virtualType>
    <virtualType name="Temando\Shipping\Virtual\Sales\Email\Shipment\CancelSender" type="Magento\Sales\Model\Order\Email\Sender\ShipmentSender">
        <arguments>
            <argument name="identityContainer" xsi:type="object">Temando\Shipping\Model\Sales\Email\Shipment\CancelIdentity</argument>
        </arguments>
    </virtualType>
    <!-- # argument di overrides -->
    <type name="Magento\ScalableCheckout\Console\Command\SplitQuote">
        <arguments>
            <argument name="tableIterators" xsi:type="array">
                <item name="temandoCheckoutTableNameIterator" xsi:type="object">Temando\Shipping\Virtual\CheckoutTableNameIterator</item>
            </argument>
        </arguments>
    </type>
    <type name="Magento\ScalableOms\Console\Command\SplitSales">
        <arguments>
            <argument name="tableIterators" xsi:type="array">
                <item name="temandoSalesTableNameIterator" xsi:type="object">Temando\Shipping\Virtual\SalesTableNameIterator</item>
            </argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\CustomerData\CollectionPoints">
        <arguments>
            <argument name="checkoutSession" xsi:type="object">Magento\Checkout\Model\Session\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\CustomerData\PickupLocations">
        <arguments>
            <argument name="checkoutSession" xsi:type="object">Magento\Checkout\Model\Session\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\Config\ConfigAccessor">
        <arguments>
            <argument name="systemConfigType" xsi:type="object">Magento\Config\App\Config\Type\System</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\Pickup\Email\Sender\PickupSender">
        <arguments>
            <argument name="identityContainer" xsi:type="object">Temando\Shipping\Model\Pickup\Email\Container\PickupIdentity</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Checkout\Address">
        <arguments>
            <argument name="serializer" xsi:type="object">Temando\Shipping\Model\Checkout\Address\ServiceSerializer</argument>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::CHECKOUT_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Delivery\CollectionPointSearchRequest">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::CHECKOUT_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Delivery\OrderCollectionPoint">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::SALES_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Delivery\OrderPickupLocation">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::SALES_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Delivery\PickupLocationSearchRequest">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::CHECKOUT_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Delivery\QuoteCollectionPoint">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::CHECKOUT_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Delivery\QuotePickupLocation">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::CHECKOUT_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Order\OrderReference">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::SALES_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Pickup\PickupRepository">
        <arguments>
            <argument name="filterConverter" xsi:type="object">Temando\Shipping\Virtual\Rest\Filter\PickupFilterConverter</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Packaging\PackagingRepository">
        <arguments>
            <argument name="filterConverter" xsi:type="object">Temando\Shipping\Virtual\Rest\Filter\PackagingFilterConverter</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\ResourceModel\Shipment\ShipmentReference">
        <arguments>
            <argument name="connectionName" xsi:type="const">Temando\Shipping\Setup\SetupSchema::SALES_CONNECTION_NAME</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\Sales\Service\Operation\SendCancelEmail">
        <arguments>
            <argument name="emailSender" xsi:type="object">Temando\Shipping\Virtual\Sales\Email\Shipment\CancelSender</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\Sales\Service\ShipmentOperationPool">
        <arguments>
            <argument name="operations" xsi:type="array">
                <item name="read" xsi:type="array">
                    <item name="updateQtyShipped" xsi:type="object">Temando\Shipping\Model\Sales\Service\Operation\UpdateQtyShipped</item>
                    <item name="updateStatus" xsi:type="object">Temando\Shipping\Model\Sales\Service\Operation\UpdateShipmentStatus</item>
                    <item name="addTrack" xsi:type="object">Temando\Shipping\Model\Sales\Service\Operation\AddShipmentTrack</item>
                </item>
                <item name="cancel" xsi:type="array">
                    <item name="updateQtyShipped" xsi:type="object">Temando\Shipping\Model\Sales\Service\Operation\UpdateQtyShipped</item>
                    <item name="updateStatus" xsi:type="object">Temando\Shipping\Model\Sales\Service\Operation\UpdateShipmentStatus</item>
                    <item name="sendEmail" xsi:type="object">Temando\Shipping\Model\Sales\Service\Operation\SendCancelEmail</item>
                </item>
            </argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Model\Shipping\Carrier">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
            <argument name="shipmentRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\ShipmentRepositoryInterface\Proxy</argument>
            <argument name="shipmentReferenceRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\ShipmentReferenceRepositoryInterface\Proxy</argument>
            <argument name="experienceRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\ExperienceRepositoryInterface\Proxy</argument>
            <argument name="quotingDataInitializer" xsi:type="object">Temando\Shipping\Model\Checkout\RateRequest\QuotingDataInitializer\Proxy</argument>
            <argument name="processorPool" xsi:type="object">Temando\Shipping\Webservice\Processor\CollectRatesProcessorPool</argument>
            <argument name="freeShipping" xsi:type="object">Temando\Shipping\Model\Shipping\RateResult\FreeShipping\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Observer\AddressUpdateObserver">
        <arguments>
            <argument name="orderAttributeRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\OrderAttributeRepositoryInterface\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Observer\CustomerLayout\PrepareMyOrderInfoObserver">
        <arguments>
            <argument name="viewModel" xsi:type="object">Temando\Shipping\ViewModel\Order\Location\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Observer\CustomerLayout\PrepareMyShipmentInfoObserver">
        <arguments>
            <argument name="shipmentProvider" xsi:type="object">Temando\Shipping\Model\Shipment\ShipmentProviderInterface\Proxy</argument>
            <argument name="shipmentReferenceRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\ShipmentReferenceRepositoryInterface\Proxy</argument>
            <argument name="shipmentRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\ShipmentRepositoryInterface\Proxy</argument>
            <argument name="viewModel" xsi:type="object">Temando\Shipping\ViewModel\Shipment\Location\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Observer\PickupEmailObserver">
        <arguments>
            <argument name="pickupViewModel" xsi:type="object">Temando\Shipping\ViewModel\Pickup\PickupView\Proxy</argument>
            <argument name="pickupLocationRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\OrderPickupLocationRepositoryInterface\Proxy</argument>
            <argument name="locationViewModel" xsi:type="object">Temando\Shipping\ViewModel\Order\Location\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Plugin\Quote\Address\ToOrderAddressPlugin">
        <arguments>
            <argument name="addressRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\AddressRepositoryInterface\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Plugin\Sales\OrderManagementPlugin">
        <arguments>
            <argument name="shipmentReferenceRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\ShipmentReferenceRepositoryInterface\Proxy</argument>
            <argument name="shipmentService" xsi:type="object">Temando\Shipping\Model\Sales\Service\ShipmentService\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Plugin\Sales\OrderRepositoryPlugin">
        <arguments>
            <argument name="processorPool" xsi:type="object">Temando\Shipping\Webservice\Processor\ManifestOrderProcessorPool</argument>
            <argument name="orderRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\OrderRepositoryInterface\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Plugin\Sales\Order\ShippingBuilderPlugin">
        <arguments>
            <argument name="orderRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\OrderRepositoryInterface\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Plugin\Shipping\CollectRatesPlugin">
        <arguments>
            <argument name="collectionPointSearchRequestRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\CollectionPointSearchRepositoryInterface\Proxy</argument>
            <argument name="pickupLocationSearchRequestRepository" xsi:type="object">Temando\Shipping\Model\ResourceModel\Repository\PickupLocationSearchRepositoryInterface\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Plugin\Shipping\Order\ShipmentLoaderPlugin">
        <arguments>
            <argument name="shipmentService" xsi:type="object">Temando\Shipping\Model\Sales\Service\ShipmentService\Proxy</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\Adapter">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\AuthAdapter">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\ExperienceAdapter">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\FulfillmentAdapter">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\OrderAdapter">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\ShipmentAdapter">
        <arguments>
            <argument name="logger" xsi:type="object">Temando\Shipping\Webservice\Logger</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\Logger\Anonymizer">
        <arguments>
            <argument name="secrets" xsi:type="array">
                <item name="accountId" xsi:type="string">[hidden]</item>
                <item name="bearerToken" xsi:type="string">[hidden]</item>
                <item name="sessionToken" xsi:type="string">[hidden]</item>
                <item name="organisationName" xsi:type="string">[hidden]</item>
                <item name="personFirstName" xsi:type="string">[hidden]</item>
                <item name="personLastName" xsi:type="string">[hidden]</item>
                <item name="phoneNumber" xsi:type="string">[hidden]</item>
                <item name="email" xsi:type="string">[hidden]</item>
                <item name="lines" xsi:type="string">[hidden]</item>
            </argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Rest\SchemaMapper\JsonApi\TypeMap">
        <arguments>
            <argument name="classes" xsi:type="array">
                <item name="location" xsi:type="string">Temando\Shipping\Rest\Response\DataObject\Location</item>
            </argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Webservice\HttpClient">
        <arguments>
            <argument name="client" xsi:type="object">Temando\Shipping\Http\VirtualClient</argument>
        </arguments>
    </type>
    <type name="Temando\Shipping\Webservice\Logger">
        <arguments>
            <argument name="name" xsi:type="string">temando</argument>
            <argument name="handlers" xsi:type="array">
                <item name="debug" xsi:type="object">Temando\Shipping\Webservice\Logger\Handler\FileSystemHandler</item>
                <item name="error" xsi:type="object">Temando\Shipping\Webservice\Logger\Handler\FileSystemHandler</item>
                <item name="critical" xsi:type="object">Temando\Shipping\Webservice\Logger\Handler\FileSystemHandler</item>
            </argument>
        </arguments>
    </type>

    <!-- # interceptor plugins -->
    <type name="Magento\Framework\View\Asset\Minification">
        <plugin name="preventComponentryMinification" type="Temando\Shipping\Plugin\View\MinificationPlugin" />
    </type>
    <type name="Magento\Quote\Model\Quote\Address\RateCollectorInterface">
        <plugin name="temando-shipping-limitCarrier" type="Temando\Shipping\Plugin\Shipping\CollectRatesPlugin" />
    </type>
    <type name="Magento\Quote\Model\Quote\Address\ToOrderAddress">
        <plugin name="temando-shipping-convertQuoteAddress" type="Temando\Shipping\Plugin\Quote\Address\ToOrderAddressPlugin" />
    </type>
    <type name="Magento\Sales\Api\OrderManagementInterface">
        <plugin name="temando-shipping-cancelShipment" type="Temando\Shipping\Plugin\Sales\OrderManagementPlugin" />
    </type>
    <type name="Magento\Sales\Api\OrderRepositoryInterface">
        <plugin name="temando-shipping-manifestOrder" type="Temando\Shipping\Plugin\Sales\OrderRepositoryPlugin" />
    </type>
    <type name="Magento\Sales\Api\ShipmentRepositoryInterface">
        <plugin name="temando-shipping-loadAndSaveExtensionAttributes" type="Temando\Shipping\Plugin\Sales\Order\ShipmentRepositoryPlugin" />
    </type>
    <type name="Magento\Sales\Model\Order\ShipmentDocumentFactory">
        <plugin name="temando-shipping-shiftShipmentCreationArguments" type="Temando\Shipping\Plugin\Sales\Order\ShipmentDocumentFactoryPlugin" />
    </type>
    <type name="Magento\Sales\Model\Order\ShippingBuilder">
        <plugin name="temando-shipping-extendShippingAssignments" type="Temando\Shipping\Plugin\Sales\Order\ShippingBuilderPlugin" />
    </type>

    <type name="Magento\Multishipping\Block\Checkout\Addresses">
        <plugin name="temando-shipping-appendCheckoutFields" type="Temando\Shipping\Plugin\Multishipping\Checkout\GetAddressesHtmlSelectPlugin" />
    </type>
    <type name="Magento\Multishipping\Model\Checkout\Type\Multishipping">
        <plugin name="temando-shipping-shiftCheckoutFieldSelection" type="Temando\Shipping\Plugin\Multishipping\Checkout\MultishippingSavePlugin" />
    </type>

    <!-- # data provider & entity manager configuration -->
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="sales_order_pickup_listing_data_source" xsi:type="string">Temando\Shipping\Model\ResourceModel\Pickup\Grid\Collection</item>
                <item name="temando_location_listing_data_source" xsi:type="string">Temando\Shipping\Model\ResourceModel\Location\Grid\Collection</item>
                <item name="temando_packaging_listing_data_source" xsi:type="string">Temando\Shipping\Model\ResourceModel\Packaging\Grid\Collection</item>
                <item name="temando_pickup_listing_data_source" xsi:type="string">Temando\Shipping\Model\ResourceModel\Pickup\Grid\Collection</item>
                <item name="temando_rma_added_shipment_listing_data_source" xsi:type="string">Temando\Shipping\Model\ResourceModel\Rma\AddedShipment\Grid\Collection</item>
                <item name="temando_rma_available_shipment_listing_data_source" xsi:type="string">Temando\Shipping\Model\ResourceModel\Rma\AvailableShipment\Grid\Collection</item>
            </argument>
        </arguments>
    </type>

    <!-- # deprecated since 1.3.0 -->
    <preference for="Temando\Shipping\Api\CollectionPoint\CartCollectionPointManagementInterface"
                type="Temando\Shipping\Model\CollectionPoint\CartCollectionPointManagement" />
    <preference for="Temando\Shipping\Api\CollectionPoint\GuestCartCollectionPointManagementInterface"
                type="Temando\Shipping\Model\CollectionPoint\GuestCartCollectionPointManagement" />
    <preference for="Temando\Shipping\Api\Data\CollectionPoint\CollectionPointSearchResultInterface"
                type="Temando\Shipping\Model\ResourceModel\Delivery\CollectionPointSearchResult" />
    <preference for="Temando\Shipping\Api\Data\CollectionPoint\OrderCollectionPointInterface"
                type="Temando\Shipping\Model\CollectionPoint\OrderCollectionPoint" />
    <preference for="Temando\Shipping\Api\Data\CollectionPoint\QuoteCollectionPointInterface"
                type="Temando\Shipping\Model\CollectionPoint\QuoteCollectionPoint" />
    <preference for="Temando\Shipping\Api\Data\CollectionPoint\SearchRequestInterface"
                type="Temando\Shipping\Model\CollectionPoint\SearchRequest" />

    <!-- # deprecated since 1.5.1 -->
    <preference for="Temando\Shipping\Api\Delivery\CartCollectionPointManagementInterface"
                type="Temando\Shipping\Model\Delivery\CartCollectionPointManagement" />
    <preference for="Temando\Shipping\Api\Delivery\GuestCartCollectionPointManagementInterface"
                type="Temando\Shipping\Model\Delivery\GuestCartCollectionPointManagement" />
    <preference for="Temando\Shipping\Api\Delivery\CartPickupLocationManagementInterface"
                type="Temando\Shipping\Model\Delivery\CartPickupLocationManagement" />
    <preference for="Temando\Shipping\Api\Delivery\GuestCartPickupLocationManagementInterface"
                type="Temando\Shipping\Model\Delivery\GuestCartPickupLocationManagement" />
</config>
