@startuml
skinparam {
    ClassBackgroundColor White
    ClassBorderColor Black
}

class IpBwpEnvelope {

    tE: integer
}

IpBwpEnvelope *--> InformationRate : maxIrE



class IpUniAccessLinkBwpEnvelope {

}
IpBwpEnvelope <|-- IpUniAccessLinkBwpEnvelope

IpUniAccessLinkBwpEnvelope *-->"*" IpBwpFlowPerIpvcEp : bwpFlowPerIpvcEp
IpUniAccessLinkBwpEnvelope *--> IpBwpFlowAll : bwpFlowAll
IpUniAccessLinkBwpEnvelope *-->"*" IpBwpFlowPerIpvcEpAndCosName : bwpFlowPerIpvcEpAndCosName



class IpUniBwpEnvelope {

}
IpBwpEnvelope <|-- IpUniBwpEnvelope

IpUniBwpEnvelope *-->"*" IpBwpFlowPerIpvcEp : bwpFlowPerIpvcEp
IpUniBwpEnvelope *-->"*" IpBwpFlowPerIpvcEpAccessLink : bwpFlowPerIpvcEpAccessLink
IpUniBwpEnvelope *--> IpBwpFlowAll : bwpFlowAll
IpUniBwpEnvelope *-->"*" IpBwpFlowPerAccessLink : bwpFlowPerAccessLink
IpUniBwpEnvelope *-->"*" IpBwpFlowPerIpvcEpAndCosName : bwpFlowPerIpvcEpAndCosName
IpUniBwpEnvelope *-->"*" IpBwpFlowPerAccessLinkIpvcEpAndCosName : bwpFlowPerAccessLinkIpvcEpAndCosName



class IpvcEpBwpEnvelope {

}
IpBwpEnvelope <|-- IpvcEpBwpEnvelope

IpvcEpBwpEnvelope *--> IpBwpFlowAll : bwpFlowAll
IpvcEpBwpEnvelope *-->"*" IpBwpFlowPerCosName : bwpFlowPerCosName


class IpBwpFlowPerAccessLinkIpvcEpAndCosName {

}
IpBwpFlow <|-d- IpBwpFlowPerAccessLinkIpvcEpAndCosName

IpBwpFlowPerAccessLinkIpvcEpAndCosName *-->"*" IpvcEpAndCosName : ipvcEpAndCosName
IpBwpFlowPerAccessLinkIpvcEpAndCosName *-->"*" IpUniAccessLinkIdentifier : uniAccessLinkIdentifier

IpBwpFlow -u[hidden]-> IpvcEpBwpEnvelope
IpBwpFlow -u[hidden]-> IpUniAccessLinkBwpEnvelope
IpBwpFlow -u[hidden]-> IpUniBwpEnvelope


class InformationRate {

    irValue: number
    irUnits: IrUnits
}


class IpBwpFlowAll {

}
IpBwpFlow <|-- IpBwpFlowAll



class IpBwpFlowPerIpvcEp {

}
IpBwpFlow <|-- IpBwpFlowPerIpvcEp

IpBwpFlowPerIpvcEp *-->"*" IpvcEndPointIdentifier : ipvcEndPointIdentifier


class IpBwpFlowPerIpvcEpAndCosName {

}
IpBwpFlow <|-- IpBwpFlowPerIpvcEpAndCosName

IpBwpFlowPerIpvcEpAndCosName *-->"*" IpvcEpAndCosName : ipvcEpAndCosName



class IpBwpFlowPerCosName {

    cosName: string
}
IpBwpFlow <|-- IpBwpFlowPerCosName



class IpBwpFlowPerAccessLink {

}
IpBwpFlow <|-- IpBwpFlowPerAccessLink

IpBwpFlowPerAccessLink *-->"*" IpUniAccessLinkIdentifier : uniAccessLinkIdentifier


class IpBwpFlowPerIpvcEpAccessLink {

}
IpBwpFlow <|-- IpBwpFlowPerIpvcEpAccessLink

IpBwpFlowPerIpvcEpAccessLink *-->"*" IpvcEndPointIdentifier : ipvcEndPointIdentifier
IpBwpFlowPerIpvcEpAccessLink *-->"*" IpUniAccessLinkIdentifier : uniAccessLinkIdentifier

class IpvcEpAndCosName {

    cosName: string
}

IpvcEpAndCosName *--> IpvcEndPointIdentifier : ipvcEndPointIdentifier
class IpBwpFlow {

    flowIdentifier: integer
    weight: integer
    burstBehavior: BurstBehavior
}

IpBwpFlow *-u-> InformationRate : maxIr
IpBwpFlow *-u-> InformationRate : cir


@enduml
