#puts "REQUIRING: #{Dir[__FILE__]}"

require 'g4s/tracking/default'
require 'g4s/tracking/defaultDriver'
require 'soap/mapping'

module DefaultMappingRegistry
  EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
  LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
  NsTempuriOrg = "http://tempuri.org/"

  EncodedRegistry.register(
    :class => ShipmentTrackingResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingResponse"),
    :schema_element => [
      ["trackingResponse", ["TrackingResponse", XSD::QName.new(NsTempuriOrg, "TrackingResponse")], [0, 1]],
      ["trackingResponseErrorCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingResponseErrorCode")], [0, 1]],
      ["trackingResponseError", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingResponseError")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => TrackingResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "TrackingResponse"),
    :schema_basetype => XSD::QName.new(NsTempuriOrg, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsTempuriOrg, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsTempuriOrg, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsTempuriOrg, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsTempuriOrg, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsTempuriOrg, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentRequest,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsTempuriOrg, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsTempuriOrg, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsTempuriOrg, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsTempuriOrg, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsTempuriOrg, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ArrayOfCommodityList,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ArrayOfCommodityList"),
    :schema_element => [
      ["commodityList", ["CommodityList[]", XSD::QName.new(NsTempuriOrg, "CommodityList")], [0, nil]]
    ]
  )

  EncodedRegistry.register(
    :class => CommodityList,
    :schema_type => XSD::QName.new(NsTempuriOrg, "CommodityList"),
    :schema_element => [
      ["commodityDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CommodityDescription")], [0, 1]],
      ["harmonizedCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "HarmonizedCode")], [0, 1]],
      ["commodityQuantity", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CommodityQuantity")]],
      ["measurement", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Measurement")], [0, 1]],
      ["customValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CustomValue")]],
      ["commodityWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CommodityWeight")]],
      ["codeCountryOfManufacture", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CodeCountryOfManufacture")], [0, 1]],
      ["nameOnLabel", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "NameOnLabel")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => Address,
    :schema_type => XSD::QName.new(NsTempuriOrg, "G4sTracking::Address"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Company")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]],
      ["email", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Email")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => SchedulePickup,
    :schema_type => XSD::QName.new(NsTempuriOrg, "SchedulePickup"),
    :schema_element => [
      ["contactName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ContactName")], [0, 1]],
      ["companyName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CompanyName")], [0, 1]],
      ["packageLatestAvailableTime", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageLatestAvailableTime")], [0, 1]],
      ["readyTime", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ReadyTime")], [0, 1]],
      ["suiteNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SuiteNumber")], [0, 1]],
      ["floorID", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "FloorID")], [0, 1]],
      ["differentPickupLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "DifferentPickupLocation")]],
      ["packageLocation", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageLocation")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PhoneExtn")], [0, 1]],
      ["pickupDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "PickupDate")]]
    ]
  )

  EncodedRegistry.register(
    :class => COD,
    :schema_type => XSD::QName.new(NsTempuriOrg, "COD"),
    :schema_element => [
      ["collectType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CollectType")], [0, 1]],
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Company")], [0, 1]],
      ["country", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Country")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => HoldAtLocation,
    :schema_type => XSD::QName.new(NsTempuriOrg, "HoldAtLocation"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Company")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PhoneExtn")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => BrokerInfo,
    :schema_type => XSD::QName.new(NsTempuriOrg, "BrokerInfo"),
    :schema_element => [
      ["brokerName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerName")], [0, 1]],
      ["brokerTIN", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerTIN")], [0, 1]],
      ["brokerCompany", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerCompany")], [0, 1]],
      ["brokerAddress", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerAddress")], [0, 1]],
      ["brokerAddress1", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerAddress1")], [0, 1]],
      ["brokerAddress2", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerAddress2")], [0, 1]],
      ["brokerCity", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerCity")], [0, 1]],
      ["brokerState", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerState")], [0, 1]],
      ["brokerCountryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerCountryCode")], [0, 1]],
      ["brokerZip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerZip")], [0, 1]],
      ["brokerPhone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerPhone")], [0, 1]],
      ["brokerEmail", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerEmail")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => G4SIAuthentication,
    :schema_type => XSD::QName.new(NsTempuriOrg, "G4SIAuthentication"),
    :schema_element => [
      ["username", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Username")], [0, 1]],
      ["password", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Password")], [0, 1]],
      ["accessKey", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "AccessKey")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentTrackingRequest,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingRequest"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => TrackShipmentListResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "TrackShipmentListResponse"),
    :schema_element => [
      ["shipmentListResultCollection", ["ArrayOfTrackShipmentListResult", XSD::QName.new(NsTempuriOrg, "ShipmentListResultCollection")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ArrayOfTrackShipmentListResult,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ArrayOfTrackShipmentListResult"),
    :schema_element => [
      ["trackShipmentListResult", ["TrackShipmentListResult[]", XSD::QName.new(NsTempuriOrg, "TrackShipmentListResult")], [0, nil]]
    ]
  )

  EncodedRegistry.register(
    :class => TrackShipmentListResult,
    :schema_type => XSD::QName.new(NsTempuriOrg, "TrackShipmentListResult"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ShipmentDate")]],
      ["deliveredDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "DeliveredDate")]],
      ["recipientName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientName")], [0, 1]],
      ["recipientCompany", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientCompany")], [0, 1]],
      ["declaredValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclaredValue")]],
      ["currencyCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CurrencyCode")], [0, 1]],
      ["weight", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Weight")], [0, 1]],
      ["referenceNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ReferenceNumber")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CarrierName")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => IPSErrors,
    :schema_type => XSD::QName.new(NsTempuriOrg, "IPSErrors"),
    :schema_element => [
      ["errorCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ErrorCode")], [0, 1]],
      ["errorDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ErrorDescription")], [0, 1]],
      ["status", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "Status")]],
      ["innerException", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "InnerException")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentTrackingRequestAdvanced,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingRequestAdvanced"),
    :schema_element => [
      ["fromDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "FromDate")]],
      ["toDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ToDate")]],
      ["carriers", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Carriers")], [0, 1]],
      ["shipmentExceptions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ShipmentExceptions")], [0, 1]],
      ["shipmentCarrierStatus", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ShipmentCarrierStatus")], [0, 1]],
      ["criteriaValue", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CriteriaValue")], [0, 1]],
      ["criteriaType", ["CriteriaList", XSD::QName.new(NsTempuriOrg, "CriteriaType")]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentStatusListResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentStatusListResponse"),
    :schema_basetype => XSD::QName.new(NsTempuriOrg, "IPSResponse"),
    :schema_element => [
      ["result", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "Result")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => IPSResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "IPSResponse"),
    :schema_element => [
      ["result", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "Result")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ArrayOfAnyType,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ArrayOfAnyType"),
    :schema_element => [
      ["anyType", "[]", [0, nil]]
    ]
  )

  EncodedRegistry.register(
    :class => GeneralListForTracking,
    :schema_type => XSD::QName.new(NsTempuriOrg, "GeneralListForTracking"),
    :schema_element => [
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentExceptionsListResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentExceptionsListResponse"),
    :schema_basetype => XSD::QName.new(NsTempuriOrg, "IPSResponse"),
    :schema_element => [
      ["result", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "Result")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentTrackingStatusResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatusResponse"),
    :schema_element => [
      ["shipmentTrackingStatusList", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatusList")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => ShipmentTrackingStatus,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatus"),
    :schema_element => [
      ["statusDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusDescription")], [0, 1]],
      ["statusDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "StatusDate")]],
      ["statusCity", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusCity")], [0, 1]],
      ["statusState", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusState")], [0, 1]],
      ["statusCountry", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusCountry")], [0, 1]]
    ]
  )

  EncodedRegistry.register(
    :class => CriteriaList,
    :schema_type => XSD::QName.new(NsTempuriOrg, "CriteriaList")
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingResponse"),
    :schema_element => [
      ["trackingResponse", ["TrackingResponse", XSD::QName.new(NsTempuriOrg, "TrackingResponse")], [0, 1]],
      ["trackingResponseErrorCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingResponseErrorCode")], [0, 1]],
      ["trackingResponseError", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingResponseError")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => TrackingResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "TrackingResponse"),
    :schema_basetype => XSD::QName.new(NsTempuriOrg, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsTempuriOrg, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsTempuriOrg, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsTempuriOrg, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsTempuriOrg, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsTempuriOrg, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentRequest,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentRequest"),
    :schema_element => [
      ["commodityCollection", ["ArrayOfCommodityList", XSD::QName.new(NsTempuriOrg, "CommodityCollection")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CarrierName")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ShipmentDate")]],
      ["billFreightTo", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BillFreightTo")], [0, 1]],
      ["serviceLevelName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ServiceLevelName")], [0, 1]],
      ["packageTypeName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageTypeName")], [0, 1]],
      ["declaredWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclaredWeight")]],
      ["declareValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclareValue")]],
      ["weightType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "WeightType")], [0, 1]],
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]],
      ["dimensions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Dimensions")], [0, 1]],
      ["dimensionUnitType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DimensionUnitType")], [0, 1]],
      ["thermalPrinter", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ThermalPrinter")]],
      ["sEDNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SEDNumber")], [0, 1]],
      ["dutiesPayorType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "DutiesPayorType")], [0, 1]],
      ["recipientAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "RecipientAddress")], [0, 1]],
      ["saveNewRecipientAddress", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaveNewRecipientAddress")]],
      ["shipperAddress", ["G4sTracking::Address", XSD::QName.new(NsTempuriOrg, "ShipperAddress")], [0, 1]],
      ["cODAmount", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CODAmount")]],
      ["holdAtLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "HoldAtLocation")]],
      ["schedulePickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SchedulePickup")]],
      ["schedulePickupLocation", ["SchedulePickup", XSD::QName.new(NsTempuriOrg, "SchedulePickupLocation")], [0, 1]],
      ["cODInfo", ["COD", XSD::QName.new(NsTempuriOrg, "CODInfo")], [0, 1]],
      ["holdAtLocationInfo", ["HoldAtLocation", XSD::QName.new(NsTempuriOrg, "HoldAtLocationInfo")], [0, 1]],
      ["purchaseOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PurchaseOrderNumber")], [0, 1]],
      ["salesOrderNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SalesOrderNumber")], [0, 1]],
      ["brokerInfo", ["BrokerInfo", XSD::QName.new(NsTempuriOrg, "BrokerInfo")], [0, 1]],
      ["recipientShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientShipNotification")]],
      ["receiveAlerts", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ReceiveAlerts")]],
      ["saturdayDelivery", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayDelivery")]],
      ["saturdayPickup", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "SaturdayPickup")]],
      ["residential", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "Residential")]],
      ["signatureOption", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SignatureOption")], [0, 1]],
      ["recipientAlertEmail", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientAlertEmail")], [0, 1]],
      ["recipientDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientDeliveryNotification")]],
      ["recipientExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RecipientExceptionNotification")]],
      ["shipperShipNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperShipNotification")]],
      ["shipperDeliveryNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperDeliveryNotification")]],
      ["shipperExceptionNotification", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "ShipperExceptionNotification")]],
      ["restrictedWordsCompliance", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "RestrictedWordsCompliance")]],
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ArrayOfCommodityList,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ArrayOfCommodityList"),
    :schema_element => [
      ["commodityList", ["CommodityList[]", XSD::QName.new(NsTempuriOrg, "CommodityList")], [0, nil]]
    ]
  )

  LiteralRegistry.register(
    :class => CommodityList,
    :schema_type => XSD::QName.new(NsTempuriOrg, "CommodityList"),
    :schema_element => [
      ["commodityDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CommodityDescription")], [0, 1]],
      ["harmonizedCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "HarmonizedCode")], [0, 1]],
      ["commodityQuantity", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CommodityQuantity")]],
      ["measurement", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Measurement")], [0, 1]],
      ["customValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CustomValue")]],
      ["commodityWeight", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "CommodityWeight")]],
      ["codeCountryOfManufacture", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CodeCountryOfManufacture")], [0, 1]],
      ["nameOnLabel", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "NameOnLabel")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => Address,
    :schema_type => XSD::QName.new(NsTempuriOrg, "G4sTracking::Address"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Company")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]],
      ["email", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Email")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => SchedulePickup,
    :schema_type => XSD::QName.new(NsTempuriOrg, "SchedulePickup"),
    :schema_element => [
      ["contactName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ContactName")], [0, 1]],
      ["companyName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CompanyName")], [0, 1]],
      ["packageLatestAvailableTime", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageLatestAvailableTime")], [0, 1]],
      ["readyTime", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ReadyTime")], [0, 1]],
      ["suiteNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "SuiteNumber")], [0, 1]],
      ["floorID", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "FloorID")], [0, 1]],
      ["differentPickupLocation", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "DifferentPickupLocation")]],
      ["packageLocation", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PackageLocation")], [0, 1]],
      ["address1", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address1")], [0, 1]],
      ["address2", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Address2")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PhoneExtn")], [0, 1]],
      ["pickupDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "PickupDate")]]
    ]
  )

  LiteralRegistry.register(
    :class => COD,
    :schema_type => XSD::QName.new(NsTempuriOrg, "COD"),
    :schema_element => [
      ["collectType", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CollectType")], [0, 1]],
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Company")], [0, 1]],
      ["country", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Country")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => HoldAtLocation,
    :schema_type => XSD::QName.new(NsTempuriOrg, "HoldAtLocation"),
    :schema_element => [
      ["name", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Name")], [0, 1]],
      ["company", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Company")], [0, 1]],
      ["G4sTracking::Address", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "G4sTracking::Address")], [0, 1]],
      ["city", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "City")], [0, 1]],
      ["state", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "State")], [0, 1]],
      ["countryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CountryCode")], [0, 1]],
      ["zip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Zip")], [0, 1]],
      ["phone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Phone")], [0, 1]],
      ["phoneExtn", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "PhoneExtn")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => BrokerInfo,
    :schema_type => XSD::QName.new(NsTempuriOrg, "BrokerInfo"),
    :schema_element => [
      ["brokerName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerName")], [0, 1]],
      ["brokerTIN", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerTIN")], [0, 1]],
      ["brokerCompany", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerCompany")], [0, 1]],
      ["brokerAddress", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerAddress")], [0, 1]],
      ["brokerAddress1", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerAddress1")], [0, 1]],
      ["brokerAddress2", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerAddress2")], [0, 1]],
      ["brokerCity", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerCity")], [0, 1]],
      ["brokerState", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerState")], [0, 1]],
      ["brokerCountryCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerCountryCode")], [0, 1]],
      ["brokerZip", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerZip")], [0, 1]],
      ["brokerPhone", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerPhone")], [0, 1]],
      ["brokerEmail", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "BrokerEmail")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => G4SIAuthentication,
    :schema_type => XSD::QName.new(NsTempuriOrg, "G4SIAuthentication"),
    :schema_element => [
      ["username", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Username")], [0, 1]],
      ["password", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Password")], [0, 1]],
      ["accessKey", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "AccessKey")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingRequest,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingRequest"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => TrackShipmentListResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "TrackShipmentListResponse"),
    :schema_element => [
      ["shipmentListResultCollection", ["ArrayOfTrackShipmentListResult", XSD::QName.new(NsTempuriOrg, "ShipmentListResultCollection")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ArrayOfTrackShipmentListResult,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ArrayOfTrackShipmentListResult"),
    :schema_element => [
      ["trackShipmentListResult", ["TrackShipmentListResult[]", XSD::QName.new(NsTempuriOrg, "TrackShipmentListResult")], [0, nil]]
    ]
  )

  LiteralRegistry.register(
    :class => TrackShipmentListResult,
    :schema_type => XSD::QName.new(NsTempuriOrg, "TrackShipmentListResult"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]],
      ["shipmentDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ShipmentDate")]],
      ["deliveredDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "DeliveredDate")]],
      ["recipientName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientName")], [0, 1]],
      ["recipientCompany", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "RecipientCompany")], [0, 1]],
      ["declaredValue", ["SOAP::SOAPDouble", XSD::QName.new(NsTempuriOrg, "DeclaredValue")]],
      ["currencyCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CurrencyCode")], [0, 1]],
      ["weight", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Weight")], [0, 1]],
      ["referenceNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ReferenceNumber")], [0, 1]],
      ["carrierName", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CarrierName")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => IPSErrors,
    :schema_type => XSD::QName.new(NsTempuriOrg, "IPSErrors"),
    :schema_element => [
      ["errorCode", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ErrorCode")], [0, 1]],
      ["errorDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ErrorDescription")], [0, 1]],
      ["status", ["SOAP::SOAPBoolean", XSD::QName.new(NsTempuriOrg, "Status")]],
      ["innerException", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "InnerException")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingRequestAdvanced,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingRequestAdvanced"),
    :schema_element => [
      ["fromDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "FromDate")]],
      ["toDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ToDate")]],
      ["carriers", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Carriers")], [0, 1]],
      ["shipmentExceptions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ShipmentExceptions")], [0, 1]],
      ["shipmentCarrierStatus", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ShipmentCarrierStatus")], [0, 1]],
      ["criteriaValue", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CriteriaValue")], [0, 1]],
      ["criteriaType", ["CriteriaList", XSD::QName.new(NsTempuriOrg, "CriteriaType")]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentStatusListResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentStatusListResponse"),
    :schema_basetype => XSD::QName.new(NsTempuriOrg, "IPSResponse"),
    :schema_element => [
      ["result", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "Result")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => IPSResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "IPSResponse"),
    :schema_element => [
      ["result", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "Result")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ArrayOfAnyType,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ArrayOfAnyType"),
    :schema_element => [
      ["anyType", "[]", [0, nil]]
    ]
  )

  LiteralRegistry.register(
    :class => GeneralListForTracking,
    :schema_type => XSD::QName.new(NsTempuriOrg, "GeneralListForTracking"),
    :schema_element => [
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentExceptionsListResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentExceptionsListResponse"),
    :schema_basetype => XSD::QName.new(NsTempuriOrg, "IPSResponse"),
    :schema_element => [
      ["result", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "Result")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingStatusResponse,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatusResponse"),
    :schema_element => [
      ["shipmentTrackingStatusList", ["ArrayOfAnyType", XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatusList")], [0, 1]],
      ["errors", ["IPSErrors", XSD::QName.new(NsTempuriOrg, "Errors")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingStatus,
    :schema_type => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatus"),
    :schema_element => [
      ["statusDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusDescription")], [0, 1]],
      ["statusDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "StatusDate")]],
      ["statusCity", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusCity")], [0, 1]],
      ["statusState", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusState")], [0, 1]],
      ["statusCountry", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusCountry")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => CriteriaList,
    :schema_type => XSD::QName.new(NsTempuriOrg, "CriteriaList")
  )

  LiteralRegistry.register(
    :class => GetShipmentInfoByTrackingNumber,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentInfoByTrackingNumber"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => GetShipmentInfoByTrackingNumberResponse,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentInfoByTrackingNumberResponse"),
    :schema_element => [
      ["getShipmentInfoByTrackingNumberResult", ["ShipmentTrackingResponse", XSD::QName.new(NsTempuriOrg, "GetShipmentInfoByTrackingNumberResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => G4SIAuthentication,
    :schema_name => XSD::QName.new(NsTempuriOrg, "G4SIAuthentication"),
    :schema_element => [
      ["username", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Username")], [0, 1]],
      ["password", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Password")], [0, 1]],
      ["accessKey", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "AccessKey")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingRequest,
    :schema_name => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingRequest"),
    :schema_element => [
      ["trackingNumber", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "TrackingNumber")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => GetShipmentTrackingList,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentTrackingList"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => GetShipmentTrackingListResponse,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentTrackingListResponse"),
    :schema_element => [
      ["getShipmentTrackingListResult", ["TrackShipmentListResponse", XSD::QName.new(NsTempuriOrg, "GetShipmentTrackingListResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingRequestAdvanced,
    :schema_name => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingRequestAdvanced"),
    :schema_element => [
      ["fromDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "FromDate")]],
      ["toDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "ToDate")]],
      ["carriers", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Carriers")], [0, 1]],
      ["shipmentExceptions", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ShipmentExceptions")], [0, 1]],
      ["shipmentCarrierStatus", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "ShipmentCarrierStatus")], [0, 1]],
      ["criteriaValue", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "CriteriaValue")], [0, 1]],
      ["criteriaType", ["CriteriaList", XSD::QName.new(NsTempuriOrg, "CriteriaType")]]
    ]
  )

  LiteralRegistry.register(
    :class => GetShipmentStatusListForSearchRequest,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentStatusListForSearchRequest"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => GetShipmentStatusListForSearchRequestResponse,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentStatusListForSearchRequestResponse"),
    :schema_element => [
      ["getShipmentStatusListForSearchRequestResult", ["ShipmentStatusListResponse", XSD::QName.new(NsTempuriOrg, "GetShipmentStatusListForSearchRequestResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => GeneralListForTracking,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GeneralListForTracking"),
    :schema_element => [
      ["description", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "Description")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => GetShipmentExceptionsForSearchRequest,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentExceptionsForSearchRequest"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => GetShipmentExceptionsForSearchRequestResponse,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentExceptionsForSearchRequestResponse"),
    :schema_element => [
      ["getShipmentExceptionsForSearchRequestResult", ["ShipmentExceptionsListResponse", XSD::QName.new(NsTempuriOrg, "GetShipmentExceptionsForSearchRequestResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => GetShipmentStatus,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentStatus"),
    :schema_element => []
  )

  LiteralRegistry.register(
    :class => GetShipmentStatusResponse,
    :schema_name => XSD::QName.new(NsTempuriOrg, "GetShipmentStatusResponse"),
    :schema_element => [
      ["getShipmentStatusResult", ["ShipmentTrackingStatusResponse", XSD::QName.new(NsTempuriOrg, "GetShipmentStatusResult")], [0, 1]]
    ]
  )

  LiteralRegistry.register(
    :class => ShipmentTrackingStatus,
    :schema_name => XSD::QName.new(NsTempuriOrg, "ShipmentTrackingStatus"),
    :schema_element => [
      ["statusDescription", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusDescription")], [0, 1]],
      ["statusDate", ["SOAP::SOAPDateTime", XSD::QName.new(NsTempuriOrg, "StatusDate")]],
      ["statusCity", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusCity")], [0, 1]],
      ["statusState", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusState")], [0, 1]],
      ["statusCountry", ["SOAP::SOAPString", XSD::QName.new(NsTempuriOrg, "StatusCountry")], [0, 1]]
    ]
  )
end