// ExpressRouteCircuitPeeringState enumerates the values for express route circuit peering state.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum ExpressRouteCircuitPeeringStateEnum: String, Codable
{
// ExpressRouteCircuitPeeringStateDisabled specifies the express route circuit peering state disabled state for express
// route circuit peering state.
    case ExpressRouteCircuitPeeringStateDisabled = "Disabled"
// ExpressRouteCircuitPeeringStateEnabled specifies the express route circuit peering state enabled state for express
// route circuit peering state.
    case ExpressRouteCircuitPeeringStateEnabled = "Enabled"
}


// ExpressRouteCircuitPeeringType enumerates the values for express route circuit peering type.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum ExpressRouteCircuitPeeringTypeEnum: String, Codable
{
// AzurePrivatePeering specifies the azure private peering state for express route circuit peering type.
    case AzurePrivatePeering = "AzurePrivatePeering"
// AzurePublicPeering specifies the azure public peering state for express route circuit peering type.
    case AzurePublicPeering = "AzurePublicPeering"
// MicrosoftPeering specifies the microsoft peering state for express route circuit peering type.
    case MicrosoftPeering = "MicrosoftPeering"
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitPropertiesFormatData : ExpressRouteCircuitPropertiesFormatProtocol {
    public var allowClassicOperations: Bool?
    public var circuitProvisioningState: String?
    public var serviceProviderProvisioningState: ServiceProviderProvisioningStateEnum?
    public var authorizations: [ExpressRouteCircuitAuthorizationProtocol?]?
    public var peerings: [ExpressRouteCircuitPeeringProtocol?]?
    public var serviceKey: String?
    public var serviceProviderNotes: String?
    public var serviceProviderProperties: ExpressRouteCircuitServiceProviderPropertiesProtocol?
    public var provisioningState: String?
    public var gatewayManagerEtag: String?

        enum CodingKeys: String, CodingKey {case allowClassicOperations = "allowClassicOperations"
        case circuitProvisioningState = "circuitProvisioningState"
        case serviceProviderProvisioningState = "serviceProviderProvisioningState"
        case authorizations = "authorizations"
        case peerings = "peerings"
        case serviceKey = "serviceKey"
        case serviceProviderNotes = "serviceProviderNotes"
        case serviceProviderProperties = "serviceProviderProperties"
        case provisioningState = "provisioningState"
        case gatewayManagerEtag = "gatewayManagerEtag"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.allowClassicOperations) {
        self.allowClassicOperations = try container.decode(Bool?.self, forKey: .allowClassicOperations)
    }
    if container.contains(.circuitProvisioningState) {
        self.circuitProvisioningState = try container.decode(String?.self, forKey: .circuitProvisioningState)
    }
    if container.contains(.serviceProviderProvisioningState) {
        self.serviceProviderProvisioningState = try container.decode(ServiceProviderProvisioningStateEnum?.self, forKey: .serviceProviderProvisioningState)
    }
    if container.contains(.authorizations) {
        self.authorizations = try container.decode([ExpressRouteCircuitAuthorizationData?]?.self, forKey: .authorizations)
    }
    if container.contains(.peerings) {
        self.peerings = try container.decode([ExpressRouteCircuitPeeringData?]?.self, forKey: .peerings)
    }
    if container.contains(.serviceKey) {
        self.serviceKey = try container.decode(String?.self, forKey: .serviceKey)
    }
    if container.contains(.serviceProviderNotes) {
        self.serviceProviderNotes = try container.decode(String?.self, forKey: .serviceProviderNotes)
    }
    if container.contains(.serviceProviderProperties) {
        self.serviceProviderProperties = try container.decode(ExpressRouteCircuitServiceProviderPropertiesData?.self, forKey: .serviceProviderProperties)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(String?.self, forKey: .provisioningState)
    }
    if container.contains(.gatewayManagerEtag) {
        self.gatewayManagerEtag = try container.decode(String?.self, forKey: .gatewayManagerEtag)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.allowClassicOperations != nil {try container.encode(self.allowClassicOperations, forKey: .allowClassicOperations)}
    if self.circuitProvisioningState != nil {try container.encode(self.circuitProvisioningState, forKey: .circuitProvisioningState)}
    if self.serviceProviderProvisioningState != nil {try container.encode(self.serviceProviderProvisioningState, forKey: .serviceProviderProvisioningState)}
    if self.authorizations != nil {try container.encode(self.authorizations as! [ExpressRouteCircuitAuthorizationData?]?, forKey: .authorizations)}
    if self.peerings != nil {try container.encode(self.peerings as! [ExpressRouteCircuitPeeringData?]?, forKey: .peerings)}
    if self.serviceKey != nil {try container.encode(self.serviceKey, forKey: .serviceKey)}
    if self.serviceProviderNotes != nil {try container.encode(self.serviceProviderNotes, forKey: .serviceProviderNotes)}
    if self.serviceProviderProperties != nil {try container.encode(self.serviceProviderProperties as! ExpressRouteCircuitServiceProviderPropertiesData?, forKey: .serviceProviderProperties)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
    if self.gatewayManagerEtag != nil {try container.encode(self.gatewayManagerEtag, forKey: .gatewayManagerEtag)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitPropertiesFormatProtocol() -> ExpressRouteCircuitPropertiesFormatProtocol {
    return ExpressRouteCircuitPropertiesFormatData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitRoutesTableData : ExpressRouteCircuitRoutesTableProtocol {
    public var network: String?
    public var nextHop: String?
    public var locPrf: String?
    public var weight: Int32?
    public var path: String?

        enum CodingKeys: String, CodingKey {case network = "network"
        case nextHop = "nextHop"
        case locPrf = "locPrf"
        case weight = "weight"
        case path = "path"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.network) {
        self.network = try container.decode(String?.self, forKey: .network)
    }
    if container.contains(.nextHop) {
        self.nextHop = try container.decode(String?.self, forKey: .nextHop)
    }
    if container.contains(.locPrf) {
        self.locPrf = try container.decode(String?.self, forKey: .locPrf)
    }
    if container.contains(.weight) {
        self.weight = try container.decode(Int32?.self, forKey: .weight)
    }
    if container.contains(.path) {
        self.path = try container.decode(String?.self, forKey: .path)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.network != nil {try container.encode(self.network, forKey: .network)}
    if self.nextHop != nil {try container.encode(self.nextHop, forKey: .nextHop)}
    if self.locPrf != nil {try container.encode(self.locPrf, forKey: .locPrf)}
    if self.weight != nil {try container.encode(self.weight, forKey: .weight)}
    if self.path != nil {try container.encode(self.path, forKey: .path)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitRoutesTableProtocol() -> ExpressRouteCircuitRoutesTableProtocol {
    return ExpressRouteCircuitRoutesTableData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitRoutesTableSummaryData : ExpressRouteCircuitRoutesTableSummaryProtocol {
    public var neighbor: String?
    public var V: Int32?
    public var _as: Int32?
    public var upDown: String?
    public var statePfxRcd: String?

        enum CodingKeys: String, CodingKey {case neighbor = "neighbor"
        case V = "v"
        case _as = "as"
        case upDown = "upDown"
        case statePfxRcd = "statePfxRcd"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.neighbor) {
        self.neighbor = try container.decode(String?.self, forKey: .neighbor)
    }
    if container.contains(.V) {
        self.V = try container.decode(Int32?.self, forKey: .V)
    }
    if container.contains(._as) {
        self._as = try container.decode(Int32?.self, forKey: ._as)
    }
    if container.contains(.upDown) {
        self.upDown = try container.decode(String?.self, forKey: .upDown)
    }
    if container.contains(.statePfxRcd) {
        self.statePfxRcd = try container.decode(String?.self, forKey: .statePfxRcd)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.neighbor != nil {try container.encode(self.neighbor, forKey: .neighbor)}
    if self.V != nil {try container.encode(self.V, forKey: .V)}
    if self._as != nil {try container.encode(self._as, forKey: ._as)}
    if self.upDown != nil {try container.encode(self.upDown, forKey: .upDown)}
    if self.statePfxRcd != nil {try container.encode(self.statePfxRcd, forKey: .statePfxRcd)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitRoutesTableSummaryProtocol() -> ExpressRouteCircuitRoutesTableSummaryProtocol {
    return ExpressRouteCircuitRoutesTableSummaryData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitsArpTableListResultData : ExpressRouteCircuitsArpTableListResultProtocol {
    public var value: [ExpressRouteCircuitArpTableProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([ExpressRouteCircuitArpTableData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [ExpressRouteCircuitArpTableData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitsArpTableListResultProtocol() -> ExpressRouteCircuitsArpTableListResultProtocol {
    return ExpressRouteCircuitsArpTableListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitServiceProviderPropertiesData : ExpressRouteCircuitServiceProviderPropertiesProtocol {
    public var serviceProviderName: String?
    public var peeringLocation: String?
    public var bandwidthInMbps: Int32?

        enum CodingKeys: String, CodingKey {case serviceProviderName = "serviceProviderName"
        case peeringLocation = "peeringLocation"
        case bandwidthInMbps = "bandwidthInMbps"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.serviceProviderName) {
        self.serviceProviderName = try container.decode(String?.self, forKey: .serviceProviderName)
    }
    if container.contains(.peeringLocation) {
        self.peeringLocation = try container.decode(String?.self, forKey: .peeringLocation)
    }
    if container.contains(.bandwidthInMbps) {
        self.bandwidthInMbps = try container.decode(Int32?.self, forKey: .bandwidthInMbps)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.serviceProviderName != nil {try container.encode(self.serviceProviderName, forKey: .serviceProviderName)}
    if self.peeringLocation != nil {try container.encode(self.peeringLocation, forKey: .peeringLocation)}
    if self.bandwidthInMbps != nil {try container.encode(self.bandwidthInMbps, forKey: .bandwidthInMbps)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitServiceProviderPropertiesProtocol() -> ExpressRouteCircuitServiceProviderPropertiesProtocol {
    return ExpressRouteCircuitServiceProviderPropertiesData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitSkuData : ExpressRouteCircuitSkuProtocol {
    public var name: String?
    public var tier: ExpressRouteCircuitSkuTierEnum?
    public var family: ExpressRouteCircuitSkuFamilyEnum?

        enum CodingKeys: String, CodingKey {case name = "name"
        case tier = "tier"
        case family = "family"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.tier) {
        self.tier = try container.decode(ExpressRouteCircuitSkuTierEnum?.self, forKey: .tier)
    }
    if container.contains(.family) {
        self.family = try container.decode(ExpressRouteCircuitSkuFamilyEnum?.self, forKey: .family)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.tier != nil {try container.encode(self.tier, forKey: .tier)}
    if self.family != nil {try container.encode(self.family, forKey: .family)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitSkuProtocol() -> ExpressRouteCircuitSkuProtocol {
    return ExpressRouteCircuitSkuData()
  }
}


// ExpressRouteCircuitSkuFamily enumerates the values for express route circuit sku family.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum ExpressRouteCircuitSkuFamilyEnum: String, Codable
{
// MeteredData specifies the metered data state for express route circuit sku family.
    case MeteredData = "MeteredData"
// UnlimitedData specifies the unlimited data state for express route circuit sku family.
    case UnlimitedData = "UnlimitedData"
}


// ExpressRouteCircuitSkuTier enumerates the values for express route circuit sku tier.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum ExpressRouteCircuitSkuTierEnum: String, Codable
{
// ExpressRouteCircuitSkuTierPremium specifies the express route circuit sku tier premium state for express route
// circuit sku tier.
    case ExpressRouteCircuitSkuTierPremium = "Premium"
// ExpressRouteCircuitSkuTierStandard specifies the express route circuit sku tier standard state for express route
// circuit sku tier.
    case ExpressRouteCircuitSkuTierStandard = "Standard"
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitsRoutesTableListResultData : ExpressRouteCircuitsRoutesTableListResultProtocol {
    public var value: [ExpressRouteCircuitRoutesTableProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([ExpressRouteCircuitRoutesTableData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [ExpressRouteCircuitRoutesTableData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitsRoutesTableListResultProtocol() -> ExpressRouteCircuitsRoutesTableListResultProtocol {
    return ExpressRouteCircuitsRoutesTableListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitsRoutesTableSummaryListResultData : ExpressRouteCircuitsRoutesTableSummaryListResultProtocol {
    public var value: [ExpressRouteCircuitRoutesTableSummaryProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([ExpressRouteCircuitRoutesTableSummaryData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [ExpressRouteCircuitRoutesTableSummaryData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitsRoutesTableSummaryListResultProtocol() -> ExpressRouteCircuitsRoutesTableSummaryListResultProtocol {
    return ExpressRouteCircuitsRoutesTableSummaryListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteCircuitStatsData : ExpressRouteCircuitStatsProtocol {
    public var primarybytesIn: Int64?
    public var primarybytesOut: Int64?
    public var secondarybytesIn: Int64?
    public var secondarybytesOut: Int64?

        enum CodingKeys: String, CodingKey {case primarybytesIn = "primarybytesIn"
        case primarybytesOut = "primarybytesOut"
        case secondarybytesIn = "secondarybytesIn"
        case secondarybytesOut = "secondarybytesOut"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.primarybytesIn) {
        self.primarybytesIn = try container.decode(Int64?.self, forKey: .primarybytesIn)
    }
    if container.contains(.primarybytesOut) {
        self.primarybytesOut = try container.decode(Int64?.self, forKey: .primarybytesOut)
    }
    if container.contains(.secondarybytesIn) {
        self.secondarybytesIn = try container.decode(Int64?.self, forKey: .secondarybytesIn)
    }
    if container.contains(.secondarybytesOut) {
        self.secondarybytesOut = try container.decode(Int64?.self, forKey: .secondarybytesOut)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.primarybytesIn != nil {try container.encode(self.primarybytesIn, forKey: .primarybytesIn)}
    if self.primarybytesOut != nil {try container.encode(self.primarybytesOut, forKey: .primarybytesOut)}
    if self.secondarybytesIn != nil {try container.encode(self.secondarybytesIn, forKey: .secondarybytesIn)}
    if self.secondarybytesOut != nil {try container.encode(self.secondarybytesOut, forKey: .secondarybytesOut)}
  }
}

extension DataFactory {
  public static func createExpressRouteCircuitStatsProtocol() -> ExpressRouteCircuitStatsProtocol {
    return ExpressRouteCircuitStatsData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteServiceProviderBandwidthsOfferedData : ExpressRouteServiceProviderBandwidthsOfferedProtocol {
    public var offerName: String?
    public var valueInMbps: Int32?

        enum CodingKeys: String, CodingKey {case offerName = "offerName"
        case valueInMbps = "valueInMbps"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.offerName) {
        self.offerName = try container.decode(String?.self, forKey: .offerName)
    }
    if container.contains(.valueInMbps) {
        self.valueInMbps = try container.decode(Int32?.self, forKey: .valueInMbps)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.offerName != nil {try container.encode(self.offerName, forKey: .offerName)}
    if self.valueInMbps != nil {try container.encode(self.valueInMbps, forKey: .valueInMbps)}
  }
}

extension DataFactory {
  public static func createExpressRouteServiceProviderBandwidthsOfferedProtocol() -> ExpressRouteServiceProviderBandwidthsOfferedProtocol {
    return ExpressRouteServiceProviderBandwidthsOfferedData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteServiceProviderData : ExpressRouteServiceProviderProtocol, ResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var location: String?
    public var tags: [String:String]?
    public var properties: ExpressRouteServiceProviderPropertiesFormatProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case location = "location"
        case tags = "tags"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.location) {
        self.location = try container.decode(String?.self, forKey: .location)
    }
    if container.contains(.tags) {
        self.tags = try container.decode([String:String]?.self, forKey: .tags)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(ExpressRouteServiceProviderPropertiesFormatData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.location != nil {try container.encode(self.location, forKey: .location)}
    if self.tags != nil {try container.encode(self.tags, forKey: .tags)}
    if self.properties != nil {try container.encode(self.properties as! ExpressRouteServiceProviderPropertiesFormatData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createExpressRouteServiceProviderProtocol() -> ExpressRouteServiceProviderProtocol {
    return ExpressRouteServiceProviderData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteServiceProviderListResultData : ExpressRouteServiceProviderListResultProtocol {
    public var value: [ExpressRouteServiceProviderProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([ExpressRouteServiceProviderData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [ExpressRouteServiceProviderData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createExpressRouteServiceProviderListResultProtocol() -> ExpressRouteServiceProviderListResultProtocol {
    return ExpressRouteServiceProviderListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct ExpressRouteServiceProviderPropertiesFormatData : ExpressRouteServiceProviderPropertiesFormatProtocol {
    public var peeringLocations: [String]?
    public var bandwidthsOffered: [ExpressRouteServiceProviderBandwidthsOfferedProtocol?]?
    public var provisioningState: String?

        enum CodingKeys: String, CodingKey {case peeringLocations = "peeringLocations"
        case bandwidthsOffered = "bandwidthsOffered"
        case provisioningState = "provisioningState"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.peeringLocations) {
        self.peeringLocations = try container.decode([String]?.self, forKey: .peeringLocations)
    }
    if container.contains(.bandwidthsOffered) {
        self.bandwidthsOffered = try container.decode([ExpressRouteServiceProviderBandwidthsOfferedData?]?.self, forKey: .bandwidthsOffered)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(String?.self, forKey: .provisioningState)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.peeringLocations != nil {try container.encode(self.peeringLocations as! [String]?, forKey: .peeringLocations)}
    if self.bandwidthsOffered != nil {try container.encode(self.bandwidthsOffered as! [ExpressRouteServiceProviderBandwidthsOfferedData?]?, forKey: .bandwidthsOffered)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
  }
}

extension DataFactory {
  public static func createExpressRouteServiceProviderPropertiesFormatProtocol() -> ExpressRouteServiceProviderPropertiesFormatProtocol {
    return ExpressRouteServiceProviderPropertiesFormatData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct FlowLogInformationData : FlowLogInformationProtocol {
    public var targetResourceId: String
    public var properties: FlowLogPropertiesProtocol

        enum CodingKeys: String, CodingKey {case targetResourceId = "targetResourceId"
        case properties = "properties"
        }

  public init(targetResourceId: String, properties: FlowLogPropertiesProtocol)  {
    self.targetResourceId = targetResourceId
    self.properties = properties
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.targetResourceId = try container.decode(String.self, forKey: .targetResourceId)
    self.properties = try container.decode(FlowLogPropertiesData.self, forKey: .properties)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.targetResourceId, forKey: .targetResourceId)
    try container.encode(self.properties as! FlowLogPropertiesData, forKey: .properties)
  }
}

extension DataFactory {
  public static func createFlowLogInformationProtocol(targetResourceId: String, properties: FlowLogPropertiesProtocol) -> FlowLogInformationProtocol {
    return FlowLogInformationData(targetResourceId: targetResourceId, properties: properties)
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct FlowLogPropertiesData : FlowLogPropertiesProtocol {
    public var storageId: String
    public var enabled: Bool
    public var retentionPolicy: RetentionPolicyParametersProtocol?

        enum CodingKeys: String, CodingKey {case storageId = "storageId"
        case enabled = "enabled"
        case retentionPolicy = "retentionPolicy"
        }

  public init(storageId: String, enabled: Bool)  {
    self.storageId = storageId
    self.enabled = enabled
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.storageId = try container.decode(String.self, forKey: .storageId)
    self.enabled = try container.decode(Bool.self, forKey: .enabled)
    if container.contains(.retentionPolicy) {
        self.retentionPolicy = try container.decode(RetentionPolicyParametersData?.self, forKey: .retentionPolicy)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.storageId, forKey: .storageId)
    try container.encode(self.enabled, forKey: .enabled)
    if self.retentionPolicy != nil {try container.encode(self.retentionPolicy as! RetentionPolicyParametersData?, forKey: .retentionPolicy)}
  }
}

extension DataFactory {
  public static func createFlowLogPropertiesProtocol(storageId: String, enabled: Bool) -> FlowLogPropertiesProtocol {
    return FlowLogPropertiesData(storageId: storageId, enabled: enabled)
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct FlowLogStatusParametersData : FlowLogStatusParametersProtocol {
    public var targetResourceId: String

        enum CodingKeys: String, CodingKey {case targetResourceId = "targetResourceId"
        }

  public init(targetResourceId: String)  {
    self.targetResourceId = targetResourceId
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.targetResourceId = try container.decode(String.self, forKey: .targetResourceId)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.targetResourceId, forKey: .targetResourceId)
  }
}

extension DataFactory {
  public static func createFlowLogStatusParametersProtocol(targetResourceId: String) -> FlowLogStatusParametersProtocol {
    return FlowLogStatusParametersData(targetResourceId: targetResourceId)
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct FrontendIPConfigurationData : FrontendIPConfigurationProtocol, SubResourceProtocol {
    public var id: String?
    public var properties: FrontendIPConfigurationPropertiesFormatProtocol?
    public var name: String?
    public var etag: String?
    public var zones: [String]?

        enum CodingKeys: String, CodingKey {case id = "id"
        case properties = "properties"
        case name = "name"
        case etag = "etag"
        case zones = "zones"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(FrontendIPConfigurationPropertiesFormatData?.self, forKey: .properties)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.etag) {
        self.etag = try container.decode(String?.self, forKey: .etag)
    }
    if container.contains(.zones) {
        self.zones = try container.decode([String]?.self, forKey: .zones)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.properties != nil {try container.encode(self.properties as! FrontendIPConfigurationPropertiesFormatData?, forKey: .properties)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.etag != nil {try container.encode(self.etag, forKey: .etag)}
    if self.zones != nil {try container.encode(self.zones as! [String]?, forKey: .zones)}
  }
}

extension DataFactory {
  public static func createFrontendIPConfigurationProtocol() -> FrontendIPConfigurationProtocol {
    return FrontendIPConfigurationData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct FrontendIPConfigurationPropertiesFormatData : FrontendIPConfigurationPropertiesFormatProtocol {
    public var inboundNatRules: [SubResourceProtocol?]?
    public var inboundNatPools: [SubResourceProtocol?]?
    public var outboundNatRules: [SubResourceProtocol?]?
    public var loadBalancingRules: [SubResourceProtocol?]?
    public var privateIPAddress: String?
    public var privateIPAllocationMethod: IPAllocationMethodEnum?
    public var subnet: SubnetProtocol?
    public var publicIPAddress: PublicIPAddressProtocol?
    public var provisioningState: String?

        enum CodingKeys: String, CodingKey {case inboundNatRules = "inboundNatRules"
        case inboundNatPools = "inboundNatPools"
        case outboundNatRules = "outboundNatRules"
        case loadBalancingRules = "loadBalancingRules"
        case privateIPAddress = "privateIPAddress"
        case privateIPAllocationMethod = "privateIPAllocationMethod"
        case subnet = "subnet"
        case publicIPAddress = "publicIPAddress"
        case provisioningState = "provisioningState"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.inboundNatRules) {
        self.inboundNatRules = try container.decode([SubResourceData?]?.self, forKey: .inboundNatRules)
    }
    if container.contains(.inboundNatPools) {
        self.inboundNatPools = try container.decode([SubResourceData?]?.self, forKey: .inboundNatPools)
    }
    if container.contains(.outboundNatRules) {
        self.outboundNatRules = try container.decode([SubResourceData?]?.self, forKey: .outboundNatRules)
    }
    if container.contains(.loadBalancingRules) {
        self.loadBalancingRules = try container.decode([SubResourceData?]?.self, forKey: .loadBalancingRules)
    }
    if container.contains(.privateIPAddress) {
        self.privateIPAddress = try container.decode(String?.self, forKey: .privateIPAddress)
    }
    if container.contains(.privateIPAllocationMethod) {
        self.privateIPAllocationMethod = try container.decode(IPAllocationMethodEnum?.self, forKey: .privateIPAllocationMethod)
    }
    if container.contains(.subnet) {
        self.subnet = try container.decode(SubnetData?.self, forKey: .subnet)
    }
    if container.contains(.publicIPAddress) {
        self.publicIPAddress = try container.decode(PublicIPAddressData?.self, forKey: .publicIPAddress)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(String?.self, forKey: .provisioningState)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.inboundNatRules != nil {try container.encode(self.inboundNatRules as! [SubResourceData?]?, forKey: .inboundNatRules)}
    if self.inboundNatPools != nil {try container.encode(self.inboundNatPools as! [SubResourceData?]?, forKey: .inboundNatPools)}
    if self.outboundNatRules != nil {try container.encode(self.outboundNatRules as! [SubResourceData?]?, forKey: .outboundNatRules)}
    if self.loadBalancingRules != nil {try container.encode(self.loadBalancingRules as! [SubResourceData?]?, forKey: .loadBalancingRules)}
    if self.privateIPAddress != nil {try container.encode(self.privateIPAddress, forKey: .privateIPAddress)}
    if self.privateIPAllocationMethod != nil {try container.encode(self.privateIPAllocationMethod, forKey: .privateIPAllocationMethod)}
    if self.subnet != nil {try container.encode(self.subnet as! SubnetData?, forKey: .subnet)}
    if self.publicIPAddress != nil {try container.encode(self.publicIPAddress as! PublicIPAddressData?, forKey: .publicIPAddress)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
  }
}

extension DataFactory {
  public static func createFrontendIPConfigurationPropertiesFormatProtocol() -> FrontendIPConfigurationPropertiesFormatProtocol {
    return FrontendIPConfigurationPropertiesFormatData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct GatewayRouteData : GatewayRouteProtocol {
    public var localAddress: String?
    public var network: String?
    public var nextHop: String?
    public var sourcePeer: String?
    public var origin: String?
    public var asPath: String?
    public var weight: Int32?

        enum CodingKeys: String, CodingKey {case localAddress = "localAddress"
        case network = "network"
        case nextHop = "nextHop"
        case sourcePeer = "sourcePeer"
        case origin = "origin"
        case asPath = "asPath"
        case weight = "weight"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.localAddress) {
        self.localAddress = try container.decode(String?.self, forKey: .localAddress)
    }
    if container.contains(.network) {
        self.network = try container.decode(String?.self, forKey: .network)
    }
    if container.contains(.nextHop) {
        self.nextHop = try container.decode(String?.self, forKey: .nextHop)
    }
    if container.contains(.sourcePeer) {
        self.sourcePeer = try container.decode(String?.self, forKey: .sourcePeer)
    }
    if container.contains(.origin) {
        self.origin = try container.decode(String?.self, forKey: .origin)
    }
    if container.contains(.asPath) {
        self.asPath = try container.decode(String?.self, forKey: .asPath)
    }
    if container.contains(.weight) {
        self.weight = try container.decode(Int32?.self, forKey: .weight)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.localAddress != nil {try container.encode(self.localAddress, forKey: .localAddress)}
    if self.network != nil {try container.encode(self.network, forKey: .network)}
    if self.nextHop != nil {try container.encode(self.nextHop, forKey: .nextHop)}
    if self.sourcePeer != nil {try container.encode(self.sourcePeer, forKey: .sourcePeer)}
    if self.origin != nil {try container.encode(self.origin, forKey: .origin)}
    if self.asPath != nil {try container.encode(self.asPath, forKey: .asPath)}
    if self.weight != nil {try container.encode(self.weight, forKey: .weight)}
  }
}

extension DataFactory {
  public static func createGatewayRouteProtocol() -> GatewayRouteProtocol {
    return GatewayRouteData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct GatewayRouteListResultData : GatewayRouteListResultProtocol {
    public var value: [GatewayRouteProtocol?]?

        enum CodingKeys: String, CodingKey {case value = "value"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([GatewayRouteData?]?.self, forKey: .value)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [GatewayRouteData?]?, forKey: .value)}
  }
}

extension DataFactory {
  public static func createGatewayRouteListResultProtocol() -> GatewayRouteListResultProtocol {
    return GatewayRouteListResultData()
  }
}


// IkeEncryption enumerates the values for ike encryption.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IkeEncryptionEnum: String, Codable
{
// AES128 specifies the aes128 state for ike encryption.
    case AES128 = "AES128"
// AES192 specifies the aes192 state for ike encryption.
    case AES192 = "AES192"
// AES256 specifies the aes256 state for ike encryption.
    case AES256 = "AES256"
// DES specifies the des state for ike encryption.
    case DES = "DES"
// DES3 specifies the des3 state for ike encryption.
    case DES3 = "DES3"
}


// IkeIntegrity enumerates the values for ike integrity.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IkeIntegrityEnum: String, Codable
{
// MD5 specifies the md5 state for ike integrity.
    case MD5 = "MD5"
// SHA1 specifies the sha1 state for ike integrity.
    case SHA1 = "SHA1"
// SHA256 specifies the sha256 state for ike integrity.
    case SHA256 = "SHA256"
// SHA384 specifies the sha384 state for ike integrity.
    case SHA384 = "SHA384"
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct InboundNatPoolData : InboundNatPoolProtocol, SubResourceProtocol {
    public var id: String?
    public var properties: InboundNatPoolPropertiesFormatProtocol?
    public var name: String?
    public var etag: String?

        enum CodingKeys: String, CodingKey {case id = "id"
        case properties = "properties"
        case name = "name"
        case etag = "etag"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(InboundNatPoolPropertiesFormatData?.self, forKey: .properties)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.etag) {
        self.etag = try container.decode(String?.self, forKey: .etag)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.properties != nil {try container.encode(self.properties as! InboundNatPoolPropertiesFormatData?, forKey: .properties)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.etag != nil {try container.encode(self.etag, forKey: .etag)}
  }
}

extension DataFactory {
  public static func createInboundNatPoolProtocol() -> InboundNatPoolProtocol {
    return InboundNatPoolData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct InboundNatPoolPropertiesFormatData : InboundNatPoolPropertiesFormatProtocol {
    public var frontendIPConfiguration: SubResourceProtocol?
    public var _protocol: TransportProtocolEnum
    public var frontendPortRangeStart: Int32
    public var frontendPortRangeEnd: Int32
    public var backendPort: Int32
    public var idleTimeoutInMinutes: Int32?
    public var enableFloatingIP: Bool?
    public var provisioningState: String?

        enum CodingKeys: String, CodingKey {case frontendIPConfiguration = "frontendIPConfiguration"
        case _protocol = "protocol"
        case frontendPortRangeStart = "frontendPortRangeStart"
        case frontendPortRangeEnd = "frontendPortRangeEnd"
        case backendPort = "backendPort"
        case idleTimeoutInMinutes = "idleTimeoutInMinutes"
        case enableFloatingIP = "enableFloatingIP"
        case provisioningState = "provisioningState"
        }

  public init(_protocol: TransportProtocolEnum, frontendPortRangeStart: Int32, frontendPortRangeEnd: Int32, backendPort: Int32)  {
    self._protocol = _protocol
    self.frontendPortRangeStart = frontendPortRangeStart
    self.frontendPortRangeEnd = frontendPortRangeEnd
    self.backendPort = backendPort
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.frontendIPConfiguration) {
        self.frontendIPConfiguration = try container.decode(SubResourceData?.self, forKey: .frontendIPConfiguration)
    }
    self._protocol = try container.decode(TransportProtocolEnum.self, forKey: ._protocol)
    self.frontendPortRangeStart = try container.decode(Int32.self, forKey: .frontendPortRangeStart)
    self.frontendPortRangeEnd = try container.decode(Int32.self, forKey: .frontendPortRangeEnd)
    self.backendPort = try container.decode(Int32.self, forKey: .backendPort)
    if container.contains(.idleTimeoutInMinutes) {
        self.idleTimeoutInMinutes = try container.decode(Int32?.self, forKey: .idleTimeoutInMinutes)
    }
    if container.contains(.enableFloatingIP) {
        self.enableFloatingIP = try container.decode(Bool?.self, forKey: .enableFloatingIP)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(String?.self, forKey: .provisioningState)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.frontendIPConfiguration != nil {try container.encode(self.frontendIPConfiguration as! SubResourceData?, forKey: .frontendIPConfiguration)}
    try container.encode(self._protocol, forKey: ._protocol)
    try container.encode(self.frontendPortRangeStart, forKey: .frontendPortRangeStart)
    try container.encode(self.frontendPortRangeEnd, forKey: .frontendPortRangeEnd)
    try container.encode(self.backendPort, forKey: .backendPort)
    if self.idleTimeoutInMinutes != nil {try container.encode(self.idleTimeoutInMinutes, forKey: .idleTimeoutInMinutes)}
    if self.enableFloatingIP != nil {try container.encode(self.enableFloatingIP, forKey: .enableFloatingIP)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
  }
}

extension DataFactory {
  public static func createInboundNatPoolPropertiesFormatProtocol(_protocol: TransportProtocolEnum, frontendPortRangeStart: Int32, frontendPortRangeEnd: Int32, backendPort: Int32) -> InboundNatPoolPropertiesFormatProtocol {
    return InboundNatPoolPropertiesFormatData(_protocol: _protocol, frontendPortRangeStart: frontendPortRangeStart, frontendPortRangeEnd: frontendPortRangeEnd, backendPort: backendPort)
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct InboundNatRuleData : InboundNatRuleProtocol, SubResourceProtocol {
    public var id: String?
    public var properties: InboundNatRulePropertiesFormatProtocol?
    public var name: String?
    public var etag: String?

        enum CodingKeys: String, CodingKey {case id = "id"
        case properties = "properties"
        case name = "name"
        case etag = "etag"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(InboundNatRulePropertiesFormatData?.self, forKey: .properties)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.etag) {
        self.etag = try container.decode(String?.self, forKey: .etag)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.properties != nil {try container.encode(self.properties as! InboundNatRulePropertiesFormatData?, forKey: .properties)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.etag != nil {try container.encode(self.etag, forKey: .etag)}
  }
}

extension DataFactory {
  public static func createInboundNatRuleProtocol() -> InboundNatRuleProtocol {
    return InboundNatRuleData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct InboundNatRuleListResultData : InboundNatRuleListResultProtocol {
    public var value: [InboundNatRuleProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([InboundNatRuleData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [InboundNatRuleData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createInboundNatRuleListResultProtocol() -> InboundNatRuleListResultProtocol {
    return InboundNatRuleListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct InboundNatRulePropertiesFormatData : InboundNatRulePropertiesFormatProtocol {
    public var frontendIPConfiguration: SubResourceProtocol?
    public var backendIPConfiguration: NetworkInterfaceIPConfigurationProtocol?
    public var _protocol: TransportProtocolEnum?
    public var frontendPort: Int32?
    public var backendPort: Int32?
    public var idleTimeoutInMinutes: Int32?
    public var enableFloatingIP: Bool?
    public var provisioningState: String?

        enum CodingKeys: String, CodingKey {case frontendIPConfiguration = "frontendIPConfiguration"
        case backendIPConfiguration = "backendIPConfiguration"
        case _protocol = "protocol"
        case frontendPort = "frontendPort"
        case backendPort = "backendPort"
        case idleTimeoutInMinutes = "idleTimeoutInMinutes"
        case enableFloatingIP = "enableFloatingIP"
        case provisioningState = "provisioningState"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.frontendIPConfiguration) {
        self.frontendIPConfiguration = try container.decode(SubResourceData?.self, forKey: .frontendIPConfiguration)
    }
    if container.contains(.backendIPConfiguration) {
        self.backendIPConfiguration = try container.decode(NetworkInterfaceIPConfigurationData?.self, forKey: .backendIPConfiguration)
    }
    if container.contains(._protocol) {
        self._protocol = try container.decode(TransportProtocolEnum?.self, forKey: ._protocol)
    }
    if container.contains(.frontendPort) {
        self.frontendPort = try container.decode(Int32?.self, forKey: .frontendPort)
    }
    if container.contains(.backendPort) {
        self.backendPort = try container.decode(Int32?.self, forKey: .backendPort)
    }
    if container.contains(.idleTimeoutInMinutes) {
        self.idleTimeoutInMinutes = try container.decode(Int32?.self, forKey: .idleTimeoutInMinutes)
    }
    if container.contains(.enableFloatingIP) {
        self.enableFloatingIP = try container.decode(Bool?.self, forKey: .enableFloatingIP)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(String?.self, forKey: .provisioningState)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.frontendIPConfiguration != nil {try container.encode(self.frontendIPConfiguration as! SubResourceData?, forKey: .frontendIPConfiguration)}
    if self.backendIPConfiguration != nil {try container.encode(self.backendIPConfiguration as! NetworkInterfaceIPConfigurationData?, forKey: .backendIPConfiguration)}
    if self._protocol != nil {try container.encode(self._protocol, forKey: ._protocol)}
    if self.frontendPort != nil {try container.encode(self.frontendPort, forKey: .frontendPort)}
    if self.backendPort != nil {try container.encode(self.backendPort, forKey: .backendPort)}
    if self.idleTimeoutInMinutes != nil {try container.encode(self.idleTimeoutInMinutes, forKey: .idleTimeoutInMinutes)}
    if self.enableFloatingIP != nil {try container.encode(self.enableFloatingIP, forKey: .enableFloatingIP)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
  }
}

extension DataFactory {
  public static func createInboundNatRulePropertiesFormatProtocol() -> InboundNatRulePropertiesFormatProtocol {
    return InboundNatRulePropertiesFormatData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct IPAddressAvailabilityResultData : IPAddressAvailabilityResultProtocol {
    public var available: Bool?
    public var availableIPAddresses: [String]?

        enum CodingKeys: String, CodingKey {case available = "available"
        case availableIPAddresses = "availableIPAddresses"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.available) {
        self.available = try container.decode(Bool?.self, forKey: .available)
    }
    if container.contains(.availableIPAddresses) {
        self.availableIPAddresses = try container.decode([String]?.self, forKey: .availableIPAddresses)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.available != nil {try container.encode(self.available, forKey: .available)}
    if self.availableIPAddresses != nil {try container.encode(self.availableIPAddresses as! [String]?, forKey: .availableIPAddresses)}
  }
}

extension DataFactory {
  public static func createIPAddressAvailabilityResultProtocol() -> IPAddressAvailabilityResultProtocol {
    return IPAddressAvailabilityResultData()
  }
}


// IPAllocationMethod enumerates the values for ip allocation method.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IPAllocationMethodEnum: String, Codable
{
// Dynamic specifies the dynamic state for ip allocation method.
    case Dynamic = "Dynamic"
// Static specifies the static state for ip allocation method.
    case Static = "Static"
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct IPConfigurationData : IPConfigurationProtocol, SubResourceProtocol {
    public var id: String?
    public var properties: IPConfigurationPropertiesFormatProtocol?
    public var name: String?
    public var etag: String?

        enum CodingKeys: String, CodingKey {case id = "id"
        case properties = "properties"
        case name = "name"
        case etag = "etag"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(IPConfigurationPropertiesFormatData?.self, forKey: .properties)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.etag) {
        self.etag = try container.decode(String?.self, forKey: .etag)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.properties != nil {try container.encode(self.properties as! IPConfigurationPropertiesFormatData?, forKey: .properties)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.etag != nil {try container.encode(self.etag, forKey: .etag)}
  }
}

extension DataFactory {
  public static func createIPConfigurationProtocol() -> IPConfigurationProtocol {
    return IPConfigurationData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct IPConfigurationPropertiesFormatData : IPConfigurationPropertiesFormatProtocol {
    public var privateIPAddress: String?
    public var privateIPAllocationMethod: IPAllocationMethodEnum?
    public var subnet: SubnetProtocol?
    public var publicIPAddress: PublicIPAddressProtocol?
    public var provisioningState: String?

        enum CodingKeys: String, CodingKey {case privateIPAddress = "privateIPAddress"
        case privateIPAllocationMethod = "privateIPAllocationMethod"
        case subnet = "subnet"
        case publicIPAddress = "publicIPAddress"
        case provisioningState = "provisioningState"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.privateIPAddress) {
        self.privateIPAddress = try container.decode(String?.self, forKey: .privateIPAddress)
    }
    if container.contains(.privateIPAllocationMethod) {
        self.privateIPAllocationMethod = try container.decode(IPAllocationMethodEnum?.self, forKey: .privateIPAllocationMethod)
    }
    if container.contains(.subnet) {
        self.subnet = try container.decode(SubnetData?.self, forKey: .subnet)
    }
    if container.contains(.publicIPAddress) {
        self.publicIPAddress = try container.decode(PublicIPAddressData?.self, forKey: .publicIPAddress)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(String?.self, forKey: .provisioningState)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.privateIPAddress != nil {try container.encode(self.privateIPAddress, forKey: .privateIPAddress)}
    if self.privateIPAllocationMethod != nil {try container.encode(self.privateIPAllocationMethod, forKey: .privateIPAllocationMethod)}
    if self.subnet != nil {try container.encode(self.subnet as! SubnetData?, forKey: .subnet)}
    if self.publicIPAddress != nil {try container.encode(self.publicIPAddress as! PublicIPAddressData?, forKey: .publicIPAddress)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
  }
}

extension DataFactory {
  public static func createIPConfigurationPropertiesFormatProtocol() -> IPConfigurationPropertiesFormatProtocol {
    return IPConfigurationPropertiesFormatData()
  }
}


// IpsecEncryption enumerates the values for ipsec encryption.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IpsecEncryptionEnum: String, Codable
{
// IpsecEncryptionAES128 specifies the ipsec encryption aes128 state for ipsec encryption.
    case IpsecEncryptionAES128 = "AES128"
// IpsecEncryptionAES192 specifies the ipsec encryption aes192 state for ipsec encryption.
    case IpsecEncryptionAES192 = "AES192"
// IpsecEncryptionAES256 specifies the ipsec encryption aes256 state for ipsec encryption.
    case IpsecEncryptionAES256 = "AES256"
// IpsecEncryptionDES specifies the ipsec encryption des state for ipsec encryption.
    case IpsecEncryptionDES = "DES"
// IpsecEncryptionDES3 specifies the ipsec encryption des3 state for ipsec encryption.
    case IpsecEncryptionDES3 = "DES3"
// IpsecEncryptionGCMAES128 specifies the ipsec encryption gcmaes128 state for ipsec encryption.
    case IpsecEncryptionGCMAES128 = "GCMAES128"
// IpsecEncryptionGCMAES192 specifies the ipsec encryption gcmaes192 state for ipsec encryption.
    case IpsecEncryptionGCMAES192 = "GCMAES192"
// IpsecEncryptionGCMAES256 specifies the ipsec encryption gcmaes256 state for ipsec encryption.
    case IpsecEncryptionGCMAES256 = "GCMAES256"
// IpsecEncryptionNone specifies the ipsec encryption none state for ipsec encryption.
    case IpsecEncryptionNone = "None"
}


// IpsecIntegrity enumerates the values for ipsec integrity.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IpsecIntegrityEnum: String, Codable
{
// IpsecIntegrityGCMAES128 specifies the ipsec integrity gcmaes128 state for ipsec integrity.
    case IpsecIntegrityGCMAES128 = "GCMAES128"
// IpsecIntegrityGCMAES192 specifies the ipsec integrity gcmaes192 state for ipsec integrity.
    case IpsecIntegrityGCMAES192 = "GCMAES192"
// IpsecIntegrityGCMAES256 specifies the ipsec integrity gcmaes256 state for ipsec integrity.
    case IpsecIntegrityGCMAES256 = "GCMAES256"
// IpsecIntegrityMD5 specifies the ipsec integrity md5 state for ipsec integrity.
    case IpsecIntegrityMD5 = "MD5"
// IpsecIntegritySHA1 specifies the ipsec integrity sha1 state for ipsec integrity.
    case IpsecIntegritySHA1 = "SHA1"
// IpsecIntegritySHA256 specifies the ipsec integrity sha256 state for ipsec integrity.
    case IpsecIntegritySHA256 = "SHA256"
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct IpsecPolicyData : IpsecPolicyProtocol {
    public var saLifeTimeSeconds: Int32
    public var saDataSizeKilobytes: Int32
    public var ipsecEncryption: IpsecEncryptionEnum
    public var ipsecIntegrity: IpsecIntegrityEnum
    public var ikeEncryption: IkeEncryptionEnum
    public var ikeIntegrity: IkeIntegrityEnum
    public var dhGroup: DhGroupEnum
    public var pfsGroup: PfsGroupEnum

        enum CodingKeys: String, CodingKey {case saLifeTimeSeconds = "saLifeTimeSeconds"
        case saDataSizeKilobytes = "saDataSizeKilobytes"
        case ipsecEncryption = "ipsecEncryption"
        case ipsecIntegrity = "ipsecIntegrity"
        case ikeEncryption = "ikeEncryption"
        case ikeIntegrity = "ikeIntegrity"
        case dhGroup = "dhGroup"
        case pfsGroup = "pfsGroup"
        }

  public init(saLifeTimeSeconds: Int32, saDataSizeKilobytes: Int32, ipsecEncryption: IpsecEncryptionEnum, ipsecIntegrity: IpsecIntegrityEnum, ikeEncryption: IkeEncryptionEnum, ikeIntegrity: IkeIntegrityEnum, dhGroup: DhGroupEnum, pfsGroup: PfsGroupEnum)  {
    self.saLifeTimeSeconds = saLifeTimeSeconds
    self.saDataSizeKilobytes = saDataSizeKilobytes
    self.ipsecEncryption = ipsecEncryption
    self.ipsecIntegrity = ipsecIntegrity
    self.ikeEncryption = ikeEncryption
    self.ikeIntegrity = ikeIntegrity
    self.dhGroup = dhGroup
    self.pfsGroup = pfsGroup
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.saLifeTimeSeconds = try container.decode(Int32.self, forKey: .saLifeTimeSeconds)
    self.saDataSizeKilobytes = try container.decode(Int32.self, forKey: .saDataSizeKilobytes)
    self.ipsecEncryption = try container.decode(IpsecEncryptionEnum.self, forKey: .ipsecEncryption)
    self.ipsecIntegrity = try container.decode(IpsecIntegrityEnum.self, forKey: .ipsecIntegrity)
    self.ikeEncryption = try container.decode(IkeEncryptionEnum.self, forKey: .ikeEncryption)
    self.ikeIntegrity = try container.decode(IkeIntegrityEnum.self, forKey: .ikeIntegrity)
    self.dhGroup = try container.decode(DhGroupEnum.self, forKey: .dhGroup)
    self.pfsGroup = try container.decode(PfsGroupEnum.self, forKey: .pfsGroup)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.saLifeTimeSeconds, forKey: .saLifeTimeSeconds)
    try container.encode(self.saDataSizeKilobytes, forKey: .saDataSizeKilobytes)
    try container.encode(self.ipsecEncryption, forKey: .ipsecEncryption)
    try container.encode(self.ipsecIntegrity, forKey: .ipsecIntegrity)
    try container.encode(self.ikeEncryption, forKey: .ikeEncryption)
    try container.encode(self.ikeIntegrity, forKey: .ikeIntegrity)
    try container.encode(self.dhGroup, forKey: .dhGroup)
    try container.encode(self.pfsGroup, forKey: .pfsGroup)
  }
}

extension DataFactory {
  public static func createIpsecPolicyProtocol(saLifeTimeSeconds: Int32, saDataSizeKilobytes: Int32, ipsecEncryption: IpsecEncryptionEnum, ipsecIntegrity: IpsecIntegrityEnum, ikeEncryption: IkeEncryptionEnum, ikeIntegrity: IkeIntegrityEnum, dhGroup: DhGroupEnum, pfsGroup: PfsGroupEnum) -> IpsecPolicyProtocol {
    return IpsecPolicyData(saLifeTimeSeconds: saLifeTimeSeconds, saDataSizeKilobytes: saDataSizeKilobytes, ipsecEncryption: ipsecEncryption, ipsecIntegrity: ipsecIntegrity, ikeEncryption: ikeEncryption, ikeIntegrity: ikeIntegrity, dhGroup: dhGroup, pfsGroup: pfsGroup)
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct IpTagData : IpTagProtocol {
    public var ipTagType: String?
    public var tag: String?

        enum CodingKeys: String, CodingKey {case ipTagType = "ipTagType"
        case tag = "tag"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.ipTagType) {
        self.ipTagType = try container.decode(String?.self, forKey: .ipTagType)
    }
    if container.contains(.tag) {
        self.tag = try container.decode(String?.self, forKey: .tag)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.ipTagType != nil {try container.encode(self.ipTagType, forKey: .ipTagType)}
    if self.tag != nil {try container.encode(self.tag, forKey: .tag)}
  }
}

extension DataFactory {
  public static func createIpTagProtocol() -> IpTagProtocol {
    return IpTagData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct Ipv6ExpressRouteCircuitPeeringConfigData : Ipv6ExpressRouteCircuitPeeringConfigProtocol {
    public var primaryPeerAddressPrefix: String?
    public var secondaryPeerAddressPrefix: String?
    public var microsoftPeeringConfig: ExpressRouteCircuitPeeringConfigProtocol?
    public var routeFilter: RouteFilterProtocol?
    public var state: ExpressRouteCircuitPeeringStateEnum?

        enum CodingKeys: String, CodingKey {case primaryPeerAddressPrefix = "primaryPeerAddressPrefix"
        case secondaryPeerAddressPrefix = "secondaryPeerAddressPrefix"
        case microsoftPeeringConfig = "microsoftPeeringConfig"
        case routeFilter = "routeFilter"
        case state = "state"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.primaryPeerAddressPrefix) {
        self.primaryPeerAddressPrefix = try container.decode(String?.self, forKey: .primaryPeerAddressPrefix)
    }
    if container.contains(.secondaryPeerAddressPrefix) {
        self.secondaryPeerAddressPrefix = try container.decode(String?.self, forKey: .secondaryPeerAddressPrefix)
    }
    if container.contains(.microsoftPeeringConfig) {
        self.microsoftPeeringConfig = try container.decode(ExpressRouteCircuitPeeringConfigData?.self, forKey: .microsoftPeeringConfig)
    }
    if container.contains(.routeFilter) {
        self.routeFilter = try container.decode(RouteFilterData?.self, forKey: .routeFilter)
    }
    if container.contains(.state) {
        self.state = try container.decode(ExpressRouteCircuitPeeringStateEnum?.self, forKey: .state)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.primaryPeerAddressPrefix != nil {try container.encode(self.primaryPeerAddressPrefix, forKey: .primaryPeerAddressPrefix)}
    if self.secondaryPeerAddressPrefix != nil {try container.encode(self.secondaryPeerAddressPrefix, forKey: .secondaryPeerAddressPrefix)}
    if self.microsoftPeeringConfig != nil {try container.encode(self.microsoftPeeringConfig as! ExpressRouteCircuitPeeringConfigData?, forKey: .microsoftPeeringConfig)}
    if self.routeFilter != nil {try container.encode(self.routeFilter as! RouteFilterData?, forKey: .routeFilter)}
    if self.state != nil {try container.encode(self.state, forKey: .state)}
  }
}

extension DataFactory {
  public static func createIpv6ExpressRouteCircuitPeeringConfigProtocol() -> Ipv6ExpressRouteCircuitPeeringConfigProtocol {
    return Ipv6ExpressRouteCircuitPeeringConfigData()
  }
}


// IPVersion enumerates the values for ip version.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IPVersionEnum: String, Codable
{
// IPv4 specifies the i pv 4 state for ip version.
    case IPv4 = "IPv4"
// IPv6 specifies the i pv 6 state for ip version.
    case IPv6 = "IPv6"
}


// IssueType enumerates the values for issue type.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
public enum IssueTypeEnum: String, Codable
{
// IssueTypeAgentStopped specifies the issue type agent stopped state for issue type.
    case IssueTypeAgentStopped = "AgentStopped"
// IssueTypeDnsResolution specifies the issue type dns resolution state for issue type.
    case IssueTypeDnsResolution = "DnsResolution"
// IssueTypeGuestFirewall specifies the issue type guest firewall state for issue type.
    case IssueTypeGuestFirewall = "GuestFirewall"
// IssueTypeNetworkSecurityRule specifies the issue type network security rule state for issue type.
    case IssueTypeNetworkSecurityRule = "NetworkSecurityRule"
// IssueTypePlatform specifies the issue type platform state for issue type.
    case IssueTypePlatform = "Platform"
// IssueTypePortThrottled specifies the issue type port throttled state for issue type.
    case IssueTypePortThrottled = "PortThrottled"
// IssueTypeSocketBind specifies the issue type socket bind state for issue type.
    case IssueTypeSocketBind = "SocketBind"
// IssueTypeUnknown specifies the issue type unknown state for issue type.
    case IssueTypeUnknown = "Unknown"
// IssueTypeUserDefinedRoute specifies the issue type user defined route state for issue type.
    case IssueTypeUserDefinedRoute = "UserDefinedRoute"
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct LoadBalancerBackendAddressPoolListResultData : LoadBalancerBackendAddressPoolListResultProtocol {
    public var value: [BackendAddressPoolProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([BackendAddressPoolData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [BackendAddressPoolData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createLoadBalancerBackendAddressPoolListResultProtocol() -> LoadBalancerBackendAddressPoolListResultProtocol {
    return LoadBalancerBackendAddressPoolListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct LoadBalancerData : LoadBalancerProtocol, ResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var location: String?
    public var tags: [String:String]?
    public var sku: LoadBalancerSkuProtocol?
    public var properties: LoadBalancerPropertiesFormatProtocol?
    public var etag: String?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case location = "location"
        case tags = "tags"
        case sku = "sku"
        case properties = "properties"
        case etag = "etag"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.location) {
        self.location = try container.decode(String?.self, forKey: .location)
    }
    if container.contains(.tags) {
        self.tags = try container.decode([String:String]?.self, forKey: .tags)
    }
    if container.contains(.sku) {
        self.sku = try container.decode(LoadBalancerSkuData?.self, forKey: .sku)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(LoadBalancerPropertiesFormatData?.self, forKey: .properties)
    }
    if container.contains(.etag) {
        self.etag = try container.decode(String?.self, forKey: .etag)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.location != nil {try container.encode(self.location, forKey: .location)}
    if self.tags != nil {try container.encode(self.tags, forKey: .tags)}
    if self.sku != nil {try container.encode(self.sku as! LoadBalancerSkuData?, forKey: .sku)}
    if self.properties != nil {try container.encode(self.properties as! LoadBalancerPropertiesFormatData?, forKey: .properties)}
    if self.etag != nil {try container.encode(self.etag, forKey: .etag)}
  }
}

extension DataFactory {
  public static func createLoadBalancerProtocol() -> LoadBalancerProtocol {
    return LoadBalancerData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct LoadBalancerFrontendIPConfigurationListResultData : LoadBalancerFrontendIPConfigurationListResultProtocol {
    public var value: [FrontendIPConfigurationProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([FrontendIPConfigurationData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [FrontendIPConfigurationData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createLoadBalancerFrontendIPConfigurationListResultProtocol() -> LoadBalancerFrontendIPConfigurationListResultProtocol {
    return LoadBalancerFrontendIPConfigurationListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct LoadBalancerListResultData : LoadBalancerListResultProtocol {
    public var value: [LoadBalancerProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([LoadBalancerData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [LoadBalancerData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createLoadBalancerListResultProtocol() -> LoadBalancerListResultProtocol {
    return LoadBalancerListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct LoadBalancerLoadBalancingRuleListResultData : LoadBalancerLoadBalancingRuleListResultProtocol {
    public var value: [LoadBalancingRuleProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([LoadBalancingRuleData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [LoadBalancingRuleData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createLoadBalancerLoadBalancingRuleListResultProtocol() -> LoadBalancerLoadBalancingRuleListResultProtocol {
    return LoadBalancerLoadBalancingRuleListResultData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct LoadBalancerProbeListResultData : LoadBalancerProbeListResultProtocol {
    public var value: [ProbeProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([ProbeData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [ProbeData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createLoadBalancerProbeListResultProtocol() -> LoadBalancerProbeListResultProtocol {
    return LoadBalancerProbeListResultData()
  }
}