From 1a93997ee7fc76dfae5684c3f7fde2a00880d89c Mon Sep 17 00:00:00 2001 From: sakeof-capy Date: Tue, 23 Sep 2025 10:38:09 +0000 Subject: [PATCH] feat: save --- .vscode/settings.json | 4 + COPIED/openconfig.proto | 1740 ++++++++++ COPIED/p4runtime.py | 350 ++ COPIED/shell.py | 3063 +++++++++++++++++ EXERCISE-1.md | 59 + EXERCISE-2.md | 43 + EXERCISE-4.md | 2 + EXERCISE-5.md | 72 + .../ngsdn/tutorial/Ipv6RoutingComponent.java | 30 +- .../ngsdn/tutorial/L2BridgingComponent.java | 2 +- .../ngsdn/tutorial/NdpReplyComponent.java | 9 +- .../tutorial/pipeconf/InterpreterImpl.java | 4 +- image.png | Bin 0 -> 106710 bytes img/ex1_entries_inserted.png | Bin 0 -> 44653 bytes img/ex1_pic1.png | Bin 0 -> 43407 bytes img/ex1_ping.png | Bin 0 -> 47559 bytes img/ex4_hosts.png | Bin 0 -> 24490 bytes img/ex5_ping.png | Bin 0 -> 130041 bytes img/ex5_success.png | Bin 0 -> 96038 bytes img/image.png | Bin 0 -> 308374 bytes listen.log | 14 + main.cpp | 0 onos.log | 19 + p4src/main.p4 | 193 +- ptf/tests/packetio.py | 149 +- ptf/tests/routing.py | 30 +- ptf/tests/srv6.py | 102 +- query.log | 1510 ++++++++ util/p4rt-sh | 9 +- util/p4rt_without_onos | 5 + util/restart-all | 12 + yang/demo-port.yang | 4 + 32 files changed, 7331 insertions(+), 94 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 COPIED/openconfig.proto create mode 100644 COPIED/p4runtime.py create mode 100644 COPIED/shell.py create mode 100644 image.png create mode 100644 img/ex1_entries_inserted.png create mode 100644 img/ex1_pic1.png create mode 100644 img/ex1_ping.png create mode 100644 img/ex4_hosts.png create mode 100644 img/ex5_ping.png create mode 100644 img/ex5_success.png create mode 100644 img/image.png create mode 100644 listen.log create mode 100644 main.cpp create mode 100644 onos.log create mode 100644 query.log create mode 100644 util/p4rt_without_onos create mode 100644 util/restart-all diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..df748dc --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python-envs.defaultEnvManager": "ms-python.python:system", + "python-envs.pythonProjects": [] +} \ No newline at end of file diff --git a/COPIED/openconfig.proto b/COPIED/openconfig.proto new file mode 100644 index 0000000..270dc33 --- /dev/null +++ b/COPIED/openconfig.proto @@ -0,0 +1,1740 @@ +// openconfig is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - openconfig/interfaces/openconfig-interfaces.yang +// - openconfig/interfaces/openconfig-if-ip.yang +// - openconfig/lacp/openconfig-lacp.yang +// - openconfig/platform/openconfig-platform-linecard.yang +// - openconfig/platform/openconfig-platform-port.yang +// - openconfig/platform/openconfig-platform-transceiver.yang +// - openconfig/platform/openconfig-platform.yang +// - openconfig/system/openconfig-system.yang +// - openconfig/vlan/openconfig-vlan.yang +// - hercules/openconfig-hercules-interfaces.yang +// - hercules/openconfig-hercules-platform-chassis.yang +// - hercules/openconfig-hercules-platform-linecard.yang +// - hercules/openconfig-hercules-platform-node.yang +// - hercules/openconfig-hercules-platform-port.yang +// - hercules/openconfig-hercules-platform.yang +// - hercules/openconfig-hercules-qos.yang +// - hercules/openconfig-hercules.yang +// Include paths: +// - ietf/... +// - openconfig/... +// - hercules/... +syntax = "proto3"; + +package openconfig; + +import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; +import "github.com/openconfig/ygot/proto/yext/yext.proto"; +import "openconfig/enums/enums.proto"; + +message Device { + message ComponentKey { + string name = 1 [(yext.schemapath) = "/components/component/config/name|/components/component/name"]; + Component component = 2; + } + message InterfaceKey { + string name = 1 [(yext.schemapath) = "/interfaces/interface/config/name|/interfaces/interface/name"]; + Interface interface = 2; + } + repeated ComponentKey component = 51431701 [(yext.schemapath) = "/components/component"]; + Hercules hercules = 458390141 [(yext.schemapath) = "/hercules"]; + repeated InterfaceKey interface = 422482938 [(yext.schemapath) = "/interfaces/interface"]; + Lacp lacp = 421806598 [(yext.schemapath) = "/lacp"]; + Messages messages = 120656914 [(yext.schemapath) = "/messages"]; + Qos qos = 11016188 [(yext.schemapath) = "/qos"]; + System system = 468934236 [(yext.schemapath) = "/system"]; +} + +message Hercules { +} + +message Interface { + message Aggregation { + message SwitchedVlan { + message TrunkVlansUnion { + string trunk_vlans_string = 312059958; + uint64 trunk_vlans_uint64 = 177367799; + } + ywrapper.UintValue access_vlan = 90805781 [(yext.schemapath) = "/interfaces/interface/aggregation/switched-vlan/config/access-vlan"]; + openconfig.enums.OpenconfigVlanVlanModeType interface_mode = 281531048 [(yext.schemapath) = "/interfaces/interface/aggregation/switched-vlan/config/interface-mode"]; + ywrapper.UintValue native_vlan = 44429228 [(yext.schemapath) = "/interfaces/interface/aggregation/switched-vlan/config/native-vlan"]; + repeated TrunkVlansUnion trunk_vlans = 175319366 [(yext.schemapath) = "/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans"]; + } + ywrapper.UintValue lag_speed = 408400324 [(yext.schemapath) = "/interfaces/interface/aggregation/state/lag-speed"]; + openconfig.enums.OpenconfigIfAggregateAggregationType lag_type = 172452860 [(yext.schemapath) = "/interfaces/interface/aggregation/config/lag-type"]; + repeated ywrapper.StringValue member = 432243688 [(yext.schemapath) = "/interfaces/interface/aggregation/state/member"]; + ywrapper.UintValue min_links = 391773051 [(yext.schemapath) = "/interfaces/interface/aggregation/config/min-links"]; + SwitchedVlan switched_vlan = 178357519 [(yext.schemapath) = "/interfaces/interface/aggregation/switched-vlan"]; + } + message Counters { + ywrapper.UintValue carrier_transitions = 270803130 [(yext.schemapath) = "/interfaces/interface/state/counters/carrier-transitions"]; + ywrapper.UintValue in_broadcast_pkts = 280201989 [(yext.schemapath) = "/interfaces/interface/state/counters/in-broadcast-pkts"]; + ywrapper.UintValue in_discards = 11979514 [(yext.schemapath) = "/interfaces/interface/state/counters/in-discards"]; + ywrapper.UintValue in_errors = 456697578 [(yext.schemapath) = "/interfaces/interface/state/counters/in-errors"]; + ywrapper.UintValue in_fcs_errors = 501559027 [(yext.schemapath) = "/interfaces/interface/state/counters/in-fcs-errors"]; + ywrapper.UintValue in_multicast_pkts = 113269128 [(yext.schemapath) = "/interfaces/interface/state/counters/in-multicast-pkts"]; + ywrapper.UintValue in_octets = 333138891 [(yext.schemapath) = "/interfaces/interface/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 412843491 [(yext.schemapath) = "/interfaces/interface/state/counters/in-pkts"]; + ywrapper.UintValue in_unicast_pkts = 272792307 [(yext.schemapath) = "/interfaces/interface/state/counters/in-unicast-pkts"]; + ywrapper.UintValue in_unknown_protos = 241475497 [(yext.schemapath) = "/interfaces/interface/state/counters/in-unknown-protos"]; + ywrapper.UintValue last_clear = 186014919 [(yext.schemapath) = "/interfaces/interface/state/counters/last-clear"]; + ywrapper.UintValue out_broadcast_pkts = 338589668 [(yext.schemapath) = "/interfaces/interface/state/counters/out-broadcast-pkts"]; + ywrapper.UintValue out_discards = 254055111 [(yext.schemapath) = "/interfaces/interface/state/counters/out-discards"]; + ywrapper.UintValue out_errors = 471103047 [(yext.schemapath) = "/interfaces/interface/state/counters/out-errors"]; + ywrapper.UintValue out_multicast_pkts = 457840757 [(yext.schemapath) = "/interfaces/interface/state/counters/out-multicast-pkts"]; + ywrapper.UintValue out_octets = 201005514 [(yext.schemapath) = "/interfaces/interface/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 437582090 [(yext.schemapath) = "/interfaces/interface/state/counters/out-pkts"]; + ywrapper.UintValue out_unicast_pkts = 36542246 [(yext.schemapath) = "/interfaces/interface/state/counters/out-unicast-pkts"]; + } + message Ethernet { + message Counters { + ywrapper.UintValue in_8021q_frames = 529738026 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-8021q-frames"]; + ywrapper.UintValue in_block_errors = 141122900 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-block-errors"]; + ywrapper.UintValue in_crc_errors = 77292495 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-crc-errors"]; + ywrapper.UintValue in_fragment_frames = 377378436 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-fragment-frames"]; + ywrapper.UintValue in_jabber_frames = 428398234 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-jabber-frames"]; + ywrapper.UintValue in_mac_control_frames = 90181121 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-mac-control-frames"]; + ywrapper.UintValue in_mac_pause_frames = 373764182 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-mac-pause-frames"]; + ywrapper.UintValue in_oversize_frames = 12762219 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-oversize-frames"]; + ywrapper.UintValue in_undersize_frames = 373754277 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/in-undersize-frames"]; + ywrapper.UintValue out_8021q_frames = 61726883 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/out-8021q-frames"]; + ywrapper.UintValue out_mac_control_frames = 23867076 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/out-mac-control-frames"]; + ywrapper.UintValue out_mac_pause_frames = 37153563 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters/out-mac-pause-frames"]; + } + message SwitchedVlan { + message TrunkVlansUnion { + string trunk_vlans_string = 325293279; + uint64 trunk_vlans_uint64 = 461732658; + } + ywrapper.UintValue access_vlan = 297473650 [(yext.schemapath) = "/interfaces/interface/ethernet/switched-vlan/config/access-vlan"]; + openconfig.enums.OpenconfigVlanVlanModeType interface_mode = 374657465 [(yext.schemapath) = "/interfaces/interface/ethernet/switched-vlan/config/interface-mode"]; + ywrapper.UintValue native_vlan = 16702907 [(yext.schemapath) = "/interfaces/interface/ethernet/switched-vlan/config/native-vlan"]; + repeated TrunkVlansUnion trunk_vlans = 528974489 [(yext.schemapath) = "/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans"]; + } + enum DuplexMode { + DUPLEXMODE_UNSET = 0; + DUPLEXMODE_FULL = 1 [(yext.yang_name) = "FULL"]; + DUPLEXMODE_HALF = 2 [(yext.yang_name) = "HALF"]; + } + enum NegotiatedDuplexMode { + NEGOTIATEDDUPLEXMODE_UNSET = 0; + NEGOTIATEDDUPLEXMODE_FULL = 1 [(yext.yang_name) = "FULL"]; + NEGOTIATEDDUPLEXMODE_HALF = 2 [(yext.yang_name) = "HALF"]; + } + ywrapper.StringValue aggregate_id = 208679153 [(yext.schemapath) = "/interfaces/interface/ethernet/config/aggregate-id"]; + ywrapper.BoolValue auto_negotiate = 362931914 [(yext.schemapath) = "/interfaces/interface/ethernet/config/auto-negotiate"]; + Counters counters = 452454018 [(yext.schemapath) = "/interfaces/interface/ethernet/state/counters"]; + DuplexMode duplex_mode = 281836250 [(yext.schemapath) = "/interfaces/interface/ethernet/config/duplex-mode"]; + ywrapper.BoolValue enable_flow_control = 41554070 [(yext.schemapath) = "/interfaces/interface/ethernet/config/enable-flow-control"]; + ywrapper.BoolValue forwarding_viable = 363724845 [(yext.schemapath) = "/interfaces/interface/ethernet/config/forwarding-viable"]; + ywrapper.StringValue hw_mac_address = 296258675 [(yext.schemapath) = "/interfaces/interface/ethernet/state/hw-mac-address"]; + ywrapper.StringValue mac_address = 1149482 [(yext.schemapath) = "/interfaces/interface/ethernet/config/mac-address"]; + NegotiatedDuplexMode negotiated_duplex_mode = 6853804 [(yext.schemapath) = "/interfaces/interface/ethernet/state/negotiated-duplex-mode"]; + openconfig.enums.OpenconfigIfEthernetETHERNETSPEED negotiated_port_speed = 316416089 [(yext.schemapath) = "/interfaces/interface/ethernet/state/negotiated-port-speed"]; + openconfig.enums.OpenconfigIfEthernetETHERNETSPEED port_speed = 272501003 [(yext.schemapath) = "/interfaces/interface/ethernet/config/port-speed"]; + SwitchedVlan switched_vlan = 268814182 [(yext.schemapath) = "/interfaces/interface/ethernet/switched-vlan"]; + } + message HoldTime { + ywrapper.UintValue down = 171181656 [(yext.schemapath) = "/interfaces/interface/hold-time/config/down"]; + ywrapper.UintValue up = 62026235 [(yext.schemapath) = "/interfaces/interface/hold-time/config/up"]; + } + message RoutedVlan { + message Ipv4 { + message Address { + message VrrpGroup { + message InterfaceTracking { + ywrapper.UintValue priority_decrement = 269461494 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking/config/priority-decrement"]; + repeated ywrapper.StringValue track_interface = 109384073 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking/config/track-interface"]; + } + ywrapper.BoolValue accept_mode = 14046336 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/accept-mode"]; + ywrapper.UintValue advertisement_interval = 355068623 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/advertisement-interval"]; + ywrapper.UintValue current_priority = 415387713 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/state/current-priority"]; + InterfaceTracking interface_tracking = 27491390 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking"]; + ywrapper.BoolValue preempt = 56784621 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/preempt"]; + ywrapper.UintValue preempt_delay = 404202907 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/preempt-delay"]; + ywrapper.UintValue priority = 475345840 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/priority"]; + repeated ywrapper.StringValue virtual_address = 495492198 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/virtual-address"]; + } + message VrrpGroupKey { + uint64 virtual_router_id = 1 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/config/virtual-router-id|/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/virtual-router-id"]; + VrrpGroup vrrp_group = 2; + } + openconfig.enums.OpenconfigIfIpIpAddressOrigin origin = 474065239 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/state/origin"]; + ywrapper.UintValue prefix_length = 319746417 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/config/prefix-length"]; + repeated VrrpGroupKey vrrp_group = 517951704 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group"]; + } + message AddressKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address/config/ip|/interfaces/interface/routed-vlan/ipv4/addresses/address/ip"]; + Address address = 2; + } + message Counters { + ywrapper.UintValue in_discarded_pkts = 458022187 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/in-discarded-pkts"]; + ywrapper.UintValue in_error_pkts = 83701670 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/in-error-pkts"]; + ywrapper.UintValue in_forwarded_octets = 8098512 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/in-forwarded-octets"]; + ywrapper.UintValue in_forwarded_pkts = 516706228 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/in-forwarded-pkts"]; + ywrapper.UintValue in_octets = 114257965 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 436478457 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/in-pkts"]; + ywrapper.UintValue out_discarded_pkts = 240977330 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/out-discarded-pkts"]; + ywrapper.UintValue out_error_pkts = 221729199 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/out-error-pkts"]; + ywrapper.UintValue out_forwarded_octets = 60697281 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/out-forwarded-octets"]; + ywrapper.UintValue out_forwarded_pkts = 313944229 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/out-forwarded-pkts"]; + ywrapper.UintValue out_octets = 429728576 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 66045220 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters/out-pkts"]; + } + message Neighbor { + ywrapper.StringValue link_layer_address = 122384166 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/config/link-layer-address"]; + openconfig.enums.OpenconfigIfIpNeighborOrigin origin = 457574488 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state/origin"]; + } + message NeighborKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/config/ip|/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/ip"]; + Neighbor neighbor = 2; + } + message ProxyArp { + enum Mode { + MODE_DISABLE = 0 [(yext.yang_name) = "DISABLE"]; + MODE_REMOTE_ONLY = 2 [(yext.yang_name) = "REMOTE_ONLY"]; + MODE_ALL = 3 [(yext.yang_name) = "ALL"]; + } + Mode mode = 373366860 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/proxy-arp/config/mode"]; + } + message Unnumbered { + message InterfaceRef { + ywrapper.StringValue interface = 88393539 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref/config/interface"]; + ywrapper.UintValue subinterface = 527598737 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref/config/subinterface"]; + } + ywrapper.BoolValue enabled = 414259321 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/unnumbered/config/enabled"]; + InterfaceRef interface_ref = 433795586 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref"]; + } + repeated AddressKey address = 491252712 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/addresses/address"]; + Counters counters = 108922474 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/state/counters"]; + ywrapper.BoolValue dhcp_client = 66717571 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/config/dhcp-client"]; + ywrapper.BoolValue enabled = 421586295 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/config/enabled"]; + ywrapper.UintValue mtu = 241730120 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/config/mtu"]; + repeated NeighborKey neighbor = 49515461 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor"]; + ProxyArp proxy_arp = 30863325 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/proxy-arp"]; + Unnumbered unnumbered = 494263654 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4/unnumbered"]; + } + message Ipv6 { + message Address { + message VrrpGroup { + message InterfaceTracking { + ywrapper.UintValue priority_decrement = 24311112 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking/config/priority-decrement"]; + repeated ywrapper.StringValue track_interface = 462890491 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking/config/track-interface"]; + } + ywrapper.BoolValue accept_mode = 473970174 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/accept-mode"]; + ywrapper.UintValue advertisement_interval = 35447257 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/advertisement-interval"]; + ywrapper.UintValue current_priority = 512020007 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/state/current-priority"]; + InterfaceTracking interface_tracking = 329957492 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking"]; + ywrapper.BoolValue preempt = 111055611 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/preempt"]; + ywrapper.UintValue preempt_delay = 458956129 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/preempt-delay"]; + ywrapper.UintValue priority = 332652754 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/priority"]; + repeated ywrapper.StringValue virtual_address = 28701956 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/virtual-address"]; + ywrapper.StringValue virtual_link_local = 224033014 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/virtual-link-local"]; + } + message VrrpGroupKey { + uint64 virtual_router_id = 1 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/config/virtual-router-id|/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/virtual-router-id"]; + VrrpGroup vrrp_group = 2; + } + enum Status { + STATUS_UNSET = 0; + STATUS_PREFERRED = 1 [(yext.yang_name) = "PREFERRED"]; + STATUS_DEPRECATED = 2 [(yext.yang_name) = "DEPRECATED"]; + STATUS_INVALID = 3 [(yext.yang_name) = "INVALID"]; + STATUS_INACCESSIBLE = 4 [(yext.yang_name) = "INACCESSIBLE"]; + STATUS_UNKNOWN = 5 [(yext.yang_name) = "UNKNOWN"]; + STATUS_TENTATIVE = 6 [(yext.yang_name) = "TENTATIVE"]; + STATUS_DUPLICATE = 7 [(yext.yang_name) = "DUPLICATE"]; + STATUS_OPTIMISTIC = 8 [(yext.yang_name) = "OPTIMISTIC"]; + } + openconfig.enums.OpenconfigIfIpIpAddressOrigin origin = 70383429 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/origin"]; + ywrapper.UintValue prefix_length = 420005967 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/config/prefix-length"]; + Status status = 436927845 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/status"]; + repeated VrrpGroupKey vrrp_group = 131881570 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group"]; + } + message AddressKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address/config/ip|/interfaces/interface/routed-vlan/ipv6/addresses/address/ip"]; + Address address = 2; + } + message Counters { + ywrapper.UintValue in_discarded_pkts = 239614269 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/in-discarded-pkts"]; + ywrapper.UintValue in_error_pkts = 187753516 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/in-error-pkts"]; + ywrapper.UintValue in_forwarded_octets = 355825230 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/in-forwarded-octets"]; + ywrapper.UintValue in_forwarded_pkts = 71610230 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/in-forwarded-pkts"]; + ywrapper.UintValue in_octets = 221620847 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 54277935 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/in-pkts"]; + ywrapper.UintValue out_discarded_pkts = 499638688 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/out-discarded-pkts"]; + ywrapper.UintValue out_error_pkts = 524876409 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/out-error-pkts"]; + ywrapper.UintValue out_forwarded_octets = 229097699 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/out-forwarded-octets"]; + ywrapper.UintValue out_forwarded_pkts = 237143003 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/out-forwarded-pkts"]; + ywrapper.UintValue out_octets = 19140950 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 334393886 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters/out-pkts"]; + } + message Neighbor { + enum NeighborState { + NEIGHBORSTATE_UNSET = 0; + NEIGHBORSTATE_INCOMPLETE = 1 [(yext.yang_name) = "INCOMPLETE"]; + NEIGHBORSTATE_REACHABLE = 2 [(yext.yang_name) = "REACHABLE"]; + NEIGHBORSTATE_STALE = 3 [(yext.yang_name) = "STALE"]; + NEIGHBORSTATE_DELAY = 4 [(yext.yang_name) = "DELAY"]; + NEIGHBORSTATE_PROBE = 5 [(yext.yang_name) = "PROBE"]; + } + ywrapper.BoolValue is_router = 444254730 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/is-router"]; + ywrapper.StringValue link_layer_address = 357623180 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/config/link-layer-address"]; + NeighborState neighbor_state = 125627606 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/neighbor-state"]; + openconfig.enums.OpenconfigIfIpNeighborOrigin origin = 95623922 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/origin"]; + } + message NeighborKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/config/ip|/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/ip"]; + Neighbor neighbor = 2; + } + message RouterAdvertisement { + ywrapper.UintValue interval = 98870893 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/router-advertisement/config/interval"]; + ywrapper.UintValue lifetime = 87992571 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/router-advertisement/config/lifetime"]; + ywrapper.BoolValue suppress = 5991079 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/router-advertisement/config/suppress"]; + } + message Unnumbered { + message InterfaceRef { + ywrapper.StringValue interface = 21523641 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref/config/interface"]; + ywrapper.UintValue subinterface = 448921723 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref/config/subinterface"]; + } + ywrapper.BoolValue enabled = 172326403 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/unnumbered/config/enabled"]; + InterfaceRef interface_ref = 468223976 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref"]; + } + repeated AddressKey address = 512779414 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/addresses/address"]; + Counters counters = 453666504 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/state/counters"]; + ywrapper.BoolValue dhcp_client = 167177313 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/config/dhcp-client"]; + ywrapper.UintValue dup_addr_detect_transmits = 124019213 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/config/dup-addr-detect-transmits"]; + ywrapper.BoolValue enabled = 235203553 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/config/enabled"]; + ywrapper.UintValue mtu = 498820810 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/config/mtu"]; + repeated NeighborKey neighbor = 275473167 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor"]; + RouterAdvertisement router_advertisement = 75504594 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/router-advertisement"]; + Unnumbered unnumbered = 530580104 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6/unnumbered"]; + } + Ipv4 ipv4 = 499852620 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv4"]; + Ipv6 ipv6 = 499852622 [(yext.schemapath) = "/interfaces/interface/routed-vlan/ipv6"]; + oneof vlan { + string vlan_string = 459932191; + uint64 vlan_uint64 = 59552370; + } + } + message Subinterface { + message Counters { + ywrapper.UintValue carrier_transitions = 141120277 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/carrier-transitions"]; + ywrapper.UintValue in_broadcast_pkts = 120244022 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-broadcast-pkts"]; + ywrapper.UintValue in_discards = 307490461 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-discards"]; + ywrapper.UintValue in_errors = 319720873 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-errors"]; + ywrapper.UintValue in_fcs_errors = 169858424 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-fcs-errors"]; + ywrapper.UintValue in_multicast_pkts = 320618859 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-multicast-pkts"]; + ywrapper.UintValue in_octets = 530205868 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 441153352 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-pkts"]; + ywrapper.UintValue in_unicast_pkts = 177838880 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-unicast-pkts"]; + ywrapper.UintValue in_unknown_protos = 146059814 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/in-unknown-protos"]; + ywrapper.UintValue last_clear = 518046966 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/last-clear"]; + ywrapper.UintValue out_broadcast_pkts = 501221245 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-broadcast-pkts"]; + ywrapper.UintValue out_discards = 159539762 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-discards"]; + ywrapper.UintValue out_errors = 466636898 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-errors"]; + ywrapper.UintValue out_multicast_pkts = 326155776 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-multicast-pkts"]; + ywrapper.UintValue out_octets = 50579235 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 29497115 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-pkts"]; + ywrapper.UintValue out_unicast_pkts = 297910971 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters/out-unicast-pkts"]; + } + message Ipv4 { + message Address { + message VrrpGroup { + message InterfaceTracking { + ywrapper.UintValue priority_decrement = 412949359 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking/config/priority-decrement"]; + repeated ywrapper.StringValue track_interface = 225882622 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking/config/track-interface"]; + } + ywrapper.BoolValue accept_mode = 241791545 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/accept-mode"]; + ywrapper.UintValue advertisement_interval = 62480072 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/advertisement-interval"]; + ywrapper.UintValue current_priority = 410673536 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/state/current-priority"]; + InterfaceTracking interface_tracking = 65916063 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking"]; + ywrapper.BoolValue preempt = 34241868 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/preempt"]; + ywrapper.UintValue preempt_delay = 165057134 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/preempt-delay"]; + ywrapper.UintValue priority = 462156599 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/priority"]; + repeated ywrapper.StringValue virtual_address = 386503383 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/virtual-address"]; + } + message VrrpGroupKey { + uint64 virtual_router_id = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/config/virtual-router-id|/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/virtual-router-id"]; + VrrpGroup vrrp_group = 2; + } + openconfig.enums.OpenconfigIfIpIpAddressOrigin origin = 86633258 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/origin"]; + ywrapper.UintValue prefix_length = 250130256 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/config/prefix-length"]; + repeated VrrpGroupKey vrrp_group = 304427675 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group"]; + } + message AddressKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/config/ip|/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/ip"]; + Address address = 2; + } + message Counters { + ywrapper.UintValue in_discarded_pkts = 23305318 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-discarded-pkts"]; + ywrapper.UintValue in_error_pkts = 125054547 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-error-pkts"]; + ywrapper.UintValue in_forwarded_octets = 210644557 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-forwarded-octets"]; + ywrapper.UintValue in_forwarded_pkts = 257970457 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-forwarded-pkts"]; + ywrapper.UintValue in_octets = 6166740 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 55520496 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-pkts"]; + ywrapper.UintValue out_discarded_pkts = 196519817 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-discarded-pkts"]; + ywrapper.UintValue out_error_pkts = 212089176 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-error-pkts"]; + ywrapper.UintValue out_forwarded_octets = 299444306 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-forwarded-octets"]; + ywrapper.UintValue out_forwarded_pkts = 175600114 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-forwarded-pkts"]; + ywrapper.UintValue out_octets = 75882059 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 197536867 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-pkts"]; + } + message Neighbor { + ywrapper.StringValue link_layer_address = 11872487 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/config/link-layer-address"]; + openconfig.enums.OpenconfigIfIpNeighborOrigin origin = 454675095 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/state/origin"]; + } + message NeighborKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/config/ip|/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/ip"]; + Neighbor neighbor = 2; + } + message ProxyArp { + enum Mode { + MODE_DISABLE = 0 [(yext.yang_name) = "DISABLE"]; + MODE_REMOTE_ONLY = 2 [(yext.yang_name) = "REMOTE_ONLY"]; + MODE_ALL = 3 [(yext.yang_name) = "ALL"]; + } + Mode mode = 56040263 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/proxy-arp/config/mode"]; + } + message Unnumbered { + message InterfaceRef { + ywrapper.StringValue interface = 462989376 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref/config/interface"]; + ywrapper.UintValue subinterface = 347895728 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref/config/subinterface"]; + } + ywrapper.BoolValue enabled = 527961066 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/config/enabled"]; + InterfaceRef interface_ref = 235981495 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref"]; + } + repeated AddressKey address = 92268151 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address"]; + Counters counters = 437070007 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters"]; + ywrapper.BoolValue dhcp_client = 161639310 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/config/dhcp-client"]; + ywrapper.BoolValue enabled = 2746286 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/config/enabled"]; + ywrapper.UintValue mtu = 20062117 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/config/mtu"]; + repeated NeighborKey neighbor = 188476968 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor"]; + ProxyArp proxy_arp = 197757350 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/proxy-arp"]; + Unnumbered unnumbered = 488271015 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered"]; + } + message Ipv6 { + message Address { + message VrrpGroup { + message InterfaceTracking { + ywrapper.UintValue priority_decrement = 246785741 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking/config/priority-decrement"]; + repeated ywrapper.StringValue track_interface = 245530804 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking/config/track-interface"]; + } + ywrapper.BoolValue accept_mode = 474973235 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/accept-mode"]; + ywrapper.UintValue advertisement_interval = 206648014 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/advertisement-interval"]; + ywrapper.UintValue current_priority = 522580458 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/state/current-priority"]; + InterfaceTracking interface_tracking = 373418769 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking"]; + ywrapper.BoolValue preempt = 473677782 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/preempt"]; + ywrapper.UintValue preempt_delay = 322094336 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/preempt-delay"]; + ywrapper.UintValue priority = 441053125 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/priority"]; + repeated ywrapper.StringValue virtual_address = 50990313 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/virtual-address"]; + ywrapper.StringValue virtual_link_local = 432847301 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/virtual-link-local"]; + } + message VrrpGroupKey { + uint64 virtual_router_id = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/config/virtual-router-id|/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/virtual-router-id"]; + VrrpGroup vrrp_group = 2; + } + enum Status { + STATUS_UNSET = 0; + STATUS_PREFERRED = 1 [(yext.yang_name) = "PREFERRED"]; + STATUS_DEPRECATED = 2 [(yext.yang_name) = "DEPRECATED"]; + STATUS_INVALID = 3 [(yext.yang_name) = "INVALID"]; + STATUS_INACCESSIBLE = 4 [(yext.yang_name) = "INACCESSIBLE"]; + STATUS_UNKNOWN = 5 [(yext.yang_name) = "UNKNOWN"]; + STATUS_TENTATIVE = 6 [(yext.yang_name) = "TENTATIVE"]; + STATUS_DUPLICATE = 7 [(yext.yang_name) = "DUPLICATE"]; + STATUS_OPTIMISTIC = 8 [(yext.yang_name) = "OPTIMISTIC"]; + } + openconfig.enums.OpenconfigIfIpIpAddressOrigin origin = 265403532 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/origin"]; + ywrapper.UintValue prefix_length = 23797826 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/config/prefix-length"]; + Status status = 330441988 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/status"]; + repeated VrrpGroupKey vrrp_group = 164916337 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group"]; + } + message AddressKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/config/ip|/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/ip"]; + Address address = 2; + } + message Counters { + ywrapper.UintValue in_discarded_pkts = 434884732 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-discarded-pkts"]; + ywrapper.UintValue in_error_pkts = 172406437 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-error-pkts"]; + ywrapper.UintValue in_forwarded_octets = 379953975 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-forwarded-octets"]; + ywrapper.UintValue in_forwarded_pkts = 182415255 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-forwarded-pkts"]; + ywrapper.UintValue in_octets = 109755954 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-octets"]; + ywrapper.UintValue in_pkts = 276237266 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-pkts"]; + ywrapper.UintValue out_discarded_pkts = 255300923 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-discarded-pkts"]; + ywrapper.UintValue out_error_pkts = 183019222 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-error-pkts"]; + ywrapper.UintValue out_forwarded_octets = 38309568 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-forwarded-octets"]; + ywrapper.UintValue out_forwarded_pkts = 54486180 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-forwarded-pkts"]; + ywrapper.UintValue out_octets = 116847869 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-octets"]; + ywrapper.UintValue out_pkts = 56040841 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-pkts"]; + } + message Neighbor { + enum NeighborState { + NEIGHBORSTATE_UNSET = 0; + NEIGHBORSTATE_INCOMPLETE = 1 [(yext.yang_name) = "INCOMPLETE"]; + NEIGHBORSTATE_REACHABLE = 2 [(yext.yang_name) = "REACHABLE"]; + NEIGHBORSTATE_STALE = 3 [(yext.yang_name) = "STALE"]; + NEIGHBORSTATE_DELAY = 4 [(yext.yang_name) = "DELAY"]; + NEIGHBORSTATE_PROBE = 5 [(yext.yang_name) = "PROBE"]; + } + ywrapper.BoolValue is_router = 444173615 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/is-router"]; + ywrapper.StringValue link_layer_address = 233623417 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/config/link-layer-address"]; + NeighborState neighbor_state = 89361925 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/neighbor-state"]; + openconfig.enums.OpenconfigIfIpNeighborOrigin origin = 158224829 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/origin"]; + } + message NeighborKey { + string ip = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/config/ip|/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/ip"]; + Neighbor neighbor = 2; + } + message RouterAdvertisement { + ywrapper.UintValue interval = 238405632 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement/config/interval"]; + ywrapper.UintValue lifetime = 524948482 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement/config/lifetime"]; + ywrapper.BoolValue suppress = 336253082 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement/config/suppress"]; + } + message Unnumbered { + message InterfaceRef { + ywrapper.StringValue interface = 337892034 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref/config/interface"]; + ywrapper.UintValue subinterface = 81083550 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref/config/subinterface"]; + } + ywrapper.BoolValue enabled = 80018040 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/config/enabled"]; + InterfaceRef interface_ref = 451937841 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref"]; + } + repeated AddressKey address = 332836913 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address"]; + Counters counters = 211415865 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters"]; + ywrapper.BoolValue dhcp_client = 67735920 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/config/dhcp-client"]; + ywrapper.UintValue dup_addr_detect_transmits = 205454088 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/config/dup-addr-detect-transmits"]; + ywrapper.BoolValue enabled = 253027964 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/config/enabled"]; + ywrapper.UintValue mtu = 255734467 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/config/mtu"]; + repeated NeighborKey neighbor = 66223230 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor"]; + RouterAdvertisement router_advertisement = 219367423 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/router-advertisement"]; + Unnumbered unnumbered = 8515701 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered"]; + } + message Vlan { + message EgressMapping { + openconfig.enums.OpenconfigVlanTypesTPIDTYPES tpid = 5974643 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/config/tpid"]; + ywrapper.UintValue vlan_id = 115904943 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/config/vlan-id"]; + openconfig.enums.OpenconfigVlanVlanStackAction vlan_stack_action = 73085815 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping/config/vlan-stack-action"]; + } + message IngressMapping { + openconfig.enums.OpenconfigVlanTypesTPIDTYPES tpid = 396796195 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/config/tpid"]; + ywrapper.UintValue vlan_id = 28136351 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/config/vlan-id"]; + openconfig.enums.OpenconfigVlanVlanStackAction vlan_stack_action = 294702087 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping/config/vlan-stack-action"]; + } + message Match { + message DoubleTagged { + ywrapper.UintValue inner_vlan_id = 487156134 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged/config/inner-vlan-id"]; + ywrapper.UintValue outer_vlan_id = 239275239 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged/config/outer-vlan-id"]; + } + message DoubleTaggedInnerList { + repeated ywrapper.UintValue inner_vlan_ids = 241185761 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-list/config/inner-vlan-ids"]; + ywrapper.UintValue outer_vlan_id = 178462631 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-list/config/outer-vlan-id"]; + } + message DoubleTaggedInnerOuterRange { + ywrapper.UintValue inner_high_vlan_id = 199617942 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-outer-range/config/inner-high-vlan-id"]; + ywrapper.UintValue inner_low_vlan_id = 338513248 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-outer-range/config/inner-low-vlan-id"]; + ywrapper.UintValue outer_high_vlan_id = 421546437 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-outer-range/config/outer-high-vlan-id"]; + ywrapper.UintValue outer_low_vlan_id = 423694417 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-outer-range/config/outer-low-vlan-id"]; + } + message DoubleTaggedInnerRange { + ywrapper.UintValue inner_high_vlan_id = 517943948 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-range/config/inner-high-vlan-id"]; + ywrapper.UintValue inner_low_vlan_id = 415647886 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-range/config/inner-low-vlan-id"]; + repeated ywrapper.UintValue outer_vlan_id = 518550994 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-range/config/outer-vlan-id"]; + } + message DoubleTaggedOuterList { + ywrapper.UintValue inner_vlan_id = 254260451 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-list/config/inner-vlan-id"]; + repeated ywrapper.UintValue outer_vlan_ids = 334803485 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-list/config/outer-vlan-ids"]; + } + message DoubleTaggedOuterRange { + ywrapper.UintValue inner_vlan_id = 232967292 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-range/config/inner-vlan-id"]; + ywrapper.UintValue outer_high_vlan_id = 169135066 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-range/config/outer-high-vlan-id"]; + ywrapper.UintValue outer_low_vlan_id = 535310924 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-range/config/outer-low-vlan-id"]; + } + message SingleTagged { + ywrapper.UintValue vlan_id = 305668962 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged/config/vlan-id"]; + } + message SingleTaggedList { + repeated ywrapper.UintValue vlan_ids = 80041414 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-list/config/vlan-ids"]; + } + message SingleTaggedRange { + ywrapper.UintValue high_vlan_id = 77488575 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-range/config/high-vlan-id"]; + ywrapper.UintValue low_vlan_id = 158022331 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-range/config/low-vlan-id"]; + } + DoubleTagged double_tagged = 403737974 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged"]; + DoubleTaggedInnerList double_tagged_inner_list = 522240822 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-list"]; + DoubleTaggedInnerOuterRange double_tagged_inner_outer_range = 233858807 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-outer-range"]; + DoubleTaggedInnerRange double_tagged_inner_range = 356922801 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-inner-range"]; + DoubleTaggedOuterList double_tagged_outer_list = 17738489 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-list"]; + DoubleTaggedOuterRange double_tagged_outer_range = 470735512 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/double-tagged-outer-range"]; + SingleTagged single_tagged = 498022799 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged"]; + SingleTaggedList single_tagged_list = 465169032 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-list"]; + SingleTaggedRange single_tagged_range = 121279207 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match/single-tagged-range"]; + } + EgressMapping egress_mapping = 230644992 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/egress-mapping"]; + IngressMapping ingress_mapping = 179212592 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/ingress-mapping"]; + Match match = 89345155 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan/match"]; + oneof vlan_id { + string vlan_id_string = 70496816; + uint64 vlan_id_uint64 = 218877865; + } + } + enum AdminStatus { + ADMINSTATUS_UNSET = 0; + ADMINSTATUS_UP = 1 [(yext.yang_name) = "UP"]; + ADMINSTATUS_DOWN = 2 [(yext.yang_name) = "DOWN"]; + ADMINSTATUS_TESTING = 3 [(yext.yang_name) = "TESTING"]; + } + enum OperStatus { + OPERSTATUS_UNSET = 0; + OPERSTATUS_UP = 2 [(yext.yang_name) = "UP"]; + OPERSTATUS_DOWN = 3 [(yext.yang_name) = "DOWN"]; + OPERSTATUS_TESTING = 4 [(yext.yang_name) = "TESTING"]; + OPERSTATUS_UNKNOWN = 5 [(yext.yang_name) = "UNKNOWN"]; + OPERSTATUS_DORMANT = 6 [(yext.yang_name) = "DORMANT"]; + OPERSTATUS_NOT_PRESENT = 7 [(yext.yang_name) = "NOT_PRESENT"]; + OPERSTATUS_LOWER_LAYER_DOWN = 8 [(yext.yang_name) = "LOWER_LAYER_DOWN"]; + } + AdminStatus admin_status = 250658952 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/admin-status"]; + Counters counters = 483442783 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/counters"]; + ywrapper.StringValue description = 280671199 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config/description"]; + ywrapper.BoolValue enabled = 297236390 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config/enabled"]; + ywrapper.UintValue ifindex = 511987815 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/ifindex"]; + Ipv4 ipv4 = 222971947 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv4"]; + Ipv6 ipv6 = 222971945 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/ipv6"]; + ywrapper.UintValue last_change = 29904521 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/last-change"]; + ywrapper.BoolValue logical = 294124401 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/logical"]; + ywrapper.StringValue name = 279346681 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/name"]; + OperStatus oper_status = 401969247 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/state/oper-status"]; + Vlan vlan = 164705069 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/vlan"]; + } + message SubinterfaceKey { + uint64 index = 1 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface/config/index|/interfaces/interface/subinterfaces/subinterface/index"]; + Subinterface subinterface = 2; + } + enum AdminStatus { + ADMINSTATUS_UNSET = 0; + ADMINSTATUS_UP = 1 [(yext.yang_name) = "UP"]; + ADMINSTATUS_DOWN = 2 [(yext.yang_name) = "DOWN"]; + ADMINSTATUS_TESTING = 3 [(yext.yang_name) = "TESTING"]; + } + enum HealthIndicator { + HEALTHINDICATOR_UNSET = 0; + HEALTHINDICATOR_GOOD = 1 [(yext.yang_name) = "GOOD"]; + HEALTHINDICATOR_BAD = 2 [(yext.yang_name) = "BAD"]; + } + enum OperStatus { + OPERSTATUS_UNSET = 0; + OPERSTATUS_UP = 2 [(yext.yang_name) = "UP"]; + OPERSTATUS_DOWN = 3 [(yext.yang_name) = "DOWN"]; + OPERSTATUS_TESTING = 4 [(yext.yang_name) = "TESTING"]; + OPERSTATUS_UNKNOWN = 5 [(yext.yang_name) = "UNKNOWN"]; + OPERSTATUS_DORMANT = 6 [(yext.yang_name) = "DORMANT"]; + OPERSTATUS_NOT_PRESENT = 7 [(yext.yang_name) = "NOT_PRESENT"]; + OPERSTATUS_LOWER_LAYER_DOWN = 8 [(yext.yang_name) = "LOWER_LAYER_DOWN"]; + } + AdminStatus admin_status = 474494763 [(yext.schemapath) = "/interfaces/interface/state/admin-status"]; + Aggregation aggregation = 264856597 [(yext.schemapath) = "/interfaces/interface/aggregation"]; + Counters counters = 83645964 [(yext.schemapath) = "/interfaces/interface/state/counters"]; + ywrapper.StringValue description = 418535860 [(yext.schemapath) = "/interfaces/interface/config/description"]; + ywrapper.BoolValue enabled = 37224301 [(yext.schemapath) = "/interfaces/interface/config/enabled"]; + Ethernet ethernet = 79652980 [(yext.schemapath) = "/interfaces/interface/ethernet"]; + ywrapper.StringValue hardware_port = 119177817 [(yext.schemapath) = "/interfaces/interface/state/hardware-port"]; + HealthIndicator health_indicator = 48855692 [(yext.schemapath) = "/interfaces/interface/config/health-indicator"]; + HoldTime hold_time = 175931092 [(yext.schemapath) = "/interfaces/interface/hold-time"]; + ywrapper.UintValue id = 105633293 [(yext.schemapath) = "/interfaces/interface/config/id"]; + ywrapper.UintValue ifindex = 116108202 [(yext.schemapath) = "/interfaces/interface/state/ifindex"]; + ywrapper.UintValue last_change = 127348880 [(yext.schemapath) = "/interfaces/interface/state/last-change"]; + ywrapper.BoolValue logical = 440460216 [(yext.schemapath) = "/interfaces/interface/state/logical"]; + ywrapper.BoolValue loopback_mode = 253516347 [(yext.schemapath) = "/interfaces/interface/config/loopback-mode"]; + ywrapper.UintValue mtu = 376210342 [(yext.schemapath) = "/interfaces/interface/config/mtu"]; + OperStatus oper_status = 470394226 [(yext.schemapath) = "/interfaces/interface/state/oper-status"]; + repeated ywrapper.UintValue physical_channel = 46213654 [(yext.schemapath) = "/interfaces/interface/state/physical-channel"]; + RoutedVlan routed_vlan = 65530678 [(yext.schemapath) = "/interfaces/interface/routed-vlan"]; + repeated SubinterfaceKey subinterface = 464802819 [(yext.schemapath) = "/interfaces/interface/subinterfaces/subinterface"]; + openconfig.enums.OpenconfigVlanTypesTPIDTYPES tpid = 464491713 [(yext.schemapath) = "/interfaces/interface/config/tpid"]; + ywrapper.StringValue transceiver = 84602875 [(yext.schemapath) = "/interfaces/interface/state/transceiver"]; + openconfig.enums.IETFInterfacesInterfaceType type = 144596894 [(yext.schemapath) = "/interfaces/interface/config/type"]; +} + +message Lacp { + message Interface { + message Member { + message Counters { + ywrapper.UintValue lacp_errors = 432819317 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters/lacp-errors"]; + ywrapper.UintValue lacp_in_pkts = 133444718 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters/lacp-in-pkts"]; + ywrapper.UintValue lacp_out_pkts = 391388365 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters/lacp-out-pkts"]; + ywrapper.UintValue lacp_rx_errors = 124474434 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters/lacp-rx-errors"]; + ywrapper.UintValue lacp_tx_errors = 98014728 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters/lacp-tx-errors"]; + ywrapper.UintValue lacp_unknown_errors = 33984050 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters/lacp-unknown-errors"]; + } + openconfig.enums.OpenconfigLacpLacpActivityType activity = 344383748 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/activity"]; + ywrapper.BoolValue aggregatable = 490059983 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/aggregatable"]; + ywrapper.BoolValue collecting = 431241365 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/collecting"]; + Counters counters = 159126128 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/counters"]; + ywrapper.BoolValue distributing = 325869523 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/distributing"]; + ywrapper.UintValue oper_key = 503255861 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/oper-key"]; + ywrapper.StringValue partner_id = 342233611 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/partner-id"]; + ywrapper.UintValue partner_key = 313821353 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/partner-key"]; + ywrapper.UintValue partner_port_num = 11089282 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/partner-port-num"]; + ywrapper.UintValue port_num = 55409541 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/port-num"]; + openconfig.enums.OpenconfigLacpLacpSynchronizationType synchronization = 179070617 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/synchronization"]; + ywrapper.StringValue system_id = 207537082 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/system-id"]; + openconfig.enums.OpenconfigLacpLacpTimeoutType timeout = 834808 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/timeout"]; + } + message MemberKey { + string interface = 1 [(yext.schemapath) = "/lacp/interfaces/interface/members/member/state/interface|/lacp/interfaces/interface/members/member/interface"]; + Member member = 2; + } + openconfig.enums.OpenconfigLacpLacpPeriodType interval = 463085042 [(yext.schemapath) = "/lacp/interfaces/interface/config/interval"]; + openconfig.enums.OpenconfigLacpLacpActivityType lacp_mode = 43173203 [(yext.schemapath) = "/lacp/interfaces/interface/config/lacp-mode"]; + repeated MemberKey member = 107372070 [(yext.schemapath) = "/lacp/interfaces/interface/members/member"]; + ywrapper.StringValue system_id_mac = 461403306 [(yext.schemapath) = "/lacp/interfaces/interface/config/system-id-mac"]; + ywrapper.UintValue system_priority = 131529879 [(yext.schemapath) = "/lacp/interfaces/interface/config/system-priority"]; + } + message InterfaceKey { + string name = 1 [(yext.schemapath) = "/lacp/interfaces/interface/config/name|/lacp/interfaces/interface/name"]; + Interface interface = 2; + } + repeated InterfaceKey interface = 212110241 [(yext.schemapath) = "/lacp/interfaces/interface"]; + ywrapper.UintValue system_priority = 71542334 [(yext.schemapath) = "/lacp/config/system-priority"]; +} + +message Messages { + message DebugService { + ywrapper.BoolValue enabled = 199740246 [(yext.schemapath) = "/messages/debug-entries/debug-service/config/enabled"]; + } + message DebugServiceKey { + openconfig.enums.OpenconfigMessagesDEBUGSERVICE service = 1 [(yext.schemapath) = "/messages/debug-entries/debug-service/config/service|/messages/debug-entries/debug-service/service"]; + DebugService debug_service = 2; + } + message Message { + ywrapper.StringValue app_name = 304771296 [(yext.schemapath) = "/messages/state/message/app-name"]; + ywrapper.StringValue msg = 279618974 [(yext.schemapath) = "/messages/state/message/msg"]; + ywrapper.StringValue msgid = 19358029 [(yext.schemapath) = "/messages/state/message/msgid"]; + ywrapper.UintValue priority = 79965083 [(yext.schemapath) = "/messages/state/message/priority"]; + ywrapper.StringValue procid = 40506564 [(yext.schemapath) = "/messages/state/message/procid"]; + } + repeated DebugServiceKey debug_service = 496947347 [(yext.schemapath) = "/messages/debug-entries/debug-service"]; + Message message = 263846912 [(yext.schemapath) = "/messages/state/message"]; + openconfig.enums.OpenconfigMessagesSyslogSeverity severity = 369122415 [(yext.schemapath) = "/messages/config/severity"]; +} + +message Component { + message Backplane { + } + message Chassis { + message Alarms { + message CriticalState { + ywrapper.StringValue info = 342401342 [(yext.schemapath) = "/components/component/chassis/alarms/critical-state/info"]; + openconfig.enums.OpenconfigAlarmTypesOPENCONFIGALARMSEVERITY severity = 397236191 [(yext.schemapath) = "/components/component/chassis/alarms/critical-state/severity"]; + ywrapper.BoolValue status = 41151748 [(yext.schemapath) = "/components/component/chassis/alarms/critical-state/status"]; + ywrapper.UintValue time_created = 477885306 [(yext.schemapath) = "/components/component/chassis/alarms/critical-state/time-created"]; + } + CriticalState critical_state = 432588419 [(yext.schemapath) = "/components/component/chassis/alarms/critical-state"]; + } + Alarms alarms = 408595637 [(yext.schemapath) = "/components/component/chassis/alarms"]; + openconfig.enums.OpenconfigHerculesPlatformPLATFORMTYPE platform = 282254533 [(yext.schemapath) = "/components/component/chassis/config/platform"]; + } + message Cpu { + } + message Fabric { + } + message Fan { + } + message IntegratedCircuit { + message VendorData { + } + ywrapper.UintValue node_id = 182157625 [(yext.schemapath) = "/components/component/integrated-circuit/config/node-id"]; + VendorData vendor_data = 515723575 [(yext.schemapath) = "/components/component/integrated-circuit/vendor-data"]; + } + message Linecard { + openconfig.enums.OpenconfigPlatformLinecardComponentPowerType power_admin_state = 460899237 [(yext.schemapath) = "/components/component/linecard/config/power-admin-state"]; + ywrapper.StringValue slot_id = 262632666 [(yext.schemapath) = "/components/component/linecard/config/slot-id"]; + } + message Memory { + ywrapper.UintValue available = 322322459 [(yext.schemapath) = "/components/component/state/memory/available"]; + ywrapper.UintValue utilized = 235118644 [(yext.schemapath) = "/components/component/state/memory/utilized"]; + } + message Port { + message BreakoutMode { + openconfig.enums.OpenconfigIfEthernetETHERNETSPEED channel_speed = 133662836 [(yext.schemapath) = "/components/component/port/breakout-mode/config/channel-speed"]; + ywrapper.UintValue num_channels = 207420976 [(yext.schemapath) = "/components/component/port/breakout-mode/config/num-channels"]; + } + BreakoutMode breakout_mode = 508830081 [(yext.schemapath) = "/components/component/port/breakout-mode"]; + ywrapper.UintValue port_id = 75743878 [(yext.schemapath) = "/components/component/port/config/port-id"]; + } + message PowerSupply { + } + message Property { + ywrapper.BoolValue configurable = 264996693 [(yext.schemapath) = "/components/component/properties/property/state/configurable"]; + oneof value { + bool value_bool = 320942043; + sint64 value_sint64 = 532815527; + string value_string = 259657076; + uint64 value_uint64 = 1206141; + ywrapper.Decimal64Value value_decimal64value = 342547513; + } + } + message PropertyKey { + string name = 1 [(yext.schemapath) = "/components/component/properties/property/config/name|/components/component/properties/property/name"]; + Property property = 2; + } + message Storage { + } + message Subcomponent { + } + message SubcomponentKey { + string name = 1 [(yext.schemapath) = "/components/component/subcomponents/subcomponent/config/name|/components/component/subcomponents/subcomponent/name"]; + Subcomponent subcomponent = 2; + } + message Temperature { + openconfig.enums.OpenconfigAlarmTypesOPENCONFIGALARMSEVERITY alarm_severity = 296397186 [(yext.schemapath) = "/components/component/state/temperature/alarm-severity"]; + ywrapper.BoolValue alarm_status = 176894761 [(yext.schemapath) = "/components/component/state/temperature/alarm-status"]; + ywrapper.UintValue alarm_threshold = 231489284 [(yext.schemapath) = "/components/component/state/temperature/alarm-threshold"]; + ywrapper.Decimal64Value avg = 100651349 [(yext.schemapath) = "/components/component/state/temperature/avg"]; + ywrapper.Decimal64Value instant = 206000082 [(yext.schemapath) = "/components/component/state/temperature/instant"]; + ywrapper.UintValue interval = 407404980 [(yext.schemapath) = "/components/component/state/temperature/interval"]; + ywrapper.Decimal64Value max = 421397591 [(yext.schemapath) = "/components/component/state/temperature/max"]; + ywrapper.UintValue max_time = 415076571 [(yext.schemapath) = "/components/component/state/temperature/max-time"]; + ywrapper.Decimal64Value min = 18747561 [(yext.schemapath) = "/components/component/state/temperature/min"]; + ywrapper.UintValue min_time = 177135617 [(yext.schemapath) = "/components/component/state/temperature/min-time"]; + } + message Transceiver { + message Channel { + message InputPower { + ywrapper.Decimal64Value avg = 425608185 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/avg"]; + ywrapper.Decimal64Value instant = 59663094 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/instant"]; + ywrapper.UintValue interval = 54371640 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/interval"]; + ywrapper.Decimal64Value max = 73969555 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/max"]; + ywrapper.UintValue max_time = 306475071 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/max-time"]; + ywrapper.Decimal64Value min = 476619581 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/min"]; + ywrapper.UintValue min_time = 250548621 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power/min-time"]; + } + message LaserBiasCurrent { + ywrapper.Decimal64Value avg = 230643524 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/avg"]; + ywrapper.Decimal64Value instant = 325376671 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/instant"]; + ywrapper.UintValue interval = 384153695 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/interval"]; + ywrapper.Decimal64Value max = 446768222 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/max"]; + ywrapper.UintValue max_time = 277917244 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/max-time"]; + ywrapper.Decimal64Value min = 44118224 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/min"]; + ywrapper.UintValue min_time = 201511538 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current/min-time"]; + } + message OutputPower { + ywrapper.Decimal64Value avg = 470907710 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/avg"]; + ywrapper.Decimal64Value instant = 110986605 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/instant"]; + ywrapper.UintValue interval = 332288817 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/interval"]; + ywrapper.Decimal64Value max = 85611000 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/max"]; + ywrapper.UintValue max_time = 354684250 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/max-time"]; + ywrapper.Decimal64Value min = 219831926 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/min"]; + ywrapper.UintValue min_time = 114700532 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power/min-time"]; + } + ywrapper.StringValue description = 314562795 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/config/description"]; + InputPower input_power = 303986504 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/input-power"]; + LaserBiasCurrent laser_bias_current = 482909465 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/laser-bias-current"]; + ywrapper.UintValue output_frequency = 226348966 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-frequency"]; + OutputPower output_power = 436080879 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/state/output-power"]; + ywrapper.Decimal64Value target_output_power = 128341554 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/config/target-output-power"]; + ywrapper.BoolValue tx_laser = 133868429 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/config/tx-laser"]; + } + message ChannelKey { + uint64 index = 1 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel/config/index|/components/component/transceiver/physical-channels/channel/index"]; + Channel channel = 2; + } + message InputPower { + ywrapper.Decimal64Value avg = 424783144 [(yext.schemapath) = "/components/component/transceiver/state/input-power/avg"]; + ywrapper.Decimal64Value instant = 29798419 [(yext.schemapath) = "/components/component/transceiver/state/input-power/instant"]; + ywrapper.UintValue interval = 192286739 [(yext.schemapath) = "/components/component/transceiver/state/input-power/interval"]; + ywrapper.Decimal64Value max = 242200938 [(yext.schemapath) = "/components/component/transceiver/state/input-power/max"]; + ywrapper.UintValue max_time = 207250528 [(yext.schemapath) = "/components/component/transceiver/state/input-power/max-time"]; + ywrapper.Decimal64Value min = 376421828 [(yext.schemapath) = "/components/component/transceiver/state/input-power/min"]; + ywrapper.UintValue min_time = 300437550 [(yext.schemapath) = "/components/component/transceiver/state/input-power/min-time"]; + } + message LaserBiasCurrent { + ywrapper.Decimal64Value avg = 44193839 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/avg"]; + ywrapper.Decimal64Value instant = 400153624 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/instant"]; + ywrapper.UintValue interval = 482176166 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/interval"]; + ywrapper.Decimal64Value max = 26814849 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/max"]; + ywrapper.UintValue max_time = 397616537 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/max-time"]; + ywrapper.Decimal64Value min = 161036031 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/min"]; + ywrapper.UintValue min_time = 106286659 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current/min-time"]; + } + message OutputPower { + ywrapper.Decimal64Value avg = 103469393 [(yext.schemapath) = "/components/component/transceiver/state/output-power/avg"]; + ywrapper.Decimal64Value instant = 45091486 [(yext.schemapath) = "/components/component/transceiver/state/output-power/instant"]; + ywrapper.UintValue interval = 140247632 [(yext.schemapath) = "/components/component/transceiver/state/output-power/interval"]; + ywrapper.Decimal64Value max = 286038891 [(yext.schemapath) = "/components/component/transceiver/state/output-power/max"]; + ywrapper.UintValue max_time = 372050135 [(yext.schemapath) = "/components/component/transceiver/state/output-power/max-time"]; + ywrapper.Decimal64Value min = 420259781 [(yext.schemapath) = "/components/component/transceiver/state/output-power/min"]; + ywrapper.UintValue min_time = 351300789 [(yext.schemapath) = "/components/component/transceiver/state/output-power/min-time"]; + } + message PostFecBer { + ywrapper.Decimal64Value avg = 101143861 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/avg"]; + ywrapper.Decimal64Value instant = 488914354 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/instant"]; + ywrapper.UintValue interval = 358186772 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/interval"]; + ywrapper.Decimal64Value max = 421890103 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/max"]; + ywrapper.UintValue max_time = 200255931 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/max-time"]; + ywrapper.Decimal64Value min = 19240073 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/min"]; + ywrapper.UintValue min_time = 128020833 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber/min-time"]; + } + message PreFecBer { + ywrapper.Decimal64Value avg = 473442514 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/avg"]; + ywrapper.Decimal64Value instant = 345533569 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/instant"]; + ywrapper.UintValue interval = 3876757 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/interval"]; + ywrapper.Decimal64Value max = 221202788 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/max"]; + ywrapper.UintValue max_time = 128523470 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/max-time"]; + ywrapper.Decimal64Value min = 355423706 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/min"]; + ywrapper.UintValue min_time = 453726032 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber/min-time"]; + } + enum Present { + PRESENT_UNSET = 0; + PRESENT_PRESENT = 1 [(yext.yang_name) = "PRESENT"]; + PRESENT_NOT_PRESENT = 2 [(yext.yang_name) = "NOT_PRESENT"]; + } + repeated ChannelKey channel = 359124959 [(yext.schemapath) = "/components/component/transceiver/physical-channels/channel"]; + openconfig.enums.OpenconfigTransportTypesFIBERCONNECTORTYPE connector_type = 252758609 [(yext.schemapath) = "/components/component/transceiver/state/connector-type"]; + ywrapper.StringValue date_code = 323636967 [(yext.schemapath) = "/components/component/transceiver/state/date-code"]; + ywrapper.BoolValue enabled = 202927581 [(yext.schemapath) = "/components/component/transceiver/config/enabled"]; + openconfig.enums.OpenconfigTransportTypesETHERNETPMDTYPE ethernet_pmd = 416980802 [(yext.schemapath) = "/components/component/transceiver/state/ethernet-pmd"]; + openconfig.enums.OpenconfigTransportTypesETHERNETPMDTYPE ethernet_pmd_preconf = 338246677 [(yext.schemapath) = "/components/component/transceiver/config/ethernet-pmd-preconf"]; + ywrapper.BoolValue fault_condition = 66972341 [(yext.schemapath) = "/components/component/transceiver/state/fault-condition"]; + ywrapper.UintValue fec_corrected_bits = 272535390 [(yext.schemapath) = "/components/component/transceiver/state/fec-corrected-bits"]; + ywrapper.UintValue fec_corrected_bytes = 133775387 [(yext.schemapath) = "/components/component/transceiver/state/fec-corrected-bytes"]; + openconfig.enums.OpenconfigPlatformTypesFECMODETYPE fec_mode = 277265248 [(yext.schemapath) = "/components/component/transceiver/config/fec-mode"]; + openconfig.enums.OpenconfigPlatformTypesFECSTATUSTYPE fec_status = 41358082 [(yext.schemapath) = "/components/component/transceiver/state/fec-status"]; + ywrapper.UintValue fec_uncorrectable_blocks = 497424056 [(yext.schemapath) = "/components/component/transceiver/state/fec-uncorrectable-blocks"]; + ywrapper.UintValue fec_uncorrectable_words = 133578617 [(yext.schemapath) = "/components/component/transceiver/state/fec-uncorrectable-words"]; + openconfig.enums.OpenconfigTransportTypesTRANSCEIVERFORMFACTORTYPE form_factor = 11627927 [(yext.schemapath) = "/components/component/transceiver/state/form-factor"]; + openconfig.enums.OpenconfigTransportTypesTRANSCEIVERFORMFACTORTYPE form_factor_preconf = 471604670 [(yext.schemapath) = "/components/component/transceiver/config/form-factor-preconf"]; + InputPower input_power = 41561605 [(yext.schemapath) = "/components/component/transceiver/state/input-power"]; + LaserBiasCurrent laser_bias_current = 422928146 [(yext.schemapath) = "/components/component/transceiver/state/laser-bias-current"]; + openconfig.enums.OpenconfigTransportTypesOTNAPPLICATIONCODE otn_compliance_code = 302597810 [(yext.schemapath) = "/components/component/transceiver/state/otn-compliance-code"]; + OutputPower output_power = 242740240 [(yext.schemapath) = "/components/component/transceiver/state/output-power"]; + PostFecBer post_fec_ber = 125122572 [(yext.schemapath) = "/components/component/transceiver/state/post-fec-ber"]; + PreFecBer pre_fec_ber = 264885771 [(yext.schemapath) = "/components/component/transceiver/state/pre-fec-ber"]; + Present present = 171782640 [(yext.schemapath) = "/components/component/transceiver/state/present"]; + ywrapper.StringValue serial_no = 48331837 [(yext.schemapath) = "/components/component/transceiver/state/serial-no"]; + openconfig.enums.OpenconfigTransportTypesSONETAPPLICATIONCODE sonet_sdh_compliance_code = 354799300 [(yext.schemapath) = "/components/component/transceiver/state/sonet-sdh-compliance-code"]; + ywrapper.StringValue vendor = 186283901 [(yext.schemapath) = "/components/component/transceiver/state/vendor"]; + ywrapper.StringValue vendor_part = 246872941 [(yext.schemapath) = "/components/component/transceiver/state/vendor-part"]; + ywrapper.StringValue vendor_rev = 62133637 [(yext.schemapath) = "/components/component/transceiver/state/vendor-rev"]; + } + ywrapper.UintValue allocated_power = 382835825 [(yext.schemapath) = "/components/component/state/allocated-power"]; + Backplane backplane = 23572881 [(yext.schemapath) = "/components/component/backplane"]; + Chassis chassis = 153681076 [(yext.schemapath) = "/components/component/chassis"]; + Cpu cpu = 60886558 [(yext.schemapath) = "/components/component/cpu"]; + ywrapper.StringValue description = 167549616 [(yext.schemapath) = "/components/component/state/description"]; + ywrapper.BoolValue empty = 433362321 [(yext.schemapath) = "/components/component/state/empty"]; + ywrapper.BoolValue equipment_failure = 471038183 [(yext.schemapath) = "/components/component/state/equipment-failure"]; + ywrapper.BoolValue equipment_mismatch = 311608903 [(yext.schemapath) = "/components/component/state/equipment-mismatch"]; + Fabric fabric = 101006771 [(yext.schemapath) = "/components/component/fabric"]; + Fan fan = 111660679 [(yext.schemapath) = "/components/component/fan"]; + ywrapper.StringValue firmware_version = 244667518 [(yext.schemapath) = "/components/component/state/firmware-version"]; + ywrapper.StringValue hardware_version = 49616205 [(yext.schemapath) = "/components/component/state/hardware-version"]; + ywrapper.StringValue id = 246882465 [(yext.schemapath) = "/components/component/state/id"]; + IntegratedCircuit integrated_circuit = 195631273 [(yext.schemapath) = "/components/component/integrated-circuit"]; + Linecard linecard = 18894832 [(yext.schemapath) = "/components/component/linecard"]; + ywrapper.StringValue location = 326611111 [(yext.schemapath) = "/components/component/state/location"]; + Memory memory = 443182963 [(yext.schemapath) = "/components/component/state/memory"]; + ywrapper.StringValue mfg_date = 499974311 [(yext.schemapath) = "/components/component/state/mfg-date"]; + ywrapper.StringValue mfg_name = 80033814 [(yext.schemapath) = "/components/component/state/mfg-name"]; + openconfig.enums.OpenconfigPlatformTypesCOMPONENTOPERSTATUS oper_status = 378023501 [(yext.schemapath) = "/components/component/state/oper-status"]; + ywrapper.StringValue parent = 291733930 [(yext.schemapath) = "/components/component/state/parent"]; + ywrapper.StringValue part_no = 173082367 [(yext.schemapath) = "/components/component/state/part-no"]; + Port port = 529421081 [(yext.schemapath) = "/components/component/port"]; + PowerSupply power_supply = 438616709 [(yext.schemapath) = "/components/component/power-supply"]; + repeated PropertyKey property = 502076969 [(yext.schemapath) = "/components/component/properties/property"]; + ywrapper.BoolValue removable = 351010765 [(yext.schemapath) = "/components/component/state/removable"]; + ywrapper.StringValue serial_no = 490029750 [(yext.schemapath) = "/components/component/state/serial-no"]; + ywrapper.StringValue software_version = 220526526 [(yext.schemapath) = "/components/component/state/software-version"]; + Storage storage = 403943259 [(yext.schemapath) = "/components/component/storage"]; + repeated SubcomponentKey subcomponent = 282821422 [(yext.schemapath) = "/components/component/subcomponents/subcomponent"]; + Temperature temperature = 169040172 [(yext.schemapath) = "/components/component/state/temperature"]; + Transceiver transceiver = 40802250 [(yext.schemapath) = "/components/component/transceiver"]; + oneof type { + openconfig.enums.OpenconfigPlatformTypesOPENCONFIGHARDWARECOMPONENT type_openconfigplatformtypesopenconfighardwarecomponent = 149343237; + openconfig.enums.OpenconfigPlatformTypesOPENCONFIGSOFTWARECOMPONENT type_openconfigplatformtypesopenconfigsoftwarecomponent = 205426072; + } + ywrapper.UintValue used_power = 259754309 [(yext.schemapath) = "/components/component/state/used-power"]; +} + +message Qos { + message Classifier { + message Term { + message Actions { + message Remark { + ywrapper.UintValue set_dot1p = 129420902 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/actions/remark/config/set-dot1p"]; + ywrapper.UintValue set_dscp = 184950326 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/actions/remark/config/set-dscp"]; + ywrapper.UintValue set_mpls_tc = 115576782 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/actions/remark/config/set-mpls-tc"]; + } + Remark remark = 45738605 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/actions/remark"]; + ywrapper.StringValue target_group = 263567595 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/actions/config/target-group"]; + } + message Conditions { + message Ipv4 { + ywrapper.StringValue destination_address = 527978798 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv4/config/destination-address"]; + ywrapper.UintValue dscp = 459218869 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv4/config/dscp"]; + ywrapper.UintValue hop_limit = 164634146 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv4/config/hop-limit"]; + oneof protocol { + openconfig.enums.OpenconfigPacketMatchTypesIPPROTOCOL protocol_openconfigpacketmatchtypesipprotocol = 371958053; + uint64 protocol_uint64 = 488250108; + } + ywrapper.StringValue source_address = 389228459 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv4/config/source-address"]; + } + message Ipv6 { + ywrapper.StringValue destination_address = 139860024 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6/config/destination-address"]; + ywrapper.UintValue destination_flow_label = 26892661 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6/config/destination-flow-label"]; + ywrapper.UintValue dscp = 482221487 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6/config/dscp"]; + ywrapper.UintValue hop_limit = 233120028 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6/config/hop-limit"]; + oneof protocol { + openconfig.enums.OpenconfigPacketMatchTypesIPPROTOCOL protocol_openconfigpacketmatchtypesipprotocol = 483684219; + uint64 protocol_uint64 = 50630658; + } + ywrapper.StringValue source_address = 498643489 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6/config/source-address"]; + ywrapper.UintValue source_flow_label = 158748530 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6/config/source-flow-label"]; + } + message L2 { + ywrapper.StringValue destination_mac = 515610502 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/l2/config/destination-mac"]; + ywrapper.StringValue destination_mac_mask = 287932171 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/l2/config/destination-mac-mask"]; + oneof ethertype { + openconfig.enums.OpenconfigPacketMatchTypesETHERTYPE ethertype_openconfigpacketmatchtypesethertype = 245699045; + uint64 ethertype_uint64 = 132607809; + } + ywrapper.StringValue source_mac = 658529 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/l2/config/source-mac"]; + ywrapper.StringValue source_mac_mask = 49113846 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/l2/config/source-mac-mask"]; + } + message Mpls { + ywrapper.UintValue traffic_class = 292059538 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/mpls/config/traffic-class"]; + } + message Transport { + enum DestinationPort { + DESTINATIONPORT_UNSET = 0; + DESTINATIONPORT_ANY = 1 [(yext.yang_name) = "ANY"]; + } + enum SourcePort { + SOURCEPORT_UNSET = 0; + SOURCEPORT_ANY = 1 [(yext.yang_name) = "ANY"]; + } + oneof destination_port { + DestinationPort destination_port_destinationport = 61984185; + string destination_port_string = 43341491; + uint64 destination_port_uint64 = 296926614; + } + oneof source_port { + SourcePort source_port_sourceport = 169477687; + string source_port_string = 342703790; + uint64 source_port_uint64 = 278063023; + } + repeated openconfig.enums.OpenconfigPacketMatchTypesTCPFLAGS tcp_flags = 82538752 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/transport/config/tcp-flags"]; + } + Ipv4 ipv4 = 10035435 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv4"]; + Ipv6 ipv6 = 10035433 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/ipv6"]; + L2 l2 = 363202488 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/l2"]; + Mpls mpls = 259157330 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/mpls"]; + Transport transport = 396236957 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions/transport"]; + } + Actions actions = 288444670 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/actions"]; + Conditions conditions = 14705347 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/conditions"]; + } + message TermKey { + string id = 1 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term/config/id|/qos/classifiers/classifier/terms/term/id"]; + Term term = 2; + } + enum Type { + TYPE_UNSET = 0; + TYPE_IPV4 = 1 [(yext.yang_name) = "IPV4"]; + TYPE_IPV6 = 2 [(yext.yang_name) = "IPV6"]; + TYPE_MPLS = 3 [(yext.yang_name) = "MPLS"]; + TYPE_ETHERNET = 4 [(yext.yang_name) = "ETHERNET"]; + } + repeated TermKey term = 74659894 [(yext.schemapath) = "/qos/classifiers/classifier/terms/term"]; + Type type = 422459117 [(yext.schemapath) = "/qos/classifiers/classifier/config/type"]; + } + message ClassifierKey { + string name = 1 [(yext.schemapath) = "/qos/classifiers/classifier/config/name|/qos/classifiers/classifier/name"]; + Classifier classifier = 2; + } + message ForwardingGroup { + ywrapper.UintValue fabric_priority = 199494503 [(yext.schemapath) = "/qos/forwarding-groups/forwarding-group/config/fabric-priority"]; + ywrapper.StringValue output_queue = 22359152 [(yext.schemapath) = "/qos/forwarding-groups/forwarding-group/config/output-queue"]; + } + message ForwardingGroupKey { + string name = 1 [(yext.schemapath) = "/qos/forwarding-groups/forwarding-group/config/name|/qos/forwarding-groups/forwarding-group/name"]; + ForwardingGroup forwarding_group = 2; + } + message Interface { + message Input { + message Classifier { + message Term { + ywrapper.UintValue matched_octets = 188335353 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier/terms/term/state/matched-octets"]; + ywrapper.UintValue matched_packets = 437259876 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier/terms/term/state/matched-packets"]; + } + message TermKey { + string id = 1 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier/terms/term/config/id|/qos/interfaces/interface/input/classifers/classifier/terms/term/id"]; + Term term = 2; + } + ywrapper.StringValue name = 147745567 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier/config/name"]; + repeated TermKey term = 256315543 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier/terms/term"]; + } + message ClassifierKey { + enum Type { + TYPE_UNSET = 0; + TYPE_IPV4 = 5 [(yext.yang_name) = "IPV4"]; + TYPE_IPV6 = 7 [(yext.yang_name) = "IPV6"]; + TYPE_MPLS = 8 [(yext.yang_name) = "MPLS"]; + } + Type type = 1 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier/config/type|/qos/interfaces/interface/input/classifers/classifier/type"]; + Classifier classifier = 2; + } + message Queue { + ywrapper.UintValue avg_queue_len = 357067202 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/state/avg-queue-len"]; + ywrapper.UintValue dropped_pkts = 530366041 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/state/dropped-pkts"]; + ywrapper.UintValue id = 215343265 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/state/id"]; + ywrapper.UintValue max_queue_len = 535584496 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/state/max-queue-len"]; + ywrapper.UintValue transmit_octets = 237910979 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/state/transmit-octets"]; + ywrapper.UintValue transmit_pkts = 368710075 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/state/transmit-pkts"]; + } + message QueueKey { + string name = 1 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue/config/name|/qos/interfaces/interface/input/queues/queue/name"]; + Queue queue = 2; + } + message SchedulerPolicy { + message Scheduler { + ywrapper.UintValue conforming_octets = 204398478 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/conforming-octets"]; + ywrapper.UintValue conforming_pkts = 395467958 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/conforming-pkts"]; + ywrapper.UintValue exceeding_octets = 22590706 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/exceeding-octets"]; + ywrapper.UintValue exceeding_pkts = 80265874 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/exceeding-pkts"]; + ywrapper.UintValue violating_octets = 419767763 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/violating-octets"]; + ywrapper.UintValue violating_pkts = 174860491 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/violating-pkts"]; + } + message SchedulerKey { + uint64 sequence = 1 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/state/sequence|/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler/sequence"]; + Scheduler scheduler = 2; + } + ywrapper.StringValue name = 5527674 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/config/name"]; + repeated SchedulerKey scheduler = 306639558 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy/schedulers/scheduler"]; + } + message VoqInterface { + message Queue { + ywrapper.UintValue avg_queue_len = 370597120 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/state/avg-queue-len"]; + ywrapper.UintValue dropped_pkts = 300610831 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/state/dropped-pkts"]; + ywrapper.UintValue max_queue_len = 489510182 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/state/max-queue-len"]; + ywrapper.UintValue transmit_octets = 19609109 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/state/transmit-octets"]; + ywrapper.UintValue transmit_pkts = 265927841 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/state/transmit-pkts"]; + } + message QueueKey { + string name = 1 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/config/name|/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue/name"]; + Queue queue = 2; + } + repeated QueueKey queue = 80000787 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/queues/queue"]; + } + message VoqInterfaceKey { + string name = 1 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface/config/name|/qos/interfaces/interface/input/virtual-output-queues/voq-interface/name"]; + VoqInterface voq_interface = 2; + } + repeated ClassifierKey classifier = 140629686 [(yext.schemapath) = "/qos/interfaces/interface/input/classifers/classifier"]; + repeated QueueKey queue = 103221525 [(yext.schemapath) = "/qos/interfaces/interface/input/queues/queue"]; + SchedulerPolicy scheduler_policy = 391585903 [(yext.schemapath) = "/qos/interfaces/interface/input/scheduler-policy"]; + repeated VoqInterfaceKey voq_interface = 134149572 [(yext.schemapath) = "/qos/interfaces/interface/input/virtual-output-queues/voq-interface"]; + } + message InterfaceRef { + ywrapper.StringValue interface = 31011128 [(yext.schemapath) = "/qos/interfaces/interface/interface-ref/config/interface"]; + ywrapper.UintValue subinterface = 407353336 [(yext.schemapath) = "/qos/interfaces/interface/interface-ref/config/subinterface"]; + } + message Output { + message Classifier { + message Term { + ywrapper.UintValue matched_octets = 525483634 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier/terms/term/state/matched-octets"]; + ywrapper.UintValue matched_packets = 507671601 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier/terms/term/state/matched-packets"]; + } + message TermKey { + string id = 1 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier/terms/term/config/id|/qos/interfaces/interface/output/classifers/classifier/terms/term/id"]; + Term term = 2; + } + ywrapper.StringValue name = 273984944 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier/config/name"]; + repeated TermKey term = 132412642 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier/terms/term"]; + } + message ClassifierKey { + enum Type { + TYPE_UNSET = 0; + TYPE_IPV4 = 5 [(yext.yang_name) = "IPV4"]; + TYPE_IPV6 = 7 [(yext.yang_name) = "IPV6"]; + TYPE_MPLS = 8 [(yext.yang_name) = "MPLS"]; + } + Type type = 1 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier/config/type|/qos/interfaces/interface/output/classifers/classifier/type"]; + Classifier classifier = 2; + } + message InterfaceRef { + ywrapper.StringValue interface = 351351714 [(yext.schemapath) = "/qos/interfaces/interface/output/interface-ref/config/interface"]; + ywrapper.UintValue subinterface = 18610174 [(yext.schemapath) = "/qos/interfaces/interface/output/interface-ref/config/subinterface"]; + } + message Queue { + ywrapper.UintValue avg_queue_len = 497534235 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/state/avg-queue-len"]; + ywrapper.UintValue dropped_pkts = 358084770 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/state/dropped-pkts"]; + ywrapper.UintValue id = 441116470 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/state/id"]; + ywrapper.UintValue max_queue_len = 509845137 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/state/max-queue-len"]; + ywrapper.UintValue transmit_octets = 117378910 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/state/transmit-octets"]; + ywrapper.UintValue transmit_pkts = 20090310 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/state/transmit-pkts"]; + } + message QueueKey { + string name = 1 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue/config/name|/qos/interfaces/interface/output/queues/queue/name"]; + Queue queue = 2; + } + message SchedulerPolicy { + message Scheduler { + ywrapper.UintValue conforming_octets = 190363557 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/conforming-octets"]; + ywrapper.UintValue conforming_pkts = 384889393 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/conforming-pkts"]; + ywrapper.UintValue exceeding_octets = 127842319 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/exceeding-octets"]; + ywrapper.UintValue exceeding_pkts = 174504655 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/exceeding-pkts"]; + ywrapper.UintValue violating_octets = 334250126 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/violating-octets"]; + ywrapper.UintValue violating_pkts = 380540342 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/violating-pkts"]; + } + message SchedulerKey { + uint64 sequence = 1 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/state/sequence|/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler/sequence"]; + Scheduler scheduler = 2; + } + ywrapper.StringValue name = 32047975 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/config/name"]; + repeated SchedulerKey scheduler = 208885833 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy/schedulers/scheduler"]; + } + repeated ClassifierKey classifier = 531213741 [(yext.schemapath) = "/qos/interfaces/interface/output/classifers/classifier"]; + InterfaceRef interface_ref = 13944721 [(yext.schemapath) = "/qos/interfaces/interface/output/interface-ref"]; + repeated QueueKey queue = 316768612 [(yext.schemapath) = "/qos/interfaces/interface/output/queues/queue"]; + SchedulerPolicy scheduler_policy = 345632622 [(yext.schemapath) = "/qos/interfaces/interface/output/scheduler-policy"]; + } + Input input = 185281278 [(yext.schemapath) = "/qos/interfaces/interface/input"]; + InterfaceRef interface_ref = 340560111 [(yext.schemapath) = "/qos/interfaces/interface/interface-ref"]; + Output output = 494792021 [(yext.schemapath) = "/qos/interfaces/interface/output"]; + } + message InterfaceKey { + string interface_id = 1 [(yext.schemapath) = "/qos/interfaces/interface/config/interface-id|/qos/interfaces/interface/interface-id"]; + Interface interface = 2; + } + message Queue { + message Red { + ywrapper.UintValue maxth = 77750307 [(yext.schemapath) = "/qos/queues/queue/red/config/maxth"]; + ywrapper.UintValue minth = 301751197 [(yext.schemapath) = "/qos/queues/queue/red/config/minth"]; + } + message Wred { + } + ywrapper.UintValue id = 332418476 [(yext.schemapath) = "/qos/queues/queue/config/id"]; + openconfig.enums.OpenconfigQosTypesQOSQUEUETYPE queue_type = 351938521 [(yext.schemapath) = "/qos/queues/queue/config/queue-type"]; + Red red = 36543379 [(yext.schemapath) = "/qos/queues/queue/red"]; + Wred wred = 285364058 [(yext.schemapath) = "/qos/queues/queue/wred"]; + } + message QueueKey { + string name = 1 [(yext.schemapath) = "/qos/queues/queue/config/name|/qos/queues/queue/name"]; + Queue queue = 2; + } + message SchedulerPolicy { + message Scheduler { + message Input { + enum InputType { + INPUTTYPE_UNSET = 0; + INPUTTYPE_QUEUE = 1 [(yext.yang_name) = "QUEUE"]; + INPUTTYPE_IN_PROFILE = 2 [(yext.yang_name) = "IN_PROFILE"]; + INPUTTYPE_OUT_PROFILE = 3 [(yext.yang_name) = "OUT_PROFILE"]; + } + InputType input_type = 323155511 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/input-type"]; + ywrapper.StringValue queue = 442686099 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/queue"]; + ywrapper.UintValue weight = 396218658 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/weight"]; + } + message InputKey { + string id = 1 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/config/id|/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input/id"]; + Input input = 2; + } + message OneRateTwoColor { + message ConformAction { + ywrapper.UintValue set_dot1p = 347963663 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/conform-action/config/set-dot1p"]; + ywrapper.UintValue set_dscp = 274036909 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/conform-action/config/set-dscp"]; + ywrapper.UintValue set_mpls_tc = 407069875 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/conform-action/config/set-mpls-tc"]; + } + message ExceedAction { + ywrapper.BoolValue drop = 131419485 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/exceed-action/config/drop"]; + ywrapper.UintValue set_dot1p = 431798715 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/exceed-action/config/set-dot1p"]; + ywrapper.UintValue set_dscp = 70544401 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/exceed-action/config/set-dscp"]; + ywrapper.UintValue set_mpls_tc = 156774487 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/exceed-action/config/set-mpls-tc"]; + } + ywrapper.UintValue bc = 100183769 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/bc"]; + ywrapper.UintValue cir = 494749918 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/cir"]; + ywrapper.UintValue cir_pct = 315109376 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/cir-pct"]; + ywrapper.UintValue cir_pct_remaining = 206933707 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/cir-pct-remaining"]; + ConformAction conform_action = 29149902 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/conform-action"]; + ExceedAction exceed_action = 297338034 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/exceed-action"]; + ywrapper.UintValue max_queue_depth_bytes = 279197854 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/max-queue-depth-bytes"]; + ywrapper.UintValue max_queue_depth_packets = 38247640 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/max-queue-depth-packets"]; + ywrapper.UintValue max_queue_depth_percent = 466868204 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/max-queue-depth-percent"]; + openconfig.enums.OpenconfigQosQueueBehavior queuing_behavior = 78239583 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color/config/queuing-behavior"]; + } + message Output { + enum OutputType { + OUTPUTTYPE_UNSET = 0; + OUTPUTTYPE_SCHEDULER = 1 [(yext.yang_name) = "SCHEDULER"]; + OUTPUTTYPE_FWD_GROUP = 2 [(yext.yang_name) = "FWD_GROUP"]; + OUTPUTTYPE_INTERFACE = 3 [(yext.yang_name) = "INTERFACE"]; + } + ywrapper.StringValue child_scheduler = 101554311 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/output/config/child-scheduler"]; + ywrapper.StringValue output_fwd_group = 283910326 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/output/config/output-fwd-group"]; + OutputType output_type = 485674633 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/output/config/output-type"]; + } + message TwoRateThreeColor { + message ConformAction { + ywrapper.UintValue set_dot1p = 106933487 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/conform-action/config/set-dot1p"]; + ywrapper.UintValue set_dscp = 410653965 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/conform-action/config/set-dscp"]; + ywrapper.UintValue set_mpls_tc = 301290899 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/conform-action/config/set-mpls-tc"]; + } + message ExceedAction { + ywrapper.BoolValue drop = 299899453 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/exceed-action/config/drop"]; + ywrapper.UintValue set_dot1p = 143535771 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/exceed-action/config/set-dot1p"]; + ywrapper.UintValue set_dscp = 530765681 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/exceed-action/config/set-dscp"]; + ywrapper.UintValue set_mpls_tc = 435204023 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/exceed-action/config/set-mpls-tc"]; + } + message ViolateAction { + ywrapper.BoolValue drop = 230160201 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/violate-action/config/drop"]; + ywrapper.UintValue set_dot1p = 433219903 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/violate-action/config/set-dot1p"]; + ywrapper.UintValue set_dscp = 77658205 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/violate-action/config/set-dscp"]; + ywrapper.UintValue set_mpls_tc = 446571619 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/violate-action/config/set-mpls-tc"]; + } + ywrapper.UintValue bc = 488133689 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/bc"]; + ywrapper.UintValue be = 488133695 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/be"]; + ywrapper.UintValue cir = 72261310 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/cir"]; + ywrapper.UintValue cir_pct = 148455776 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/cir-pct"]; + ywrapper.UintValue cir_pct_remaining = 426598443 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/cir-pct-remaining"]; + ConformAction conform_action = 482658734 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/conform-action"]; + ExceedAction exceed_action = 447571730 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/exceed-action"]; + ywrapper.UintValue pir = 69260261 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/pir"]; + ywrapper.UintValue pir_pct = 115916567 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/pir-pct"]; + ywrapper.UintValue pir_pct_remaining = 517108460 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/config/pir-pct-remaining"]; + ViolateAction violate_action = 110529342 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color/violate-action"]; + } + enum Priority { + PRIORITY_UNSET = 0; + PRIORITY_STRICT = 1 [(yext.yang_name) = "STRICT"]; + } + repeated InputKey input = 224691974 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/inputs/input"]; + OneRateTwoColor one_rate_two_color = 502240564 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/one-rate-two-color"]; + Output output = 46224159 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/output"]; + Priority priority = 116027193 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/priority"]; + TwoRateThreeColor two_rate_three_color = 10046740 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/two-rate-three-color"]; + openconfig.enums.OpenconfigQosTypesQOSSCHEDULERTYPE type = 125973545 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/type"]; + } + message SchedulerKey { + uint64 sequence = 1 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/config/sequence|/qos/scheduler-policies/scheduler-policy/schedulers/scheduler/sequence"]; + Scheduler scheduler = 2; + } + repeated SchedulerKey scheduler = 494699541 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/schedulers/scheduler"]; + } + message SchedulerPolicyKey { + string name = 1 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy/config/name|/qos/scheduler-policies/scheduler-policy/name"]; + SchedulerPolicy scheduler_policy = 2; + } + repeated ClassifierKey classifier = 281713417 [(yext.schemapath) = "/qos/classifiers/classifier"]; + repeated ForwardingGroupKey forwarding_group = 454859993 [(yext.schemapath) = "/qos/forwarding-groups/forwarding-group"]; + repeated InterfaceKey interface = 178908543 [(yext.schemapath) = "/qos/interfaces/interface"]; + repeated QueueKey queue = 108026875 [(yext.schemapath) = "/qos/queues/queue"]; + repeated SchedulerPolicyKey scheduler_policy = 422526610 [(yext.schemapath) = "/qos/scheduler-policies/scheduler-policy"]; +} + +message System { + message Aaa { + message Accounting { + message AccountingMethodUnion { + openconfig.enums.OpenconfigAaaTypesAAAMETHODTYPE accounting_method_openconfigaaatypesaaamethodtype = 520228688; + string accounting_method_string = 308208143; + } + message Event { + enum Record { + RECORD_UNSET = 0; + RECORD_START_STOP = 1 [(yext.yang_name) = "START_STOP"]; + RECORD_STOP = 2 [(yext.yang_name) = "STOP"]; + } + Record record = 140048324 [(yext.schemapath) = "/system/aaa/accounting/events/event/config/record"]; + } + message EventKey { + openconfig.enums.OpenconfigAaaTypesAAAACCOUNTINGEVENTTYPE event_type = 1 [(yext.schemapath) = "/system/aaa/accounting/events/event/config/event-type|/system/aaa/accounting/events/event/event-type"]; + Event event = 2; + } + repeated AccountingMethodUnion accounting_method = 29748713 [(yext.schemapath) = "/system/aaa/accounting/config/accounting-method"]; + repeated EventKey event = 76913831 [(yext.schemapath) = "/system/aaa/accounting/events/event"]; + } + message Authentication { + message AdminUser { + ywrapper.StringValue admin_password = 17433386 [(yext.schemapath) = "/system/aaa/authentication/admin-user/config/admin-password"]; + ywrapper.StringValue admin_password_hashed = 471791444 [(yext.schemapath) = "/system/aaa/authentication/admin-user/config/admin-password-hashed"]; + ywrapper.StringValue admin_username = 58771374 [(yext.schemapath) = "/system/aaa/authentication/admin-user/state/admin-username"]; + } + message AuthenticationMethodUnion { + openconfig.enums.OpenconfigAaaTypesAAAMETHODTYPE authentication_method_openconfigaaatypesaaamethodtype = 512247800; + string authentication_method_string = 438459495; + } + message User { + ywrapper.StringValue password = 140193929 [(yext.schemapath) = "/system/aaa/authentication/users/user/config/password"]; + ywrapper.StringValue password_hashed = 439845341 [(yext.schemapath) = "/system/aaa/authentication/users/user/config/password-hashed"]; + oneof role { + openconfig.enums.OpenconfigAaaTypesSYSTEMDEFINEDROLES role_openconfigaaatypessystemdefinedroles = 398783100; + string role_string = 284966162; + } + ywrapper.StringValue ssh_key = 372550502 [(yext.schemapath) = "/system/aaa/authentication/users/user/config/ssh-key"]; + } + message UserKey { + string username = 1 [(yext.schemapath) = "/system/aaa/authentication/users/user/config/username|/system/aaa/authentication/users/user/username"]; + User user = 2; + } + AdminUser admin_user = 322829291 [(yext.schemapath) = "/system/aaa/authentication/admin-user"]; + repeated AuthenticationMethodUnion authentication_method = 38969025 [(yext.schemapath) = "/system/aaa/authentication/config/authentication-method"]; + repeated UserKey user = 344997694 [(yext.schemapath) = "/system/aaa/authentication/users/user"]; + } + message Authorization { + message AuthorizationMethodUnion { + openconfig.enums.OpenconfigAaaTypesAAAMETHODTYPE authorization_method_openconfigaaatypesaaamethodtype = 261320746; + string authorization_method_string = 508375681; + } + message Event { + } + message EventKey { + openconfig.enums.OpenconfigAaaTypesAAAAUTHORIZATIONEVENTTYPE event_type = 1 [(yext.schemapath) = "/system/aaa/authorization/events/event/config/event-type|/system/aaa/authorization/events/event/event-type"]; + Event event = 2; + } + repeated AuthorizationMethodUnion authorization_method = 399020027 [(yext.schemapath) = "/system/aaa/authorization/config/authorization-method"]; + repeated EventKey event = 517393149 [(yext.schemapath) = "/system/aaa/authorization/events/event"]; + } + message ServerGroup { + message Server { + message Radius { + message Counters { + ywrapper.UintValue access_accepts = 215193910 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/state/counters/access-accepts"]; + ywrapper.UintValue access_rejects = 25892249 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/state/counters/access-rejects"]; + ywrapper.UintValue retried_access_requests = 400682451 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/state/counters/retried-access-requests"]; + ywrapper.UintValue timeout_access_requests = 24602675 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/state/counters/timeout-access-requests"]; + } + ywrapper.UintValue acct_port = 289040892 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/config/acct-port"]; + ywrapper.UintValue auth_port = 298939869 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/config/auth-port"]; + Counters counters = 38611033 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/state/counters"]; + ywrapper.UintValue retransmit_attempts = 418545541 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/config/retransmit-attempts"]; + ywrapper.StringValue secret_key = 91269351 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/config/secret-key"]; + ywrapper.StringValue source_address = 529894017 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius/config/source-address"]; + } + message Tacacs { + ywrapper.UintValue port = 52133369 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/tacacs/config/port"]; + ywrapper.StringValue secret_key = 390882862 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/tacacs/config/secret-key"]; + ywrapper.StringValue source_address = 165060088 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/tacacs/config/source-address"]; + } + ywrapper.UintValue connection_aborts = 125162735 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/connection-aborts"]; + ywrapper.UintValue connection_closes = 161631333 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/connection-closes"]; + ywrapper.UintValue connection_failures = 113553227 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/connection-failures"]; + ywrapper.UintValue connection_opens = 74843905 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/connection-opens"]; + ywrapper.UintValue connection_timeouts = 408747310 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/connection-timeouts"]; + ywrapper.UintValue errors_received = 531130208 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/errors-received"]; + ywrapper.UintValue messages_received = 183175971 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/messages-received"]; + ywrapper.UintValue messages_sent = 461917808 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/state/messages-sent"]; + ywrapper.StringValue name = 197201537 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/config/name"]; + Radius radius = 184878025 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/radius"]; + Tacacs tacacs = 273909248 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/tacacs"]; + ywrapper.UintValue timeout = 308122545 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/config/timeout"]; + } + message ServerKey { + string address = 1 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server/config/address|/system/aaa/server-groups/server-group/servers/server/address"]; + Server server = 2; + } + repeated ServerKey server = 253859376 [(yext.schemapath) = "/system/aaa/server-groups/server-group/servers/server"]; + openconfig.enums.OpenconfigAaaTypesAAASERVERTYPE type = 70733999 [(yext.schemapath) = "/system/aaa/server-groups/server-group/config/type"]; + } + message ServerGroupKey { + string name = 1 [(yext.schemapath) = "/system/aaa/server-groups/server-group/config/name|/system/aaa/server-groups/server-group/name"]; + ServerGroup server_group = 2; + } + Accounting accounting = 175231094 [(yext.schemapath) = "/system/aaa/accounting"]; + Authentication authentication = 520430581 [(yext.schemapath) = "/system/aaa/authentication"]; + Authorization authorization = 92979796 [(yext.schemapath) = "/system/aaa/authorization"]; + repeated ServerGroupKey server_group = 249960919 [(yext.schemapath) = "/system/aaa/server-groups/server-group"]; + } + message Alarm { + ywrapper.StringValue resource = 290470824 [(yext.schemapath) = "/system/alarms/alarm/state/resource"]; + openconfig.enums.OpenconfigAlarmTypesOPENCONFIGALARMSEVERITY severity = 464665929 [(yext.schemapath) = "/system/alarms/alarm/state/severity"]; + ywrapper.StringValue text = 19701185 [(yext.schemapath) = "/system/alarms/alarm/state/text"]; + ywrapper.UintValue time_created = 258054456 [(yext.schemapath) = "/system/alarms/alarm/state/time-created"]; + oneof type_id { + openconfig.enums.OpenconfigAlarmTypesOPENCONFIGALARMTYPEID type_id_openconfigalarmtypesopenconfigalarmtypeid = 375918181; + string type_id_string = 387256722; + } + } + message AlarmKey { + string id = 1 [(yext.schemapath) = "/system/alarms/alarm/state/id|/system/alarms/alarm/id"]; + Alarm alarm = 2; + } + message Clock { + ywrapper.StringValue timezone_name = 100228070 [(yext.schemapath) = "/system/clock/config/timezone-name"]; + } + message Cpu { + message HardwareInterrupt { + ywrapper.UintValue avg = 422453613 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/avg"]; + ywrapper.UintValue instant = 196083674 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/instant"]; + ywrapper.UintValue interval = 343471148 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/interval"]; + ywrapper.UintValue max = 203756111 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/max"]; + ywrapper.UintValue max_time = 12201747 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/max-time"]; + ywrapper.UintValue min = 69535217 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/min"]; + ywrapper.UintValue min_time = 511436553 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt/min-time"]; + } + message Idle { + ywrapper.UintValue avg = 124715605 [(yext.schemapath) = "/system/cpus/cpu/state/idle/avg"]; + ywrapper.UintValue instant = 230199506 [(yext.schemapath) = "/system/cpus/cpu/state/idle/instant"]; + ywrapper.UintValue interval = 496096436 [(yext.schemapath) = "/system/cpus/cpu/state/idle/interval"]; + ywrapper.UintValue max = 445461847 [(yext.schemapath) = "/system/cpus/cpu/state/idle/max"]; + ywrapper.UintValue max_time = 503768027 [(yext.schemapath) = "/system/cpus/cpu/state/idle/max-time"]; + ywrapper.UintValue min = 42811817 [(yext.schemapath) = "/system/cpus/cpu/state/idle/min"]; + ywrapper.UintValue min_time = 265827073 [(yext.schemapath) = "/system/cpus/cpu/state/idle/min-time"]; + } + message Kernel { + ywrapper.UintValue avg = 253885460 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/avg"]; + ywrapper.UintValue instant = 168068719 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/instant"]; + ywrapper.UintValue interval = 444985103 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/interval"]; + ywrapper.UintValue max = 470023086 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/max"]; + ywrapper.UintValue max_time = 329601932 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/max-time"]; + ywrapper.UintValue min = 67373056 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/min"]; + ywrapper.UintValue min_time = 235683554 [(yext.schemapath) = "/system/cpus/cpu/state/kernel/min-time"]; + } + message Nice { + ywrapper.UintValue avg = 329385588 [(yext.schemapath) = "/system/cpus/cpu/state/nice/avg"]; + ywrapper.UintValue instant = 453505999 [(yext.schemapath) = "/system/cpus/cpu/state/nice/instant"]; + ywrapper.UintValue interval = 48963055 [(yext.schemapath) = "/system/cpus/cpu/state/nice/interval"]; + ywrapper.UintValue max = 8755214 [(yext.schemapath) = "/system/cpus/cpu/state/nice/max"]; + ywrapper.UintValue max_time = 136550124 [(yext.schemapath) = "/system/cpus/cpu/state/nice/max-time"]; + ywrapper.UintValue min = 142976352 [(yext.schemapath) = "/system/cpus/cpu/state/nice/min"]; + ywrapper.UintValue min_time = 330377410 [(yext.schemapath) = "/system/cpus/cpu/state/nice/min-time"]; + } + message SoftwareInterrupt { + ywrapper.UintValue avg = 458756582 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/avg"]; + ywrapper.UintValue instant = 162043877 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/instant"]; + ywrapper.UintValue interval = 336602009 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/interval"]; + ywrapper.UintValue max = 71002944 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/max"]; + ywrapper.UintValue max_time = 94425762 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/max-time"]; + ywrapper.UintValue min = 473652942 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/min"]; + ywrapper.UintValue min_time = 160385836 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt/min-time"]; + } + message Total { + ywrapper.UintValue avg = 132944461 [(yext.schemapath) = "/system/cpus/cpu/state/total/avg"]; + ywrapper.UintValue instant = 386144186 [(yext.schemapath) = "/system/cpus/cpu/state/total/instant"]; + ywrapper.UintValue interval = 496728204 [(yext.schemapath) = "/system/cpus/cpu/state/total/interval"]; + ywrapper.UintValue max = 451014703 [(yext.schemapath) = "/system/cpus/cpu/state/total/max"]; + ywrapper.UintValue max_time = 333757299 [(yext.schemapath) = "/system/cpus/cpu/state/total/max-time"]; + ywrapper.UintValue min = 316793809 [(yext.schemapath) = "/system/cpus/cpu/state/total/min"]; + ywrapper.UintValue min_time = 130415593 [(yext.schemapath) = "/system/cpus/cpu/state/total/min-time"]; + } + message User { + ywrapper.UintValue avg = 360451894 [(yext.schemapath) = "/system/cpus/cpu/state/user/avg"]; + ywrapper.UintValue instant = 3525685 [(yext.schemapath) = "/system/cpus/cpu/state/user/instant"]; + ywrapper.UintValue interval = 14529097 [(yext.schemapath) = "/system/cpus/cpu/state/user/interval"]; + ywrapper.UintValue max = 509582096 [(yext.schemapath) = "/system/cpus/cpu/state/user/max"]; + ywrapper.UintValue max_time = 31166770 [(yext.schemapath) = "/system/cpus/cpu/state/user/max-time"]; + ywrapper.UintValue min = 375361214 [(yext.schemapath) = "/system/cpus/cpu/state/user/min"]; + ywrapper.UintValue min_time = 506696348 [(yext.schemapath) = "/system/cpus/cpu/state/user/min-time"]; + } + message Wait { + ywrapper.UintValue avg = 461699088 [(yext.schemapath) = "/system/cpus/cpu/state/wait/avg"]; + ywrapper.UintValue instant = 14128043 [(yext.schemapath) = "/system/cpus/cpu/state/wait/instant"]; + ywrapper.UintValue interval = 227652571 [(yext.schemapath) = "/system/cpus/cpu/state/wait/interval"]; + ywrapper.UintValue max = 276556978 [(yext.schemapath) = "/system/cpus/cpu/state/wait/max"]; + ywrapper.UintValue max_time = 71337832 [(yext.schemapath) = "/system/cpus/cpu/state/wait/max-time"]; + ywrapper.UintValue min = 142336092 [(yext.schemapath) = "/system/cpus/cpu/state/wait/min"]; + ywrapper.UintValue min_time = 42140422 [(yext.schemapath) = "/system/cpus/cpu/state/wait/min-time"]; + } + HardwareInterrupt hardware_interrupt = 81518708 [(yext.schemapath) = "/system/cpus/cpu/state/hardware-interrupt"]; + Idle idle = 511801900 [(yext.schemapath) = "/system/cpus/cpu/state/idle"]; + Kernel kernel = 23883017 [(yext.schemapath) = "/system/cpus/cpu/state/kernel"]; + Nice nice = 74777833 [(yext.schemapath) = "/system/cpus/cpu/state/nice"]; + SoftwareInterrupt software_interrupt = 350532999 [(yext.schemapath) = "/system/cpus/cpu/state/software-interrupt"]; + Total total = 497504852 [(yext.schemapath) = "/system/cpus/cpu/state/total"]; + User user = 329002807 [(yext.schemapath) = "/system/cpus/cpu/state/user"]; + Wait wait = 517899549 [(yext.schemapath) = "/system/cpus/cpu/state/wait"]; + } + message CpuKey { + enum Index { + INDEX_UNSET = 0; + INDEX_ALL = 1 [(yext.yang_name) = "ALL"]; + } + oneof index { + Index index_index = 408896491; + uint64 index_uint64 = 247396011; + } + Cpu cpu = 2; + } + message Dns { + message HostEntry { + repeated ywrapper.StringValue alias = 202464928 [(yext.schemapath) = "/system/dns/host-entries/host-entry/config/alias"]; + repeated ywrapper.StringValue ipv4_address = 47682642 [(yext.schemapath) = "/system/dns/host-entries/host-entry/config/ipv4-address"]; + repeated ywrapper.StringValue ipv6_address = 89261280 [(yext.schemapath) = "/system/dns/host-entries/host-entry/config/ipv6-address"]; + } + message HostEntryKey { + string hostname = 1 [(yext.schemapath) = "/system/dns/host-entries/host-entry/config/hostname|/system/dns/host-entries/host-entry/hostname"]; + HostEntry host_entry = 2; + } + message Server { + ywrapper.UintValue port = 441306980 [(yext.schemapath) = "/system/dns/servers/server/config/port"]; + } + message ServerKey { + string address = 1 [(yext.schemapath) = "/system/dns/servers/server/config/address|/system/dns/servers/server/address"]; + Server server = 2; + } + repeated HostEntryKey host_entry = 297400348 [(yext.schemapath) = "/system/dns/host-entries/host-entry"]; + repeated ywrapper.StringValue search = 529094948 [(yext.schemapath) = "/system/dns/config/search"]; + repeated ServerKey server = 234465781 [(yext.schemapath) = "/system/dns/servers/server"]; + } + message GrpcServer { + message ListenAddressesUnion { + ListenAddresses listen_addresses_listenaddresses = 443616413; + string listen_addresses_string = 442696493; + } + enum ListenAddresses { + LISTENADDRESSES_UNSET = 0; + LISTENADDRESSES_ANY = 1 [(yext.yang_name) = "ANY"]; + } + ywrapper.StringValue certificate_id = 441121224 [(yext.schemapath) = "/system/grpc-server/config/certificate-id"]; + ywrapper.BoolValue enable = 25007668 [(yext.schemapath) = "/system/grpc-server/config/enable"]; + repeated ListenAddressesUnion listen_addresses = 269758191 [(yext.schemapath) = "/system/grpc-server/config/listen-addresses"]; + ywrapper.BoolValue metadata_authentication = 459595831 [(yext.schemapath) = "/system/grpc-server/config/metadata-authentication"]; + ywrapper.UintValue port = 118468388 [(yext.schemapath) = "/system/grpc-server/config/port"]; + ywrapper.BoolValue transport_security = 161056339 [(yext.schemapath) = "/system/grpc-server/config/transport-security"]; + } + message Logging { + message Console { + message Selector { + } + message SelectorKey { + openconfig.enums.OpenconfigSystemLoggingSYSLOGFACILITY facility = 1 [(yext.schemapath) = "/system/logging/console/selectors/selector/config/facility|/system/logging/console/selectors/selector/facility"]; + openconfig.enums.OpenconfigSystemLoggingSyslogSeverity severity = 2 [(yext.schemapath) = "/system/logging/console/selectors/selector/config/severity|/system/logging/console/selectors/selector/severity"]; + Selector selector = 3; + } + repeated SelectorKey selector = 442447029 [(yext.schemapath) = "/system/logging/console/selectors/selector"]; + } + message RemoteServer { + message Selector { + } + message SelectorKey { + openconfig.enums.OpenconfigSystemLoggingSYSLOGFACILITY facility = 1 [(yext.schemapath) = "/system/logging/remote-servers/remote-server/selectors/selector/config/facility|/system/logging/remote-servers/remote-server/selectors/selector/facility"]; + openconfig.enums.OpenconfigSystemLoggingSyslogSeverity severity = 2 [(yext.schemapath) = "/system/logging/remote-servers/remote-server/selectors/selector/config/severity|/system/logging/remote-servers/remote-server/selectors/selector/severity"]; + Selector selector = 3; + } + ywrapper.UintValue remote_port = 22145415 [(yext.schemapath) = "/system/logging/remote-servers/remote-server/config/remote-port"]; + repeated SelectorKey selector = 300442996 [(yext.schemapath) = "/system/logging/remote-servers/remote-server/selectors/selector"]; + ywrapper.StringValue source_address = 4922255 [(yext.schemapath) = "/system/logging/remote-servers/remote-server/config/source-address"]; + } + message RemoteServerKey { + string host = 1 [(yext.schemapath) = "/system/logging/remote-servers/remote-server/config/host|/system/logging/remote-servers/remote-server/host"]; + RemoteServer remote_server = 2; + } + Console console = 197921220 [(yext.schemapath) = "/system/logging/console"]; + repeated RemoteServerKey remote_server = 157599479 [(yext.schemapath) = "/system/logging/remote-servers/remote-server"]; + } + message Memory { + ywrapper.UintValue physical = 108400520 [(yext.schemapath) = "/system/memory/state/physical"]; + ywrapper.UintValue reserved = 140759447 [(yext.schemapath) = "/system/memory/state/reserved"]; + } + message Messages { + message DebugService { + ywrapper.BoolValue enabled = 255266609 [(yext.schemapath) = "/system/messages/debug-entries/debug-service/config/enabled"]; + } + message DebugServiceKey { + openconfig.enums.OpenconfigMessagesDEBUGSERVICE service = 1 [(yext.schemapath) = "/system/messages/debug-entries/debug-service/config/service|/system/messages/debug-entries/debug-service/service"]; + DebugService debug_service = 2; + } + message Message { + ywrapper.StringValue app_name = 209460747 [(yext.schemapath) = "/system/messages/state/message/app-name"]; + ywrapper.StringValue msg = 224593699 [(yext.schemapath) = "/system/messages/state/message/msg"]; + ywrapper.StringValue msgid = 105587764 [(yext.schemapath) = "/system/messages/state/message/msgid"]; + ywrapper.UintValue priority = 157172736 [(yext.schemapath) = "/system/messages/state/message/priority"]; + ywrapper.StringValue procid = 92046335 [(yext.schemapath) = "/system/messages/state/message/procid"]; + } + repeated DebugServiceKey debug_service = 396463998 [(yext.schemapath) = "/system/messages/debug-entries/debug-service"]; + Message message = 16499629 [(yext.schemapath) = "/system/messages/state/message"]; + openconfig.enums.OpenconfigMessagesSyslogSeverity severity = 77893034 [(yext.schemapath) = "/system/messages/config/severity"]; + } + message Ntp { + message NtpKey { + openconfig.enums.OpenconfigSystemNTPAUTHTYPE key_type = 68795202 [(yext.schemapath) = "/system/ntp/ntp-keys/ntp-key/config/key-type"]; + ywrapper.StringValue key_value = 491993133 [(yext.schemapath) = "/system/ntp/ntp-keys/ntp-key/config/key-value"]; + } + message NtpKeyKey { + uint64 key_id = 1 [(yext.schemapath) = "/system/ntp/ntp-keys/ntp-key/config/key-id|/system/ntp/ntp-keys/ntp-key/key-id"]; + NtpKey ntp_key = 2; + } + message Server { + enum AssociationType { + ASSOCIATIONTYPE_SERVER = 0 [(yext.yang_name) = "SERVER"]; + ASSOCIATIONTYPE_PEER = 2 [(yext.yang_name) = "PEER"]; + ASSOCIATIONTYPE_POOL = 3 [(yext.yang_name) = "POOL"]; + } + AssociationType association_type = 403743446 [(yext.schemapath) = "/system/ntp/servers/server/config/association-type"]; + ywrapper.BoolValue iburst = 520002257 [(yext.schemapath) = "/system/ntp/servers/server/config/iburst"]; + ywrapper.UintValue offset = 2287252 [(yext.schemapath) = "/system/ntp/servers/server/state/offset"]; + ywrapper.UintValue poll_interval = 394021196 [(yext.schemapath) = "/system/ntp/servers/server/state/poll-interval"]; + ywrapper.UintValue port = 23953045 [(yext.schemapath) = "/system/ntp/servers/server/config/port"]; + ywrapper.BoolValue prefer = 63587710 [(yext.schemapath) = "/system/ntp/servers/server/config/prefer"]; + ywrapper.UintValue root_delay = 363692935 [(yext.schemapath) = "/system/ntp/servers/server/state/root-delay"]; + ywrapper.UintValue root_dispersion = 81112484 [(yext.schemapath) = "/system/ntp/servers/server/state/root-dispersion"]; + ywrapper.UintValue stratum = 297803783 [(yext.schemapath) = "/system/ntp/servers/server/state/stratum"]; + ywrapper.UintValue version = 385126824 [(yext.schemapath) = "/system/ntp/servers/server/config/version"]; + } + message ServerKey { + string address = 1 [(yext.schemapath) = "/system/ntp/servers/server/config/address|/system/ntp/servers/server/address"]; + Server server = 2; + } + ywrapper.UintValue auth_mismatch = 264062383 [(yext.schemapath) = "/system/ntp/state/auth-mismatch"]; + ywrapper.BoolValue enable_ntp_auth = 345800954 [(yext.schemapath) = "/system/ntp/config/enable-ntp-auth"]; + ywrapper.BoolValue enabled = 520946078 [(yext.schemapath) = "/system/ntp/config/enabled"]; + repeated NtpKeyKey ntp_key = 265614496 [(yext.schemapath) = "/system/ntp/ntp-keys/ntp-key"]; + ywrapper.StringValue ntp_source_address = 418322460 [(yext.schemapath) = "/system/ntp/config/ntp-source-address"]; + repeated ServerKey server = 453498492 [(yext.schemapath) = "/system/ntp/servers/server"]; + } + message Process { + repeated ywrapper.StringValue args = 136113714 [(yext.schemapath) = "/system/processes/process/state/args"]; + ywrapper.UintValue cpu_usage_system = 221645263 [(yext.schemapath) = "/system/processes/process/state/cpu-usage-system"]; + ywrapper.UintValue cpu_usage_user = 6624253 [(yext.schemapath) = "/system/processes/process/state/cpu-usage-user"]; + ywrapper.UintValue cpu_utilization = 346097790 [(yext.schemapath) = "/system/processes/process/state/cpu-utilization"]; + ywrapper.UintValue memory_usage = 70248886 [(yext.schemapath) = "/system/processes/process/state/memory-usage"]; + ywrapper.UintValue memory_utilization = 283685455 [(yext.schemapath) = "/system/processes/process/state/memory-utilization"]; + ywrapper.StringValue name = 245651384 [(yext.schemapath) = "/system/processes/process/state/name"]; + ywrapper.UintValue start_time = 320727543 [(yext.schemapath) = "/system/processes/process/state/start-time"]; + } + message ProcessKey { + uint64 pid = 1 [(yext.schemapath) = "/system/processes/process/state/pid|/system/processes/process/pid"]; + Process process = 2; + } + message SshServer { + enum ProtocolVersion { + PROTOCOLVERSION_V2 = 0 [(yext.yang_name) = "V2"]; + PROTOCOLVERSION_V1 = 2 [(yext.yang_name) = "V1"]; + PROTOCOLVERSION_V1_V2 = 3 [(yext.yang_name) = "V1_V2"]; + } + ywrapper.BoolValue enable = 475045872 [(yext.schemapath) = "/system/ssh-server/config/enable"]; + ProtocolVersion protocol_version = 334522130 [(yext.schemapath) = "/system/ssh-server/config/protocol-version"]; + ywrapper.UintValue rate_limit = 194633841 [(yext.schemapath) = "/system/ssh-server/config/rate-limit"]; + ywrapper.UintValue session_limit = 401851517 [(yext.schemapath) = "/system/ssh-server/config/session-limit"]; + ywrapper.UintValue timeout = 447813214 [(yext.schemapath) = "/system/ssh-server/config/timeout"]; + } + message TelnetServer { + ywrapper.BoolValue enable = 131142084 [(yext.schemapath) = "/system/telnet-server/config/enable"]; + ywrapper.UintValue rate_limit = 174879637 [(yext.schemapath) = "/system/telnet-server/config/rate-limit"]; + ywrapper.UintValue session_limit = 205487953 [(yext.schemapath) = "/system/telnet-server/config/session-limit"]; + ywrapper.UintValue timeout = 360726298 [(yext.schemapath) = "/system/telnet-server/config/timeout"]; + } + Aaa aaa = 128178706 [(yext.schemapath) = "/system/aaa"]; + repeated AlarmKey alarm = 221321319 [(yext.schemapath) = "/system/alarms/alarm"]; + ywrapper.UintValue boot_time = 174811281 [(yext.schemapath) = "/system/state/boot-time"]; + Clock clock = 298112203 [(yext.schemapath) = "/system/clock"]; + repeated CpuKey cpu = 70314881 [(yext.schemapath) = "/system/cpus/cpu"]; + ywrapper.StringValue current_datetime = 14846070 [(yext.schemapath) = "/system/state/current-datetime"]; + Dns dns = 380694544 [(yext.schemapath) = "/system/dns"]; + ywrapper.StringValue domain_name = 514451884 [(yext.schemapath) = "/system/config/domain-name"]; + GrpcServer grpc_server = 115074741 [(yext.schemapath) = "/system/grpc-server"]; + ywrapper.StringValue hostname = 502971767 [(yext.schemapath) = "/system/config/hostname"]; + Logging logging = 147116502 [(yext.schemapath) = "/system/logging"]; + ywrapper.StringValue login_banner = 161971574 [(yext.schemapath) = "/system/config/login-banner"]; + Memory memory = 238855198 [(yext.schemapath) = "/system/memory"]; + Messages messages = 243479275 [(yext.schemapath) = "/system/messages"]; + ywrapper.StringValue motd_banner = 428956479 [(yext.schemapath) = "/system/config/motd-banner"]; + Ntp ntp = 214492667 [(yext.schemapath) = "/system/ntp"]; + repeated ProcessKey process = 8835840 [(yext.schemapath) = "/system/processes/process"]; + SshServer ssh_server = 92111553 [(yext.schemapath) = "/system/ssh-server"]; + TelnetServer telnet_server = 426646341 [(yext.schemapath) = "/system/telnet-server"]; +} diff --git a/COPIED/p4runtime.py b/COPIED/p4runtime.py new file mode 100644 index 0000000..fc5de65 --- /dev/null +++ b/COPIED/p4runtime.py @@ -0,0 +1,350 @@ +# Copyright 2019 Barefoot Networks, Inc. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from functools import wraps +import google.protobuf.text_format +from google.rpc import status_pb2, code_pb2 +import grpc +import logging +import queue +import sys +import threading +from typing import NamedTuple + +from p4.v1 import p4runtime_pb2 +from p4.v1 import p4runtime_pb2_grpc + + +class P4RuntimeErrorFormatException(Exception): + def __init__(self, message): + super().__init__(message) + + +# Used to iterate over the p4.Error messages in a gRPC error Status object +class P4RuntimeErrorIterator: + def __init__(self, grpc_error): + assert(grpc_error.code() == grpc.StatusCode.UNKNOWN) + self.grpc_error = grpc_error + + error = None + # The gRPC Python package does not have a convenient way to access the + # binary details for the error: they are treated as trailing metadata. + for meta in self.grpc_error.trailing_metadata(): + if meta[0] == "grpc-status-details-bin": + error = status_pb2.Status() + error.ParseFromString(meta[1]) + break + if error is None: + raise P4RuntimeErrorFormatException("No binary details field") + + if len(error.details) == 0: + raise P4RuntimeErrorFormatException( + "Binary details field has empty Any details repeated field") + self.errors = error.details + self.idx = 0 + + def __iter__(self): + return self + + def __next__(self): + while self.idx < len(self.errors): + p4_error = p4runtime_pb2.Error() + one_error_any = self.errors[self.idx] + if not one_error_any.Unpack(p4_error): + raise P4RuntimeErrorFormatException( + "Cannot convert Any message to p4.Error") + if p4_error.canonical_code == code_pb2.OK: + continue + v = self.idx, p4_error + self.idx += 1 + return v + raise StopIteration + + +# P4Runtime uses a 3-level message in case of an error during the processing of +# a write batch. This means that if we do not wrap the grpc.RpcError inside a +# custom exception, we can end-up with a non-helpful exception message in case +# of failure as only the first level will be printed. In this custom exception +# class, we extract the nested error message (one for each operation included in +# the batch) in order to print error code + user-facing message. See P4 Runtime +# documentation for more details on error-reporting. +class P4RuntimeWriteException(Exception): + def __init__(self, grpc_error): + assert(grpc_error.code() == grpc.StatusCode.UNKNOWN) + super().__init__() + self.errors = [] + try: + error_iterator = P4RuntimeErrorIterator(grpc_error) + for error_tuple in error_iterator: + self.errors.append(error_tuple) + except P4RuntimeErrorFormatException: + raise # just propagate exception for now + + def __str__(self): + message = "Error(s) during Write:\n" + for idx, p4_error in self.errors: + code_name = code_pb2._CODE.values_by_number[ + p4_error.canonical_code].name + message += "\t* At index {}: {}, '{}'\n".format( + idx, code_name, p4_error.message) + return message + + +class P4RuntimeException(Exception): + def __init__(self, grpc_error): + super().__init__() + self.grpc_error = grpc_error + + def __str__(self): + message = "P4Runtime RPC error ({}): {}".format( + self.grpc_error.code().name, self.grpc_error.details()) + return message + + +def parse_p4runtime_write_error(f): + @wraps(f) + def handle(*args, **kwargs): + try: + return f(*args, **kwargs) + except grpc.RpcError as e: + if e.code() != grpc.StatusCode.UNKNOWN: + raise e + raise P4RuntimeWriteException(e) from None + return handle + + +def parse_p4runtime_error(f): + @wraps(f) + def handle(*args, **kwargs): + try: + return f(*args, **kwargs) + except grpc.RpcError as e: + raise P4RuntimeException(e) from None + return handle + + +class SSLOptions(NamedTuple): + insecure: bool + cacert: str = None + cert: str = None + key: str = None + + +def read_pem_file(path): + try: + with open(path, 'rb') as f: + return f.read() + except Exception: + logging.critical("Cannot read from PEM file '{}'".format(path)) + sys.exit(1) + + +class P4RuntimeClient: + def __init__(self, device_id, grpc_addr, election_id, role_name=None, ssl_options=None): + self.device_id = device_id + self.election_id = election_id + self.role_name = role_name + if ssl_options is None: + self.ssl_options = SSLOptions(True) + else: + self.ssl_options = ssl_options + logging.debug("Connecting to device {} at {}".format(device_id, grpc_addr)) + if self.ssl_options.insecure: + try: + logging.debug("Using insecure channel") + self.channel = grpc.insecure_channel(grpc_addr) + except Exception: + logging.critical("Failed to connect to P4Runtime server") + sys.exit(1) + else: + # root certificates are retrieved from a default location chosen by gRPC runtime unless + # the user provides custom certificates. + root_certificates = None + if self.ssl_options.cacert is not None: + root_certificates = read_pem_file(self.ssl_options.cacert) + certificate_chain = None + if self.ssl_options.cert is not None: + certificate_chain = read_pem_file(self.ssl_options.cert) + private_key = None + if self.ssl_options.key is not None: + private_key = read_pem_file(self.ssl_options.key) + creds = grpc.ssl_channel_credentials(root_certificates, private_key, certificate_chain) + try: + self.channel = grpc.secure_channel(grpc_addr, creds) + except Exception: + logging.critical("Failed to connect to P4Runtime server") + sys.exit(1) + + self.stub = p4runtime_pb2_grpc.P4RuntimeStub(self.channel) + self.set_up_stream() + + def set_up_stream(self): + self.stream_out_q = queue.Queue() + # queues for different messages + self.stream_in_q = { + "arbitration": queue.Queue(), + "packet": queue.Queue(), + "digest": queue.Queue(), + "idle_timeout_notification": queue.Queue(), + "unknown": queue.Queue(), + } + + def stream_req_iterator(): + while True: + p = self.stream_out_q.get() + if p is None: + break + yield p + + def stream_recv_wrapper(stream): + @parse_p4runtime_error + def stream_recv(): + for p in stream: + if p.HasField("arbitration"): + self.stream_in_q["arbitration"].put(p) + elif p.HasField("packet"): + self.stream_in_q["packet"].put(p) + elif p.HasField("digest"): + self.stream_in_q["digest"].put(p) + elif p.HasField("idle_timeout_notification"): + self.stream_in_q["idle_timeout_notification"].put(p) + else: + self.stream_in_q["unknown"].put(p) + try: + stream_recv() + except P4RuntimeException as e: + logging.critical("StreamChannel error, closing stream") + logging.critical(e) + for k in self.stream_in_q: + self.stream_in_q[k].put(None) + self.stream = self.stub.StreamChannel(stream_req_iterator()) + self.stream_recv_thread = threading.Thread( + target=stream_recv_wrapper, args=(self.stream,)) + self.stream_recv_thread.start() + self.handshake() + + def handshake(self): + req = p4runtime_pb2.StreamMessageRequest() + arbitration = req.arbitration + arbitration.device_id = self.device_id + election_id = arbitration.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + if self.role_name is not None: + arbitration.role.name = self.role_name + self.stream_out_q.put(req) + + rep = self.get_stream_packet("arbitration", timeout=2) + if rep is None: + logging.critical("Failed to establish session with server") + sys.exit(1) + is_primary = (rep.arbitration.status.code == code_pb2.OK) + logging.debug("Session established, client is '{}'".format( + 'primary' if is_primary else 'backup')) + if not is_primary: + print("You are not the primary client, you only have read access to the server") + + def get_stream_packet(self, type_, timeout=1): + if type_ not in self.stream_in_q: + print("Unknown stream type '{}'".format(type_)) + return None + try: + msg = self.stream_in_q[type_].get(timeout=timeout) + return msg + except queue.Empty: # timeout expired + return None + + @parse_p4runtime_error + def get_p4info(self): + logging.debug("Retrieving P4Info file") + req = p4runtime_pb2.GetForwardingPipelineConfigRequest() + req.device_id = self.device_id + req.response_type = p4runtime_pb2.GetForwardingPipelineConfigRequest.P4INFO_AND_COOKIE + rep = self.stub.GetForwardingPipelineConfig(req) + return rep.config.p4info + + @parse_p4runtime_error + def set_fwd_pipe_config(self, p4info_path, bin_path): + logging.debug("Setting forwarding pipeline config") + req = p4runtime_pb2.SetForwardingPipelineConfigRequest() + req.device_id = self.device_id + if self.role_name is not None: + req.role = self.role_name + election_id = req.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + req.action = p4runtime_pb2.SetForwardingPipelineConfigRequest.VERIFY_AND_COMMIT + with open(p4info_path, 'r') as f1: + with open(bin_path, 'rb') as f2: + try: + google.protobuf.text_format.Merge(f1.read(), req.config.p4info, + allow_unknown_field=True) + except google.protobuf.text_format.ParseError: + logging.error("Error when parsing P4Info") + raise + req.config.p4_device_config = f2.read() + return self.stub.SetForwardingPipelineConfig(req) + + def tear_down(self): + if self.stream_out_q: + logging.debug("Cleaning up stream") + self.stream_out_q.put(None) + if self.stream_in_q: + for k in self.stream_in_q: + self.stream_in_q[k].put(None) + if self.stream_recv_thread: + self.stream_recv_thread.join() + self.channel.close() + del self.channel # avoid a race condition if channel deleted when process terminates + + @parse_p4runtime_write_error + def write(self, req): + req.device_id = self.device_id + if self.role_name is not None: + req.role = self.role_name + election_id = req.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + return self.stub.Write(req) + + @parse_p4runtime_write_error + def write_update(self, update): + req = p4runtime_pb2.WriteRequest() + req.device_id = self.device_id + if self.role_name is not None: + req.role = self.role_name + election_id = req.election_id + election_id.high = self.election_id[0] + election_id.low = self.election_id[1] + req.updates.extend([update]) + return self.stub.Write(req) + + # Decorator is useless here: in case of server error, the exception is raised during the + # iteration (when next() is called). + @parse_p4runtime_error + def read_one(self, entity): + req = p4runtime_pb2.ReadRequest() + if self.role_name is not None: + req.role = self.role_name + req.device_id = self.device_id + req.entities.extend([entity]) + return self.stub.Read(req) + + @parse_p4runtime_error + def api_version(self): + req = p4runtime_pb2.CapabilitiesRequest() + rep = self.stub.Capabilities(req) + return rep.p4runtime_api_version diff --git a/COPIED/shell.py b/COPIED/shell.py new file mode 100644 index 0000000..e791743 --- /dev/null +++ b/COPIED/shell.py @@ -0,0 +1,3063 @@ +# Copyright 2019 Barefoot Networks, Inc. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import argparse +import time +from collections import Counter, namedtuple, OrderedDict +import enum +import logging +from threading import Thread +from IPython import start_ipython +from traitlets.config.loader import Config +from IPython.terminal.prompts import Prompts, Token +import os.path +import sys +from p4runtime_sh.p4runtime import (P4RuntimeClient, P4RuntimeException, parse_p4runtime_error, + SSLOptions) +from p4.v1 import p4runtime_pb2 +from p4.config.v1 import p4info_pb2 +from . import bytes_utils +from . global_options import global_options, Options +from .context import P4RuntimeEntity, P4Type, Context +from .utils import UserError, InvalidP4InfoError +import google.protobuf.text_format +from google.protobuf import descriptor +import queue + + +context = Context() +client = None + + +def _print(*args, **kwargs): + if global_options.get_option(Options.verbose): + print(*args, **kwargs) + + +class UserUsageError(UserError): + def __init__(self, usage): + self.usage = usage + + def __str__(self): + return "Usage: " + self.usage + + +class NotSupportedYet(UserError): + def __init__(self, what): + self.what = what + + def __str__(self): + return "{} is not supported yet".format(self.what) + + +class _PrintContext: + def __init__(self): + self.skip_one = False + self.stack = [] + + def find_table(self): + for msg in reversed(self.stack): + if msg.DESCRIPTOR.name == "TableEntry": + try: + return context.get_name_from_id(msg.table_id) + except KeyError: + return None + return None + + def find_action(self): + for msg in reversed(self.stack): + if msg.DESCRIPTOR.name == "Action": + try: + return context.get_name_from_id(msg.action_id) + except KeyError: + return None + return None + + def find_controller_packet_metadata(self): + for msg in reversed(self.stack): + if msg.DESCRIPTOR.name == "PacketIn": + return "packet_in" + if msg.DESCRIPTOR.name == "PacketOut": + return "packet_out" + return None + + +def _sub_object(field, value, pcontext): + id_ = value + try: + return context.get_name_from_id(id_) + except KeyError: + logging.error("Unknown object id {}".format(id_)) + + +def _sub_mf(field, value, pcontext): + id_ = value + table_name = pcontext.find_table() + if table_name is None: + logging.error("Cannot find any table in context") + return + return context.get_mf_name(table_name, id_) + + +def _sub_ap(field, value, pcontext): + id_ = value + action_name = pcontext.find_action() + if action_name is None: + logging.error("Cannot find any action in context") + return + return context.get_param_name(action_name, id_) + + +def _sub_pkt_md(field, value, pcontext): + id_ = value + ctrl_pkt_md_name = pcontext.find_controller_packet_metadata() + return context.get_packet_metadata_name_from_id(ctrl_pkt_md_name, id_) + + +def _gen_pretty_print_proto_field(substitutions, pcontext): + def myPrintField(self, field, value): + self._PrintFieldName(field) + self.out.write(' ') + if field.type == descriptor.FieldDescriptor.TYPE_BYTES: + # TODO(antonin): any kind of checks required? + self.out.write('\"') + self.out.write(''.join('\\\\x{:02x}'.format(b) for b in value)) + self.out.write('\"') + else: + self.PrintFieldValue(field, value) + subs = None + if field.containing_type is not None: + subs = substitutions.get(field.containing_type.name, None) + if subs and field.name in subs and value != 0: + name = subs[field.name](field, value, pcontext) + self.out.write(' ("{}")'.format(name)) + self.out.write(' ' if self.as_one_line else '\n') + + return myPrintField + + +def _repr_pretty_proto(msg, substitutions): + """A custom version of google.protobuf.text_format.MessageToString which represents Protobuf + messages with a more user-friendly string. In particular, P4Runtime ids are supplemented with + the P4 name and binary strings are displayed in hexadecimal format.""" + pcontext = _PrintContext() + + def message_formatter(message, indent, as_one_line): + # For each messages we do 2 passes: the first one updates the _PrintContext instance and + # calls MessageToString again. The second pass returns None immediately (default handling by + # text_format). + if pcontext.skip_one: + pcontext.skip_one = False + return + pcontext.stack.append(message) + pcontext.skip_one = True + s = google.protobuf.text_format.MessageToString( + message, indent=indent, as_one_line=as_one_line, message_formatter=message_formatter) + s = s[indent:-1] + pcontext.stack.pop() + return s + + # We modify the "internals" of the text_format module which is not great as it may break in the + # future, but this enables us to keep the code fairly small. + saved_printer = google.protobuf.text_format._Printer.PrintField + google.protobuf.text_format._Printer.PrintField = _gen_pretty_print_proto_field( + substitutions, pcontext) + + s = google.protobuf.text_format.MessageToString(msg, message_formatter=message_formatter) + + google.protobuf.text_format._Printer.PrintField = saved_printer + + return s + + +def _repr_pretty_p4info(msg): + substitutions = { + "Table": {"const_default_action_id": _sub_object, + "implementation_id": _sub_object, + "direct_resource_ids": _sub_object}, + "ActionRef": {"id": _sub_object}, + "ActionProfile": {"table_ids": _sub_object}, + "DirectCounter": {"direct_table_id": _sub_object}, + "DirectMeter": {"direct_table_id": _sub_object}, + } + return _repr_pretty_proto(msg, substitutions) + + +def _repr_pretty_p4runtime(msg): + substitutions = { + "TableEntry": {"table_id": _sub_object}, + "FieldMatch": {"field_id": _sub_mf}, + "Action": {"action_id": _sub_object}, + "Param": {"param_id": _sub_ap}, + "ActionProfileMember": {"action_profile_id": _sub_object}, + "ActionProfileGroup": {"action_profile_id": _sub_object}, + "MeterEntry": {"meter_id": _sub_object}, + "CounterEntry": {"counter_id": _sub_object}, + "ValueSetEntry": {"value_set_id": _sub_object}, + "RegisterEntry": {"register_id": _sub_object}, + "DigestEntry": {"digest_id": _sub_object}, + "DigestListAck": {"digest_id": _sub_object}, + "DigestList": {"digest_id": _sub_object}, + "PacketMetadata": {"metadata_id": _sub_pkt_md} + } + return _repr_pretty_proto(msg, substitutions) + + +class P4Object: + def __init__(self, obj_type, obj): + self.name = obj.preamble.name + self.id = obj.preamble.id + self._obj_type = obj_type + self._obj = obj + self.__doc__ = """ +A wrapper around the P4Info Protobuf message for {} '{}'. +You can access any field from the message with .. +You can access the name directly with .name. +You can access the id directly with .id. +If you need the underlying Protobuf message, you can access it with msg(). +""".format(obj_type.pretty_name, self.name) + + def __dir__(self): + d = ["info", "msg", "name", "id"] + if self._obj_type == P4Type.table: + d.append("actions") + return d + + def _repr_pretty_(self, p, cycle): + p.text(_repr_pretty_p4info(self._obj)) + + def __str__(self): + return _repr_pretty_p4info(self._obj) + + def __getattr__(self, name): + return getattr(self._obj, name) + + def __settattr__(self, name, value): + return UserError("Operation not supported") + + def msg(self): + """Get Protobuf message object""" + return self._obj + + def info(self): + print(_repr_pretty_p4info(self._obj)) + + def actions(self): + """Print list of actions, only for tables and action profiles.""" + if self._obj_type == P4Type.table: + for action in self._obj.action_refs: + print(context.get_name_from_id(action.id)) + elif self._obj_type == P4Type.action_profile: + t_id = self._obj.table_ids[0] + t_name = context.get_name_from_id(t_id) + t = context.get_table(t_name) + for action in t.action_refs: + print(context.get_name_from_id(action.id)) + else: + raise UserError("'actions' is only available for tables and action profiles") + + +class P4Objects: + def __init__(self, obj_type): + self._obj_type = obj_type + self._names = sorted([name for name, _ in context.get_objs(obj_type)]) + self._iter = None + self.__doc__ = """ +All the {pnames} in the P4 program. +To access a specific {pname}, use {p4info}['']. +You can use this class to iterate over all {pname} instances: +\tfor x in {p4info}: +\t\tprint(x.id) +""".format(pname=obj_type.pretty_name, pnames=obj_type.pretty_names, p4info=obj_type.p4info_name) + + def __call__(self): + for name in self._names: + print(name) + + def _ipython_key_completions_(self): + return self._names + + def __getitem__(self, name): + obj = context.get_obj(self._obj_type, name) + if obj is None: + raise UserError("{} '{}' does not exist".format( + self._obj_type.pretty_name, name)) + return P4Object(self._obj_type, obj) + + def __setitem__(self, name, value): + raise UserError("Operation not allowed") + + def _repr_pretty_(self, p, cycle): + p.text(self.__doc__) + + def __iter__(self): + self._iter = iter(self._names) + return self + + def __next__(self): + name = next(self._iter) + return self[name] + + +class MatchKey: + def __init__(self, table_name, match_fields): + self._table_name = table_name + self._fields = OrderedDict() + self._fields_suffixes = {} + for mf in match_fields: + self._add_field(mf) + self._mk = OrderedDict() + self._set_docstring() + + def _set_docstring(self): + self.__doc__ = "Match key fields for table '{}':\n\n".format(self._table_name) + for name, info in self._fields.items(): + self.__doc__ += str(info) + self.__doc__ += """ +Set a field value with [''] = '...' + * For exact match: [''] = '' + * For ternary match: [''] = '&&&' + * For LPM match: [''] = '/' + * For range match: [''] = '..' + * For optional match: [''] = '' + +If it's inconvenient to use the whole field name, you can use a unique suffix. + +You may also use .set(='') +\t( must not include a '.' in this case, but remember that you can use a unique suffix) +""" + + def _ipython_key_completions_(self): + return self._fields.keys() + + def __dir__(self): + return ["clear"] + + def _full_field_name(self, name): + if name in self._fields: + return name + if name in self._fields_suffixes: + return self._fields_suffixes[name] + raise UserError( + "'{}' is not a valid match field name, nor a valid unique suffix, " + "for table '{}'".format(name, self._table_name)) + + def _get_mf(self, name): + fullname = self._full_field_name(name) + return self._fields[fullname] + + def __setitem__(self, name, value): + fullname = self._full_field_name(name) + field_info = self._get_mf(fullname) + self._mk[fullname] = self._parse_mf(value, field_info) + _print(self._mk[fullname]) + + def __getitem__(self, name): + fullname = self._full_field_name(name) + f = self._mk.get(fullname, None) + if f is None: + _print("Unset") + return f + + def _parse_mf(self, s, field_info): + if type(s) is not str: + raise UserError("Match field value must be a string") + if field_info.match_type == p4info_pb2.MatchField.EXACT: + return self._parse_mf_exact(s, field_info) + elif field_info.match_type == p4info_pb2.MatchField.LPM: + return self._parse_mf_lpm(s, field_info) + elif field_info.match_type == p4info_pb2.MatchField.TERNARY: + return self._parse_mf_ternary(s, field_info) + elif field_info.match_type == p4info_pb2.MatchField.RANGE: + return self._parse_mf_range(s, field_info) + elif field_info.match_type == p4info_pb2.MatchField.OPTIONAL: + return self._parse_mf_optional(s, field_info) + else: + raise UserError("Unsupported match type for field:\n{}".format(field_info)) + + def _parse_mf_exact(self, s, field_info): + v = bytes_utils.parse_value(s.strip(), field_info.bitwidth) + return self._sanitize_and_convert_mf_exact(v, field_info) + + def _sanitize_and_convert_mf_exact(self, value, field_info): + mf = p4runtime_pb2.FieldMatch() + mf.field_id = field_info.id + mf.exact.value = bytes_utils.make_canonical_if_option_set(value) + return mf + + def _parse_mf_optional(self, s, field_info): + v = bytes_utils.parse_value(s.strip(), field_info.bitwidth) + return self._sanitize_and_convert_mf_optional(v, field_info) + + def _sanitize_and_convert_mf_optional(self, value, field_info): + mf = p4runtime_pb2.FieldMatch() + mf.field_id = field_info.id + mf.optional.value = bytes_utils.make_canonical_if_option_set(value) + return mf + + def _parse_mf_lpm(self, s, field_info): + try: + prefix, length = s.split('/') + prefix, length = prefix.strip(), length.strip() + except ValueError: + prefix = s + length = str(field_info.bitwidth) + + prefix = bytes_utils.parse_value(prefix, field_info.bitwidth) + try: + length = int(length) + except ValueError: + raise UserError("'{}' is not a valid prefix length").format(length) + + return self._sanitize_and_convert_mf_lpm(prefix, length, field_info) + + def _sanitize_and_convert_mf_lpm(self, prefix, length, field_info): + if length == 0: + raise UserError( + "Ignoring LPM don't care match (prefix length of 0) as per P4Runtime spec") + + mf = p4runtime_pb2.FieldMatch() + mf.field_id = field_info.id + mf.lpm.prefix_len = length + + first_byte_masked = length // 8 + if first_byte_masked == len(prefix): + mf.lpm.value = prefix + return mf + + barray = bytearray(prefix) + transformed = False + r = length % 8 + byte_mask = 0xff & ((0xff << (8 - r))) + if barray[first_byte_masked] & byte_mask != barray[first_byte_masked]: + transformed = True + barray[first_byte_masked] = barray[first_byte_masked] & byte_mask + + for i in range(first_byte_masked + 1, len(prefix)): + if barray[i] != 0: + transformed = True + barray[i] = 0 + if transformed: + _print("LPM value was transformed to conform to the P4Runtime spec " + "(trailing bits must be unset)") + mf.lpm.value = bytes(bytes_utils.make_canonical_if_option_set(barray)) + return mf + + def _parse_mf_ternary(self, s, field_info): + try: + value, mask = s.split('&&&') + value, mask = value.strip(), mask.strip() + except ValueError: + value = s.strip() + mask = "0b" + ("1" * field_info.bitwidth) + + value = bytes_utils.parse_value(value, field_info.bitwidth) + mask = bytes_utils.parse_value(mask, field_info.bitwidth) + + return self._sanitize_and_convert_mf_ternary(value, mask, field_info) + + def _sanitize_and_convert_mf_ternary(self, value, mask, field_info): + if int.from_bytes(mask, byteorder='big') == 0: + raise UserError("Ignoring ternary don't care match (mask of 0s) as per P4Runtime spec") + + mf = p4runtime_pb2.FieldMatch() + mf.field_id = field_info.id + + barray = bytearray(value) + transformed = False + for i in range(len(value)): + if barray[i] & mask[i] != barray[i]: + transformed = True + barray[i] = barray[i] & mask[i] + if transformed: + _print("Ternary value was transformed to conform to the P4Runtime spec " + "(masked off bits must be unset)") + mf.ternary.value = bytes(bytes_utils.make_canonical_if_option_set(barray)) + mf.ternary.mask = bytes_utils.make_canonical_if_option_set(mask) + return mf + + def _parse_mf_range(self, s, field_info): + try: + start, end = s.split('..') + start, end = start.strip(), end.strip() + except ValueError: + raise UserError("'{}' does not specify a valid range, use '..'").format( + s) + + start = bytes_utils.parse_value(start, field_info.bitwidth) + end = bytes_utils.parse_value(end, field_info.bitwidth) + + return self._sanitize_and_convert_mf_range(start, end, field_info) + + def _sanitize_and_convert_mf_range(self, start, end, field_info): + # It's a bit silly: the fields are converted from str to int to bytes by bytes_utils, then + # converted back to int here... + start_ = int.from_bytes(start, byteorder='big') + end_ = int.from_bytes(end, byteorder='big') + if start_ > end_: + raise UserError("Invalid range match: start is greater than end") + if start_ == 0 and end_ == ((1 << field_info.bitwidth) - 1): + raise UserError( + "Ignoring range don't care match (all possible values) as per P4Runtime spec") + mf = p4runtime_pb2.FieldMatch() + mf.field_id = field_info.id + mf.range.low = bytes_utils.make_canonical_if_option_set(start) + mf.range.high = bytes_utils.make_canonical_if_option_set(end) + return mf + + def _add_field(self, field_info): + self._fields[field_info.name] = field_info + self._recompute_suffixes() + + def _recompute_suffixes(self): + suffixes = {} + suffix_count = Counter() + for fname in self._fields: + suffix = None + for s in reversed(fname.split(".")): + suffix = s if suffix is None else s + "." + suffix + suffixes[suffix] = fname + suffix_count[suffix] += 1 + for suffix, c in suffix_count.items(): + if c > 1: + del suffixes[suffix] + self._fields_suffixes = suffixes + + def __str__(self): + return '\n'.join([str(mf) for name, mf in self._mk.items()]) + + def _repr_pretty_(self, p, cycle): + for name, mf in self._mk.items(): + p.text(str(mf)) + + def set(self, **kwargs): + for name, value in kwargs.items(): + self[name] = value + + def clear(self): + self._mk.clear() + + def _count(self): + return len(self._mk) + + +class Action: + def __init__(self, action_name=None): + self._init = False + if action_name is None: + raise UserError("Please provide name for action") + self.action_name = action_name + action_info = context.get_action(action_name) + if action_info is None: + raise UserError("Unknown action '{}'".format(action_name)) + self._action_id = action_info.preamble.id + self._params = OrderedDict() + for param in action_info.params: + self._params[param.name] = param + self._action_info = action_info + self._param_values = OrderedDict() + self._set_docstring() + self._init = True + + def _set_docstring(self): + self.__doc__ = "Action parameters for action '{}':\n\n".format(self.action_name) + for name, info in self._params.items(): + self.__doc__ += str(info) + self.__doc__ += "\n\n" + self.__doc__ += "Set a param value with [''] = ''\n" + self.__doc__ += "You may also use .set(='')\n" + + def _ipython_key_completions_(self): + return self._params.keys() + + def __dir__(self): + return ["action_name", "msg", "set"] + + def _get_param(self, name): + if name not in self._params: + raise UserError( + "'{}' is not a valid action parameter name for action '{}'".format( + name, self.action_name)) + return self._params[name] + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + if name == "action_name": + raise UserError("Cannot change action name") + super().__setattr__(name, value) + + def __setitem__(self, name, value): + param_info = self._get_param(name) + self._param_values[name] = self._parse_param(value, param_info) + _print(self._param_values[name]) + + def __getitem__(self, name): + _ = self._get_param(name) + f = self._param_values.get(name, None) + if f is None: + _print("Unset") + return f + + def _parse_param(self, s, param_info): + if type(s) is not str: + raise UserError("Action parameter value must be a string") + v = bytes_utils.parse_value(s, param_info.bitwidth) + p = p4runtime_pb2.Action.Param() + p.param_id = param_info.id + p.value = bytes_utils.make_canonical_if_option_set(v) + return p + + def msg(self): + msg = p4runtime_pb2.Action() + msg.action_id = self._action_id + msg.params.extend(self._param_values.values()) + return msg + + def _from_msg(self, msg): + assert(self._action_id == msg.action_id) + self._param_values.clear() + for p in msg.params: + p_name = context.get_param_name(self.action_name, p.param_id) + self._param_values[p_name] = p + + def __str__(self): + return str(self.msg()) + + def _repr_pretty_(self, p, cycle): + p.text(str(self.msg())) + + def set(self, **kwargs): + for name, value in kwargs.items(): + self[name] = value + + +class _EntityBase: + def __init__(self, entity_type, p4runtime_cls, modify_only=False): + self._init = False + self._entity_type = entity_type + self._entry = p4runtime_cls() + self._modify_only = modify_only + + def __dir__(self): + d = ["msg", "read"] + if self._modify_only: + d.append("modify") + else: + d.extend(["insert", "modify", "delete"]) + return d + + # to be called before issueing a P4Runtime request + # enforces checks that cannot be performed when setting individual fields + def _validate_msg(self): + return True + + def _update_msg(self): + pass + + def __str__(self): + self._update_msg() + return str(_repr_pretty_p4runtime(self._entry)) + + def _repr_pretty_(self, p, cycle): + self._update_msg() + p.text(_repr_pretty_p4runtime(self._entry)) + + def __getattr__(self, name): + raise AttributeError("'{}' object has no attribute '{}'".format( + self.__class__.__name__, name)) + + def msg(self): + self._update_msg() + return self._entry + + def _write(self, type_): + self._update_msg() + self._validate_msg() + update = p4runtime_pb2.Update() + update.type = type_ + getattr(update.entity, self._entity_type.name).CopyFrom(self._entry) + client.write_update(update) + + def insert(self): + if self._modify_only: + raise NotImplementedError("Insert not supported for {}".format(self._entity_type.name)) + logging.debug("Inserting entry") + self._write(p4runtime_pb2.Update.INSERT) + + def delete(self): + if self._modify_only: + raise NotImplementedError("Delete not supported for {}".format(self._entity_type.name)) + logging.debug("Deleting entry") + self._write(p4runtime_pb2.Update.DELETE) + + def modify(self): + logging.debug("Modifying entry") + self._write(p4runtime_pb2.Update.MODIFY) + + def _from_msg(self, msg): + raise NotImplementedError + + def read(self, function=None): + # Entities should override this method and provide a helpful docstring + self._update_msg() + self._validate_msg() + entity = p4runtime_pb2.Entity() + getattr(entity, self._entity_type.name).CopyFrom(self._entry) + + iterator = client.read_one(entity) + + # Cannot use a (simpler) generator here as we need to decorate __next__ with + # @parse_p4runtime_error. + class _EntryIterator: + def __init__(self, entity, it): + self._entity = entity + self._it = it + self._entities_it = None + + def __iter__(self): + return self + + @parse_p4runtime_error + def __next__(self): + if self._entities_it is None: + rep = next(self._it) + self._entities_it = iter(rep.entities) + try: + entity = next(self._entities_it) + except StopIteration: + self._entities_it = None + return next(self) + + if isinstance(self._entity, _P4EntityBase): + e = type(self._entity)(self._entity.name) # create new instance of same entity + else: + e = type(self._entity)() + msg = getattr(entity, self._entity._entity_type.name) + e._from_msg(msg) + # neither of these should be needed + # e._update_msg() + # e._entry.CopyFrom(msg) + return e + + if function is None: + return _EntryIterator(self, iterator) + else: + for x in _EntryIterator(self, iterator): + function(x) + + +class _P4EntityBase(_EntityBase): + def __init__(self, p4_type, entity_type, p4runtime_cls, name=None, modify_only=False): + super().__init__(entity_type, p4runtime_cls, modify_only) + self._p4_type = p4_type + if name is None: + raise UserError("Please provide name for {}".format(p4_type.pretty_name)) + self.name = name + self._info = P4Objects(p4_type)[name] + self.id = self._info.id + + def __dir__(self): + return super().__dir__() + ["name", "id", "info"] + + def info(self): + """Display P4Info entry for the object""" + return self._info + + +class ActionProfileMember(_P4EntityBase): + def __init__(self, action_profile_name=None): + super().__init__( + P4Type.action_profile, P4RuntimeEntity.action_profile_member, + p4runtime_pb2.ActionProfileMember, action_profile_name) + self.member_id = 0 + self.action = None + self._valid_action_ids = self._get_action_set() + self.__doc__ = """ +An action profile member for '{}' + +Use .info to display the P4Info entry for the action profile. + +Set the member id with .member_id = . + +To set the action specification .action = . +To set the value of action parameters, use .action[''] = . +Type .action? for more details. + + +Typical usage to insert an action profile member: +m = action_profile_member[''](action='', member_id=1) +m.action[''] = ... +... +m.action[''] = ... +# OR m.action.set(p1=..., ..., pM=...) +m.insert + +For information about how to read members, use .read? +""".format(action_profile_name) + self._init = True + + def __dir__(self): + return super().__dir__() + ["member_id", "action"] + + def _get_action_set(self): + t_id = self._info.table_ids[0] + t_name = context.get_name_from_id(t_id) + t = context.get_table(t_name) + return set([action.id for action in t.action_refs]) + + def __call__(self, **kwargs): + for name, value in kwargs.items(): + if name == "action" and type(value) is str: + value = Action(value) + setattr(self, name, value) + return self + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + if name == "name": + raise UserError("Cannot change action profile name") + if name == "member_id": + if type(value) is not int: + raise UserError("member_id must be an integer") + if name == "action" and value is not None: + if not isinstance(value, Action): + raise UserError("action must be an instance of Action") + if not self._is_valid_action_id(value._action_id): + raise UserError("action '{}' is not a valid action for this action profile".format( + value.action_name)) + super().__setattr__(name, value) + + def _is_valid_action_id(self, action_id): + return action_id in self._valid_action_ids + + def _update_msg(self): + self._entry.action_profile_id = self.id + self._entry.member_id = self.member_id + if self.action is not None: + self._entry.action.CopyFrom(self.action.msg()) + + def _from_msg(self, msg): + self.member_id = msg.member_id + if msg.HasField('action'): + action = msg.action + action_name = context.get_name_from_id(action.action_id) + self.action = Action(action_name) + self.action._from_msg(action) + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the appropriate fields unset). + + If function is None, returns an iterator. Iterate over it to get all the + members (as ActionProfileMember instances) returned by the + server. Otherwise, function is applied to all the members returned + by the server. + """ + return super().read(function) + + +class GroupMember: + """ + A member in an ActionProfileGroup. + Construct with GroupMember(, weight=, watch=, + watch_port=). + You can set / get attributes member_id (required), weight (default 1), watch (default 0), + watch_port (default ""). + """ + def __init__(self, member_id=None, weight=1, watch=0, watch_port=b""): + if member_id is None: + raise UserError("member_id is required") + self._msg = p4runtime_pb2.ActionProfileGroup.Member() + self._msg.member_id = member_id + self._msg.weight = weight + if watch: + self._msg.watch = watch + if watch_port: + self._msg.watch_port = watch_port + + def __dir__(self): + return ["member_id", "weight", "watch", "watch_port"] + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + if name == "member_id": + if type(value) is not int: + raise UserError("member_id must be an integer") + self._msg.member_id = value + return + if name == "weight": + if type(value) is not int: + raise UserError("weight must be an integer") + self._msg.weight = value + return + if name == "watch": + if type(value) is not int: + raise UserError("watch must be an integer") + self._msg.watch = value + return + if name == "watch_port": + if type(value) is not bytes: + raise UserError("watch_port must be a byte string") + self._msg.watch_port = value + return + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "member_id": + return self._msg.member_id + if name == "weight": + return self._msg.weight + if name == "watch": + return self._msg.watch + if name == "watch_port": + return self._msg.watch_port + return super().__getattr__(name) + + def __str__(self): + return str(self._msg) + + def _repr_pretty_(self, p, cycle): + p.text(str(p)) + + +class ActionProfileGroup(_P4EntityBase): + def __init__(self, action_profile_name=None): + super().__init__( + P4Type.action_profile, P4RuntimeEntity.action_profile_group, + p4runtime_pb2.ActionProfileGroup, action_profile_name) + self.group_id = 0 + self.max_size = 0 + self.members = [] + self.__doc__ = """ +An action profile group for '{}' + +Use .info to display the P4Info entry for the action profile. + +Set the group id with .group_id = . Default is 0. +Set the max size with .max_size = . Default is 0. + +Add members to the group with .add(, weight=, watch=, +watch_port=). +weight, watch and watch port are optional (default to 1, 0 and "" respectively). + +Typical usage to insert an action profile group: +g = action_profile_group[''](group_id=1) +g.add() +g.add() +# OR g.add().add() + +For information about how to read groups, use .read? +""".format(action_profile_name) + self._init = True + + def __dir__(self): + return super().__dir__() + ["group_id", "max_size", "members", "add", "clear"] + + def __call__(self, **kwargs): + for name, value in kwargs.items(): + setattr(self, name, value) + return self + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + if name == "name": + raise UserError("Cannot change action profile name") + elif name == "group_id": + if type(value) is not int: + raise UserError("group_id must be an integer") + elif name == "members": + if type(value) is not list: + raise UserError("members must be a list of GroupMember objects") + for m in value: + if type(m) is not GroupMember: + raise UserError("members must be a list of GroupMember objects") + super().__setattr__(name, value) + + def add(self, member_id=None, weight=1, watch=0, watch_port=b""): + """Add a member to the members list.""" + self.members.append(GroupMember(member_id, weight, watch, watch_port)) + return self + + def clear(self): + """Empty members list.""" + self.members = [] + + def _update_msg(self): + self._entry.action_profile_id = self.id + self._entry.group_id = self.group_id + self._entry.max_size = self.max_size + del self._entry.members[:] + for member in self.members: + if type(member) is not GroupMember: + raise UserError("members must be a list of GroupMember objects") + m = self._entry.members.add() + m.CopyFrom(member._msg) + + def _from_msg(self, msg): + self.group_id = msg.group_id + self.max_size = msg.max_size + self.members = [] + for member in msg.members: + self.add(member.member_id, member.weight, member.watch, member.watch_port) + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the appropriate fields unset). + + If function is None, returns an iterator. Iterate over it to get all the + members (as ActionProfileGroup instances) returned by the + server. Otherwise, function is applied to all the groups returned by the + server. + """ + return super().read(function) + + +def _get_action_profile(table_name): + table = context.get_table(table_name) + implementation_id = table.implementation_id + if implementation_id == 0: + return None + try: + implementation_name = context.get_name_from_id(implementation_id) + except KeyError: + raise InvalidP4InfoError( + "Invalid implementation_id {} for table '{}'".format( + implementation_id, table_name)) + ap = context.get_obj(P4Type.action_profile, implementation_name) + if ap is None: + raise InvalidP4InfoError("Unknown implementation for table '{}'".format(table_name)) + return ap + + +class OneshotAction: + """ + An action in a oneshot action set. + Construct with OneshotAction(, weight=, watch=, + watch_port=). + You can set / get attributes action (required), weight (default 1), watch (default 0), + watch_port (default ""). + """ + def __init__(self, action=None, weight=1, watch=0, watch_port=b""): + if action is None: + raise UserError("action is required") + self.action = action + self.weight = weight + self.watch = watch + self.watch_port = watch_port + + def __dir__(self): + return ["action", "weight", "watch", "watch_port", "msg"] + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + if name == "action": + if not isinstance(value, Action): + raise UserError("action must be an instance of Action") + elif name == "weight": + if type(value) is not int: + raise UserError("weight must be an integer") + elif name == "watch": + if type(value) is not int: + raise UserError("watch must be an integer") + elif name == "watch_port": + _print(type(value), value) + if type(value) is not bytes: + raise UserError("watch_port must be a byte string") + super().__setattr__(name, value) + + def msg(self): + msg = p4runtime_pb2.ActionProfileAction() + msg.action.CopyFrom(self.action.msg()) + msg.weight = self.weight + if self.watch: + msg.watch = self.watch + if self.watch_port: + msg.watch_port = self.watch_port + return msg + + def __str__(self): + return str(self.msg()) + + def _repr_pretty_(self, p, cycle): + p.text(str(self.msg())) + + +class Oneshot: + def __init__(self, table_name=None): + self._init = False + if table_name is None: + raise UserError("Please provide table name") + self.table_name = table_name + self.actions = [] + self._table_info = P4Objects(P4Type.table)[table_name] + ap = _get_action_profile(table_name) + if not ap: + raise UserError("Cannot create Oneshot instance for a direct table") + if not ap.with_selector: + raise UserError( + "Cannot create Oneshot instance for a table with an action profile " + "without selector") + self.__doc__ = """ +A "oneshot" action set for table '{}'. + +To add an action to the set, use .add(). +You can also access the set of actions with .actions (which is a Python list). +""".format(self.table_name) + self._init = True + + def __dir__(self): + return ["table_name", "actions", "add", "msg"] + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + if name == "table_name": + raise UserError("Cannot change table name") + elif name == "actions": + if type(value) is not list: + raise UserError("actions must be a list of OneshotAction objects") + for m in value: + if type(m) is not OneshotAction: + raise UserError("actions must be a list of OneshotAction objects") + if not self._is_valid_action_id(value.action._action_id): + raise UserError("action '{}' is not a valid action for table {}".format( + value.action.action_name, self.table_name)) + super().__setattr__(name, value) + + def _is_valid_action_id(self, action_id): + for action_ref in self._table_info.action_refs: + if action_id == action_ref.id: + return True + return False + + def add(self, action=None, weight=1, watch=0, watch_port=b""): + """Add an action to the oneshot action set.""" + self.actions.append(OneshotAction(action, weight, watch, watch_port)) + return self + + def msg(self): + msg = p4runtime_pb2.ActionProfileActionSet() + msg.action_profile_actions.extend([action.msg() for action in self.actions]) + return msg + + def _from_msg(self, msg): + for action in msg.action_profile_actions: + action_name = context.get_name_from_id(action.action.action_id) + a = Action(action_name) + a._from_msg(action.action) + self.actions.append(OneshotAction(a, action.weight, action.watch, action.watch_port)) + + def __str__(self): + return str(self.msg()) + + def _repr_pretty_(self, p, cycle): + p.text(str(self.msg())) + + +class _CounterData: + @staticmethod + def attrs_for_counter_type(counter_type): + attrs = [] + if counter_type in {p4info_pb2.CounterSpec.BYTES, p4info_pb2.CounterSpec.BOTH}: + attrs.append("byte_count") + if counter_type in {p4info_pb2.CounterSpec.PACKETS, p4info_pb2.CounterSpec.BOTH}: + attrs.append("packet_count") + return attrs + + def __init__(self, counter_name, counter_type): + self._counter_name = counter_name + self._counter_type = counter_type + self._msg = p4runtime_pb2.CounterData() + self._attrs = _CounterData.attrs_for_counter_type(counter_type) + + def __dir__(self): + return self._attrs + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + if name not in self._attrs: + type_name = p4info_pb2._COUNTERSPEC_UNIT.values_by_number[self._counter_type].name + raise UserError("Counter '{}' is of type '{}', you cannot set '{}'".format( + self._counter_name, type_name, name)) + if type(value) is not int: + raise UserError("{} must be an integer".format(name)) + setattr(self._msg, name, value) + + def __getattr__(self, name): + if name == "byte_count" or name == "packet_count": + return getattr(self._msg, name) + raise AttributeError("'{}' object has no attribute '{}'".format( + self.__class__.__name__, name)) + + def msg(self): + return self._msg + + def _from_msg(self, msg): + self._msg.CopyFrom(msg) + + def __str__(self): + return str(self.msg()) + + def _repr_pretty_(self, p, cycle): + p.text(str(self.msg())) + + @classmethod + def set_count(cls, instance, counter_name, counter_type, name, value): + if instance is None: + d = cls(counter_name, counter_type) + else: + d = instance + setattr(d, name, value) + return d + + @classmethod + def get_count(cls, instance, counter_name, counter_type, name): + if instance is None: + d = cls(counter_name, counter_type) + else: + d = instance + r = getattr(d, name) + return d, r + + +class _MeterConfig: + @staticmethod + def attrs(): + return ["cir", "cburst", "pir", "pburst", "eburst"] + + def __init__(self, meter_name, meter_type): + self._meter_name = meter_name + self._meter_type = meter_type + self._msg = p4runtime_pb2.MeterConfig() + self._attrs = _MeterConfig.attrs() + + def __dir__(self): + return self._attrs + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + if name in self._attrs: + if type(value) is not int: + raise UserError("{} must be an integer".format(name)) + setattr(self._msg, name, value) + + def __getattr__(self, name): + if name in self._attrs: + return getattr(self._msg, name) + raise AttributeError("'{}' object has no attribute '{}'".format( + self.__class__.__name__, name)) + + def msg(self): + return self._msg + + def _from_msg(self, msg): + self._msg.CopyFrom(msg) + + def __str__(self): + return str(self.msg()) + + def _repr_pretty_(self, p, cycle): + p.text(str(self.msg())) + + @classmethod + def set_param(cls, instance, meter_name, meter_type, name, value): + if instance is None: + d = cls(meter_name, meter_type) + else: + d = instance + setattr(d, name, value) + return d + + @classmethod + def get_param(cls, instance, meter_name, meter_type, name): + if instance is None: + d = cls(meter_name, meter_type) + else: + d = instance + r = getattr(d, name) + return d, r + + +class _IdleTimeout: + @staticmethod + def attrs(): + return ["elapsed_ns"] + + def __init__(self): + self._msg = p4runtime_pb2.TableEntry.IdleTimeout() + self._attrs = _IdleTimeout.attrs() + + def __dir__(self): + return self._attrs + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + if name in self._attrs: + if type(value) is not int: + raise UserError("{} must be an integer".format(name)) + setattr(self._msg, name, value) + + def __getattr__(self, name): + if name in self._attrs: + return getattr(self._msg, name) + raise AttributeError("'{}' object has no attribute '{}'".format( + self.__class__.__name__, name)) + + def msg(self): + return self._msg + + def _from_msg(self, msg): + self._msg.CopyFrom(msg) + + def __str__(self): + return str(self.msg()) + + def _repr_pretty_(self, p, cycle): + p.text(str(self.msg())) + + @classmethod + def set_param(cls, instance, name, value): + if instance is None: + d = cls() + else: + d = instance + setattr(d, name, value) + return d + + @classmethod + def get_param(cls, instance, name): + if instance is None: + d = cls() + else: + d = instance + r = getattr(d, name) + return d, r + + +class TableEntry(_P4EntityBase): + @enum.unique + class _ActionSpecType(enum.Enum): + NONE = 0 + DIRECT_ACTION = 1 + MEMBER_ID = 2 + GROUP_ID = 3 + ONESHOT = 4 + + @classmethod + def _action_spec_name_to_type(cls, name): + return { + "action": cls._ActionSpecType.DIRECT_ACTION, + "member_id": cls._ActionSpecType.MEMBER_ID, + "group_id": cls._ActionSpecType.GROUP_ID, + "oneshot": cls._ActionSpecType.ONESHOT, + }.get(name, None) + + def __init__(self, table_name=None): + super().__init__( + P4Type.table, P4RuntimeEntity.table_entry, + p4runtime_pb2.TableEntry, table_name) + self.match = MatchKey(table_name, self._info.match_fields) + self._action_spec_type = self._ActionSpecType.NONE + self._action_spec = None + self.priority = 0 + self.is_default = False + ap = _get_action_profile(table_name) + if ap is None: + self._support_members = False + self._support_groups = False + else: + self._support_members = True + self._support_groups = ap.with_selector + self._direct_counter = None + self._direct_meter = None + for res_id in self._info.direct_resource_ids: + prefix = (res_id & 0xff000000) >> 24 + if prefix == p4info_pb2.P4Ids.DIRECT_COUNTER: + self._direct_counter = context.get_obj_by_id(res_id) + elif prefix == p4info_pb2.P4Ids.DIRECT_METER: + self._direct_meter = context.get_obj_by_id(res_id) + self._counter_data = None + self._meter_config = None + self.idle_timeout_ns = 0 + self._time_since_last_hit = None + self._idle_timeout_behavior = None + table = context.get_table(table_name) + if table.idle_timeout_behavior > 0: + self._idle_timeout_behavior = table.idle_timeout_behavior + self.metadata = b"" + self.__doc__ = """ +An entry for table '{}' + +Use .info to display the P4Info entry for this table. + +To set the match key, use .match[''] = . +Type .match? for more details. +""".format(table_name) + if self._direct_counter is not None: + self.__doc__ += """ +To set the counter spec, use .counter_data.byte_count and/or .counter_data.packet_count. +To unset it, use .counter_data = None or .clear_counter_data(). +""" + if self._direct_meter is not None: + self.__doc__ += """ +To access the meter config, use .meter_config.. +To unset it, use .meter_config = None or .clear_meter_config(). +""" + if ap is None: + self.__doc__ += """ +To set the action specification (this is a direct table): +.action = . +To set the value of action parameters, use .action[''] = . +Type .action? for more details. +""" + if self._support_members: + self.__doc__ += """ +Access the member_id with .member_id. +""" + if self._support_groups: + self.__doc__ += """ +Or access the group_id with .group_id. +""" + if self._idle_timeout_behavior is not None: + self.__doc__ += """ +To access the time this entry was last hit, use .time_since_last_hit.elapsed_ns. +To unset it, use .time_since_last_hit = None or .clear_time_since_last_hit(). +""" + self.__doc__ += """ +To set the priority, use .priority = . + +To mark the entry as default, use .is_default = True. + +To add an idle timeout to the entry, use .idle_timeout_ns = . + +To add metadata to the entry, use .metadata = . +""" + if ap is None: + self.__doc__ += """ +Typical usage to insert a table entry: +t = table_entry[''](action='') +t.match[''] = ... +... +t.match[''] = ... +# OR t.match.set(f1=..., ..., fN=...) +t.action[''] = ... +... +t.action[''] = ... +# OR t.action.set(p1=..., ..., pM=...) +t.insert + +Typical usage to set the default entry: +t = table_entry[''](is_default=True) +t.action[''] = ... +... +t.action[''] = ... +# OR t.action.set(p1=..., ..., pM=...) +t.modify +""" + else: + self.__doc__ += """ +Typical usage to insert a table entry: +t = table_entry[''] +t.match[''] = ... +... +t.match[''] = ... +# OR t.match.set(f1=..., ..., fN=...) +t.member_id = +""" + self.__doc__ += """ +For information about how to read table entries, use .read? +""" + + self._init = True + + def __dir__(self): + d = super().__dir__() + [ + "match", "priority", "is_default", "idle_timeout_ns", "metadata", + "clear_action", "clear_match", "clear_counter_data", "clear_meter_config", + "clear_time_since_last_hit"] + if self._support_groups: + d.extend(["member_id", "group_id", "oneshot"]) + elif self._support_members: + d.append("member_id") + else: + d.append("action") + if self._direct_counter is not None: + d.append("counter_data") + if self._direct_meter is not None: + d.append("meter_config") + if self._idle_timeout_behavior is not None: + d.append("time_since_last_hit") + return d + + def __call__(self, **kwargs): + for name, value in kwargs.items(): + if name == "action" and type(value) is str: + value = Action(value) + setattr(self, name, value) + return self + + def _action_spec_set_member(self, member_id): + if type(member_id) is None: + if self._action_spec_type == self._ActionSpecType.MEMBER_ID: + super().__setattr__("_action_spec_type", self._ActionSpecType.NONE) + super().__setattr__("_action_spec", None) + return + if type(member_id) is not int: + raise UserError("member_id must be an integer") + if not self._support_members: + raise UserError( + "Table does not have an action profile and therefore does not support members") + super().__setattr__("_action_spec_type", self._ActionSpecType.MEMBER_ID) + super().__setattr__("_action_spec", member_id) + + def _action_spec_set_group(self, group_id): + if type(group_id) is None: + if self._action_spec_type == self._ActionSpecType.GROUP_ID: + super().__setattr__("_action_spec_type", self._ActionSpecType.NONE) + super().__setattr__("_action_spec", None) + return + if type(group_id) is not int: + raise UserError("group_id must be an integer") + if not self._support_groups: + raise UserError( + "Table does not have an action profile with selector " + "and therefore does not support groups") + super().__setattr__("_action_spec_type", self._ActionSpecType.GROUP_ID) + super().__setattr__("_action_spec", group_id) + + def _action_spec_set_action(self, action): + if type(action) is None: + if self._action_spec_type == self._ActionSpecType.DIRECT_ACTION: + super().__setattr__("_action_spec_type", self._ActionSpecType.NONE) + super().__setattr__("_action_spec", None) + return + if not isinstance(action, Action): + raise UserError("action must be an instance of Action") + if self._info.implementation_id != 0: + raise UserError( + "Table has an implementation and therefore does not support direct actions " + "(P4Runtime 1.0 doesn't support writing the default action for indirect tables") + if not self._is_valid_action_id(action._action_id): + raise UserError("action '{}' is not a valid action for this table".format( + action.action_name)) + super().__setattr__("_action_spec_type", self._ActionSpecType.DIRECT_ACTION) + super().__setattr__("_action_spec", action) + + def _action_spec_set_oneshot(self, oneshot): + if type(oneshot) is None: + if self._action_spec_type == self._ActionSpecType.ONESHOT: + super().__setattr__("_action_spec_type", self._ActionSpecType.NONE) + super().__setattr__("_action_spec", None) + return + if not isinstance(oneshot, Oneshot): + raise UserError("oneshot must be an instance of Oneshot") + if not self._support_groups: + raise UserError( + "Table does not have an action profile with selector " + "and therefore does not support oneshot programming") + if self.name != oneshot.table_name: + raise UserError("This Oneshot instance was not created for this table") + super().__setattr__("_action_spec_type", self._ActionSpecType.ONESHOT) + super().__setattr__("_action_spec", oneshot) + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + elif name == "name": + raise UserError("Cannot change table name") + elif name == "priority": + if type(value) is not int: + raise UserError("priority must be an integer") + elif name == "match" and not isinstance(value, MatchKey): + raise UserError("match must be an instance of MatchKey") + elif name == "is_default": + if type(value) is not bool: + raise UserError("is_default must be a boolean") + # TODO(antonin): should we do a better job and handle other cases (a field is set while + # is_default is set to True)? + if value is True and self.match._count() > 0: + _print("Clearing match key because entry is now default") + self.match.clear() + elif name == "member_id": + self._action_spec_set_member(value) + return + elif name == "group_id": + self._action_spec_set_group(value) + return + elif name == "oneshot": + self._action_spec_set_oneshot(value) + elif name == "action" and value is not None: + self._action_spec_set_action(value) + return + elif name == "counter_data": + if self._direct_counter is None: + raise UserError("Table has no direct counter") + if value is None: + self._counter_data = None + return + raise UserError("Cannot set 'counter_data' directly") + elif name == "meter_config": + if self._direct_meter is None: + raise UserError("Table has no direct meter") + if value is None: + self._meter_config = None + return + raise UserError("Cannot set 'meter_config' directly") + elif name == "idle_timeout_ns": + if type(value) is not int: + raise UserError("idle_timeout_ns must be an integer") + elif name == "time_since_last_hit": + if self._idle_timeout_behavior is None: + raise UserError("Table has no idle timeouts") + if value is None: + self._time_since_last_hit = None + return + raise UserError("Cannot set 'time_since_last_hit' directly") + elif name == "metadata": + if type(value) is not bytes: + raise UserError("metadata must be a byte string") + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "counter_data": + if self._direct_counter is None: + raise UserError("Table has no direct counter") + if self._counter_data is None: + self._counter_data = _CounterData( + self._direct_counter.preamble.name, self._direct_counter.spec.unit) + return self._counter_data + if name == "meter_config": + if self._direct_meter is None: + raise UserError("Table has no direct meter") + if self._meter_config is None: + self._meter_config = _MeterConfig( + self._direct_meter.preamble.name, self._direct_meter.spec.unit) + return self._meter_config + if name == "time_since_last_hit": + if self._idle_timeout_behavior is None: + raise UserError("Table has no idle timeouts") + if self._time_since_last_hit is None: + self._time_since_last_hit = _IdleTimeout() + return self._time_since_last_hit + + t = self._action_spec_name_to_type(name) + if t is None: + return super().__getattr__(name) + if self._action_spec_type == t: + return self._action_spec + if t == self._ActionSpecType.ONESHOT: + self._action_spec_type = self._ActionSpecType.ONESHOT + self._action_spec = Oneshot(self.name) + return self._action_spec + return None + + def _is_valid_action_id(self, action_id): + for action_ref in self._info.action_refs: + if action_id == action_ref.id: + return True + return False + + def _from_msg(self, msg): + self.priority = msg.priority + self.is_default = msg.is_default_action + self.idle_timeout_ns = msg.idle_timeout_ns + self.metadata = msg.metadata + for mf in msg.match: + mf_name = context.get_mf_name(self.name, mf.field_id) + self.match._mk[mf_name] = mf + if msg.action.HasField('action'): + action = msg.action.action + action_name = context.get_name_from_id(action.action_id) + self.action = Action(action_name) + self.action._from_msg(action) + elif msg.action.HasField('action_profile_member_id'): + self.member_id = msg.action.action_profile_member_id + elif msg.action.HasField('action_profile_group_id'): + self.group_id = msg.action.action_profile_group_id + elif msg.action.HasField('action_profile_action_set'): + self.oneshot = Oneshot(self.name) + self.oneshot._from_msg(msg.action.action_profile_action_set) + if msg.HasField('counter_data'): + self._counter_data = _CounterData( + self._direct_counter.preamble.name, self._direct_counter.spec.unit) + self._counter_data._from_msg(msg.counter_data) + else: + self._counter_data = None + if msg.HasField('meter_config'): + self._meter_config = _MeterConfig( + self._direct_meter.preamble.name, self._direct_meter.spec.unit) + self._meter_config._from_msg(msg.meter_config) + else: + self._meter_config = None + if msg.HasField("time_since_last_hit"): + self._time_since_last_hit = _IdleTimeout() + self._time_since_last_hit._from_msg(msg.time_since_last_hit) + else: + self._time_since_last_hit = None + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the appropriate fields unset). + If function is None, returns an iterator. Iterate over it to get all the + table entries (TableEntry instances) returned by the server. Otherwise, + function is applied to all the table entries returned by the server. + + For example: + for te in .read(): + print(te) + The above code is equivalent to the following one-liner: + .read(lambda te: print(te)) + + To delete all the entries from a table, simply use: + table_entry[''].read(function=lambda x: x.delete()) + """ + return super().read(function) + + def _update_msg(self): + entry = p4runtime_pb2.TableEntry() + entry.table_id = self.id + entry.match.extend(self.match._mk.values()) + entry.priority = self.priority + entry.is_default_action = self.is_default + entry.idle_timeout_ns = self.idle_timeout_ns + entry.metadata = self.metadata + if self._action_spec_type == self._ActionSpecType.DIRECT_ACTION: + entry.action.action.CopyFrom(self._action_spec.msg()) + elif self._action_spec_type == self._ActionSpecType.MEMBER_ID: + entry.action.action_profile_member_id = self._action_spec + elif self._action_spec_type == self._ActionSpecType.GROUP_ID: + entry.action.action_profile_group_id = self._action_spec + elif self._action_spec_type == self._ActionSpecType.ONESHOT: + entry.action.action_profile_action_set.CopyFrom(self._action_spec.msg()) + if self._counter_data is None: + entry.ClearField('counter_data') + else: + entry.counter_data.CopyFrom(self._counter_data.msg()) + if self._meter_config is None: + entry.ClearField('meter_config') + else: + entry.meter_config.CopyFrom(self._meter_config.msg()) + if self._time_since_last_hit is None: + entry.ClearField("time_since_last_hit") + else: + entry.time_since_last_hit.CopyFrom(self._time_since_last_hit.msg()) + self._entry = entry + + def _validate_msg(self): + if self.is_default and self.match._count() > 0: + raise UserError( + "Match key must be empty for default entry, use .is_default = False " + "or .match.clear (whichever one is appropriate)") + + def clear_action(self): + """Clears the action spec for the TableEntry.""" + super().__setattr__("_action_spec_type", self._ActionSpecType.NONE) + super().__setattr__("_action_spec", None) + + def clear_match(self): + """Clears the match spec for the TableEntry.""" + self.match.clear() + + def clear_counter_data(self): + """Clear all counter data, same as .counter_data = None""" + self._counter_data = None + + def clear_meter_config(self): + """Clear the meter config, same as .meter_config = None""" + self._meter_config = None + + def clear_time_since_last_hit(self): + """Clear the idle timeout, same as .time_since_last_hit = None""" + self._time_since_last_hit = None + + +class _CounterEntryBase(_P4EntityBase): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._counter_type = self._info.spec.unit + self._data = None + + def __dir__(self): + return super().__dir__() + _CounterData.attrs_for_counter_type(self._counter_type) + [ + "clear_data"] + + def __call__(self, **kwargs): + for name, value in kwargs.items(): + setattr(self, name, value) + return self + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + if name == "name": + raise UserError("Cannot change counter name") + if name == "byte_count" or name == "packet_count": + self._data = _CounterData.set_count( + self._data, self.name, self._counter_type, name, value) + return + if name == "data": + if value is None: + self._data = None + return + raise UserError("Cannot set 'data' directly") + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "byte_count" or name == "packet_count": + self._data, r = _CounterData.get_count( + self._data, self.name, self._counter_type, name) + return r + if name == "data": + if self._data is None: + self._data = _CounterData(self.name, self._counter_type) + return self._data + return super().__getattr__(name) + + def _from_msg(self, msg): + self._entry.CopyFrom(msg) + if msg.HasField('data'): + self._data = _CounterData(self.name, self._counter_type) + self._data._from_msg(msg.data) + else: + self._data = None + + def _update_msg(self): + if self._data is None: + self._entry.ClearField('data') + else: + self._entry.data.CopyFrom(self._data.msg()) + + def clear_data(self): + """Clear all counter data, same as .data = None""" + self._data = None + + +class CounterEntry(_CounterEntryBase): + def __init__(self, counter_name=None): + super().__init__( + P4Type.counter, P4RuntimeEntity.counter_entry, + p4runtime_pb2.CounterEntry, counter_name, + modify_only=True) + self._entry.counter_id = self.id + self.__doc__ = """ +An entry for counter '{}' + +Use .info to display the P4Info entry for this counter. + +Set the index with .index = . +To reset it (e.g. for wildcard read), set it to None. + +Access byte count and packet count with .byte_count / .packet_count. + +To read from the counter, use .read +To write to the counter, use .modify +""".format(counter_name) + self._init = True + + def __dir__(self): + return super().__dir__() + ["index", "data"] + + def __setattr__(self, name, value): + if name == "index": + if value is None: + self._entry.ClearField('index') + return + if type(value) is not int: + raise UserError("index must be an integer") + self._entry.index.index = value + return + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "index": + return self._entry.index.index + return super().__getattr__(name) + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the index unset). + If function is None, returns an iterator. Iterate over it to get all the + counter entries (CounterEntry instances) returned by the + server. Otherwise, function is applied to all the counter entries + returned by the server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + +class DirectCounterEntry(_CounterEntryBase): + def __init__(self, direct_counter_name=None): + super().__init__( + P4Type.direct_counter, P4RuntimeEntity.direct_counter_entry, + p4runtime_pb2.DirectCounterEntry, direct_counter_name, + modify_only=True) + self._direct_table_id = self._info.direct_table_id + try: + self._direct_table_name = context.get_name_from_id(self._direct_table_id) + except KeyError: + raise InvalidP4InfoError("direct_table_id {} is not a valid table id".format( + self._direct_table_id)) + self._table_entry = TableEntry(self._direct_table_name) + self.__doc__ = """ +An entry for direct counter '{}' + +Use .info to display the P4Info entry for this direct counter. + +Set the table_entry with .table_entry = . +The TableEntry instance must be for the table to which the direct counter is attached. +To reset it (e.g. for wildcard read), set it to None. It is the same as: +.table_entry = TableEntry({}) + +Access byte count and packet count with .byte_count / .packet_count. + +To read from the counter, use .read +To write to the counter, use .modify +""".format(direct_counter_name, self._direct_table_name) + self._init = True + + def __dir__(self): + return super().__dir__() + ["table_entry"] + + def __setattr__(self, name, value): + if name == "index": + raise UserError("Direct counters are not index-based") + if name == "table_entry": + if value is None: + self._table_entry = TableEntry(self._direct_table_name) + return + if not isinstance(value, TableEntry): + raise UserError("table_entry must be an instance of TableEntry") + if value.name != self._direct_table_name: + raise UserError("This DirectCounterEntry is for table '{}'".format( + self._direct_table_name)) + self._table_entry = value + return + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "index": + raise UserError("Direct counters are not index-based") + if name == "table_entry": + return self._table_entry + return super().__getattr__(name) + + def _update_msg(self): + super()._update_msg() + if self._table_entry is None: + self._entry.ClearField('table_entry') + else: + self._entry.table_entry.CopyFrom(self._table_entry.msg()) + + def _from_msg(self, msg): + super()._from_msg(msg) + if msg.HasField('table_entry'): + self._table_entry._from_msg(msg.table_entry) + else: + self._table_entry = None + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the index unset). + If function is None, returns an iterator. Iterate over it to get all the + direct counter entries (DirectCounterEntry instances) returned by the + server. Otherwise, function is applied to all the direct counter entries + returned by the server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + +class _MeterEntryBase(_P4EntityBase): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._meter_type = self._info.spec.unit + self._config = None + + def __dir__(self): + return super().__dir__() + _MeterConfig.attrs() + ["clear_config"] + + def __call__(self, **kwargs): + for name, value in kwargs.items(): + setattr(self, name, value) + return self + + def __setattr__(self, name, value): + if name[0] == "_" or not self._init: + super().__setattr__(name, value) + return + if name == "name": + raise UserError("Cannot change meter name") + if name in _MeterConfig.attrs(): + self._config = _MeterConfig.set_param( + self._config, self.name, self._meter_type, name, value) + return + if name == "config": + if value is None: + self._config = None + return + raise UserError("Cannot set 'config' directly") + super().__setattr__(name, value) + + def __getattr__(self, name): + if name in _MeterConfig.attrs(): + self._config, r = _MeterConfig.get_param( + self._config, self.name, self._meter_type, name) + return r + if name == "config": + if self._config is None: + self._config = _MeterConfig(self.name, self._meter_type) + return self._config + return super().__getattr__(name) + + def _from_msg(self, msg): + self._entry.CopyFrom(msg) + if msg.HasField('config'): + self._config = _MeterConfig(self.name, self._meter_type) + self._config._from_msg(msg.config) + else: + self._config = None + + def _update_msg(self): + if self._config is None: + self._entry.ClearField('config') + else: + self._entry.config.CopyFrom(self._config.msg()) + + def clear_config(self): + """Clear the meter config, same as .config = None""" + self._config = None + + +class MeterEntry(_MeterEntryBase): + def __init__(self, meter_name=None): + super().__init__( + P4Type.meter, P4RuntimeEntity.meter_entry, + p4runtime_pb2.MeterEntry, meter_name, + modify_only=True) + self._entry.meter_id = self.id + self.__doc__ = """ +An entry for meter '{}' + +Use .info to display the P4Info entry for this meter. + +Set the index with .index = . +To reset it (e.g. for wildcard read), set it to None. + +Access meter rates and burst sizes with: +.cir +.cburst +.pir +.pburst +.eburst + +To read from the meter, use .read +To write to the meter, use .modify +""".format(meter_name) + self._init = True + + def __dir__(self): + return super().__dir__() + ["index", "config"] + + def __setattr__(self, name, value): + if name == "index": + if value is None: + self._entry.ClearField('index') + return + if type(value) is not int: + raise UserError("index must be an integer") + self._entry.index.index = value + return + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "index": + return self._entry.index.index + return super().__getattr__(name) + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the index unset). + If function is None, returns an iterator. Iterate over it to get all the + meter entries (MeterEntry instances) returned by the + server. Otherwise, function is applied to all the meter entries + returned by the server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + +class DirectMeterEntry(_MeterEntryBase): + def __init__(self, direct_meter_name=None): + super().__init__( + P4Type.direct_meter, P4RuntimeEntity.direct_meter_entry, + p4runtime_pb2.DirectMeterEntry, direct_meter_name, + modify_only=True) + self._direct_table_id = self._info.direct_table_id + try: + self._direct_table_name = context.get_name_from_id(self._direct_table_id) + except KeyError: + raise InvalidP4InfoError("direct_table_id {} is not a valid table id".format( + self._direct_table_id)) + self._table_entry = TableEntry(self._direct_table_name) + self.__doc__ = """ +An entry for direct meter '{}' + +Use .info to display the P4Info entry for this direct meter. + +Set the table_entry with .table_entry = . +The TableEntry instance must be for the table to which the direct meter is attached. +To reset it (e.g. for wildcard read), set it to None. It is the same as: +.table_entry = TableEntry({}) + +Access meter rates and burst sizes with: +.cir +.cburst +.pir +.pburst +.eburst + +To read from the meter, use .read +To write to the meter, use .modify +""".format(direct_meter_name, self._direct_table_name) + self._init = True + + def __dir__(self): + return super().__dir__() + ["table_entry"] + + def __setattr__(self, name, value): + if name == "index": + raise UserError("Direct meters are not index-based") + if name == "table_entry": + if value is None: + self._table_entry = TableEntry(self._direct_table_name) + return + if not isinstance(value, TableEntry): + raise UserError("table_entry must be an instance of TableEntry") + if value.name != self._direct_table_name: + raise UserError("This DirectMeterEntry is for table '{}'".format( + self._direct_table_name)) + self._table_entry = value + return + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "index": + raise UserError("Direct meters are not index-based") + if name == "table_entry": + return self._table_entry + return super().__getattr__(name) + + def _update_msg(self): + super()._update_msg() + if self._table_entry is None: + self._entry.ClearField('table_entry') + else: + self._entry.table_entry.CopyFrom(self._table_entry.msg()) + + def _from_msg(self, msg): + super()._from_msg(msg) + if msg.HasField('table_entry'): + self._table_entry._from_msg(msg.table_entry) + else: + self._table_entry = None + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the index unset). + If function is None, returns an iterator. Iterate over it to get all the + direct meter entries (DirectMeterEntry instances) returned by the + server. Otherwise, function is applied to all the direct meter entries + returned by the server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + +class P4RuntimeEntityBuilder: + def __init__(self, obj_type, entity_type, entity_cls): + self._obj_type = obj_type + self._names = sorted([name for name, _ in context.get_objs(obj_type)]) + self._entity_type = entity_type + self._entity_cls = entity_cls + self.__doc__ = """Construct a {} entity +Usage: = {}["<{} name>"] +This is equivalent to = {}(<{} name>) +Use command '{}' to see list of {} + """.format(entity_cls.__name__, entity_type.name, obj_type.pretty_name, + entity_cls.__name__, obj_type.pretty_name, + obj_type.p4info_name, obj_type.pretty_names) + + def _ipython_key_completions_(self): + return self._names + + def __getitem__(self, name): + obj = context.get_obj(self._obj_type, name) + if obj is None: + raise UserError("{} '{}' does not exist".format( + self._obj_type.pretty_name, name)) + return self._entity_cls(name) + + def __setitem__(self, name, value): + raise UserError("Operation not allowed") + + def _repr_pretty_(self, p, cycle): + p.text(self.__doc__) + + def __str__(self): + return "Construct a {} entity".format(self.entity_cls.__name__) + + +class Replica: + """ + A port "replica" (port number + instance id) used for multicast and clone session programming. + Construct with Replica(egress_port, instance=). + You can set / get attributes egress_port (required), instance (default 0). + """ + def __init__(self, egress_port=None, instance=0): + if egress_port is None: + raise UserError("egress_port is required") + self._msg = p4runtime_pb2.Replica() + self._msg.egress_port = egress_port + self._msg.instance = instance + + def __dir__(self): + return ["port", "egress_port", "instance"] + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + if name == "egress_port" or name == "port": + if type(value) is not int: + raise UserError("egress_port must be an integer") + self._msg.egress_port = value + return + if name == "instance": + if type(value) is not int: + raise UserError("instance must be an integer") + self._msg.instance = value + return + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "egress_port" or name == "port": + return self._msg.egress_port + if name == "instance": + return self._msg.instance + return super().__getattr__(name) + + def __str__(self): + return str(self._msg) + + def _repr_pretty_(self, p, cycle): + p.text(str(p)) + + +class MulticastGroupEntry(_EntityBase): + def __init__(self, group_id=0): + super().__init__( + P4RuntimeEntity.packet_replication_engine_entry, + p4runtime_pb2.PacketReplicationEngineEntry) + self.group_id = group_id + self.replicas = [] + self.__doc__ = """ +Multicast group entry. +Create an instance with multicast_group_entry(). +Add replicas with .add(, ).add(, )... +""" + self._init = True + + def __dir__(self): + return ["group_id", "replicas"] + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + elif name == "group_id": + if type(value) is not int: + raise UserError("group_id must be an integer") + elif name == "replicas": + if type(value) is not list: + raise UserError("replicas must be a list of Replica objects") + for r in value: + if type(r) is not Replica: + raise UserError("replicas must be a list of Replica objects") + super().__setattr__(name, value) + + def _from_msg(self, msg): + self.group_id = msg.multicast_group_entry.multicast_group_id + for r in msg.multicast_group_entry.replicas: + self.add(r.egress_port, r.instance) + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the group_id as 0). + If function is None, returns an iterator. Iterate over it to get all the + multicast group entries (MulticastGroupEntry instances) returned by the + server. Otherwise, function is applied to all the multicast group entries + returned by the server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + def _update_msg(self): + entry = p4runtime_pb2.PacketReplicationEngineEntry() + mcg_entry = entry.multicast_group_entry + mcg_entry.multicast_group_id = self.group_id + for replica in self.replicas: + r = mcg_entry.replicas.add() + r.CopyFrom(replica._msg) + self._entry = entry + + def add(self, egress_port=None, instance=0): + """Add a replica to the multicast group.""" + self.replicas.append(Replica(egress_port, instance)) + return self + + def _write(self, type_): + if self.group_id == 0: + raise UserError("0 is not a valid group_id for MulticastGroupEntry") + super()._write(type_) + + +class CloneSessionEntry(_EntityBase): + def __init__(self, session_id=0): + super().__init__( + P4RuntimeEntity.packet_replication_engine_entry, + p4runtime_pb2.PacketReplicationEngineEntry) + self.session_id = session_id + self.replicas = [] + self.cos = 0 + self.packet_length_bytes = 0 + self.__doc__ = """ +Clone session entry. +Create an instance with clone_session_entry(). +Add replicas with .add(, ).add(, )... +Access class of service with .cos. +Access truncation length with .packet_length_bytes. +""" + self._init = True + + def __dir__(self): + return ["session_id", "replicas", "cos", "packet_length_bytes"] + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + elif name == "session_id": + if type(value) is not int: + raise UserError("session_id must be an integer") + elif name == "replicas": + if type(value) is not list: + raise UserError("replicas must be a list of Replica objects") + for r in value: + if type(r) is not Replica: + raise UserError("replicas must be a list of Replica objects") + elif name == "cos": + if type(value) is not int: + raise UserError("cos must be an integer") + elif name == "packet_length_bytes": + if type(value) is not int: + raise UserError("packet_length_bytes must be an integer") + super().__setattr__(name, value) + + def _from_msg(self, msg): + self.session_id = msg.clone_session_entry.session_id + for r in msg.clone_session_entry.replicas: + self.add(r.egress_port, r.instance) + self.cos = msg.clone_session_entry.class_of_service + self.packet_length_bytes = msg.clone_session_entry.packet_length_bytes + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the session_id as 0). + If function is None, returns an iterator. Iterate over it to get all the + clone session entries (CloneSessionEntry instances) returned by the + server. Otherwise, function is applied to all the clone session entries + returned by the server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + def _update_msg(self): + entry = p4runtime_pb2.PacketReplicationEngineEntry() + cs_entry = entry.clone_session_entry + cs_entry.session_id = self.session_id + for replica in self.replicas: + r = cs_entry.replicas.add() + r.CopyFrom(replica._msg) + cs_entry.class_of_service = self.cos + cs_entry.packet_length_bytes = self.packet_length_bytes + self._entry = entry + + def add(self, egress_port=None, instance=0): + """Add a replica to the clone session.""" + self.replicas.append(Replica(egress_port, instance)) + return self + + def _write(self, type_): + if self.session_id == 0: + raise UserError("0 is not a valid group_id for CloneSessionEntry") + super()._write(type_) + + +class DigestEntry(_P4EntityBase): + def __init__(self, digest_name=None): + super().__init__( + P4Type.digest, P4RuntimeEntity.digest_entry, + p4runtime_pb2.DigestEntry, digest_name) + self.max_timeout_ns = 0 + self.max_list_size = 0 + self.ack_timeout_ns = 0 + self.__doc__ = """ +Digest entry for digest '{}'. +Create an instance with digest_entry(). + +Use .info to display the P4Info entry for this digest. +""".format(digest_name) + self._init = True + + def __dir__(self): + return super().__dir__() + [ + "digest_id", "max_timeout_ns", "max_list_size", "ack_timeout_ns"] + + def __setattr__(self, name, value): + if name[0] == "_": + super().__setattr__(name, value) + return + elif name == "digest_id": + if type(value) is not int: + raise UserError("digest_id must be an integer") + elif name == "max_timeout_ns": + if type(value) is not int: + raise UserError("max_timeout_ns must be an integer") + elif name == "max_list_size": + if type(value) is not int: + raise UserError("max_list_size must be an integer") + elif name == "ack_timeout_ns": + if type(value) is not int: + raise UserError("ack_timeout_ns must be an integer") + super().__setattr__(name, value) + + def __getattr__(self, name): + if name == "digest_id": + return self.id + if name == "max_timeout_ns": + return self.max_timeout_ns + if name == "max_list_size": + return self.max_list_size + if name == "ack_timeout_ns": + return self.ack_timeout_ns + return super().__getattr__(name) + + def _from_msg(self, msg): + self.id = msg.digest_id + self.max_timeout_ns = msg.config.max_timeout_ns + self.max_list_size = msg.config.max_list_size + self.ack_timeout_ns = msg.config.ack_timeout_ns + + def __str__(self): + self._update_msg() + return str(_repr_pretty_p4runtime(self._entry)) + + def _repr_pretty_(self, p, cycle): + self._update_msg() + p.text(_repr_pretty_p4runtime(self._entry)) + + def _update_msg(self): + digest_entry = p4runtime_pb2.DigestEntry() + digest_entry.digest_id = self.id + digest_entry.config.max_timeout_ns = self.max_timeout_ns + digest_entry.config.max_list_size = self.max_list_size + digest_entry.config.ack_timeout_ns = self.ack_timeout_ns + self._entry = digest_entry + + def read(self, function=None): + """Generate a P4Runtime Read RPC. Supports wildcard reads (just leave + the digest_id as 0). + If function is None, returns an iterator. Iterate over it to get all the + multicast digest entries (DigestEntry instances) returned by the server. + Otherwise, function is applied to all the digest entries returned by the + server. + + For example: + for c in .read(): + print(c) + The above code is equivalent to the following one-liner: + .read(lambda c: print(c)) + """ + return super().read(function) + + def _write(self, type_): + if self.id == 0: + raise UserError("0 is not a valid digest_id for DigestEntry") + super()._write(type_) + + +class PacketMetadata: + def __init__(self, metadata_info_list): + self._md_info = OrderedDict() + self._md = OrderedDict() + # Initialize every metadata to zero value + for md in metadata_info_list: + self._md_info[md.name] = md + self._md[md.name] = self._parse_md('0', md) + self._set_docstring() + + def _set_docstring(self): + self.__doc__ = "Available metadata:\n\n" + for name, info in self._md_info.items(): + self.__doc__ += str(info) + self.__doc__ += """ +Set a metadata value with .[''] = '...' + +You may also use .set(='') +""" + + def __dir__(self): + return ["clear"] + + def _get_md_info(self, name): + if name in self._md_info: + return self._md_info[name] + raise UserError("'{}' is not a valid metadata name".format(name)) + + def __getitem__(self, name): + _ = self._get_md_info(name) + _print(self._md.get(name, "Unset")) + + def _parse_md(self, value, md_info): + if type(value) is not str: + raise UserError("Metadata value must be a string") + md = p4runtime_pb2.PacketMetadata() + md.metadata_id = md_info.id + md.value = bytes_utils.parse_value(value.strip(), md_info.bitwidth) + return md + + def __setitem__(self, name, value): + md_info = self._get_md_info(name) + self._md[name] = self._parse_md(value, md_info) + + def _ipython_key_completions_(self): + return self._md_info.keys() + + def set(self, **kwargs): + for name, value in kwargs.items(): + self[name] = value + + def clear(self): + self._md.clear() + + def values(self): + return self._md.values() + + +class PacketIn(): + def __init__(self): + ctrl_pkt_md = P4Objects(P4Type.controller_packet_metadata) + self.md_info_list = {} + if "packet_in" in ctrl_pkt_md: + self.p4_info = ctrl_pkt_md["packet_in"] + for md_info in self.p4_info.metadata: + self.md_info_list[md_info.name] = md_info + self.packet_in_queue = queue.Queue() + + def _packet_in_recv_func(packet_in_queue): + while True: + msg = client.get_stream_packet("packet", timeout=None) + if not msg: + break + packet_in_queue.put(msg) + + self.recv_t = Thread(target=_packet_in_recv_func, args=(self.packet_in_queue, )) + self.recv_t.start() + + def sniff(self, function=None, timeout=None): + """ + Return an iterator of packet-in messages. + If the function is provided, we do not return an iterator and instead we apply + the function to every packet-in message. + """ + msgs = [] + + if timeout is not None and timeout < 0: + raise ValueError("Timeout can't be a negative number.") + + if timeout is None: + while True: + try: + msgs.append(self.packet_in_queue.get(block=True)) + except KeyboardInterrupt: + # User sends a Ctrl+C -> breaking + break + + else: # timeout parameter is provided + deadline = time.time() + timeout + remaining_time = timeout + while remaining_time > 0: + try: + msgs.append(self.packet_in_queue.get(block=True, timeout=remaining_time)) + remaining_time = deadline - time.time() + except KeyboardInterrupt: + # User sends an interrupt(e.g., Ctrl+C). + break + except queue.Empty: + # No item available on timeout. Exiting + break + + if function is None: + return iter(msgs) + else: + for msg in msgs: + function(msg) + + +class PacketOut: + def __init__(self, payload=b'', **kwargs): + + self.p4_info = P4Objects(P4Type.controller_packet_metadata)["packet_out"] + self.payload = payload + self.metadata = PacketMetadata(self.p4_info.metadata) + if kwargs: + for key, value in kwargs.items(): + self.metadata[key] = value + + def _update_msg(self): + self._entry = p4runtime_pb2.PacketOut() + self._entry.payload = self.payload + self._entry.metadata.extend(self.metadata.values()) + + def __setattr__(self, name, value): + if name == "payload" and type(value) is not bytes: + raise UserError("payload must be a bytes type") + if name == "metadata" and type(value) is not PacketMetadata: + raise UserError("metadata must be a PacketMetadata type") + return super().__setattr__(name, value) + + def __dir__(self): + return ["metadata", "send", "payload"] + + def __str__(self): + self._update_msg() + return str(_repr_pretty_p4runtime(self._entry)) + + def _repr_pretty_(self, p, cycle): + self._update_msg() + p.text(_repr_pretty_p4runtime(self._entry)) + + def send(self): + self._update_msg() + msg = p4runtime_pb2.StreamMessageRequest() + msg.packet.CopyFrom(self._entry) + client.stream_out_q.put(msg) + + +class IdleTimeoutNotification(): + def __init__(self): + self.notification_queue = queue.Queue() + + def _notification_recv_func(notification_queue): + while True: + msg = client.get_stream_packet("idle_timeout_notification", timeout=None) + if not msg: + break + notification_queue.put(msg) + + self.recv_t = Thread(target=_notification_recv_func, args=(self.notification_queue, )) + self.recv_t.start() + + def sniff(self, function=None, timeout=None): + """ + Return an iterator of notification messages. + If the function is provided, we do not return an iterator and instead we apply + the function to every notification message. + """ + msgs = [] + + if timeout is not None and timeout < 0: + raise ValueError("Timeout can't be a negative number.") + + if timeout is None: + while True: + try: + msgs.append(self.notification_queue.get(block=True)) + except KeyboardInterrupt: + # User sends a Ctrl+C -> breaking + break + + else: # timeout parameter is provided + deadline = time.time() + timeout + remaining_time = timeout + while remaining_time > 0: + try: + msgs.append(self.notification_queue.get(block=True, timeout=remaining_time)) + remaining_time = deadline - time.time() + except KeyboardInterrupt: + # User sends an interrupt(e.g., Ctrl+C). + break + except queue.Empty: + # No item available on timeout. Exiting + break + + if function is None: + return iter(msgs) + else: + for msg in msgs: + function(msg) + + +class DigestList(): + def __init__(self): + self.digest_list_queue = queue.Queue() + + def _notification_recv_func(digest_list_queue): + while True: + msg = client.get_stream_packet("digest", timeout=None) + if not msg: + break + digest_list_queue.put(msg) + # Acknowledge the digest + ack = p4runtime_pb2.StreamMessageRequest() + ack.digest_ack.digest_id = msg.digest.digest_id + ack.digest_ack.list_id = msg.digest.list_id + client.stream_out_q.put(ack) + + self.recv_t = Thread(target=_notification_recv_func, args=(self.digest_list_queue, )) + self.recv_t.start() + + def sniff(self, function=None, timeout=None): + """ + Return an iterator of DigestList messages. + If the function is provided, we do not return an iterator and instead we apply + the function to every notification message. + """ + msgs = [] + + if timeout is not None and timeout < 0: + raise ValueError("Timeout can't be a negative number.") + + if timeout is None: + while True: + try: + msgs.append(self.digest_list_queue.get(block=True)) + except KeyboardInterrupt: + # User sends a Ctrl+C -> breaking + break + + else: # timeout parameter is provided + deadline = time.time() + timeout + remaining_time = timeout + while remaining_time > 0: + try: + msgs.append(self.digest_list_queue.get(block=True, timeout=remaining_time)) + remaining_time = deadline - time.time() + except KeyboardInterrupt: + # User sends an interrupt(e.g., Ctrl+C). + break + except queue.Empty: + # No item available on timeout. Exiting + break + + if function is None: + return iter(msgs) + else: + for msg in msgs: + function(msg) + + +def Write(input_): + """ + Reads a WriteRequest from a file (text format) and sends it to the server. + It rewrites the device id and election id appropriately. + """ + req = p4runtime_pb2.WriteRequest() + if os.path.isfile(input_): + with open(input_, 'r') as f: + google.protobuf.text_format.Merge(f.read(), req) + client.write(req) + else: + raise UserError( + "Write only works with files at the moment and '{}' is not a file".format( + input_)) + + +def APIVersion(): + """ + Returns the version of the P4Runtime API implemented by the server, using + the Capabilities RPC. + """ + return client.api_version() + + +# see https://ipython.readthedocs.io/en/stable/config/details.html +class MyPrompt(Prompts): + def in_prompt_tokens(self, cli=None): + return [(Token.Prompt, 'P4Runtime sh'), + (Token.PrompSeparator, ' >>> ')] + + +FwdPipeConfig = namedtuple('FwdPipeConfig', ['p4info', 'bin']) + + +def get_arg_parser(): + def election_id(arg): + try: + nums = tuple(int(x) for x in arg.split(',')) + if len(nums) != 2: + raise argparse.ArgumentError + return nums + except Exception: + raise argparse.ArgumentError( + "Invalid election id, expected ,") + + def pipe_config(arg): + try: + paths = FwdPipeConfig(*[x for x in arg.split(',')]) + if len(paths) != 2: + raise argparse.ArgumentError + return paths + except Exception: + raise argparse.ArgumentError( + "Invalid pipeline config, expected ,") + + parser = argparse.ArgumentParser(description='P4Runtime shell') + parser.add_argument('--device-id', + help='Device id', + type=int, action='store', default=1) + parser.add_argument('--grpc-addr', + help='P4Runtime gRPC server address', + metavar=':', + type=str, action='store', default='localhost:9559') + parser.add_argument('-v', '--verbose', help='Increase output verbosity', + action='store_true') + parser.add_argument('--election-id', + help='Election id to use', + metavar=',', + type=election_id, action='store', default=(1, 0)) + parser.add_argument('--role-name', + help='Role name of this client', + type=str, action='store') + parser.add_argument('--config', + help='If you want the shell to push a pipeline config to the server first', + metavar=',', + type=pipe_config, action='store', default=None) + parser.add_argument('--ssl', + help='Use secure SSL/TLS gRPC channel to connect to the P4Runtime server', + action='store_true') + parser.add_argument('--no-ssl', + help='Use insecure gRPC channel to connect to the P4Runtime server', + action='store_false') + # Setting the default to False (insecure) for backwards-compatibility. May + # switch it to true in the future. + parser.set_defaults(ssl=False) + parser.add_argument('--cacert', + help='CA certificate to verify peer against, for secure connections', + metavar='', + type=str, action='store', default=None) + parser.add_argument('--cert', + help='Path to client certificate, for mutual authentication', + metavar='', + type=str, action='store', default=None) + parser.add_argument('--private-key', + help='Path to client private key, for mutual authentication', + metavar='', + type=str, action='store', default=None) + + return parser + + +def setup(device_id=1, + grpc_addr='localhost:9559', + election_id=(1, 0), + role_name=None, + config=None, + ssl_options=None, + verbose=True): + global client + logging.debug("Creating P4Runtime client") + client = P4RuntimeClient(device_id, grpc_addr, election_id, role_name, ssl_options) + + if config is not None: + try: + p4info_path = config.p4info + bin_path = config.bin + except Exception: + raise ValueError("Argument 'config' must be a FwdPipeConfig namedtuple") + + try: + client.set_fwd_pipe_config(p4info_path, bin_path) + except FileNotFoundError as e: + logging.critical(e) + client.tear_down() + sys.exit(1) + except P4RuntimeException as e: + logging.critical("Error when setting config") + logging.critical(e) + client.tear_down() + sys.exit(1) + except Exception: + logging.critical("Error when setting config") + client.tear_down() + sys.exit(1) + + try: + p4info = client.get_p4info() + except P4RuntimeException as e: + logging.critical("Error when retrieving P4Info") + logging.critical(e) + client.tear_down() + sys.exit(1) + + logging.debug("Parsing P4Info message") + context.set_p4info(p4info) + global_options["verbose"] = verbose + + +def teardown(): + global client + logging.debug("Tearing down P4Runtime client") + client.tear_down() + client = None + + +def main(): + parser = get_arg_parser() + args = parser.parse_args() + if args.verbose: + logging.basicConfig(level=logging.DEBUG) + if args.cacert and not args.ssl: + logging.error( + "--cacert makes no sense if SSL/TLS is disabled, did you mean to use --ssl?") + if args.cert and not args.ssl: + logging.error( + "--cert makes no sense if SSL/TLS is disabled, did you mean to use --ssl?") + if args.private_key and not args.ssl: + logging.error( + "--private-key makes no sense if SSL/TLS is disabled, did you mean to use --ssl?") + ssl_options = SSLOptions(not args.ssl, args.cacert, args.cert, args.private_key) + setup(args.device_id, args.grpc_addr, args.election_id, args.role_name, args.config, + ssl_options) + + c = Config() + c.TerminalInteractiveShell.banner1 = '*** Welcome to the IPython shell for P4Runtime ***' + c.TerminalInteractiveShell.prompts_class = MyPrompt + c.TerminalInteractiveShell.autocall = 2 + c.TerminalInteractiveShell.show_rewritten_input = False + + user_ns = { + "TableEntry": TableEntry, + "MatchKey": MatchKey, + "Action": Action, + "CounterEntry": CounterEntry, + "DirectCounterEntry": DirectCounterEntry, + "MeterEntry": MeterEntry, + "DirectMeterEntry": DirectMeterEntry, + "ActionProfileMember": ActionProfileMember, + "GroupMember": GroupMember, + "ActionProfileGroup": ActionProfileGroup, + "OneshotAction": OneshotAction, + "Oneshot": Oneshot, + "p4info": context.p4info, + "Write": Write, + "Replica": Replica, + "MulticastGroupEntry": MulticastGroupEntry, + "CloneSessionEntry": CloneSessionEntry, + "DigestEntry": DigestEntry, + "APIVersion": APIVersion, + "global_options": global_options, + } + + for obj_type in P4Type: + user_ns[obj_type.p4info_name] = P4Objects(obj_type) + + supported_entities = [ + (P4RuntimeEntity.table_entry, P4Type.table, TableEntry), + (P4RuntimeEntity.counter_entry, P4Type.counter, CounterEntry), + (P4RuntimeEntity.direct_counter_entry, P4Type.direct_counter, DirectCounterEntry), + (P4RuntimeEntity.meter_entry, P4Type.meter, MeterEntry), + (P4RuntimeEntity.direct_meter_entry, P4Type.direct_meter, DirectMeterEntry), + (P4RuntimeEntity.action_profile_member, P4Type.action_profile, ActionProfileMember), + (P4RuntimeEntity.action_profile_group, P4Type.action_profile, ActionProfileGroup), + (P4RuntimeEntity.digest_entry, P4Type.digest, DigestEntry), + ] + for entity, p4type, cls in supported_entities: + user_ns[entity.name] = P4RuntimeEntityBuilder(p4type, entity, cls) + + user_ns["multicast_group_entry"] = MulticastGroupEntry + user_ns["clone_session_entry"] = CloneSessionEntry + user_ns["packet_in"] = PacketIn() # Singleton packet_in object to handle all packet-in cases + user_ns["packet_out"] = PacketOut + user_ns["idle_timeout_notification"] = IdleTimeoutNotification() # Singleton + user_ns["digest_list"] = DigestList() # Singleton + + start_ipython(user_ns=user_ns, config=c, argv=[]) + + client.tear_down() + + +if __name__ == '__main__': # pragma: no cover + main() diff --git a/EXERCISE-1.md b/EXERCISE-1.md index 2c0e8d7..b18676b 100644 --- a/EXERCISE-1.md +++ b/EXERCISE-1.md @@ -109,16 +109,59 @@ Take a look at this file and try to answer the following questions: 1. What is the fully qualified name of the `l2_exact_table`? What is its numeric ID? + + Answer: name is `IngressPipeImpl.l2_exact_table`; id is 33605373. + 2. To which P4 entity does the ID `16812802` belong to? A table, an action, or something else? What is the corresponding fully qualified name? + + Answer: action `IngressPipeImpl.set_egress_port`. + 3. For the `IngressPipeImpl.set_egress_port` action, how many parameters are defined for this action? What is the bitwidth of the parameter named `port_num`? + Answer: bitwidth = 9 + ``` + params { + id: 1 + name: "port_num" + bitwidth: 9 + } + ``` 4. At the end of the file, look for the definition of the `controller_packet_metadata` message with name `packet_out` at the end of the file. Now look at the definition of `header cpu_out_header_t` in the P4 program. Do you see any relationship between the two? + ```p4 + @controller_header("packet_out") + header cpu_out_header_t { + port_num_t egress_port; + bit<7> _pad; + } + ``` + + ```proto + controller_packet_metadata { + preamble { + id: 67111875 + name: "packet_out" + alias: "packet_out" + annotations: "@controller_header(\"packet_out\")" + } + metadata { + id: 1 + name: "egress_port" + bitwidth: 9 + } + metadata { + id: 2 + name: "_pad" + bitwidth: 7 + } + } + ``` + ## 3. Start Mininet topology It's now time to start an emulated network of `stratum_bmv2` switches. We will @@ -222,6 +265,18 @@ obtained before, use the following command: util/p4rt-sh --grpc-addr localhost:50001 --config p4src/build/p4info.txt,p4src/build/bmv2.json --election-id 0,1 ``` +IN MY CASE: + +```bash +winpty python util/p4rt-sh --grpc-addr localhost:50001 -v --config p4src/build/p4info.txt,p4src/build/bmv2.json --election-id 0,1 +``` + +AND inside p4rt-sh ensure all joined paths do not use backslashes: + +```py +os.path.join(mount_path, fname_p4info).replace("\\", "/") +``` + `util/p4rt-sh` is a simple Python script that invokes the P4Runtime Shell Docker container with the given arguments. For a list of arguments you can type `util/p4rt-sh --help`. @@ -378,6 +433,8 @@ To insert the entry (this will issue a P4Runtime Write RPC to the switch): P4Runtime sh >>> te.insert() ``` +![Entries Inserted](img/ex1_entries_inserted.png) + To read table entries from the switch (this will issue a P4Runtime Read RPC): ``` @@ -399,6 +456,8 @@ PING 2001:1:1::b(2001:1:1::b) 56 data bytes ... ``` +![Ping Working](img/ex1_ping.png) + ## Congratulations! You have completed the first exercise! Leave Mininet running, as you will need it diff --git a/EXERCISE-2.md b/EXERCISE-2.md index e0c2b81..d6b0efb 100644 --- a/EXERCISE-2.md +++ b/EXERCISE-2.md @@ -73,6 +73,11 @@ In the interface model, we can see the path to enable or disable an interface: What is the path to read the number of incoming packets (`in-pkts`) on an interface? +Answer: +``` +/interfaces/interface[name]/state/counters/in-pkts +``` + ------ *Extra Credit:* Take a look at the models in the @@ -83,6 +88,40 @@ Try to find the description of the `enabled` or `in-pkts` leaf nodes. *Hint:* Take a look at the `openconfig-interfaces.yang` file. +``` +leaf in-pkts { + type oc-yang:counter64; + description + "The total number of packets received on the interface, + including all unicast, multicast, broadcast and bad packets + etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information + Base"; +} + +leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + interface. + + Systems that implement the IF-MIB use the value of this + leaf in the 'running' datastore to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + + Changes in this leaf in the 'running' datastore are + reflected in ifAdminStatus, but if ifAdminStatus is + changed over SNMP, this leaf is not affected."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; +} + + +``` + ------ ## 2. Understand YANG encoding @@ -192,6 +231,10 @@ get the ingress packets counter in the protobuf messages. *Hint:* Searching by schemapath might help. +```proto + ywrapper.BoolValue enabled = 37224301 [(yext.schemapath) = "/interfaces/interface/config/enabled"]; +``` + ------ `ygot` can also be used to generate Go structs that adhere to the YANG model diff --git a/EXERCISE-4.md b/EXERCISE-4.md index c314562..e714a7d 100644 --- a/EXERCISE-4.md +++ b/EXERCISE-4.md @@ -519,6 +519,8 @@ If you are running the VM on your laptop, open up a browser (e.g. Firefox) to To toggle showing hosts on the topology view, press `H` on your keyboard. +![Hosts](img/ex4_hosts.png) + ## Congratulations! You have completed the fourth exercise! diff --git a/EXERCISE-5.md b/EXERCISE-5.md index 2f3947c..40548bb 100644 --- a/EXERCISE-5.md +++ b/EXERCISE-5.md @@ -230,6 +230,8 @@ tests of the previous exercises as well. If all tests succeed, congratulations! You can move to the next step. +![Success](img/ex5_success.png) + ## 3. Modify ONOS app The last part of the exercise is to update the starter code for the routing @@ -313,6 +315,9 @@ PING 2001:1:2::1(2001:1:2::1) 56 data bytes 64 bytes from 2001:1:2::1: icmp_seq=3 ttl=61 time=2.29 ms 64 bytes from 2001:1:2::1: icmp_seq=4 ttl=61 time=2.71 ms ... + +![Ping works](img/ex5_ping.png) + ``` Pinging between `h3` and `h2` should work now. If ping does NOT work, @@ -381,6 +386,73 @@ and reporting stats every 1 second (`-i1`). Since we are generating UDP traffic, there's no need to start an iperf server on `h3`. +``` +mininet> h2 iperf -c h3 -u -V -P5 -b1M -t600 -i1 +------------------------------------------------------------ +Client connecting to 2001:2:3::1, UDP port 5001 +Sending 1470 byte datagrams, IPG target: 11760.00 us (kalman adjust) +UDP buffer size: 208 KByte (default) +------------------------------------------------------------ +[ 6] local 2001:1:2::1 port 37705 connected with 2001:2:3::1 port 5001 +[ 3] local 2001:1:2::1 port 35488 connected with 2001:2:3::1 port 5001 +[ 5] local 2001:1:2::1 port 50720 connected with 2001:2:3::1 port 5001 +[ 4] local 2001:1:2::1 port 32944 connected with 2001:2:3::1 port 5001 +[ 7] local 2001:1:2::1 port 43098 connected with 2001:2:3::1 port 5001 +[ ID] Interval Transfer Bandwidth +[ 6] 0.0- 1.0 sec 123 KBytes 1.01 Mbits/sec +[ 3] 0.0- 1.0 sec 123 KBytes 1.01 Mbits/sec +[ 5] 0.0- 1.0 sec 123 KBytes 1.01 Mbits/sec +[ 4] 0.0- 1.0 sec 123 KBytes 1.01 Mbits/sec +[ 7] 0.0- 1.0 sec 123 KBytes 1.01 Mbits/sec +[SUM] 0.0- 1.0 sec 617 KBytes 5.06 Mbits/sec +[ 6] 1.0- 2.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 1.0- 2.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 1.0- 2.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 1.0- 2.0 sec 123 KBytes 1.01 Mbits/sec +[ 7] 1.0- 2.0 sec 123 KBytes 1.01 Mbits/sec +[SUM] 1.0- 2.0 sec 613 KBytes 5.02 Mbits/sec +[ 7] 2.0- 3.0 sec 121 KBytes 988 Kbits/sec +[ 6] 2.0- 3.0 sec 123 KBytes 1.01 Mbits/sec +[ 3] 2.0- 3.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 2.0- 3.0 sec 123 KBytes 1.01 Mbits/sec +[ 4] 2.0- 3.0 sec 123 KBytes 1.01 Mbits/sec +[SUM] 2.0- 3.0 sec 613 KBytes 5.02 Mbits/sec +[ 6] 3.0- 4.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 3.0- 4.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 3.0- 4.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 3.0- 4.0 sec 122 KBytes 1000 Kbits/sec +[ 7] 3.0- 4.0 sec 123 KBytes 1.01 Mbits/sec +[SUM] 3.0- 4.0 sec 612 KBytes 5.01 Mbits/sec +[ 6] 4.0- 5.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 4.0- 5.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 4.0- 5.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 4.0- 5.0 sec 122 KBytes 1000 Kbits/sec +[ 7] 4.0- 5.0 sec 122 KBytes 1000 Kbits/sec +[SUM] 4.0- 5.0 sec 610 KBytes 5.00 Mbits/sec +[ 6] 5.0- 6.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 5.0- 6.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 5.0- 6.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 5.0- 6.0 sec 122 KBytes 1000 Kbits/sec +[ 7] 5.0- 6.0 sec 122 KBytes 1000 Kbits/sec +[SUM] 5.0- 6.0 sec 610 KBytes 5.00 Mbits/sec +[ 6] 6.0- 7.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 6.0- 7.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 6.0- 7.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 6.0- 7.0 sec 122 KBytes 1000 Kbits/sec +[ 7] 6.0- 7.0 sec 122 KBytes 1000 Kbits/sec +[SUM] 6.0- 7.0 sec 610 KBytes 5.00 Mbits/sec +[ 6] 7.0- 8.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 7.0- 8.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 7.0- 8.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 7.0- 8.0 sec 122 KBytes 1000 Kbits/sec +[ 7] 7.0- 8.0 sec 122 KBytes 1000 Kbits/sec +[SUM] 7.0- 8.0 sec 610 KBytes 5.00 Mbits/sec +[ 6] 8.0- 9.0 sec 122 KBytes 1000 Kbits/sec +[ 3] 8.0- 9.0 sec 122 KBytes 1000 Kbits/sec +[ 5] 8.0- 9.0 sec 122 KBytes 1000 Kbits/sec +[ 4] 8.0- 9.0 sec 122 KBytes 1000 Kbits/sec +``` + Using the ONF Cloud Tutorial Portal, access the ONOS UI. If you are using the tutorial VM, open up a browser (e.g. Firefox) to . When asked, use the username `onos` and diff --git a/app/src/main/java/org/onosproject/ngsdn/tutorial/Ipv6RoutingComponent.java b/app/src/main/java/org/onosproject/ngsdn/tutorial/Ipv6RoutingComponent.java index 75f40dc..c00f9c1 100644 --- a/app/src/main/java/org/onosproject/ngsdn/tutorial/Ipv6RoutingComponent.java +++ b/app/src/main/java/org/onosproject/ngsdn/tutorial/Ipv6RoutingComponent.java @@ -83,7 +83,7 @@ immediate = true, // *** TODO EXERCISE 5 // set to true when ready - enabled = false + enabled = true ) public class Ipv6RoutingComponent { @@ -192,22 +192,24 @@ private void setUpMyStationTable(DeviceId deviceId) { // Modify P4Runtime entity names to match content of P4Info file (look // for the fully qualified name of tables, match fields, and actions. // ---- START SOLUTION ---- - final String tableId = "MODIFY ME"; + final String tableId = "IngressPipeImpl.ipv6_my_station_table"; final PiCriterion match = PiCriterion.builder() .matchExact( - PiMatchFieldId.of("MODIFY ME"), + PiMatchFieldId.of("hdr.ethernet.dst_addr"), myStationMac.toBytes()) .build(); // Creates an action which do *NoAction* when hit. final PiTableAction action = PiAction.builder() - .withId(PiActionId.of("MODIFY ME")) + .withId(PiActionId.of("NoAction")) .build(); // ---- END SOLUTION ---- final FlowRule myStationRule = Utils.buildFlowRule( deviceId, appId, tableId, match, action); + + log.error("#!#!#!#! INSERTED ipv6_my_station_table ENTRY: deviceId = {}, appId = {}", deviceId, appId); flowRuleService.applyFlowRules(myStationRule); } @@ -237,13 +239,13 @@ private GroupDescription createNextHopGroup(int groupId, // Modify P4Runtime entity names to match content of P4Info file (look // for the fully qualified name of tables, match fields, and actions. // ---- START SOLUTION ---- - final String tableId = "MODIFY ME"; + final String tableId = "IngressPipeImpl.ipv6_routing_table"; for (MacAddress nextHopMac : nextHopMacs) { final PiAction action = PiAction.builder() - .withId(PiActionId.of("MODIFY ME")) + .withId(PiActionId.of("IngressPipeImpl.set_nexthop")) .withParameter(new PiActionParam( // Action param name. - PiActionParamId.of("MODIFY ME"), + PiActionParamId.of("dst_mac"), // Action param value. nextHopMac.toBytes())) .build(); @@ -272,10 +274,10 @@ private FlowRule createRoutingRule(DeviceId deviceId, Ip6Prefix ip6Prefix, // Modify P4Runtime entity names to match content of P4Info file (look // for the fully qualified name of tables, match fields, and actions. // ---- START SOLUTION ---- - final String tableId = "MODIFY ME"; + final String tableId = "IngressPipeImpl.ipv6_routing_table"; final PiCriterion match = PiCriterion.builder() .matchLpm( - PiMatchFieldId.of("MODIFY ME"), + PiMatchFieldId.of("hdr.ipv6.dst_addr"), ip6Prefix.address().toOctets(), ip6Prefix.prefixLength()) .build(); @@ -283,6 +285,8 @@ private FlowRule createRoutingRule(DeviceId deviceId, Ip6Prefix ip6Prefix, final PiTableAction action = PiActionProfileGroupId.of(groupId); // ---- END SOLUTION ---- + log.error("#!#!#!#! INSERTED ipv6_routing_table ENTRY: deviceId = {}, groupId = {}, ip6Prefix = {}", deviceId, groupId, ip6Prefix); + return Utils.buildFlowRule( deviceId, appId, tableId, match, action); } @@ -306,17 +310,17 @@ private FlowRule createL2NextHopRule(DeviceId deviceId, MacAddress nexthopMac, // Modify P4Runtime entity names to match content of P4Info file (look // for the fully qualified name of tables, match fields, and actions. // ---- START SOLUTION ---- - final String tableId = "MODIFY ME"; + final String tableId = "IngressPipeImpl.l2_exact_table"; final PiCriterion match = PiCriterion.builder() - .matchExact(PiMatchFieldId.of("MODIFY ME"), + .matchExact(PiMatchFieldId.of("hdr.ethernet.dst_addr"), nexthopMac.toBytes()) .build(); final PiAction action = PiAction.builder() - .withId(PiActionId.of("MODIFY ME")) + .withId(PiActionId.of("IngressPipeImpl.set_egress_port")) .withParameter(new PiActionParam( - PiActionParamId.of("MODIFY ME"), + PiActionParamId.of("port_num"), outPort.toLong())) .build(); // ---- END SOLUTION ---- diff --git a/app/src/main/java/org/onosproject/ngsdn/tutorial/L2BridgingComponent.java b/app/src/main/java/org/onosproject/ngsdn/tutorial/L2BridgingComponent.java index 6db9985..bfc9402 100644 --- a/app/src/main/java/org/onosproject/ngsdn/tutorial/L2BridgingComponent.java +++ b/app/src/main/java/org/onosproject/ngsdn/tutorial/L2BridgingComponent.java @@ -64,7 +64,7 @@ immediate = true, // *** TODO EXERCISE 4 // Enable component (enabled = true) - enabled = false + enabled = true ) public class L2BridgingComponent { diff --git a/app/src/main/java/org/onosproject/ngsdn/tutorial/NdpReplyComponent.java b/app/src/main/java/org/onosproject/ngsdn/tutorial/NdpReplyComponent.java index bd232bf..c075e59 100644 --- a/app/src/main/java/org/onosproject/ngsdn/tutorial/NdpReplyComponent.java +++ b/app/src/main/java/org/onosproject/ngsdn/tutorial/NdpReplyComponent.java @@ -62,7 +62,7 @@ immediate = true, // *** TODO EXERCISE 5 // Enable component (enabled = true) - enabled = false + enabled = true ) public class NdpReplyComponent { @@ -206,17 +206,20 @@ private FlowRule buildNdpReplyFlowRule(DeviceId deviceId, final PiActionParam targetMacParam = new PiActionParam( PiActionParamId.of("target_mac"), targetMac.toBytes()); final PiAction action = PiAction.builder() - .withId(PiActionId.of("MODIFY ME")) + .withId(PiActionId.of("IngressPipeImpl.ndp_ns_to_na")) .withParameter(targetMacParam) .build(); // Table ID. - final String tableId = "MODIFY ME"; + final String tableId = "IngressPipeImpl.ndp_reply_table"; // ---- END SOLUTION ---- // Build flow rule. final FlowRule rule = Utils.buildFlowRule( deviceId, appId, tableId, match, action); + + log.error("#!#!#!#! INSERTED ndp_ns_to_na ENTRY: deviceId = {}, appId = {}, target_mac = {}", deviceId, appId, targetMac.toBytes()); + return rule; } diff --git a/app/src/main/java/org/onosproject/ngsdn/tutorial/pipeconf/InterpreterImpl.java b/app/src/main/java/org/onosproject/ngsdn/tutorial/pipeconf/InterpreterImpl.java index edf5bfa..2570a3b 100644 --- a/app/src/main/java/org/onosproject/ngsdn/tutorial/pipeconf/InterpreterImpl.java +++ b/app/src/main/java/org/onosproject/ngsdn/tutorial/pipeconf/InterpreterImpl.java @@ -154,7 +154,7 @@ private PiPacketOperation buildPacketOut(ByteBuffer pktData, long portNumber) // Create metadata instance for egress port. // *** TODO EXERCISE 4: modify metadata names to match P4 program // ---- START SOLUTION ---- - final String outPortMetadataName = "ADD HERE METADATA NAME FOR THE EGRESS PORT"; + final String outPortMetadataName = "egress_port"; // ---- END SOLUTION ---- final PiPacketMetadata outPortMetadata = PiPacketMetadata.builder() .withId(PiPacketMetadataId.of(outPortMetadataName)) @@ -186,7 +186,7 @@ public InboundPacket mapInboundPacket(PiPacketOperation packetIn, DeviceId devic // Find the ingress_port metadata. // *** TODO EXERCISE 4: modify metadata names to match P4Info // ---- START SOLUTION ---- - final String inportMetadataName = "ADD HERE METADATA NAME FOR THE INGRESS PORT"; + final String inportMetadataName = "ingress_port"; // ---- END SOLUTION ---- Optional inportMetadata = packetIn.metadatas() .stream() diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb8e427429480dd326662ab79d896d5bcd06f3f GIT binary patch literal 106710 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

#Nbwx5}yP2~tB_JKE8UfvX^w=G8;7O;J)b|2< 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�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 I$uj)E0Ft6wi2wiq literal 0 HcmV?d00001 diff --git a/img/ex1_entries_inserted.png b/img/ex1_entries_inserted.png new file mode 100644 index 0000000000000000000000000000000000000000..527a207632f60cd1629256890514029c859fbc5f GIT binary patch literal 44653 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 literal 0 HcmV?d00001 diff --git a/img/ex1_pic1.png b/img/ex1_pic1.png new file mode 100644 index 0000000000000000000000000000000000000000..823fe2a22ed567081f01991e41cfa93e0cf6cc04 GIT binary patch literal 43407 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 iibB->IA8B9Hro;t2o%zzjxe4) z>qq=Sa@CN31*jaM+C{uUwUSnr1^}vKu^-IP5bv>^-srmm0C?YV`%u#jdPBkN|uegajTdRqh&AA>X1VD1YGXU~^P zGjkr#0?>G*d&U67oIzE4|72+@0D3sRyta^hE{fQ_ z<%+IE9OzU?D4bVIZU0ej-MpjKyO|6af9QI7KsJKz2qNXa6MhFPv8c0GOxtR#G(l&M*`LX zsDuUhz-~#;9o;vUB=LOe@K*%=k2(fAET7y`jnxO}!Uax#=b$WSfkwGE#lqGgRH=?% zQ5=_K)IA?D0#czE58b1z!IxG@tY;#r{3` zKJ0C!71^e@Z)D0AEKyxFZm&W7@bCH(p8;hW?Kn9i%E@M$t7^9;Ab`>1M)>5!0uolH8SYRY^BT;d07nE0EpIp z%F!t(AR23K@^SvAJ&9pMoNJqM2E3m0C|_dqFbOh5)>|Q+>VU^W;cZbHY*1M3%~-}u zNlVZ3&{IX|b)pB*k65yx>t+>xV}6r53dig`UOg(im3(tr=m=pmZA*rOuJBLW1=&v` z;k)ZM(ct21(_6O(zcVC6FueJ=ATBZl4mwmTrb?T>gJH^9)F=%EbYPszvJoL{0yE2;@qN!{C(RkX}=+bbzrgs(j3vsIm#C0R(%dq z1Ew86aB%g=`{(opC-yyxO*^mEmn(^g0|;P@Cysvn$tidz>{iJ**k{3wNWgm@DUd$w zC5-;$98RBFl&NHLgt*6!^(_(n0SJ(22tB=q%P9!S>ysA_7BW-)M)JE0+^@OcHU;>t zQJ3((C@d;nF4-;lq7fo@$ONZkpi-M3O=&Gy$VKdTOzonV7^bL|XSbZJ+eS3wM3x+arO3odmj_Bkk5M#Nle8TjG10V@#Ju~bK1u6gd z?Ym>SVg*9)^U-Waxw*l-sf%dgt#n5^Z-2mj&Dy@NtT=_pR6R*Rc{>{z$@C_=+{mPm zIkU!Rb1q#qgyjQd?R?xjz|jxwMssug;<8l=&9TAX(TCVW`EXVLbAaUIwI>UODf~ht zYDR)(BE=o-wcF-`3@b8zcl#D_3}`PX9NpHHXpLcV-n2ZKyh=G)J#$sHsdTB$uI zMEyJNF1%c>3y;xY7ghxih9IrNeeg1}PolyErTqApGu<4c-b=&)Qsr6wN0C9n$hHFu zn=dXwg^V4JkIer0QGO&hccL1rfSY4hNl-yj&nKG1eh+P5UkF>LDaQsJ^ye0RY`iQc zUR)>2JSV;3qKl&bjw-4)%N!MQT$}6nOG!#HZs}^%+0Dz1GoryAe#9QT#Fw#+gW~VP zZI|}>0bmD5Hc!9pdbE>@w#TIj&5=DRy9KJ`%Uyo!)Tu>4Nu`~4og2>Kah^kRR_R>{3A$yPafb1 zH}!9PFi}{g|Ap2EJu#i;J>Idpo@u@BE#ST0yA&xu>Ol7s)TRvYy0%W<%4thkjnW{= zDD~NVdv;R!X2M>CezrVWUVD5Ics($6@av2Kt+Rt;E~t$oQ>+IA zaK6b=Ghjo2)CmNDBNfIV%s>Eiu4%QT-z;Tx!{xfU6q2s)e3KE?>MGyMZ6)@}?uoM;$00 zP(;9FIh-o?i z%;692K)cB(nM!i>>YYDB=6CKEt?B&&uW$!=V4vXHRx2=HUgF*+11*DT;}u2~9dq@O zO7|`5V>CHPjM1?93*@KB}Tk`36~@!+V~dUgm`)32m@Sa&pDAuTgn-5WzvA~GZ!F+pFG9D)A` zPH_6BGnN>L3tJZT2fg>mwx{xHA9X0h3!@<|mC0q(#%&Y!!G^YW>G91~|w4OtIFvcg{>s?Ou!z`#|(<%{d#ltuhAHJ?Mx3{R8KjR*X6otN$U$Kgs6F-pRq zw^#j+9xYm9FoWj(w$(!xMKfH#^?&M1@BK-Rb1gV{1F;0~ZB>7F6N?Io4)~NPfa9a1 zf}eUQaUKb-ir?K0fB4J`k4ms^7eyre-}R znIifPMg~a=kFB;Ttj_YDf>|Mq#fjOz;eKwlKHwOqfn}C=KBzb0KvWVI_klo_w)L6( zt!z^*C9-J$>-J0+tow>q)Mzdi+x}}--5UIMc>{-Wb5~7g_1jnT#GIZKLIa{BhoJXq z90x@=t={*HdthIZn`2;#H(z`8J4Y2_%1UXBt?1{?zaPO8`rN;@@^#_1;5&11^`RE~ zHj_v1`dE}s-DJ~!%4EYic;8{i&0Xq#i(qnfMLX>5d_Vjq2ZVlO=(0~=HhW{%XbF@XuRo-yS>99L#eMM2|T*X*U{(@}TfXc%ujpr{_kALryG$W_b+$d{Xc!e{imY<7=3W;nkW2ZBVTs zNbNv@VX{NAv0Fjo*OIM%V*@=iuUi=MN|B$&QSk4`D=$8+klVW-vl<}n-TqKljZY0g zi>hSw1^i&##vd}Z!&x|LI^=+y+Zlb*I(iej*#f`oYk&6#YU?>qCVx=QXSuScx-2{= zn{|T*Pl?FU7)-H_VWPzM1!Rnh9NpXd1EKKC{@|43L4C7jyw=;mX7MLB<3{e6*ZZa; zNA4c$u_P@&)Ne^P3pM$wy&o|OTGT$oDm?Aq>u`yjx1555{G_SJI zK=B8lz1D6AgBmrMH84nDSo;a*Y<&?CMmIXPJ-bxd1e+qLA@#l&Y+ttk`I7Kwf%7wK z-~ODn2GNcf5DCZ00Hr|*blSlQc<+aC%pwAiX5l}6m=-X3Eah`s^m7Z>ZLiO&K6&VY ztA^ChPn>VzuRlVUZIqk`UwVKuGwo|#e2yY*;DPBxl)%2M4+X_fidZDBC#>?mso&~dhWIGtGIlx`zQbYy~3=UzTx_TY%|*=^A9 zJufqwS-s%4s6X&=L72Q=aElrwuOE#7?kl5j85l>cd{+jcXi+!-IDaEJjF2=~5>?{S zd%S|vR}HBh#lySix=?m&slUT^gKgEj!*(K~o10-$!v_Jl-M&m38GpQ8MZT_eM}}t3 zX!N0j((;lYRQ%=4g~szHZCW1O&+0N| zgI9serW(K;ll>mQ+O$7Sdpk>99acnP&rJ`$u5LK7xEbg@1wD*#txTATLnL7mn;}=e z#~83PyzspFL)}!sHx(ztmMVq_g1De_L)=1x6S~G$I{7!48CT0gfX( zRUe`ji%vL+7P(b1i&!2&NO~Pub&^fXg4GYoodZAyBRN{*wiL(YN|XNO#2lSR!T9Do zVcMa=2gi)Wy3uzy^_9sA6qaANOr%btVtyFfdGYKlsCkYHWz-Mp<_eDda1KSiz^8GFo#=pb zxbYhJX~KZWFWrL9AD(sg!k?bBzzt}$PI6TNK&`U|j^nD^9VY)*m z%JQjkXVH1D^t1KvCvzZ%r418LRU7E3=jqm=SZj=ogaU@nhqdPyj6@1vn))9t;cXVdbnXJ79P<`HNUC8J}; zH~q;r?dXCNoUJ43KGyBYa@Lq@A1|N8mwPMV+(T9l(;Wh}AM?O}iN8Lc_vuybKc~J% z1o4tN%=OyC9Y!trkR(~pF2N;&$oEgttVZEh+3ZHgLxE=kyU6w6;M{5_iWi3wj4;#j zw&LAK%II+m@^<^fZ1hc%tLt`3Oig!u9@WfI7@KD*?lQ^{NDLt`Z5WRyTnvDcQ&Wys zyhd7QTUD&3l(4|?Z>>Ir%udkvfcntAg3$xNnt7J4%MtES%MXihN67UYS z+5A*sMb}Tsc=tP|q_&Tp5JH`tz$w4^AGveGOjqzGuF8)K^7;BNkt*tgW|DPkHt}jqMH-Y?|`?y(EeS5zsk? znF%6atb(TB((JJ$p(* z61$n<1M`x_(dP{Z_v%NUWlnZ^%O<26=`+sQiUSPJhq9c*(ks&{*F6&7j3>JO&H)#I zMOP3wV}j$$e0_5e6LYkQ%ZP$M*5Y*EnZHgu`N^nqYpby-LsjQq4_yUwn932V`hvY_ zopS|eETce4t?P>@f55F&2)|R+WN6y74l=VfI-hG4j|2Dar!nVOQow0R)UK+hO3HO9 zc<8L~tP#}2jBU?;jp=)T^pmv*!~Z6K+yYN9?1MN?CIJti&DK#@Rso9#cw6?!7`abQ zFV<`9U%I8Co z5|Vc;+<2g5N2(jy|MlXXn;Y#F_uFm^*|3MO>z%*feJEg7Xhh@;TpbobCNi{}tK#;I zo1M~O?TDX0cT*0qQqGl}Esbw26T5+IMFH?lbH1h61Ju1F+Eu$JgeDtW1|_>e4V$4A zPt*%MJqH!={;oMyJZ`r^?T*oU?+b)RaEJpWsCsw|EOe1L3|@fOGy86{POz&kOj#gJ!|n?eW^ z`}&Ysw{G6S9>3pQ>E++siuvh8#B#Iiy|xkYqa#i_DYRY)&wQ{wWaGa@DCdXobp`u; zMe_ne^?+L{oRQoaq5dDYkLTwES<-53O&z0gh@VvGk6}(uk;;|8FDW zhFR@@d~SCD=++!Re#N1ikJaoFLgdm5D+N8?#wV1r8P>MQpjP*&8x9 zk)4YV9ygj0d}E1$y#(DL#r=koGi%mN)^rvbvstI54Zk9Q^h#k@{;&9?%Pmcq`@eTp zr7XC?G;-Ty_;xhK!I)@h)Qt3Hmtd*PqGmElNjyrC8t|v;2Rv# z&QG&l?~p~h(?lfsmLZ0RL+{bvf#krP{bhJS7aHjlGSh3u*{Lb||GyAOh zvpWU$*Hj}sPT$H=)^mMg zg@S4UA%~(kebcz_Zvg};Z3@@~&o8!`vTymA zV7kc;ODgG=<(8BLo&#?|%p?0eT9q*GL0m1^c*iq{`fj!Mk6^Q<7HQf+-{+O3MXf$K zhJ{wzuU~c7$6wjUIy+)qwV5F<`3_2{w(DNu4RLAw)nawaM;tR?t1&{bcia%9o0(cF zUr=3hwAW3??ryyNa00=X{O1?fO`^!6)XE+X=Jre3-#F(4LM?rwsr(Ew(krDEbgidI zH%(ahJ4Yn9X$9pPzt2T~jX8aef1v+oi_&0w1Q5`j<&{r8&&*5Jd-d-I=KjXbT8LFV zH!xnoePfjSbnO!+uGxwP#(T#a&b&9>1*X%Ytz8|`#fwXbXgXc{x`@(%U9hPcIPQd6 zUX8_}JrZVND7)YKv%w?aC2kn$Xc!6Kzx!?>CrdX|m))ey+U9z!*M7grIxp%k;(3Fx zj2D?11Y=4Uw!?KLm}ELOnzxf$oW@u#?;|$tH-GW9FL<)%VvGR z(f)P2DKevh{_i$ot)g`rf25t8m}Q6e*%@4#-P_{Iwb4|pePbVNFCMHqYMmE;+rt-tnlxT<3-|tZe2ILRH zyuDQkgK0s*)g?%)!+1LQo{PMjS~a0o#>eYEZA{nN70hf9o9}a|COA7Xqzw!%&IRzL z7yVh1N2S#E<4J$_D~L-%glf&HuelACID~$rrA01HSuBX-*~DZ)>>QTf*C;QH%Mt4J zhY!fTk-7MqsS|78V`XMiBoJ3F8uG{aUd@;^SeXoXi=k* zGP1bYKe-jJcaZ2F+%ZA_Zyt1lU_`Uk~yz^gX|EmYx^5Z{%biQHM zZH0}%V@?$q!qpWNo-U+0<8BmWpRa=I6Kw^%{4HBBk-d9Gt0vz%dvBMOIH^P*-hQvc zjZoqjW8@pW60t|uHf;#rNCEsA^NAg+M2NAtw2cA+`T<}cefuk)Z9yftLvY~F87n-p%mYoHjk}T%N6ii4vZj^af zCwRC-5{5*-vlZ@Bv=VKb+gdWH|A?q6F~&u`1Ej8EG3rH6AN295t+0Icwnw-SWB;I= zwD#O-Dw&k;hi+qtC2o*L6 zm1*+bmHYnopOv95xOp+q12|vU4*R~{r2VXCnO&VHJ;9p9Y|crO?XIDKU4{Q`==wa# z$T@Nx+s@~KFDvuAO$o^tbe{m}!parPMLILVXbWyH+3thcCYqbRbPji?h80X0UqhNr z$OYL2pQ#9B*BceKo~Ja9pT(zid>6C))~7|wPAVfFBDiCgBC;$R@i5sDeknJ6j}-Rs zlo63SOLt{IzaN+s5tw1_unqTi7SKG$S&y3RSx$`hV&=^7@#QDRQ=953b~6a66C%BO z%RHD?dcWr*&iy`ev#bt>g?G|9@Rjot_+D3?=B$G_G~Qm4h+H9SybCF*+cOzR8B*^c z>iLl2)aW;YfFF|xZ%1Cw9H&K>VC~7$YLgRzgF+z|qFPVdnXMLUpZ!GUa1FEmDPK$k z>6x6Y)>>6^@c-@?eOOiERJx$oCc?qkbx1fi!nq+Cj3&t6PqNMN&NH(3 zbvq5J*-vVBB&#^%Po?ZK-<6^fbNKABtmcux0x{9VcsP_3t9Kc^Y0zBTElF0E2g;za zI6l!oImew(1Pmy9Nt-!JAop@eX61k${?zu*6dLVG9Vkzi-TYRnh%3XQ#zHD9L&>fE z@$mA@^2bZw^K)Y}3*ryVf_q%5;K_=KeN-3SouAq=mZlLxM2_XT_-#xU&T22oZ^4`tqWPfw zHOX2d0uft?NQy(S!lxhdmTe^cB?mx!8A;ZFKULJy;RERsr{EP=QXb<#K_WQ|3W9V5 zlKmkalZN@vxXULC?@O>a&P}=tbdm>|RnN1DHf+6plFm+@5BrmUThj_2I{K}#@bc-f zUEx-XAM+s?ilb6Cu3&y19aHUHLGZawlw7lCd6MrSBcgmOP}+tdDqZ!H^EDj3A<{6z zZ2|)C)Ty7s`-%ltV~|33o&rRQFsNBPVFr6sByltI5)D9deKZk!ep=|eb0OOgqPdAK zSta|gp7R{AgnY1>c#LtNW_l}kD_i^2D+>vI1bHW>z$G!`M$=-zGp5DE)$J}f96@wy z=ni}rzOU%gkpc{u4W&}Rh5uiKE%RRqFM0C{#9O?sbq=B-xmfSg=gOFKxKtq zbwY*~OO=oZ!Ob;x+lA40Mz6T$5_=JA%?DZ6_DL#>`4D5q;GTtvZLV2%d#VlFzbp7* z`zBk9Z^%dg`Op^Kx36SYDx8G--jOUy00?hQBS}LA3CfqlTWc4t!Q!WwO4>wH)IGL#h)j)Yh(Ub*qz&Ae=$K!4IC%ZdR|gD z5QqeFxOXH;vE+OvUDxvaQ9&?5yDcFTUm{CWCgGIwvA$^T!e~pG*7DNLXIh?H^|w7r z^$*u4&n?DZp%S{TfWkC5G7H3jMwPOeTAq8Ut6B z>t%n6`epwzpS^bYmzta%->g~{h4w}p(?IZ!P!`@iG9KX~hz;`fvVg$m?P@5{@5UPD zIY|NxF=Iu1XIv`wvF;?Fa3%=1Hyr{++17BMkv^fU3S{|Vg)J0#$x@66{~{>42MU|pO;@!6#-&5Oq4LAd^cZ!|pWyy*4wL;aM) zy%(c0^z2PZB6crKhw|2fKT_UDnb-NorYkg)N*VsC308QyB3F^?=-ah&gPOBr21x_ zKwcA|&NiLL2O+U72_QF~VD9z|RPmbDUBnefMbgUb6cIhBV`Rnn2*hN704f~fL-8Mr z#evZuLv9nCa?i~NNoyq+1t6i?vnL9z2T2A*t+@rv6 z8_pG4U(v2B_XnP*ygjt*(!Yy{BkSnO9~jF-$evg|^KcdzCMsP={^f}sM(R;m z1H7Gi1ML>vuh110LBZ#F?-4lZ*!EQ^&wzM$s>y$>s^z0+;=EwG=2?A0eM{%!&m(O9 zrw^0X%4ao-xK<@C8f61Qv|J5 z3Rp>%W%7>qooc91%Wke9g&E&ou3)o_`;XnDzgu{h*6Xj~Lr9uOcQJH$D&3=P3yI}9CbgK=FloMMYN$TL#a+xC)SVZ9-9LSN z?J{Pt6tEIIwi~5(tbqDQu;a?Mlz2UQ{9dYKaah@&i+Q)X^D8>L;{@SThg1YW;U9=6 zBqdnlM5>5Rj$x`Co1Si*2jZCJE*QMiD877Q->?%XJxEHsVAohLbz87&>1_YpP~vi6 z%-?v2UjMl%B~iC_3YUTr5jo$as;!zp1KCx|!xKG+k*R9-%-3PO2pejOmsk>wpuefTfLetA#o|VA4n@_M zm}S`FS2fUZMDq2}tETkjn9)>r47P;G&;dya%mhvetOgXPN5}i8ZC&m2Q1@mR`t;<< zdyAdlo;}v-m3~3LjRCvx)At7Xu z7Q4oodBLrOxs0VBSA7)A7BQ`Y(OnI+Ze?xqi;~}Fc6ws_e?~v+lHlh=&>z&H670d6 zm6!!Rk+ylAv>#-T0x9RzI`SpAUy!^J5?zf9)dB%JLSzX#x4Y$2583c3m`%xMWp-A# zh*6%JU4zoH*GxvR)zuS}-7}PRS)(@V7Dl@wfV9 zjA=&Oe2+cj6I98TvlgN+Dh_m?b~$$;Z_1cmnAu3_i8$OhVId74KopG66zHl=!1s=F zUKD?%sDit-^kKPdvAvdZ80gxGIe%SaBbhZ1|Cw+%Tl_+cy_OWUHzmdX$8|Ce&S9!N zkau);1jZe~daD{S?&ap5&(mHRdTsM0GmNx!4))2Wd2;qK-ih1qyQEVD=i2%sFgiRz zOdi#W3-(H@Fy0Ru_4Gs{`-6-0!UUB%tdp`?d3y!=uPmsx}Lpm=8Of#${c?Ui||mWohWz4oumO1_)4&&mUg)WvFPODRS z6dbB=;@Op?Sdl1$8g>2cyyExY=XIqE2S`0pacna+P~CAuUrAK*!}_F)-OUipXW>hu zWiB|rLH&v4fxSn0*%vb1g91)qOui*YPOMA%@!&#kR46|)bzaitbVm6gkH-4ma)b|! zLi@)}A3%4}ldm2-kRf@?;-Ye57<0i>2Z;qH2*V45Z-TRj$Irr6WnnmNUy_+UaW=N( z-7-AgD1Vn1v16Vc_aZXLn}+~ON3N3*p@?9)hS)e>;uj()9%E)I_O%UC zn2;Xs!|hhCG67NlT066}^EnAGa-IBb>sMrk-*lquFZK!p6vge^3W7DU%%~Erz@Q|8<6$>%7{5)or_H&v4_y{CTqS0p8yw9k|g=RZUgQFW&FO$(g_bW>(1U|FW=+ta)n%~xhA3-YnoNTNahgAnkgr)IzF z9DL$u#V#|nyDfWCg!SE!{dZS0w^Iq1^S&em+1@A|JJWifm+uet!j4S7^_vJjlw(Yf z9^1#^b|R5-XP1mpm78#^qkf$>OsO}gdZ)%oCA|6;be^Q$oZt33K2{x!!Zaz+weW6G z*4EG~UD|+Dm$QT=qUT2)n<`jP;n2L46fgMD*)pEFYIxn=nDuBHhK<-1l;3(0bCKm>KQqO%KRt@A=rX29Lw}KE=50X;k98EE~pq738F` zn`mDtVmd61zy+>KnC6jP9azaMCM%`59_0J<;+Yz6)@NN8yD3KQQpX^aH(^dKlTM%A zVx|YY3|CZ6-t?)SagOxumx$5|j>US3f68RIpf`Q2xrp1_Peai8bH2Ko<5;So^l)cE z%T4tn?IT`KKhF9u<5P~!jRI{z3uQAe3c9Y^?s*1&<+kd|5+}Sjh-rvAtG-S%U#fI2 zY169T+n4ffPTD(la#SFdjJ)54C2dCPj0kr#>BkqZx9E{JmjZ@=3Av7c@#miGp!_6E zFiloSvMr)Z0vF*)9Gpa?liDZ@mw`&E{4psQ$-CGphP&|9Tl}ETJrxDBHwEk<1Dt@p zrfEv`nN$58lFY3s%)R2_Jv`0N^yCbtZp^XRUH;XTH}&94)@Q@XbS$RHyKk9CNf|gJ zhE8dtIIv*+t$Ok^M-bWe*lElnoN*yW;&;X~x|in;7@{G4DSC4{(L*kU1u zIi4eVxW|T|b~2d^v^aWS11(Ua6vZ3AAo8)KJ?5>CY-Z3@afH0ntI)vNiHy8ltDQx~7PMGWla*Iy>iZ4(ZUQF=(}-VLg>_zS*qykQJ^ zUOA?^tQz_;7!SQg51(}cWd$MMor+XmojEz*<{@QP1+TI?+Ot!CZ-GAXv?yQ~+|@~u zn0Bg9_i{$J&x0HQ=uD%Xox_hl9omZ9ajgo^iN708qT?|Qx`_MsOD8Q?Uu)}8(P+>3hr-*UhiQA9Jz zx20|mZB@-rhIEk(i|(%n!H*bKc|wS zTyoyiGZc3EmPnajPdIheD{S<2qV9wp*p$d zPrOo#SB^FREJ$}$4&?}H@lnN}N{ytA3RPZ>6(RFbtP3p#t1SF61Srua{r#l-Npmwz ziyV0WDEw)G?`M%hoCFw~@ViS2wu{LGz6@qCWxAs@7+5T*U~U7v**|Z~jz4THpr3zt z9sO&BMN7O|q*fEs2xc*ZF%hvM=?~dX0{)TW6yKtbbE4qLX3%bB!>dGep?|3t+Digg%>~k2W83JL=!~_ zLaqDyth1`Q!=VN$q$50{Igc*)0XwurQ=gG(i3`6kCSo-F8>cF(3>nGd6wd$>@(d?T z3hOVAWojm6c$}Tx<*Y(5*|QO%Mm}-by`K8R1|!0MiL7)H8>{54-2fr&hHdbj)bZ!H zx$z>UhRLcw(MY0`%`DqL?$W7~lS+q-sj}SUU1qVWq=CGB{v)xvgu~pXI!26dwK)z@tzh9q#Ymme)&y5CPX1?dau&C40B5wE-gIdG=}V9#R+-FNyRz)IM#8`hw6!24Pz~;0U!s%V>t{uYd`v1WtIouL!n_d|jLis@4LBS5T0dI4s6YJ*ap~fAo4-dT6PKHdKu}RE2{)PQ3*MV{~KAe>uguAAhnZ(_vL5Duxo7S?sZ5 zE<*A#W=q87VVKVlqNGFRVe+MPIOs5UibM6e9HTPA$;Lm2My`1cr>brluXHuIJicni zEz0>)`t1^&siXnky)xo=%x%C`AWs=2N;OqCNSH#zshzx~RMDydv&f5&9`9q$RC4Z9IvNd)hea-$YWdhZ6>QcZh3Jbq-tcEaj!0u8 zQYN!SJ)4Li^%r(C(-G3b~s>4-FF zI3?idESQt8b0G6^tI4UR{4brxo#QMNk_G!l7W9?>56hwN#Qe@4fy8#3xRK@edGiK0jWh+N=H zNw`kCiDQCS!H{8?J<2cM7kvj%t}tr>JEdVap+w4W#$%am6Pj2BnJi;nboD%P`i2G3 z<`>TOgs&EgljtT{N_<%FRq+0`mi$e;zDw;EMb!MDm45S*m$!n3sUbvD{qXKcIEs(PQ~_hcY5q>5XBKgf+K)3YHY@zVhwx{7)*UvR7~ z*T^R|vy0y*#zQlFtO;ZvGZ^{UvCA=VpR<4BF$I@8#3i}45V)mWZ=R-1uTzdX7~0^<({>c+3Z5OvqeQYrL>DqimW#q+Fi!otxXxWo=pGA zxsXnU;_Zfc%4bs_zs4nB9z+{Q)K5eWH&Lm^-`*LX^oFC4t0|34rH?!1i*jmMlHI$od zzTGs8B|k9eW&P^DZdItw_fRO1>kJ$$aWPwS;#ryGTc#9lPZrPhG&E?_yY*-zC)?*~ zg=iEdot4bFBZ7Or=l%Gg@s`qV5zAF6wn93KC&sF`GXa83&XwfizXT@dX4mLg=tK!1 zo&{YcBpjZiJh-~X`sIZ1Q?j2qGzs+OsR~M#Qf_rW`L3_3Pp|=v<#Ob{eoxyj!<*y4 z%4rtOW5>b0bBQ1(E7GCD_V4Jch>>g;d%io>EE9x8=hAesl>HJZpFaSM)C8~c?f-DO z;4ObMIuXR(AXU+7yQ?jTlIk_@rHEZb*d@d`K@VvaLLoUvTbmX}MIABR<-;ONX_L@* zv3b8B(yO39|7yycb#t}2->^hU^QP%)L*Ys*>s`~_B-Sq78Q_ z(}JQ<;F_2{N1g_@<3L^>p#ofkmo0L;Qf>ZqLDazZ*uN8-Z z=<8!~>egd%CX<+1I#8FzK9Jt^#nDk!P$s3FvLedk#pL`ff?^MBXj!l-ew^Ht>U0Sm zld)2yQ=BkfzTEtmF>dMvYj$>%*L5jxTB=PX%BLeirWnzlwDc6?(R90{SsnCuPFKJHX4x;LazX@ zpS9PU%X(24(~mYledC5oqM~no2MW8dL&ZYOs||LfwM#IiEQbdEn$d0uqW*H>SAAX})P-+(>* zYgWbfD{_|_++l1}O3ysaATwju;uI{tc}K7L9EVay{9Z8034j!D@rJA_)N2dVoHgk} z3bXtupD09Y;5~TlQ;l-zx<;a5ZBE4KtHu>R@M{8+A0h=$Q*%PJvcMuqy=Z2gdb$tu zAiw1Bt%0~C@W923r0qWlV9SG`Cj}KwVN#xFdu>J!mA4JjM7O3&d{R}pUv}r|M=B$z z{E=qVYAiC9SNxq8`@IA@$VxS=0te>l^XM}<8ca9ST;3_ zjsamlQRp=9ebYp5WBxDV-a4wv?e7-_L_%6Xx|Qy3rKLMWknV0N1t~#7>F(}s5a|}_ z?oMd|(K{F5-ut)T_dREvaqhTx495P0;a;rutmm2Y^ZnEumQQ#WZY(u#wu+U4P!SkV zYNTJUxs{IG&2cD!%S{|zq(_^~(m9vzb9DycMD;v}r!RYcl!&vPz!48c2@Z`gE*g0d z2QIy*JBc_SA=6Cr`NBBv(|ZC{TPy6+7+TQ8uch_N6pG4HueSFkLElf%SE{gAS~iu>_FEZbaENtLe^R2j*P9T7}D)r^3J_Wa*^L3Ou>?_D$LP^TMVC z1UHu+Dv#*l@NO8~ceRB`7Dlo*0YalSdaB|w#vO-gfi{mFPfw#I_Q_6Kp2b=zGlKi9 zk-Sf$(CQAT(+%Y>ncZi3vQjwjlMQ4xVoueLMFLq9qHV^%K?cK!rNPR1fEyTZGP_C( zMr1zmbl$0L8H;myPa|0~yU~*+rcf_v-co~wqfNdo%Yo;+);cb-Jz zcR-n4w*_naQTF%waio@5`N@i&%U>Bh^9(pI_z=iOMR3RGJtZwrdLF4f}noa7Uf z5+!}37Z}mVbkAF*r8%%rNyGdr=bSW(tuoJ2as_Cy-x_ngR#6u9BASutANx37P%lQa4-|EHLpu2zma(XzLNlfMK2Vu^U?Oo2uaCi0T zX}Nd8I4j7!#f`v06k{$ISD5Ysc;mxMreo7}T!UHN;jPpaAZUoXy_#0x29bq4#C~|z zMu;-g?)W5As{-I`sIr_@ULr?ciXTvmPuqU(KU`_?vm!DXei_H~@Fst7fyYh8?$9_Q zrV-E6xwZ$}BnO}54G)}9%FrBYI{qPB3SGmWPMIODqiq^!-Y7eaZ~ZKnH4`t7A=WMM z!;hjAB>(=RTW4=hL+dO063@OAW&KM;0LoM}ZY@K6GL+J7z(_?|IrKv3C-wypPAUg2 zsF^W-P9Zc6!g85t%Y>ytMXi5$4gg;LcY2UTz{MYAWL0{s&*bE)$==2fTY08>%}PBG z<25$st>P*63ps*SHa~c{c9T8YZR0Lk&~}q77)|*t@m)f| z5zb+jNCTSoD-JevTlo^D^&4f(5bLFdG~~YHCp!gN{&LDoSmh$~cQ?YwI%&{XMZ~1Y zE6u@>JwyYbh7LS>M91|Mjc;1+?zUa;Iew2#vgWVeS5$-y-R6uT)4<)3U@)|$7g?*6 zL|z1uef-Gl`#NcFM)Yw<1GmMfToqNo0N<@s;MkU5AL17#h5>x(`eR0D zy;bee%<#-4?7cY!MuRW7F;perALsroJWEHwy*?W(wvL|)NP8fT>lurWKF=<2dJdEw zuX$~v7E(Yk&JA*!2Cu9p-91*O#ATqv<1Rc9TYPo_$qsD5QuI?2w?@Z>JFLOZ)(W5R z!bLtSYpLPb<{u$A}(M8e7XIl*4aR zPH#+@b(QG1BohrJ)(Q`@ke{SEI7BwyIgru%Kp)b^TfV=Mm<*g1WJL$wiW#T##QsE0ZWMz_ z+Z>TfmabGbO>MZ|(=iq9t7U^xJl!`FownP?q36Y6iL)i!>Z=9>j5i(ot_NM8Ej(ebzz*9E}HK-K8qk4Y) z7+Btb#;Rn^+=a?2TucwI9Nb`4S*cy}K%mMN)vI(7)rmd{)h%Pd{Zno88Dfqk(2F5( z>XI2GHv^YYc=KQJZDvMlg9TU)ObCmQ?IU=S1->E>#W5I+Ngm^l++h&!k&(GG4EtmElIY~kGZ9c^Twz|F^Jln_U&vrcEe_xabMgn;pb3&+- z96c}4PW-hz#L(FII=YM>P{GjGN_8s=hT9)CI?uGlo*Hvw;XTvfoQ>ibnzY2xUvPJ& zb`tuOcaPyomR=7$h-Cx|b+6%zB|iHb0t>7~<wQDH|9P`Qqo*yuf#5?^tI2!X0#LHNLr+hH}{T~08U1OJSPIH?X>E?6!#cw zYi}UaoLXi%p+- z)r#l%;M`mV6XJrfpgbbBvA0j8^fVQ&+Zj{~kCL+~HE@ed8X7EZwM#>762bv;`cHD~1Q zIr0|luiZd7b<_gs1oWYRSU5&Ykx1HB$Z~c(I_Xv`RKhiF^EpIwYP8`+L71bYR7qk! z_KJ7R%fL+i7PW}YpJYhyt;^^&dImKpsacT`;~VfMCi22vNM-|3`nrMO1{GZsC)sF8 zH}Ge>aVeSWjLL2$`&4lWEFewMRa9b|nX`+Wb4%%v-4p7b3AAIE67=+t5@g$2H!JTL zE5iHv$wz^WWk0)+AAFUsmC2@2p!f_{UQ)F8A)gH_)l*7NAXxy5Y0*_jA&$jF6U zVrVw{Sx#%;P_(s_Wwhe0$fq+>1sedKEuSsuce{1ahx+Hd}uHese8VDuePZ>)c1l;#gk!%_UnjqS%JZQ zFcC4ybOr;jr*{O;>@&uEUuG5*7}&q2m{^jWNK5G+I3cM|h2Vo$)++=d^`b`7NV7q` z_4QuSo5IhY4+FOa>b12C%d4h@^qB`s$VWJXtdMVPWEDgPkDs#kzry95P2=~r2(K#$ zn@$S>g#j>_od0|Igj2XU-x4@c;FhHZxFIQ(3EU+N>)Y+IKn+Y6KZ=)E3dpZ zs=^()5o>q&Cs+70@s~sSqm&z5L#Ox$*c26!h%fj)a<4th(z?~cniWMT-#y)i+&&Wt z26dNx^#B>(;#f!~t8iI4#9NvO!~j3$N7w&U!d>tiaHW+r2pCjeed&En#(J-#giYgx#*{jD9-(0BJk;QM+g3I|R zC@hb@Mn0gp!5^{(?9Ut?c-2Y+bdDNtP&7Wrj{* z%CuXTXZz17)7jd_fOoXa5pL6w7q|alh~qR8>i(U;vH5r_Uf2Gb|H-ZRV}}m&UH~t} zL;SnC{mqnla1(OR!IIVF9$OpHiZ56RUn2zR^`pbN$A^k{503*rKPq^@fOQSPjTdSG zJghyL_6v@LY>DP^lL@++TF@8+%xKU>o~mEnhIP3Sz=-K#mUV1X3Ol4}mIrLK@WLk8 z>OlXR;&or>gy4lMb&T{VcOw*FMti&fl@4G=+R`pL#TXPycHKkO!Lop!=VSLtSB@!8 z4-B$zmmA}!AnsjSUd-DQ;XGv~mHh}3#fP@>`sNmx#KS&~haXpSfG+2uZp@+(v8ROh zK(JWAOg0{Z14h+{)DR$)xu31MaNh@Z;Rv&0;b^w#8a%FV^aEJ|tk&#LZtwUHJyM4t zuMsKTf4P;_4=dX<#G*@=WwLURF_ZY@8Tn02CgeS9Kaw;%LD~eK?jpU{zJ}bqODrkD zZQ@<4E()bF5j&G7Udln4J&L%u_S;>yk%^LOcbihTPGmE!!f1GTCA%eR8$$gORK<9c zw;5t^+oX9z!qxhfi6m1UQ^lOo2%ny||_sGU&PEdIIK+rBN`I;aInP?i(3;=GhVGrzz zV59j0oDaPudky)M_P{j8lIo&<0SR>ORiGeis9lco077#?A2CwO%UP{bN3!W9&BV=q zJyt|d2osVOC+s`L56g}@(!b>aBV0&ZC+>E;t`J9Ks(Qc{Pvb+OtXH)e+tPqH0yY@%fKlvn!qC>(jez7l{I>Rh9|qPJRB_DhMR-UhMfYUR*VQ>}`mI_21S!}s-c85V z72k`R{==!y2MX&1SP)QNZ%8kA-1E#+7tS`Cx8H2Q{V6d=m(~`)u~t`SS1w51bBP>& z0rh>#hH?mC`;KqXI!pONC|`J>GPY$POpVlvwPH=cQ1m1Jg;J7QH_&Wj`wkty;TIn) zK77=<2Wr>a%?QH^nMjDtFA{}GEK3j2H*WthZz0z03QorH4&0Rf{%6=>tjNm#x1M{? zskh{}p-We>-zV?Y9{Ikq2{rmv^-d{AmDNNO!L`-RcScndX1q3}!7Qk1&#fljUyFNK^#= zM@gvuL(rz{m$9p)rDgc}eu}ZtZs;pgQ5mJXsyxO&8|eBO z=Z!LY3wa1R<#K>eP^g5V)2;h5-3mNyncXbgA7HZN3XJykiDKZO5E5%v-P?#WnqpJu z1wPBa*0TC2lY*!H_Q*tL5^GtS9GJ;+_h`QcWYr%}odBZIahkc1hNGRFD_&v>6TD(KwBA?H$%p z%n`+#K^b?_o1ChD{B+0pu(EUPGE5Jr2C*%At)lm{)B>-7Z&~Q$krNSy6b8?ayn+!s zA1*B=xw3RDeZ>-NEW1A*{X%!@1)i+LBV|i~!8)`3hqlJF;v&IlOkuPxeoI@9xjE5* z8F&63Bw6VXEHA4#kntDnJl*m|gktZ1nvQh6xNTi&a%w!f4=EOKRN6YU!-O$Sn$Xy* z2ib=9xCL@iI<}wQV8?rM5oWxZbq($!1&qOO33<%7RR$4>%E#FH$@u|5#K%ZpVY~{E z05^C3b*3S?PIa5amvOg}Pv^tUB8UO+Ae#M|)pK>6*Au-_A0AFnl$2PBvIV>Ka+t!N z1hjaB3E<1yXjwflGWt%r^HYLNrm-^0n{`~#Q0`Oy;l=1S9lTLo<9#( z0*KPHd?QHx)>Jc%H|}5$sMQIoY8hF>8p+--5Bg>X!t9bOntyVm9o-`zU)pR7ZfH^X znv?SYl;a?5ipbog%$+pGoD)fL zvqQqR@qtxW&AF&`Bc<|1`yKIr11|ETogjzOZ1Ttln+j=X`t=G1ozZ!lUsUoy*5sDW?G@Q6g4ND z>A?x_80XJlsNRlvJq_;KiDr463s{kjTu(&0fB{(gQ;RCW_u`Sd>@KIo%k*b?%0a=I3?{v5K z5=PkqS^0xQMD*NHzaTP4ETv6y%G zIV*^j)Bbk4R;m(l#UEGD2?!T|ye~n3$&df5DrdGy#R`|x-;K?a2I;S(2St^kyw=xP+7Rcnz5^-aOR`^Ek_TBAQ%nfpTs(JjYXi4j+3^}H< zA)gm(pt8*%QaRjfVoAO|m{&{l@8L*SlSW;rmp%qUrpggenf7kr%C|ODUFRs*D$akYQ?a!m%||H* zo7I0#jLy^1iM_4eLJt=f!JpxE#Jh6ZCCShNl)ucajG!<|0N&>$8@*RU;*(kAN+eoS zbFXRsEhZqBC;|J3TvABJyz|>?Lc1Qcr&QP76!LX*g3%jd1x&>1^2e^_dy#Nr^=UCg$vl2YPlo7FbQDtpb4fw6jJ#YyU(IRXSuS%hI~000%s&R+~+E@Uv- z|8}yrB@*v$cit&!{Sp6~MDKo&45_^Mn_c+7JCEW2>p#Iq3wR1pPNs=|p$;ju=z7;* zVv(e8ty5W_+b6i@(0kfU1auDAJd>P8wti=7t6=g9I)7~XGlWf$K$LGYC zboGP=p*g(1#dtWS6$rT13Gth?rNNEJ4yL!k&qU_mXY4>8nUIwax59D;l#ATz*(bBY zlw?irF7M$^YSyqvQUn>@3ZUWoQ`$4c0CExUhp1xyFi!yE9@sS&6ZRF8A*FK~ts(>n zt|S>i<(NlS{H4kO2*jYSOe>_SR-TU98FA^6BN+H)4JSpvJIMlh)YpWyt75~o&cK0o ztxbg`1$k7|70M*9EwO$oEC3`GWpx?X;2d^IM^v5yRfL*)$7J13?`hECsc){OfhgXC zNLvuAr(RMpq*iE6yM2RszQZv(tAfvIQUX%FU5zRB0`l}FIs$kIznS}0fSEq-?e!?j zC36+JoDJO5Z_MN*7(l4<2E>34M>N8(Dj-TutM4!c++s>qka)&ORPdS7Nx&{Jir>zG z3>lNsSpBGQz^AG_X&LuKd9Ks+-|yk(A}OOZF@28p{P;>REW~&kP1#Sy1DQZbw+#e# zg`g%lGuQKEtRz3#{Lr*HDXr?HqsLSG=o=GlPEGjCyqm5fHC$5GZZy9eofm2#F?(6{ zg0*mVfiR%gLzOHukV`wXp^$wv52?+b&8(Q@B?oZ!_;P(eW-|Y#a+MYtCYsxf37h{_ z!#OR?(a4RKW^hJaE9=6%R4#9iIVPFZmTQGh)G@^^)8G7f1E`jswCB&YZ%N$LV7DQ>Jd*igD9X1l#k zLC@0q0rlXo!1>Aq6HTz28N7F0^f(mpaqp2_oJsa%atZHVz*InFhlIrW5nKdNp0#T| zb%*WH&3PGB14}%M;J-_`#TtjQbfQoKxkL_OvrVSWhBmSBMd^)}5nJpV>8{iz6#J5B z%Te6ke(!IQTR*)@(y00Q?6S4si;^>l%B{uxJyJP`kR zFSdNze#Bxa6TllSr=Q#`GBJ9rG`5xJ4c>vEvK~s~E_~QWCU&(PUuV-vgltMpX?P#i z-wC?*5l1?Yv+Ee|IG52J(Zr1Vx~>VoDxtpZJ$#0=@s7H!5Cdl1Jd5@Bk;c&U(x}$? zNDs=;pbOYx(<{-`gv<=E{@a_D2kYuYNGhQOKjoUhm#42D3=kmp$i*=-+FujSOsSCD z%V(6FM?EkhQk{Ym9J!1MF>}VRFT438e6>@zU|08bI5DQB{|zS%RitfR#7+opVJVD6 z6#OtHxBIsG!yujTOA1Ig$=EuKcbwopP%r}miJ&o^4m0UrN_+^0dxQ!Pa25mh#p$E{ za6h<+qh3|VzK!{b3Fc2B+=~(<0vAEfkjE~-0o4B|*Bqc0WZGTyt2%{~<`k;xMLY0P z9^QvEitMpZ2;b2>Q@qRYq!-Nl384`Bzd~~=QSO_6z!#DIw;9!KT2GTqP^DA5Gbg9v zN#1Q=nxlqVyp0dE_$~O{>^Smps;dge#^Y&lGve!sQvvSyA8Kl$h*;FFB|?}N`e*B; z?jFkx#?I+60S=&_3*TlIia?=rbSGcyXL&HQ;$3pF_`JyJ>QLuwtuVn zF-C8qXEZQK_d)JeULXz~iMps#;86b?D`gv39i%Rk@W-JtviD^|0V2tF1`}m@ak2-eyz(GG54|!=S^vhfiX&_;2 zi2dN$LRS3)JZb#tgYA5udGj9W7q|`)hGyFW=<-$9gfu!K)oq=_mMv;hU+b-C(q~## zIe}5XwB1THQg0l5s{-(3#MYSB8GGMx6{d0TR%#&G{qyES?O?go9s5z(29hy3-#_kc++V?<6EqKR{7_eh?&Q*6`JtkL2QG+O6dqE4IC-H$ki(|3}A#zt7Hj6{@1&{S?3AE z=dQqGmlLqF;A>9N3_-KzHr(b9E@Kr?1rDx`hxRr)mcSdog`UA|2@CgqKe;GIgsAh; zO@B`9Py5?!!TTQA@N8o35=7aqm{pb#ZvbpP-y=kb^gW<;u!ZsHGP~MtxaZfX*;AwE z3&xvsQ6Id4S?@SOBn(bK=W2o`i>P>nZ6HVD@$dAUx(9k8dggXp@LXmFo>8uPlepVc zpVPXB%(h{34E#ktNs@u6I;Z?&UerkE+@D9M(qrpuf&OhWPqVt&;j=;%4Ii(aih&K5 zVyU(i?5@F?{KZL=d1y-09wC5%@yFTOoc085ZtzSs{;9!;Smvuuj>(cf^KW83U$=w8 z%RBu?zy9bmp~36`NhdBuEv@d4OvJYhrgH=dX&yX33F6<>Biysx#EQvK=|}gXNd9UI zp`T+GHs5N!kdJq2cqmEHj8>wa-3GxAGD+6y=LF^1{z~>lj+JCHEgfc|FHEj z5bB@!||^|+&~b{>{5WT$nriyIM8^!|6qL*~gz z^QbI_R? z+XNx%IIH9XtmrKoLhgi@0N;O_+is&+5DG7r>MJB&74)sjS+H7uScN;st6#ckMEC)q zNZIA{64AZ@5cmF)m)}1rkvAhb>1dF726Dgm7vnlRy#_R!s}#Rhg3b2JDHU#6JM%5Q z{7J<_y)%(#xS*-l6PoWsJ+(8(H#BwscpWhF?fqEU)j z=V^$)15nGLT`J_&GyEWM?q7)M7Sb)-ovy7Mi}vM|owe<@fj1wfnBya7v*0kD0AQT* zw{Abpr9}N%tBkC%&vF)Ap{j$bU{1wq8;2QuCi|Mwf!{qjhL1BxNl*qGkb|<3@Hgb( zelqC0f>40HDC?6#*?Di=%$G*nOED7LYcCK$?&N>KaGAzBZfc5qMOQmQIYnW1>(TVU$&WK?jcGpQ;9ds|*uEL(Q6RdBBzd zOe;nB8n@EUujxV!hFc)Ht*6zyGc!?>!lsfxgDZQBWdF6&ZgRVf>VO6ME3fzy|GzgMZz{}aD`qZ>&B_|0c^KIGkur_VFM z0@}Z=cp7C!8IG1?jlUCFp;zbLA$DU?fxAjNnpK%eg`l=K7_j+I|0`2cuFGpwCok7vEFGCcPOS; zzm13o2n~V>WPlwp5qKx!27$f8bwtl(Q8y2bMH`U@Cp**!{n_plYgUL~kq7!bMemJE zpdCmsIq!1Q(2mH6vUP1Pyvmr^N@e>F<@x?_y<1r-$-cQUX%}0aBY$OqtfI?g;!A#c zBHavJ89>w{pbRh~HU}tGYqVPNy(gp3ZmQi%LA9GC#VS(B*cQY7dW34qjRP|A8VVm0 zwizG(qB{oCI!N6~YL* z9=;R0REc|tK?;~#k06@Ybe8cSTjdw(!-SyQo@Nfpk$?Cq&sDvoMr5eYDDymkbcSZK zFKDb4Kh?1o65qbdtC0o)Zv_7xc=KfW8@%CP#6Ho3`kTL06)X#oG~a~+sTdW$fhzP{ z=2Nda^au2F!QfkeP!EDu6^AdEAk+)>su{Tmg&Do#ltH!t(0Qh0x#xo>r0U6m*j4pZ zwtY;LB(u`B_s8za^arkGu1m^A?TPb6)6JK4zqvxg&+*wKnbyA(8ivVxO!Qly9@#S5 zW748)@b*0`3Ky~m7AS2jkQ{P>(dMAd0n$8Uln?2VMsm^ zX1l7AZCYCc57ft{$gU?~CY&N3PrgX+HbjTOzwqf%QRjj@2$(Zes{JRJlX+4XrS+Q< zs8DDdL2?!WGgm0@SuJwyksZ+Sw|pWw?}YKb-h!YnRxlJ_<)0yiDLBXUGfi^65+X5iQ3PiB=w#P|NEF5%eIaeCD%^O+zxpf>8cHisU=$;vVcjBz zSJk~7puPcWq$dJcc(gFle7?lI2_#Iq1=8IeanZeeV(Vh!Sn8`Fl+Nn@7l|iQn^Cvq}~eyy8j=(t(r{Obo2MJ$1h5{C3>@w9E3T40f2t zVIXsY^zi|Ah0v>KxUM)HQ!P~$HT!kNm8K3Fpwm$%Sg3r;pRkA_HnvVN> z4u_^3360H!=}t+iE9D%kNHWiaG#7P(JU^q1gatx3_RWjw&vL3MFHlB-9GT?6qM2h7 zFCX^&mzcZ*b}N3{=<+a{^>F7U?eSk8rja2;ISG^;(au_5V)t$wF#zvzcYLfv;j@Tn zKYIXz($zIRP4jUH*$5$IQ2rD-io*hMobO6&G@vTNk7{Yn3jaGeCqDI?K%L?s%i%fx z$ypm=JovVtzTbu{$g=5320+Z>r+3J$Rw>hyC)9Im=gpwzKl&ko_uF>mb^A#V<&E#? zrzfu^nImdV3fb9yD5m-?fKzi#z5{Tae*w6Jt$zTx{7Yn&6uU0&&v7k>`kQT$DV2W` z4qI{hv!6BIlD;=%l(0U#&#sEILsbzb^Dj7ekh2Dy5@WbAZim96C&(XucolQLOsf*P zE3fOVc0!!88Bs9A&nOSUF#2!rgYfO#S)u6aoSK?v`ON`q8mCoEIa>a=GJLe9Ffe8ELl)j0>OeFq-_M;8rvc= z>cYJo1uLYm=Wv->Vn+vL&Jq(REjsIFk4q{(G@t- z50tp>I08N1OR$|ATfyMeXfhT!rHNjk`CJgyXD2^QRmQ`?xT#!f;yAdwkRzm7KYU}u zevZwD+)8J~hUpDawxRPferpT5h^bD^ZHDE4ktQBd+jpdihEl)kATDn#SAy`kUfM1~IP>&pv7)RMf_YATQ7jjLG#mFHpSZ`+Z*zn5ME zLbi6|+yKkw3A2<|o*e4En0m(%sfGp)AJE?Q?6m{>nquF@vUVbedCqi1+xnk`0XIk( z0PigtG^CE@VT>2^5u>@16=8$lxSObRfz~XA`xL=~ zGAIZ(@yVB0wP*Uz4vJBA(W67ap^*gaopxa6xp|BH>|l9^UJPTl<)?oM?usjqPF$C- z4)6Y~c6IhJ)>>)q&OSXo)ci2x+pqTr3~JYUjA)-KT>QOaU3O`9%@Z+pvHpbUFnGF- zUUi@wwgnN|fwu2+*v=dp7d5C92p_8Bk@}PU0QQX=GbGakxLw`%(Ol1L&X{Ra^x$z@ zg#xNj?iK_ue(Mit$F=A%{?B=y;DaDwL-e274~PQm@3qqSUNt1jf~jz-D){!vFGdaFZeb5!82aljtuo!!(?4^Wr zb9o3qNEH1*XnWVdTg?qlD=Fa9FMs!FSJavW4*~pkuijnGSdJmlpT)9vglsz2U z@!r~{Ic=gRXnR9u{%m2u?ZnpQJ|Q8uukM5o`!Z77N$7k2zP3h!@a-J}FG3?I7J*Yo z-k6+>-3J?oJ-|Sh=pRD*v_bO)tkP1g^B(r*g`pQ%g5*qY$oc#$*N3;Mej2V=19&_# z^=KcOPOykg7pwaL(EuJSMG$HgzUkX~({nAIE8mgFe_FU>=@zEjzrzu!mJm5A^%je^ z*yrF@KeByT*F*R<*~B-rKe}u?(>2)47&1hUkQp2XHW?~Se`z^{nrnB=D*b``(kW%FRB%J*GsZTJZYgjJ_E zxGGL3fg}__cxS&C-_)`isqCPMKe9fxd(=Dn+#JHV`zz=?00{KN+Dzk07i1t_M^wP< ziF3+78sxgK+rT4jPiY`Ig_3q}sQ>hE8xN=cqNv;*K! zZ}D|c^jh1R_OFl!Og^M22#wTszW28{neR%ZOy~*&Aqno+M z*dPefuE>oeiU$|ZBmVmg|F59fF}8;t916?+dqx>8od6#d9mHQK!lvMKhR><#UlMyI zE3MYB>9ca@A>)~Wu-unY77nl~o5dy1LRkqgIf7;Uu~8kW!=uf1`#sYB7j+ekZmLT| zQ?GCUNylJdRQ{ehg)BXrX9H#$59|$Xkz=n~@X^wkk|MJ_-}P{mwcWUvDNH^rQ|M}} z%wc0eLbhKBZTPGL1$ihb=!0cZ(ndrEkN3MDM?`v#*!A1y8|mA;Q`8UrkjbH7p<}eI zeiIoVkqlb8oWAjzOL?xD?PYRgYw0H4*EDuZZxUx~sBKgX5{)8Pdk=}A4ZT>iFp84H z1ZPe311QSZ-ari+n3PpXq*e{SrLpS-wDBLa> z04{t#lCb#Uiv|UmZ&pl8$h>~;9QgpmzJAYv=^Dnx!y^X{pG=!|GNJ2{%Hf)1Y3i3V zHJQ{S?mj(L*wqC4%v=9?P79kxjlCXWpv`_ri@U}z4m2NrRi_W~yl0muEqQ@+q2WLq zWGLKD@7^{5VRsIkB*P0(Rxx|*56aU2;k}T;)`Q%=uI82kv#ApVdo>H`eXGf){0d2qC-)NO*UmvP( zrvLG)>ZtWU+fBoS^@^18(#P%>p1=n2s&6`i+)>HeHeuiPo2Bn76EE)ysCt7uC@a%E z$bxgsKDE3(jtr^ni^FwMRwD*qWn&)tp8p*!{1_jKR9oPPQ4r9=<`o=b{yphuZ`b-v z42BZ|c6Rh8m2?n0pPXdR%5$B$ihaDaJ^P3SX{q5G4N;nzuN}V%1oMe(ks$b{L>09& ziv$}q+)LG%B?G>7`xuG~I3-?$y2n7C<@GWu9vz`D@fhBc!&i=>X!xhc!Ik_Q0TCH5#b2Llu#1 z>ObFduipOma3#`fpV{p1Qg}|gmgrc-G%rhI+>!n=QI7ovyC}_k$_kjHPRVvrLZWvp ze%o#;>>#<*gg~`pUls`Ri_$qVZ>|+$=Ql@NMQxZhOpcYoK=3}LK__lZY)cQJH7Sm& zaBM6bG|XQdbAOn!RCSi24{6r(aqvMkwW&Mq8^QNRX5o1~ZEZO$wM0=q=mNJzz?+%| z+>&|OZ&rS`a2H4>x49R{N%9vYc*ab~1p5lfEgU_wW9^BkN2{G_h`w?qy5xg|1R#89 z>6#EkaRXFC6xx>Cm_>hLxZQ(Ca%36MDeX>#0-Jr%{uIohS5&g{vwDl@7w$Jp`xMTN z&5|Fz)jn#+Hh4&K?)>I8WLEwWW{&ueFf%BqppXwJaAzG}Y4uvGFHmlHN4h8tqhm^( zKTr^XJ4dRA;!{KEi?a zqFr;MCrFl`iu~#cpaNHCyQvS!5d1y(TR+h)PwQz&<-kwZs5$2~H!w^1!;62^{E~CD z=pe2Sk3uvj?;HwhJ>rX$kORclxvwwt59U@pS9RxRi;t7G+OaiXN@Nuj2TH96zrAd{ zH9;gx5cvpf7x6~k1+QQAv`SM!qaiUonLhn6k}e1rm-_kT2Y6TbTFdD$KZyWOUTq;Z z$sK*GK}3&r;fLwmwh!X~@6N=}iY5oP?-E*`aGa0AB3I@DiY%9um6L5%=D4?w%2zu~ zj#V<1npOL!f3k^z^=Fh-+2+1&!d1 zOg_f-nt-#u=)QB)ra(yPxbd3_&Pbb@`n5NGQUQ^{U!r{yw86U6gTKw5y8s!(yw#6_6PI*<2Wc};hYTTPYD26?DH z+w)QNbj=86(5P-`LPmXH6rA48-gVgNs@Y6CLz_oLi(s`P1o|k7?o*l-!9!TeN=`Kk zndJvo44v9(r&dU#M`>r^oRe6pP$iGi_ES{6g@XaKfZM{|&wTHUL%)4)5-%AMGFgPa zL^qIz0!NYsc+Jlx{y;>U8+-CLkk4D|Q*cweb^$pEl?nnGm0u%Bo*+JCUR`P%&dvlXZO!1Ii01kT zWPn}5W$DaYvP&p;t9Ew9of5<*hZ*sf2^qj{@-B??26JR*4si9kJ?+-LdQg6IpvT(G zwQT*|$TYA9*tzmeQRuV_YD~qX?RUIrK$Eo|92$3VdNGaDi!1iYEXW}AxYFa(G;J2q z!|6`Y-#er6NLywHbVv0*nY=9_PFM&s&+iSG{0tuVS5T}01g6F~Ft%aeA98SwVx5W7e zFO!|GvVZJh1+BLfI&Y9O@Z9JYoH=+7DPyyGO_tY+sL0lP7Vh1p=Bwq15g?}+h}4dB z)kua*jx=v^8-plimem_EC+;gq1smk7y(%(N;Z=#ewGH#dor6QCf3$Ms=4bE>*F<&*q!*^vlSa`fwDVCHV*)+zQ$tjOu@^<`MKmGtG{Y_@2N7S=zAK&K2Z9YjiSmYV; znyQCyNMmx!S!lh@VYE$Nna=Q^-<< z<8w-!0>LG1Q2dW^ zvWdiCRzL^-+rECI8<$uOb}Jr#;s@WS+q#Pk--wHM^tX6$EguafL(~c={C+d%`|J)& zspbTmy(coD<+R(Xxg=7tD-vF438Ur&djbT>P>Tjg5a0R^wunq_XJ2-J7 z^>-qfufw7zE?7+w;FG4OZ>4DYzz8)DUpgLNCe zFzR*9A*yuoI4UR z59<;s%C>21S?he_h><=r>J9~U+@qV7$|Fs*&hGNn{~zu_iqZVjo6L!<^tBxkAWM{Q zaw-8~?-l}k-w64$iYpq%FHWxTbLiv@sSyxj(sqgDsmKAFeCqUMdKEB{gX39xH4p!? z4PG3HzFG2}D}@}!Fpm`0?}K^4_M<>5bai0=Mtb%Pxs#s7@1$opyjo34%_7ZnH;2(? zW&4gizczj`>g#32))f!Lfe^&8l{7GMVz^J_6N8!u#71tu8`JARxsnGsl`yx~4F6++ z%G@~2MAW-61PiNm7b}qq=YpAvnjdPo&dcz{9<4~$lc+ERai8TH2o0B|<_Y4?g%(@q z9{yJI%{o$wOg^EVce~G?^t;i<{iZHb2~-QlNvu&WO?UFX;fgtLqAAyfzNyGm0TrFw zA4m6^3sSm}1IR0i26EE;lsh}$e6+ISnP3WcW_o62uv2ZRVJ+57n|k&ozqwJd^AY{b z+$%VEznd$$@_L1zK_|*8Y7`aQx7v=7dSwa3^nhU}8Wc>!4)NyXBxnkb{^|guV7p>a z7=G@-$HVLSpSGZli-DfM#(P0)%aETS1Y? zT5-qKAVVM{(-1ihbA8#+0woLo9ZE?%=yFbv>zCGZbL(C>$i3}#RJ;gNKDax1?6KLa zRHN(>WT^kjX4iF{%iNY#PDMN({3iVC9*XD@Qiy|4q@L8YM@8Ye5AtFbff|0BI5Wq$ z-kPff$A+9LmI1<*Bj<97=J%eZa1PB##Y-Cbfalg z0%K~DePgNKqUqWRi1=>Q&hWaDlHPDC6?wTtF^0pHHoT#Da#b>B2|9{IgTJ105kP!? zoUowfjr!C^lOSWQ09lG8^Tg<$r}8}|1C`Yu)E~fH5H_nI-?g?fjRfua-fXdzQ#1r|X20F#rP_>?I?{Q?dSrNEtlK@p@}M|E z(E5__?0g+mU9NKVzv z_HL^3Lztd_yaK`MeoP4(!Hxvl4p)n+ORRzMdzBuU2hN-9cCdLzR)d!HvbWt0*J)H% zk3!HdK>p{Z#61$JRgvb})Svog|NLEN1VaSh{~nbX#^mI`vD5zuxkf+JNGnm4F4#MY zSJE6E7^^h)#a`U(Y%Cge^%pnhxhpp$Bv0iT?zn6k_6jtLz+OP8K7jk#zRgAyt>L~Z zArIVm%Bhi5KvAghR)2=Oy#Nm65@bOUPWCv_jec?f&C)+{m}=E+V(B61BG8 zDl?k}CwIl~V*Z1_s1hV0_a<`Q0A}k{iqq%V^(((z5*h}bCm%0K)0j#w<-&=f+p51= z75Vls%16Et%CQWVO6`t()<03!b%2}6}o0V1M$dVT?`eV;fF`e2Hl+P{E{-e0K0LttNX5t zDev4MxM5?5bXq%D{opoq3UB*K0UUJ>H~(;Nsh%-9+2@Nf^j=^Ks2E5s`q>{r^`F?} zr1<|5o9J{4@8TH#7jV+$+k1%K(t%x{zW@t#1K@BLc`-(PgDmea-pC@!4{wSfP{B#Q zxW*Fyzd@6Rq|g%$X5G4BZ5t=@p@=~yfuWAoL-ib`Bh(b^Y9oZcL6A4-ETol>%dY7H+EfPdcY2^TFN{7S%#aW11iEi-;ysJEEXFXT|g19e=<5|JWVt|8W%)%nqMIlPsv?P=Q z#VVGKU(;faU!D}9UozG-ckkQoC)2lBxRyY8;lPY{RSOdkEu!%D1v*1P#~R220dgH# zkIVI>|J1hfG{p+5q`tgTwjiI=wP1TSu?C_3UQSi|)X-6=#gV=TYBHPI^b^`%Nh$jV zPHFz8!;^gC*O|xE4Q@&UwdaaTR=#x0|6?vVfgIqEJMPZ{!rxjgOg)# zoqt@d&ou{n6X?qhS8k-+?hNAI+vBX>m%ma>xER ze<>D5cQ+(!Bb-E_^*OdIwIz4ya5uyuq~QEi;d}o9^sO zQ(ifDl#kgW+-hSl<*vt_DJ+|kzf6f2ndjL&XTI*W9-7!$Nr4q;*uG$&-LZF8yHbbP zisOI5RJzq0SZO->?i2m^$||w5UsMUj9V>TE7|Vnuu4NcnIBgO4>uOju)#W3J{OX8t>Sf7h7CFfoJB=65j~BlQ2diV zn|OwU84qC(csr`Uqx(7Q8Tplppvq79GP_zuad#qgOH@=rcLnpC4Ja}c$In3xDDWh@ zG^D0`QTA!Wh4ztS3FHSWyVtPAl7Ij@6Am&wZ0%@}yU3ky%kgTd$Ld{J;-1s_fV;S3 zl4;%c!$b$$XlNi|98>;K`3+3*O`$(mf0>5t~w&%{8wwdX_fO2UR zFEp6EqBZ~VWpGP(2`%OG$#fPS@`murwn_7@u1XnI7^lt|P4 z4}|%BP4=QBv7DtOCVfQNk?fB6!eb^|8P~_s49P&YF5V&N>&6N@I@tN$lCz9Z{#e3! zsdzpc_t!a`u+kUoO53Be?9b0%fK77wNAvWXANa)%ChN@;xv0`r%BmVMie#xxTXd5y z@R-nMB0CQxu+%~GTfhv}K;4UYHTD53;`jBPFZe?p&Gmf-h%bX@@X!?xMhuK#{V-Qb zkoaU$_yIKzL&s>CBKq}aM?a7P8v9>zR8GEYLp#*}<}8(p z0#ov6)uP)JIZlE;qIf*-2&LUc5*cvic!eRc6YR%>zG&88* z1g#O8;0AUe)NW?#*}OB<9&Y11pGOYIbObeOt(n zSo7f}c-jEp0N0yW8Dh1Z09flpfmyf;t$_YZ5a0$yql~pgo&w>Ps?4jK6U%3FC>CJ3 z`hm$hh@+#)v1ofFibG2Q5RAex5{qt4Ozpn*n zZZs!ZP&@1Eb?$P&(Zpb!CVTr|Sp!E=oSo-UQAI2rWs0Zvp{aELqdt|KeuckWM>*#=wj{ebkvWZ?|Jd=l7Dw!|@g`e$1`pX?pyX z6alC|+m0nxfI$D!w&h~%M{JT=3rQi<7d0pQQ=R-T)6*eP@OWU!x|Ov4`vLWXfodAE*C{9{erHUO`K~A{(UqQ@9O4jNG!+bXQRB(%CF0UbA%x_fT(uKc`cr^v zm;ULqjh|`rO}><5pQ~D)ymo__95@AV5@|92XqXCaQcG}Ae)xwQV$?u2Iqo|p}r`J+3h}3E90cdGa$vujppk1Z#94QnZT?H)U z2K3iSh7>vZP|zl3{vP3svG~Bh+W3_$uV5;t6 zFGrq_d}hwpD+K0ZASNfn<<7J;$E>k9m&(oz6Yr&#wgslB!c}+Z5%lMeKg}JpZfoZo z|0YC$lQANd*_1#z+v?Oipi5o@+G8cqlNM$N16=xx!jB6@NV@v}ukhp5{8v zAYll!<$DI6?La8mfFj@!y$;IJp7lA|^HC#vlfsaQBnZ^S%+BxX<#fyv`~KJ@r_*k{ z>$@=lUcgkJGCThb{ zSyiw?AIbI5MG$^0{^W7Bu+n$fNkm2ei_57#AZ$a!{!5X*#>vHc#lY-z&#_yruwbFf zZrMbp>fc-TBlZox(KSNuLs?pEox;t{$JJsI&aa-7%Y zO70?H6f((Ub{fhX*yjI<%km$Q| z_PA}t2OXMQhr_iThpw~!^5W|T(;wyit7cP`6vI7Y``LL}naZgUWP`_ed2mL3kZJ1R zhLQJgyNm`K%-w02YRW6UfFmt&m%~KtB`&_6w{jS%tAYf>ggMnI4-=I#g44*nqvx`G z$82#QE`f0@qhL=2$vsnC}f93Owa)NtVA)rbi@2HrR2oUXpHW z%p1K0Ump@r!c+O)?)&ilqI0&vPQO+h{}&1#uEp1~n++cN`|m5LS{ID0s1bBW*x8HD zOk+4D?0sL9PdHYc{x3BAC06~2gb{1rT*3JHq(wCk9}hq!s6{l(xBufroVxR~{`UIQ%Eh+R zh&XEO`Z(J}pRo^e0O8qCyuKl)e9QWrqkRKAU)QwWEIfXxf$=ZUoU}lEZ#u|! zj~cx|9&%ui@1hx4SRC}}PJazO?3o;bzTSUM&En8zjo2Z)_4>D6vx(Vi!(pn0iLANd z#qaq-BQa4+S|j8Vy2M>w!FaD1QHZwl&#Hode?HK00HTs8!m$X7PJV3rn zdSKr2jqTlQs%_uR=ZM|>=3d8V<1=Gr_Y)x{E8?;$qEm{^-zZ5c{P<_5tK68@yU@=J zC1oQ$U(eYo)F)n4pS?n;ZsBMF8q6~Dv)$fc(Kxh>Et+??3ymDtZowc55@N?RB6G@F zHe=A@#mj$ggOYNXq+sZyW{`lC)Q9`1lV~csOmkB4@Is=P3?G&P_FCaqiQO8u^p2=U zDZ@_e2$iU~vX7YyZYGV-T3tiEEcO;l-2<)``vEPYc8@?Ry3mTS&ne~03XjNOVNcw9 zC3f~z_K&nKP0}8x*VX!-qI99VJr2G#l?!P9`xgy@B27~HnVO%O67|?Me$gtwQtL92p8?!~yW>&iepPb0RA zY9#ZO+0ug7Frwa+p)c0Ol!{i@L#8gYBt7e4C2|GGD{me9Z%ICWVL9Cud&Y`+s(k zQen)RwhLkye!8meI`0fqp0kx^FeNIq>q0!rE~duwk57>Mtfd*7N@0EvW*wLw6evkE zWoBuF)Nem7cfcT?GljT)(#~v7*tigXyH%KJkcioAbf@zF>SgM_TI5m!^ux&U{F)9s z``4D(Vj-EKet#pQDFF)Wnr5CtR$x1#(V6YOnMOMZ3>=H1c=8gY?rE2SGnZ*A-KHF! zr6Ad}7QXw+?RiK?%Gh(3RsJw93pLW|e)B+h%HWF%-7In!!N9hIyDh0r3o6%#dggDl zVFuqb-F6Y+oXRQ{_*_cr3=Ee#uMgc^{H(qm)U6A3uj(8cUO1_q?=_o)+6bD9T^esE z%Jj?1=1Zxh_>l&vX?Bqgj_umjHXTi9ab9gq`Z3NnivomWVC9q^h<|p=6dQLR$D}$c zL0sV5dv(-=Px9*i#!zn346p!Ucx2q@=}SK87!C?G;LF1~j}U{22p^#--J3 z_)$i~DpLGPP;M&%h< zyGAix1MA);(57?jqo^Zy8H#L|$d~v9hjbb*xgq7%Wfp7v_i>YC@f#n>l(JB5BmK+1 zZys1_{t&{)fn<$FvS*p#D1OiG5m&trlSaS4xJ`YQPlPAbw`m-O&oalyTH9sdt+&XTeU>D%d}S9Io7hf$XTS>SLF z`rcf6CK&MYgV;>1WIng43sVF?9+>7zsv_+6CX11hi?p3^WNveJeS`Eo@wY9BE{vG+SRt1d*+r>R{U}^ zOuOd^MW?%ac41+cbwP&ev|cnrqU!*8IYpjC=MEM7Tvd$gbtu6WYt?c(xavUf6D>i!^SiOOTi2Mw1t0iZJ1Xzgwt=TQ2yi4I=e-DuI&wVZWMm!wK>OM}d}n7LRPQ{gzIBcIpQ>GV#|eu=hO;wr zigU9|IO~^8<9J!lKM zy`xz=oU;S^}`O?|6h552V3>|w`;bGW2+|cu1e#TRz(XNvi8O^oAQ$9!KDJd7;*AH2eO&6DxdI+O6&|@ zOx<83JP^4i2Q1{A!ctAT4?Uhc0{sLjQLVQo4jTHPnTT0BJ9nGmON7M~@1P5vxQPr1 z6LQk=7A53vl5`koV8|(c?>->$tsW$qzfG<$o}TypGKX-x5}N|D)ZM4W$)S zbwExrpBPwKErAMi%`+kG3MWs@dY%b?<)i~wSyf{D`qlFc&pR&U=O?HEk$v1w1joBu zhW^1w_RU3!Ay<cPOyl}l z><-Qq^)DKNL-rTW*CquJCyLp;nmP@-GP3hpUUp|YO=DT6|lWVDytEiLXS_}@tByI#8%+rRwXLu!}4!>>KdHEuDycR z_C0b(iKnO&qy648t3En^MQN-dj}!q5ewi-dkA<(TC6DxRG>b&}`PiBh_q&tQEG*J5 zeYFt!$sKC^5t<{l{=$B9!h5p$^Oc#u;nSlrR^W5#K6V$hT7y$$`@(38e7${42QP|} zCThMY#=T0I%-N#xT8H;=2-aRsJF5{os2tsXe6D+P&_n^F{o-$xWg%uAh|qQ;fM3cj zfN|t}+Aj!D0H=cAmrvGPy&(D6sY&G}d(M(g)&&m8N}QeCg>ECa&D55rtXz+7E6E+w zv=zA>KMaDXUoUmT1$1IG6K zPxQ*KIG`g7bKjFKk+2^KU~o0{Q`G31`zlyEzZMb%o*dmIlGz)5*ecFBXIb6TdviYa zTzTejJ3VAr_(CB)*f6m}R;JlukqI;=f7AKYI79k#s$As&fu9j7T)OWB#KO&^5j|zR zky{-gv6+6f&!T+L_9fVHQ`vD*f?&Q#(`{Px?Y?(rmtb}xl9_0qIyqp}U=nsS&m@Dl zG(X|`vPB}aN!aU-Yh<=QEV(5G_wjIWsB`a@yh+w^;l%tidiEDi(N9@_#<1ht&Pn3i z+E=Evl#d;^Cr;h4sga(rGevG8%ZEzWvugKEP|ciB6%DJU5&j>zL#|{cRJ`gV6?O3eyULF!!vx+%#F<}&2wev4 zz*j+_r!P z76EuGzsD=(Z~Kfp(BSddg`ZH;Ywz3|J$EbfEE-c%6pW(p^I!XZvx>C(^V!R0+}V7+ z`z$$Kp2B;m24q@+wH#e*Bf^qSN2#1*0H6v4IWGYwL-I@A*Hnr6)`vSCAcyE zexH8M{g%tS%{95{-%QbMx2%>2tWpy>_w=X+I56iAKZpHt@$bgmZ@63@)FjeR;GxoG z8sD9+f04CwpAaz{b^D9GXLZeX2sh-JhTu#ldMjg?CIoUmJX9_uBa5&vgc(i8zd4YH z<$*blSd97w1#MHnyR8%5_;NHcBUtPH?Sc+Kh!}rVUru)O7jmgA432(8G{1C)Z}EN{ zL@sCCKN%NxX3KT!8PdjJ^rsf+_GOA zDO*Sf14!-q5;Tdtxio8eEG-SGh_m6nG0e11_(4@iHFxifuVNdj`T4VCy!!(}|} zv5r98E}p(!=}Ygub-wlm!7P8fTp&vg0HJG%n7a|-;e2$bHZ%oOI!Dhc0O-ui$(v{r zKqOXccd5wFT+q>3DH!aCR}@_(84`hhOj(1W>H$f$y9$=iFU%V;-HG&=>zad6P@m8< z@Lmim`5}Eg4k@bbKsS|pVeJ#gw@XEU_{uju+;#GDzoz^{tex47H^5w(Gz6_RQ_mpRbq-tgM7-`De z`Y#2E0USwhn+3d?iU!Mt1j}!PM$EW}1ek@od zt`O6l?{(K|<4-#}So+B8?S}z$;q#&c5OMzZLD`vIosA0fjqAY&cZ0leeC~oG?|qEj zjxuKd1K!YEVsAQ+LMoE^-doWvwsGpCHc#t#7hoalx^ zYXxV#Q%0$oi4a0wnDcueW74W4hwP^repA*B=1*z)qfYp&$e@IcQ|F9JcZU7^oQao~ zJ&S73>$kmw#st%HMra~21x;p=Sxk4hj@Du!P4whkmJ;;OCd)?0QW+Ey01 z%3AV{Rl>DtiI{Du(bZ(Eb)J6pGsb>v7{+g!lUQ)&ux}xQo8w49?b{U$X_;hK+~OsL zmHlxC%)MQ}(w0x2ki}%bmX63Nyx_Q^((5T`NPUs;=jS?Pi#nqQe;EHK1!jNU2rTtX z0V|A5M55J#gbpy+niiF!0CDbx-JjoHOW*(NY)I}uRi=p}@nRH!U{eW$6n^xk$0yj=mmT9kH*ZByw~dZe+uWZM$#hrZx7;p57bFx2o& zjcZSuMEK%ex8R{5Su{@*;^E)R)SKnsW%|GO-iN&u10=Me*RVV~*>36ZfAi=wjl_qB zq*ugpnvwooUxz-lYR2xSpeQkIXc(;=-3p5MdT1QUD)~jnsv{l;a?v4!{_no#Q9Hnm*WQksgAB52GRGH14ISyhmxg#lU#+IoK=e8gV9!wv~<0 zz)kJrjk(NDLsy)u9zT5JzrvVxxS4xV5LKIe5X3^U>Wp(0I?t; AivR!s literal 0 HcmV?d00001 diff --git a/img/ex4_hosts.png b/img/ex4_hosts.png new file mode 100644 index 0000000000000000000000000000000000000000..f8338c6dac6cf6a7e26fb889911fc0dc4a0c0806 GIT binary patch literal 24490 zcmeFZ^R=4loMxjch&h9=q0newODCj$*P$W&r-y^LK zx#lR8sidOJZ7mOz3)cs8gw?UZnhJMq?9scc-D9ErW?Wb9zmz&I!=5{D&fzJ` z_kEh3r-!?YFS7&X&^fgWzFAvE=-QGlChf+)xzzl{ z;>8+m*SM}7tccE7#SdMkMR$oU_lvq>jMq;CQ>gAgKRZQ{|DYnmq>dxs3ddQIuTRWm zN09IHfkem`FOdxL6(GZW6!|`PlpOhDCWkeEKTrSvSO5QI`u|2G5J|qZdK@Jcqm;eQ zGNn?*^?kIJoa~K~uF%_-N|Huce89}R zloU*Jcg`J=5@3UdZ`K4qhBs$c2s0(EMA%o2+Sysxj@e@>34S}a-PFmLe0`x5Oy2hR zUZRpyOS-RkMM+j+0m|kC$jtkptS$^Ta)iizTyR1+aX6rJZbOOvyi@Jix`!Bi&|96v zPj)cs6HA!X(>Lct7V7Nw4HPX?Fc=J%p=1hXQ7?lCH4qBZQizP0H!Ho;IB~sdr~i9# z3f*AmXkSKSqp7d2@48n#dTL|4koZrjV1vf~(vf+$+L^5#HM+ouW4emNk9BsoR^wWy zqr2wloQ*5|(^(|iQR>a0@&V?f^MbYWCypNR6k{ZeZpgdZ?0A{8)h#{4(OJFYp5m$< z8~#0zeKt$PZ7DvIQJfQoPwTqeIN`u;$@X)4O|MMBtf_V-VTi9bGEvIsLD$PlM%9tD zM>`WAYID9e6yrFY@T9h)v8wMX>_!D`8C;7CWLN_X?tqnHH)Ote<^<)L6VL9jz~H`X zao#R2ymLNYvPG#(1H@FWKbD=oPrEIATDxuRW%6p=XXEbjM5Ae-l+@?@?;q1}ollT0 z^v4Z1-N|5%YR!^jPRG`savkK8PgX1Wc)e~_tlIdV)hkmq`{e=GIr&(n?9E=~>sQH$ zUKr>e3zX7lPjuBj&Kkh!YBRxtl4|-vq4Z9@?b758EcfE@G?(J{Lh3^-Y>-b zW?n;s1o63ZR~VzX5>z-}eZP{_!I{<-N9b%(A#}zYKO~HH1&J~ZWg#zit<1;CS>AN6 zPR8T${ey$=GBQ{$oj;v@@2bU38jxJdGtV?GdmIh0k%cw5rd@W#_UzZaJwIX+5*ur4 zg*+{#1(%UCGIPN~v`@FUQVIS$lW8eka|5HJ1%ZJ_pp`*je1~Oh+st3yV^Vin5Gh`w z8;|`^&Q<7s-F6@Wm&+BagzvrXmMi>$B}Ij!O|a(G_qV+ZU);^vO`}&c|93@qO2>->h9^-|C1m!MU z^yT8@692!y?iuq6E&2?_bW+B4QfBx5Sq0VnF~u9J6!BbIyRZFnPAp+!c-K&OeM0P) zGX||(i;XahTgbBYrr3;VOn42ieJ9>`zjuYAP=Ccktk^}wZuyK|)kz>)kk5#hn^lS$y&fAk9FBQ#)Da0_2yWET8w(W73_+X@4WKHKjTg$)hO>ySg z2O9gGr3VseOak8D@MqE!;k*mD8GEL9%cwg?ZGWY@#`A8R8B2-DxM;3}c%81lcNdTB z(bP%(MEA`rOIyOGHiTUx9$mL9qL!$&V7)COa?lK1JV625~mNiKexAE!qTEp$FEgDi6PO@3F{T^3z4d+r#<%>1OQE z`bT2}vCEIg+-i+RoW-(5S4NAFzp!0#?8_o=`gK>vicB3O@-RB?^HJjhT{xb1ujN$t zqT6PEsN!y*+b4&28*=S%{u|%-cHEnHZAiR}M(yJ^9l97lpa(u{nGE}AY}GlbRPFnO z7<`fNUBk;R+LOGlk9r(vZ7Sd4^`quY`bA_pt~yq~ZHud%Phv92+4t%*+pcetR?cHD zN~RiE7P{8!ty_sfSGg+2ylFp;X%ph<_3m`&6EC6f+xMFdm}UrxeLQGRj}hh({CH#7 zf2Wh9ac?vK1b#Lo4ztCxbj^E78D7cX*6^KUYojFg`n^@-+Slyt(t0XxasIxXX|;P* z*nCJ*CD`IeaO^Ewly>mW>NaMWmcuT|d|^K830R#_>JaVJ)Y;fWXZ`8k<-L2=A+ z-=6SmyD72n_u#g37JjMXEOv&DYC+0D&VQ}R4nM3cANzwO&D!!B$N7#HLC4TC^0S`U zkhrcsA<1%;$pCrLNcI78>;i~S%EW~pA*S&HP;EnbJm2Eubxd&h?0lNNVR1!x5_Vs# z)D#g4JJFaY4R$nhk29RbEsRg7bAfIB^cM6aQ&i%k*8X<>wwIe#qXag~&dW@>gni+9 ziE-{|iRs(Mk9Z@yTd%vvFI=U(#JzBaE434&DLInkukWrdy->GdCx2_KMUd{N@T>O| zS%%k_(e4h08L1Z=_f~XkH;Y2H7KiT3IhghrB7KcI=)K)8x{Y*qzlK?{X0tBduY50b z5C2Yd^GCz&xzWfeBefI^C#wHE9Ob-M&yM_upTdSyob}v%mbTJeU&5#ArJiSZJjtnbV*WtZ&_I@NNPwi15LKHLcx&~~=oKZ*^xQDkA-E7m1TzF{fy(zS6T6mU9#d^1|G@QIt$KfXh-8FJJrU zSL^K|)Eh8ZgzT1(pMS#M-?5DWk@K%n-3o|M=wE%K3f~`9X*1XJ7Ey;>?vG}r!b_L4R?n@H9v2eg`a=)6(`(GR0fMzy0@L#eo!in__1f4GL_6w+qX_a zuPzSySL5k@w_9WlhRB^7F7a{;GQGf*fLu)YuLqb6iTj|974c8oW^FpY#J_QQRx$JB zjsv~Yi{xRKsEb{vF=_U6sh;Lkk5CZ-;Lm7%4f9al@$N(0#kFONw`!uBTbVovLHy@m zZ`HdQsX1W!)>lG{^~P z@05R2aBE5X+V6ohqg$r_JA1MQjkZ#0gf%w?y7o8qOsIY~(5@$F9toiwQ3w4TQsa@L zId_~g+n|D&zrBnh$t9Oo-&)r}%~Sms*Bz;UANL<0y`5v_NX;&Fv5$IrUOJ=iTC&Y@xol!Zz?0X5_^~5X(e~)SdHVFc@ z%WZyN%-j0T;PUYRFDXRem%)Z1inZxa=sa5gzScBtuSamKaWW`o_`kjNk!LjoyevM6 zj>@)eGANSNLi=^OxvE|W{wBUXs&XOv?q%&OPGKmO60km_Xxw~lRZ;hDWk7@1ggs$e z+8Z|5=>N7pXJ_Rquutx6N4u_bpUp&s4>2M0_f1>2D^co$2R8AV_1Q%nhANM5c5qp8 zBG0tWM`giC=X@3WWHcM9>`cp`kqDKY4h#?jQcX@R4I);QZ_3F@sy-M@cpD_D? zuqza2ept${?rpDe%_65rx8|r9HrCtSwzcOi`vTQw_Q)-vm3}JloyH?#@Jbmd0zXzBp47Z_y4j;Sy*|Oj(j)d zAjIxfxh+1QDH0KT*~754iXLS8IqfqXR4t#w1kN08b)w|yDN@c@rCVviCkMdAoJ;jq zB^CPJfG~ch6$%HgZae zS8eoPx{gZkK@Qcjd)Hz&hv+V2hnXA(YZwS#6NVy}6p!WARnjY2Z>^P)ia_Tjg9Wp* zmfJoO*sU$wjoFTo2H#q688;TJ$?EIt4XW%@R_eD*mPaa-@7}#@P+=3Bn3(t*8|i;z zhwWHGG=_FX$J_kxZ~p9<@*NK)&<5cn#Hb-M7`^X|$JiNs3lk4Wrr)342fiyS%lMwN z@)T-O;{&UYWm(BnyjQ9h7Zx;_$+}A)wwC)5ypY8w5Spy+$`UZk%L9B}Vp*nyMct8V z=XWsdCa$W{c-4P@$91K8&Y&Dh!RaW; zVk#4l+rGZBL*4QMv|Q%~i;WAC92)f7-f%lh7@O96<{1_D$s6Xei`N&ad8;N9&TZ+n zcL`vY68uO}xjJB}(rt!?Dvf#Kyu7?zwrAonU(R0F;-?)LulL4&Iz~EQJ(tQxf%&HQ z;BTaRopjYtr*NG@y-6SZHCl;;2xoEE7GVA0IDbC;o}1zf2u01~N8tzl@t2)WX9-t> zY9k&9ud2uF;XfG6muF{Pmn#MrW0ZL`G&NtjEstb-uh#2g&_$XK4ka6Q>TEf*!QgpF z?9|RJh7YE_8`#L|4B_f>`=GhwrF7+Ju0^qjSZ8(ek@U~8N|z|ZWg&ors0Lyi2;<;! zjIbCWVs^XQ*glpW+rq~g`!+_&g6>;v`P;q{fwOmN_V;!w?8ihZDl7A|vYHG=Mn?L3 zdovZ-GoJ_-j@7!`0wWL}$Gpu}j>>)arauMWHkI*b>lh`KAqxUSP!QM^&Q zgp3b^Z+ODTv)%**r2f5?LTku+Qx}b2r7DSqz=s?iA7g>WHg1Qo#lLIQ_*Va2c>y7z z0ua>4#&(Y$Xf zjqrKioQV}Hb9`LPWYrjHbSa*AE`-rbp-WbBBByY=K{iv?{@VuF@m+6ZhR}#~{}r;`8^tiO1v#n7m=MwIyj%Vq&4xrdK_ZHwfOU zv>Ppd)W<teVCUnozUaczqc~$hH}T41LJtR-5#ViyaOT;a=Q6CwdMYc2 z8yFbK*}0s0dfT&pT%$EWu@_xrc)FR>sq%sK(6OE+%S6?8u__#tQLO^Jyy-BmtuF&L zwK{9GI%n)X!K4a_{&*$!5y`KApz|HV;_B+)uV3kArSUw~zt6)Cbs3l@!3;=3iW2Pk zM(zBsqjEVwJEgMkDMEh5YqLjQKv+0;rY#Qh-&vk3qkkBwsk@h>%@){oTAU zVnyjh=IC>zZJ1qY+iP@?5fY4sDS&*PYovX zzdj8g66`npQ0jLN#5Dv?AS$CLfrxzqA+X)5hO9&Lv?Hd#7x(^N+0B?jVkD z=5+Id0K)_8cx-z^(j$&nrRV`{J`BQ7q)w60t2;ZF z6*u5*TwPuDYi}pH4m1=)f)7$7>49)YVS415DyE)vBnqIztj;|9&-F_bBpkSL!iAf1 zRdSZ(%eAY+R_B+)Csxze<%BZy^!sRngME$p0^_^pVmmC`(3(5#8NNdEdF_m}4}Iew zM12J#WV1S64`PY-p4c&Qb#waxiLf>q$#1BDVQ{*no_=VZTpTE90LYPEaSE2?z7fDyS_re0%b4|Vr2eWQB5M}GBE>3K1-&kI~ zL5U;fUy8Oy4{#e+TDL|rfE3ltCffF+(U!h{Z!;gwwFDXEXSSj@ar%DAg08Dmf&aF3 z2mDS*H7m)2G?M zmsx;)vG+)daJUdOTOdx70t^RDEp+Hm)8fAIVJ1Bwd&y)zG%@{Hcu>2Hab!?!gJ4@y zpCdHxAswwCGic--VPI&;RhfG9lM7TM(gTxuNCaAftDKMhY{;-PqDMG;{qB0($VbPlirPnDW2RG3=_25a zbfY+ELxO#!N2(o{cSXjM$*m{mD<>o`&~j502%KAnjIT2xxdYq3r(LPQ&ld(MO&chj zNTnn_rXRT_RNUoK8`E+|a?ZDNlrMW+y7b}~;G9v!AE@k}k9!(a8%10t+ z*HGbPhKh^NgC>_)&mYl3f{w*=j>0?n;uNQw7H`A5f*>3H547K1nR`O3Oke5%FBMXVZ%*2_ZF(r+~<~Oe@!a3m8W;mWH zV2c(`doCi&el-3nGC9=L`y031FJZmvovMv~%sBN@*QRDRkcXixkHQLRM+!d{>*RfG zW7CUhqtCXJVlQ&kIZn4YMrp_pVA)iJVA=Ai9f$NfDS}ml%pM}N%Lt9aaY&eh4xvr6 z0F4TvkvR@ggLj0qLujWE+BrwPeNKjhcFeF1w8*$Y!i5ff2egL>4XLnc|0i5%%6C8` zumSB1LJJTsR4Y56`64ug=du^Vg^~jok^T<&Lw33>RJic^03$;4MfgL?3S}?`Q^jFB z;3b(Gc(FX{Er~y!r@@dFp-TfcF6{ z5NI?Ajcn?@n}7jAtB3-c210}76%_C~phWvawJNYYU9@wq~5FXwL5S}~K zsw5eDNg&hjAkXrNpM}Ks)B|CGAhTuQ?nQ{y@qkBC^yrgc-hUu!9s%a4&%z`q<>+-J zzdZ4RF@d*Vh&-Jj4;hHyP1X-GvxB7@f~Z8D1;my0oE24u9s#;PiM%I8uXFj!`x>(6 z1HczEOg$%3xKJYKfh!wD0aY{+WETRiGLsaXeV}JZ)VwIeel!A6v@#ib9nvrFE6JY^ zgeV-RrGlQU0)-1nf*$y?P!ybvCgSISt~kPklYM~%U7Z3FBSH!kPBspD@DN%Z1JXr= z1llJKBsK~wP$GU3gcJY@8N{+g)I1CV8W9L1@-dTGF+K?GW1+AjjV9`sgjT9gg<*Cq z98cAg8Dv=1C&0K;pK=s-CX!Y;ks-VhDwFO9ljc1+^~91aIG6p7qa}HmlrLz-Ct$)a zh$ZJjhOjfV+Jlw9FHNs{{Rz5=?hsIko?lBL%n0g~Jm9Y$cD=P0?9 zG%E?$Q(hTy77DI#h2u6C0*TTm$wD;csWVf_pT|nGAFY6$?p6aUZ-Z0CBu5jE$r0SQhnYa$@AoD0+h5(|*POyqiho%~H6{OK=IbD2E*(Sazb zlbsH@Z%E6L?Z-s7E&8N!}0#d?^cE9@Ed7qVRXJC07UHX^Ws zizJR7mO(7MzC_JoFytagWiHp($pz@YorU6Zu)^_t5W#eNvXE&yu5-FY2HBKcI>KpZ z(!W&NkLBM@5+r~A4vgpkRKC@zLYqp-gQc*{5Q@Tk$KbtL@{lZq#7fZ$td=3H_JuY% z1+l1$5;d2ShkaUtE$hEF^@jr3G7g%umSN@f22KUSgz4p|k7A#yUqjwQdUp<$hBj6~ zQ&*wQ2GSq#TV90WEcu=2&j(9Qvr>e~+~{Ow_a_+vn*$QCq*WyM93c(cd_`VdK$b-* z;ym)A(xdVN64IAQ1Q|kF=vBy2U_TlQ>B3x2EF(fn=)H14g6dT+EtVc34fhfqkdVI4 zU}+JOjmGK$3Hpk6#UAiwquqs&G@-9}ZR|y)m4Qad0SR7=7r;^+khG%^k`*i{FW2HF zlGD;CZ07i#XocgQB!NWtTLz?I9Z-wf;?G#4iBuSYBsbuNkZ5J=gAmd|tA1p)P_)|O z2PAr=Rlf~F;)PQb`r-(N?w4(DAl*|Na)-c+$u!W)V8Gy@)r|^Th&!HmffhW{RCZLL zKKf}muNhgLHCX!`*`lwo_NZ75TZGq#$VwY=ACUU8-XOfnAtbGeR-_eQmJUMt0WWgq zBqAFdFsyMFdGQ^nFlVO00clZv86h>n_G{`yAR|h-=Fh^2M~;$zqR=)(*ixs<7l8fe z7XgxfL5?u{xg+U<+7DrCt<8bcvU}VI@A>9d!h1cr(A6s);zLq?4nhh=NH<3hNDp)0 zAS7!bT@XwWJO4yT;jjOh#FBa zqD7AA0ZAo34CM7HU%Ygdh}idEI7%MCf3P&D{Le11XQ5soUfMZYi3$7ckU+r_ zT)sXqHBA$=8<7Fl^MB}Ne6$(hgiM1-n#d!~u&=|^`+=oop`WhN+VWCk8W!%KB(kD! zShjP3EXh40;E+4MSY1q$JyNJM%H2OZf->~sSV#*9df6ulqWIO6V^25SvW2Zkn7o%t zZ&;CB7S$sQMgrkf(4f`TdDO3Q==LjM_ITOuZH^)$idk zI_!c%LQ%I?sKT2+4Bj1tzTK;hET$U(rtovE#UDA1;#n-o-jklRyc(;-NpS|fWtq-< z?5ozPGdoP%pFiIg-~RndDf^y5wNo}_NT)@e0tg%`BK>@Z9%pP}!dFPx6qGa=K$g#9 z6os=pQZ{5NN!jW6^Tn!tl_6tPD}MYIZnWx1w+E5T{gXq|T{BMK=Qbj0CboYrs9&Mr zhajCzKGJ%k!MA2UGyFH!Yi7*@{w+GvG`;rXIZ_e_IqH7WDM+#Wa98?MO-@Btvh0hYm3Q19cIJtQWq`*QA%RM^HL@s}4!CqT5+6DJVz3SG%m1+W-C4D$q?V$RY~8W?ak*quej!vW4`!BF;4gx`R_*RK)MVGw)_r24S;Ka|G+@- zFXV=#rKLwcScJQ+j&nx@A<-nFLefdrS4LX*?qsCj=goaASg?=(#ljFp^&{2rQNf%% zw(}A<6pcl0zSOpT|5lkw&h_t~2Mi)ExsP{+!n@|mEGbiJlQK&^8vZt4-%Ht0Ma5d3 zJbjqaJ?2YOzi#<+yZm_@m6AwzTu&W3K+HZ)$0Y;sZ(yZkW=hp9xt?F1=z1vtmg0jBCz`#)R>%X&5UoUJDM9x#F^27G2UojUS zlrhUte>sSWomd^bV7L?e?M>S2oZcEUKZd2Y`T6@gLiMhZBwLpRN}5X^wni>|i)I7K zp{vmHrTNK+tLr&2u?DpQ}*;*V2jTwPrBjvYS+$h~)@%{e(7C!XGZ^!x8V zph*yf&1li(O5!Wg3FA^?f;Vwnmo~h%)^!-@6m0Cv)IvxYdOtrsRYV$cNuMwHVan5h z(#9LatGnm!k0eNyM{>vKJUrLJw>ur|AL1iX0wn?@3-M>N$)M4%p3!$x1IdlUK7;P| z>`d(YL1_PYB=Q*ww6{>N^bV5Z9bb!d&&|tI6m?(e7vK7s<%&V)RaI3jslOWjv)k#1 znY;W7NeVrB@^P$=w=pefMKBK5k}h8-7>?U{`xE8evHmt9$*6Iqgt zczQxdM0myf>3+wkhc`;&ARnl}4hj$1xkBOgxefFXDOmq=j(+EbVt?YZ+&lUZ`~nn3 zt|;Pv)YoD+;vyH3Y7$@oj2xKeE;Pp|A&Y8$Gv@6r=h^w)jV@hp@15KuU-ov+hoDd@ zo$E7gt{WXf7yuR_*%HeYrRFj^%{aGbt~=OpmmT8pOuJ z3BZgWl+&hhJw6Ic=cM_Zzx^d85B=0$x}TBK&NQ|%8?d*beb!~T_sxf$u19APNQE7F z+Vh8X6Y<_*9}&Zv)@4O}4)^&p4Xjc6O~~5z_xJN>@crlYlgGF^^KM$Bea6qqIr*cE zvd2t_**DId`XPCoNAU-h@;mWUsWe;5t@Md&6MojGM~@&;n`O88-mgkIAN;gCpfl`^ z^TWIBdaIY;MP48B;Vmw^{ZbB3p4e=dS=V@()b&+{e$(A21&ls~ph#j% zY)j30Cj>5prVt)E*Ee)@8aN%c6Zx`k1U)3ccK zm1;+-nC{N+5w~KOA|9zGiCuR1f+^<5iP^s7jwOOoWnpk=xVTLEAkFg&Cq$$q^&0s%nRzZatsawNB zzGn9n=kXllsgU;pq|}=QNn;7!((a)_DZpkAV7843__nmieSM?&%>~=e0YK$lR~&J9 zqQC?d@3FlN2DG!ZU)6eZj6_|f;l2mvW|6TN4jUC%hPcZ%U16^qoL21#8+@l`9BW^f zFFWBY4BsqHNR}G76W+zfyxqrc-X@HdxaGaOmA*P&d55W{-0(r;G%X;()AMJ}TpHUM zarDKvj=H!o7Z_!{HS+Ut@2*Or>TC2jtJou4C~zHHBth_L@BD;)(7lpggJK83p3gsX zH@E{8*+2ldzN{SaT?{eA0tiQc3vdnisyUK{$Q^f34R_4YeI4(}cblZ7OFdPL;{{y0 z<%@_y-MZl>dIFV>KF7X+-_ty`8M5#FYQ1?<>Twhvg!c#Sj{jb-hQ)^L*cPz27&2PE zWv*mewtnE_0vtszT zn@Jh&Me;U%{F$TVx%Z05)Ar_#H#VcHc=}E_vn5W@mNRC_aC?Q{zDk4G9- z3c5TFeXa$fE`Dkgn;aP!zYV2crBuG;JN+4e3t4Gu#79uM zw+~E9@eLm9zf-A42$sqvzdybwz`2VhTqb?rN|poZ*Z*TlqzN>DoZQ%K2HOq@HHmec z{g~IIICL^yUui~Rr0^ZMM$w-GXiId)yvHZO1BnHq;nuJ4<@6SH6761v`#9i9mKx>?^k(a*58jJ9AIX$9wAfLa(m92`iWb-eLqTx{n)5>WoA6{Rgw}PrY!}cV>JH-^k>x znfF-3H>_^sDkyd2Z%}GPYe1vCra&9N%XMJ*U^cL0n18zJz%E@gh6%HE`njl^DX|+%^B#p~Zs_Ct7u6sZ08y zbMy4tkL96r=_+|z_u!MEt_~lls*9xP09e5PCIWy5Z~0!{TeH$!_}3>R{f@--xVB4G zbDOP~QzPEIl$VcU91v<)BR&Kh7%wj`FV4@a%gcuxxleSbNExsESZzt_ewq7FT%DMEr=P9W~E)obpv7L5jbaZq8jn0AA zka+>*h3!&R)V?)+JM&S#PrDDG@ZIg;zhektP(@JvV(1A%)|aF zq0i$eDA(RltX-6kn9wwC|GT=eEf+zsDEP^E^sKqd=*&?aI0`+_VA#nHkT zy6rPA@|8VW!P?sT8|{9F;HU2HmoO2C44|kryz+X(ZhOxGUQm)BgOl+Q2q5 z88aCjq&8K`Ai_kJ`g!ZLL8;j@of4BGfE2)`1>o5>eW=#G#Kd!k62e<*sh=zpjO$fCT39MPp$ipb4|GJTLD%JAl^zEY3VZu19P?*|CeMi?-i7ZMPN?O=?o z!d#_21-xcKT8E27x7a8zoTuiSh~AitnHZxkblRsTS(GIoWwX$mjX)DtvMmF;zXkB= zci#Sj!5XwO2i;)-L6^lJS-4e9n z1Rnjt_^t|jPT!;D;WBvy6LsxkALL$&KAYzs3!2=e=<&N|#!Fp(^5lgOzsAPLxR*!Z zy#9WJFBGT$^|7F>Z02^laEfXigZKPT@A=0O*dwL4F7~vu2RA*ycwY!vG64r6{v-#< zg|HwUs5n45Q}5U_zVmzuFBrX-ZZJsr=posOkw(Bi?|575KS8Pr9dmzo^$6d<1`Oa zVh+U2v!3mY2c!Lj(GnB^p7X=93<6>_Pc}|Gr2Vghe^l86rk#{%>qy{`OQ<$>#GU&R z2_4kcw7T^iuZ%KzSg~IWmqqYD2>yttan}hT8rotc#5lds9&H2yICN9emTRMX@A+#+FzU&DmGf*JRGfs_vfj?W$U+R zle~7jFP-)57gY z$4-Uv)=a`qsfp%QT&Yi?qko~kbjv=H9oFQJ7Uo~_|1$v>l*DmE4*{XrBQR*Bc`+oG zkvciqf44RK&dF0KR8HruhEeGr&wUq>v5yW+8#McLbf6NS&8NDH&6C7;Qzo_el}K zuCEY^SVlP;rG}jlW`K4bET#--XQ&o+^+h_3!_C5sJ{i)EEBu zGjMAjb29wzy&$RMaw_ulH@%5qK;({DAI1NE6f7mvlvMn`*WgJSp8oN2`#38t+NFi% zkTY3$>UC+!h!=-x0KS2&=LwW15)Ph<;7J{xnwMCBPaEpM(BK;v9KRht(ZCb$1;;Cg zQ<^4{>90@t-vlx6Q~^&n4p6zpnTE6F|E5?EPnz&_IK@SnVxk7|zbP)l6cg2n|2M@sA{niEo3MX-xC&1) zd0L!?fRU_#%x@nLZcb$4ox#*U-j9%l#-F$99)8N3*2NXqb`?HJ9g)@XtsC1u`n&+= zgoNfov^=AR7-Jgt-z?ysz*qenx2^a6>V(VX&A_a4yt*3RRLWWk+0e(c2cWL5B;v#6 zApbbE_IJt7HH+g`Q}@>lUqz0P*9s(8liKpNIKN}oIH`%+mT~&4({8mz;Nj_+h6D$1 ze!ZY}C00qFF9du{_{0>J@LBBd5xka4Awkra1z;ugHZSaox)70!%5y%FBlw4$gKZ58DE2s1S~Q}sX5nD{g_#Ao7=bw-4gIvFv|$edK_0-^&Nu+EE;&a-)5Zj zR|{yK%N$4}a`Qwbl#isNaFWi@bYPNgN1OBF@2#ERZltZr3D~m6@jV0Q7iM|vvROqx zEPi@n2Xx^sUq8UY0T<)d0Li@D(W&W<6wgcnUkyG_M{?L=W%N&_1UX1A{9R<+fXv#JH5# zPp&j8$sZIAYzHli^$1#h5sX zYfUC!So^4b#lmIk>**9R&)!5?754KMWucu?h2~cd?VMcmjZo@1@pEUN{WrCCM7(kD zhNoSbzvXQAvKv=Q=lp#1bY+`Hyt|VkXP#CJrJM0s%9)eLI4_1Drnb>=b(6n4PQ%~- z4g@La-k(1Ut@-nx2#Y!Wm$W|3z~y?4we`UCXpqAwVbT{IMcwRr8+=9OQeykt$@cKk zm*Hw^No1s3wGmEPJzk35M3sJ3+tx6=xEiN~iNE8`oTK@OxLI?g!L<<(&Hcl}d6AJM zh$|0>RwyKAsDBgj>uFcWKN?s6s|Gn6kYaX=Hk23xK*YV=2qm!{Z;?t;o7PZ?#@}z! zjXmp>$}W2++T@J;$G<)Rb$KIHY1@i3u9+PvDBOZNBib<-#N)e`QkQty?Ua<1L_Vv? z+4h7i9L^0HI4|$JNbRF+EAm65&NfXglN_C(sPZnxg2mFT-A^=DWns^oY2eqd?%Zk8 zj+?tR>+xl$vRkL$v`(YJ^@j==;{8HRON&!rHq3_e*+b-r>z*f)c~P)S{k6`BC-zw? z-$nTvHLgxmn~rNEYEqheHJTdpMn*hwTAVg}yNqxn_|mKIAC!%MJ5_5$>xHTRZqG*M z?y_X|+!5-67&Bbh*Oz`fQx3neo<$GIo`QS_GDgWeJRZ-P5NohEcl*=do>@4=Z$-zw zkUvpvL{(^HQhC-EOeDlQA}Q!@bt5{Hv3%)}$b#BhLveBO#g&yxH-U&l=&z!aO2Fc^ zDCyrr$e9CH_EG$+zTX?3&99`r)|xMaam$gJbd& zPfmQmy*&1)wgR&}^~%va-!0W00$d_~`0UQ@%WAm%sw#*6mGtTQaj{vaSeN-vgadRgfy*h`=D2OhaZyNI`DpkpGkfFxD*%3opY||)TrVUa(+=16@WR35Fh`hm zofU@?;LYJezdsI=ad5!`DM4T9FiYc3R$@OC24330P`;ai)|P8tv)8mr^*&5>GJ1Bt z>Jg^mvxQskZ6x_*%iKo_FNjd3xT*-JwtIW9NAQ+9@=niBa`ykgo8N?jE+8AUOjiR|2m@JOe|n!bYA{)FV8&1l^=XL_`L{_!nl85>fgl=kON}|8Nu^(sFKfaC8`bPCy)yie*>*@Mxt44H@w<1`zLj(lW#9=fT6EZwD4i36- z2L@XKrv!3=LWUJ|1Ff&R9PN=K_50wQ__P2gF*jVHXw!-x{sh(-(h*3G2@czTIVP~x zaJd8&$Gn3*vF$!ZxUAxbNZZXF0(w}fV z+#WYt{L)S@Qu5Rz=bz*LDTpjoIP2ac4@yTlGoCmu$s>1JGa$7Cw==-9T^LBdO4gB} z(KPu!vnLns2)RBAzt3xJJpP3yB=OVtM+YGc3czlUWiYF~TPr_rI!*f+J9f2JconvG zdY0I4I}GM|vy%ws=TuUuhJ3`$c|Fy{(fjRX`>C z9$J9Zx%%f5t%g$l?@x=KH@FucWsB?Jy_|pJ2K5<>^0~(SdzaC>@?%f>j4*}SfMc<* zs(n2BN9AA45O8|>CKd4<<=Dm&t?zoO1L<|smnQW)^Lec+uZyWYm)^9QqO;hds!jfy zdKoYcq!Ff)@O^3is&j?=l3tVZPs&dS5>y)T*G0>JISl4sqKC~ZfGY%uIqmFJMKX!T z#^lw08~ILm7cW%w&OJ3QpFd5qCG5#oGwS3RU6k;Hy?3hR~LSm+FopuLXZNdl@!kFZ9Qc zsSy04e%h-Iw@=Rc<4=h@f4dZi(H`5FBVG9R&B62cO39+Pkgui3Hku3V&~^s9kjm9Zk7_wPaE-Lb?d6w zx-Vb{cMbRM3>pjioDSD)rStmj7PqQXgXgQlJm2O~q{8GxKV-|!67lP7Ra?I4J**+_ zdjId%&pOXC_D68l4`<2*y7oz!=xea6mKtH(xHm+_`feoQT;@Rm03c<`_FH*lvdfp# zZ&+~>KfANO<8$W4Pm<$DE60@7>e17V%8_G=t>Z=I%3e6kJ4>=vAN|A7SeOeYL>t!B z<*%qaJTZOn9_xJ}NIbalH@V*8oE`GaJ^Cw&$&y6zT-h)8M0-VuS`6!%Bd-#Xab zC$fFd^5|5(9f(s@({J5k7|@*X&@WnDidkyCRKp$@Y;|EdT%1~*G0KRo_U*{i?uPiS zn|z_~1}#MG*KfKvByW9Cp1qsavt@r%!=uz5Kkid6 z;^F{B+)xK>T%yqwfILF~%H>u*? zvU?YFOH0lEJVt&8Pn0+=9=Wdy7fD5!kl&B?gtnd8Y-Bi!jovnoJrW6PP@Rl{p*5cm zV!D7l7BUT?Lu-@+i3#KT2a}5jAggQOK{R=P5fUU~hnb=u%w!rHhmAR(LKfrULE~Kd zqvQe+2aVI6pz*bTjUio8_OEd`G(Oz$Trp@IcG!3w8q*&(UbxMiISVjs;7)}UT0A=( z8xMJu!-x^p7XnF?f83csmgMB&5^TaK7yj|j1UZmThk8PQl!y3X*MPvzTs(9a+u?Vo zX&-WWe-^s7IXn#bpzDD{_Tu3dM*hXauG^vO*u$mRVX)!kO zC%8h)QlwY<<#~%)sqmsNghT&NJ6HY>^}5I1bZ)28q_SOSvZN5Q9HYi)bZnt$tl3SM zn8|u%XXI#+w_w(ia4fm((^?mUJp7}1%_jx{_ z_r_%a0#j1!-8Ap=_Peym#`zOoZIAJ|fbW?&H8sStN>L{YL`w3pFC2tFez7FZt90W- zAD$$X%Ei3iap@$oZ)f`8fXJ{acLSR@)ZWnoXAmc+{S=SRR2y*_97x#<(s*GfSV<(M`00bV#Z*n2 zSYo!Vc;WT)dERYSIpyVk081zdQkxxhvhaN1|A0aGb;TSs-$X$`Rc52^itBie;Hkv? zOl75W=;&N~qDW%km*T*;<|h6GXHmju9xGvA|_ph^`zZzqOpyP4X0o&Uf&*@SpNP~gb=IQVyZWEfKro8Gna19r@j0WC^R^r z49WUPwmR7_@t2(;GS0ivUj?yG7996^_gBv7RGAg~ZDOMPT05%(+(=R?6`Qw0`@F){ zGYIO17WAb*vTt8`e10cv3x$$_u&qZ|WC0@#+|RS~Of;aHV&)T(hM!SrC6%r8l2l)j zk^TmMGx7jOp0;8~Xmww-R^~npDA@@8H#E3^fn54ErS!x{bR+qe!lD}TRFZ}F92qa3 zJBq6fzF`lK^%p?(lme<#w7fGmgM&~0b3AGC>{o(+C(Ba8&8^^3=;WSucRgV;@x#*rj56J6ar z;BL#ZO-@5s3~PfQ54bX57=z&K7Qv7*Yl<#T{w?Qg=sToR$Ox{@lUdyCY8hoa}^ z>JAMJA=nUj_xYlmfSG;gr|di6cLNjxz_KAIl$-#gubM{tN8QrGr-j(PSyoJDCZ3P2 z9DW}qVobAazx~r22a8naLzhEU%l%CC+tN3Hx$7Pbo2rU3)~>!?3kFw{M}RSnou<6OkM_ z$QdgKh~~@UTJfr4g9MC#?5n#lh|UeOmPFkYFBS?d&7U>U&g`IyQ^Q z{>(0k`LJ5t0GtpIO0Y1!IuV!5PhK(dmUpV53LKP)9aJA;FkeGsbO7qxyWv z4E%J*kyokURm(Ee{fJ-{CEAy}$?=!r<&oyami1D#25WDmJ*GH3!rUxQei+ z0hTK-Rc@sO{h7o=ZBXc1drj}c9R)-zMben_MTSRt{9I7?f1Xj)Ed(L}=ew}=5|6u8 zTPVld`ql+`r$8D(#$1930$7D#%jXCsZRTe}6$yy3JL8d)RJ50fAQs0(z)#lN30Ku; zZH7R*6N^^Qv8!2$sgBKBbDL6Wr<_4`f0Q-6-eJMI6fG0#=PoJNzbr;~U z*mH|4-N*4ru3{0f0;8HJ^%RRv+ky>Ct&-~{R$%#O57iJGHrDQ3*7o!%6(Zwp>pQ852Qc2ih%+Zv|v6VH7MwQ!DokX9B?@F8Nak-_W zwyolnMg+sCsDP*sJ3xRD^$oi2-(h1sLK&*h2 zfVB+t9bF&~NRT4TPP|Q6SR0Je=05PxT3GL7=qJH0lV}^Cce29vlH{lU(9aL-1800e z)=z+2ffJ8OQFU{7H;2}gKN3K7MEe2Oa@ZO*X%F^YFSyCRgn-ZWe~(MWYGFWp81uA)c_$sm!cCgA=RVFBVC>Uisa_zhWlDk zk2-Ydbex_v9FMM0)4MQ4fr!cMbIz+BVEO{A2{0g7w))m*|7MWq*}ZHi z^#N|z0X~mrBpt1-oJMvfon$$RkLtIC?>e!y8AGE^{L)AIorkNfMPk!O^sA$B(X zNziOtLqUuuY9wlC#bW)AP0bsM+m>KGBdr@1O2mE7+-e}G=V<769H?7t4$b@`5eFEe z?+=S@Etb7i*1_%TPbm^F0s6{!6+!KDFi9EtYUK6J;oigh`M>e(-2)pSK#PqUm8+_F z&N1rM&{b}0rK92FO`{((wiMihr<#46HsZFCVwLNIaF2$YqVBhPi}j6)<+s8048riD z1)e)>qC4*H?tgF42!j6Y^Mm455u+de7Ba$YBiK=(4oAce;6`{>Qep~! z9CcyC6kp@`w4kzHw?3|~aefS0wSIFt5^*SpbCu&}lk|`%zbx_~`$>O!XiPzo^D%{P zL*fHJMv~8G{$;x@ue#vj??tx?%0lz~XUyG~!GX0hUF=CQuNeFlCNn{NAkvwcqNfJL zP0_@0Yj2JrF4W3kw1v+41p$>wvJj&4aZPml&s*Ds;pcyVE{=T{_?kBY*2m7( zrsb{$$sDzlFrHdmn}B1L!?46iW$wSfxv(Ct;QH@xhxhJ*c$#jOfm=1YM-|QKZIowh zwf~O26hBGKt&qn)msrU~reHGfo}wc$uScaWxE_>kHO)i+Tcy~QUY191o!>MW*f6b0 zuZF}Y-THoiHIuAM(yE4Pa!i34)Z{E@<{eix!}Vrq)loy4}X;0m{ZCXMRJu$59t62EUmqk*S); z!a<%HAlR)m99sIM|HrWb`KQP~aE>>dAn$H6Z^4~jqj!bgYmCv5u^3~zEK z-RK=Ta}>i6(Q3Q7$NsZcx}od;i5&?VqGx!07T+8oR4?tzsI%1lw)MO_Lz#jei>nds znD<6a)72_?F3hE`&OY2eTQx2NOW6*I#JKb{l3|~lacXDRJ_Z%pr+0z3Q|1NW_gsjr o8~LdR!3Xg5|HSnFbvpc3Xj+8Jw63(vdF1}<>s-+;(7bm0zZsr4;Q#;t literal 0 HcmV?d00001 diff --git a/img/ex5_ping.png b/img/ex5_ping.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0ac5e4a3e9628fe384f02c8609df1c5e9d885f GIT binary patch literal 130041 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 ~1q5 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 Hu2KI7MSn7+ literal 0 HcmV?d00001 diff --git a/img/image.png b/img/image.png new file mode 100644 index 0000000000000000000000000000000000000000..8e537be7024fc0bf1325a0a4be018a1c00622b5b GIT binary patch literal 308374 zcmYhib9iJ=)GZv_wr$(CZB3GiZQHhO+qRv_#F*H2zW%-Mz4!V4INjC#oYP&ktIpYL zueB;tNkI}G1_uTR2nb$UN=yX^2;}m=0}2H24X21}H4qRIkhGYvng{S@F1V52ce0V-)GwtVQa%7udrlJOSSC1b)7@_KSeaNn6==W8xnZ);-{Bh%jeXu$E zk%*N-paLUoe$KEXF7JLG`SCIh$w2cpAV?hhsjy$27)<)8HsWIrRi}j}NS;(LC{ehQ z0;M2Gup`X&9;SuNkRRUu2`oL7rvhs*73TQL4BK1W?)|mEXc%KV8sZEu$ zR>xyJ7q`BXEd3Q`e46QIe<@wehs41IVEp zv-+Ele+>M5!^rzH?qo}M4CJckRZyGOc`kKuf5;OPl`5W&y>g2#l3NV7sMze&OvVAK}?5Q;=-+!_1yTmq{EK(GfQZ_{2 zH#~xC2#VDE*FV8a#nN^Q=dd7C{{KH87+HESoewloJ(>@wLo7__U664)iVTc+xVR!# z{*Y}k=SMokGnB~3jf@y*vK%1s7HMS&>Md@2oVLC zC_>vlHn>5_=m+lht_<;*9;<>7pSj^)rI#3`;n0?!z$d)Kne*u!;4**d1ni5NNDWyT z-en))uNaMCOb3r2Y|*G0lK&Y761LIrBEoP*Lnw#3ut3Gtfkjhl%XRlxOvo6SV7wDd z3mZazvKc5BjPS^58mIu-#v`;J)j_twayH&3NryHF&wRO$q?o#9hyI#L#wNJ8yYh+jZ!QW7D z87zP2wO3@~)l4NxvA({J^h4Z%On(B47z%R_Z2$WQ4p9~K2irOFfBVfq47y*PmN2H* zv1oL6!HAlL+8@%V;Uy49jh%GEDbszlA%{FAmW$b2eU?yZV$28+mp>=bq{W#BhjP?*qE15OH%C}B`Q_bgFz0s|LwBU+=_ zT9k(X3lw;S1Q?VC;w)$)&M^WNNQxFwwHfksPXiY=F$SLVu2&)kt z>R?p#j%D@lNQ&sCgK(tSiGYb1_~`Jec({$6zK8Riar+ttj_+W0W?$q{#BUN{$k$(NIcSYQutuLh`s zz=vqC#F3G0-DsA_Ho$;c_>lOLR6|fPC*o7^ zzl9U}y}tOr4(ADi`=L8r4iF@KNb|8tYserS^!Oelg(taTo zsBx;>Z}whwTI7HHEAIC>H=IY)K;MT4!cI6WBrcG`I|~E~aiJ&X#sE$LoBo0Ww%r#Z z<)W6^ODTXF1o0XN0+AoV_~g0~EU6yl>F+VIj%BA^q3u#A&f(Xn3ZYk!{Q z+~M)N4$;xLF_=*x*;C?gSrT$bSsE?^9w^n)iL%sUY;!HCaF--kiY>*M5+g#xh7&5J zIu{Aq5x*#V2gP&TLrwjJL&-uVJ6-Z!NT8VwgkVxDR^`gtk`G)(!QU4n9rfZ@AmZ18 zKV^>#AYr~^;_FzX=R;ULK(Ra55vDJ|z(r8wYQzLXK81}=x^4(aH2nqE1aG0Ta`4g? zVIFRY5`-TJgxJa!UNEA9=9>0*HoJ}QXDgbq|8eSUh_#CLRTLE|1>Dz`P;C+f_zXE3 zQc59FXZ2k>3+6LG2@XyW4^~o+-7iW@A~abCIt#Q4=)duo5c2y4Ku+km;zOejDpaDA zOo(3`TO%u!J3z1mE4GPKLlbngxPXm=M4(9pflsgjRtTGL$p1X~PV#{j%)f}ZV(*NC z=h84NL`8=)n=N+ze}d6zH3)b-76vuHjDD>X=KRXfo@`N3yFLg!5Lq>BKh6G$(} z2B9+0i!DoXU(P`^b2F{HaN7P=)3p{s17ZA(BU5nZe zp^lE@=vv!qDT){k21jF8B7-WxpcIF??G}?2P2M z#;tqyc&yoCo{-nAr>u-&500}1{PiD@nKS=5X&~yvpwYjolrRUnUQxbUTB$57^d~%I z5nn5*R5YQAArL5iK#GAjLnG%xngq%#kW=>W9H(*>$>ma~5;sZ)7LV>9-FJKq+O01U zYV~s+lw@nMN{k1xBqu(UBB=OnVMebJ#1lI}3V^Dx*@2Af16=K*6f=>3kIy!GPevk> zkLNOZjfYBFS{~Cd(l_TZ2RVc(V_*%tx$r010ws7B*2o0b+H8zPLN=-$C4&1n3p(8g$q@Nuk0m?=>&;J#FJBq zAzA^eFF_YVVPce*c2rE5EoqoLVW>$5!9`rgTvn=(gJzz|gpU|vEYf^-SNRfqsNfEds_9tqt7K?NZ#z$oD!jFUbgffdLbwQkVR z(43!Jfwv2;#-d=$>5K#%fET`oax!5)&WPVZ*N>Xe)6-X0!)n7%O#GEwMAg%o01rf2 zz#}pra4Bym!xL1X!xM>@=-$?tl$&*8;`$u~G}MKsAeWez$NXz*rPKKY9*aq;;v~+p z9~n}LFhs+lm6-5K7#(_FI0BChCjfOp$q5RlD{v1I4q}>BwiaEv65JyLw$X%o4pI^Dh#RR$Y{ z{oATtSG8XsgxG20Jsi>PgA7@ELu({91dB@sYZ^{4-pTca8@qdG8hd-NZI*5@x)-^T zcR)icj?YS=bK|})@NPFFkZ6CAFb*-%MQ?=3^Xh?9NT*)SY4(~ieinTMifoh6& zXm!vAErIR3>1KzHkTCjhse>e0V7OnP-J`uEbbZc27EktaTs2o))wIA7+mDLYs8$k@ zuops#hxVZHxW%g7)j_wW&bZ1kda+ggDzfD)=@I0a)ve=Q#ENZ z!~-^s!|k`i!UYD_DXNv_gV%^aY-U!4R)`=0#=(`Z1-+Ei>=JlC_7i^XAojmJeB9{vy152d z6U)&f-YZ?;;mPc!!4ulIjHarVE>{(RruwApXkHU8-_$ltt*WN~U==2WM-pl!SU z^ZfZR|Fa+O@3R*OdENgL_-|U13%s8AktLP03+Lr#v)^Q+iSpbAqe6?EMoFHl<(TKOZZXfa<1zK3z$Ca8WWc|GPdb|5%RnyS({>I<` zva#Q0t7($-vEMros{xGZX1Cw}tLsU(&E{(_*p*hZPUmaxeARl_;O)6;8&ZIc+rxH5 zP8lR9+Aeky~R6wqw+IxpNyDw76Y$+xLGdC`(65eqH@$3u~IXcVDZ~@3#{T zPR&M5bflRTfQ1}r!{5x#nN=nkwE4Z&;kay=|GL@qYr1-toeG4APASBTG_XRTdDZ81 z!5HFUT=3g*yc@?WYS)JVAFA zhYtzLj{YLZ!M&>bLqfJFVSRWZuw{VC56LJ3o70Q4qd9+z>}C2X9sFZGCB`my`Z{ZzHIRbcT&RHEl6G_*jTaH3lDz z#p9FD=k2@PhU!${ZpOS0mwUYS^&9@L0g6P20mKi=vDal^l8AWxt~2K+)-e|YiNW)N zKL^e8eC>|Q=Bk^Ovp|1%QP`flL&_UkET5{{3B4~P#|eKfye|YQoSnLmHJ-!B`*sgn zo8ou;yl0#K(e8L!T|ab7Wv-KcjJWq zFWc_fTgM4VBCk0^UGBR(>xSM}shS45&BtGw2A;Xmi_Y`>^Yrv`Gry+2uOBz$FF5(0 z=F9WFkKfu2{4a7>tquJ4Q`ZeWzeW~K_r3TiyuaddyVDqT2R#gY|FPf3`+qyX-KT~l z5YR9%H0speLElZVv3bjNyWbcC&GS8MZQA!goLkom-n}L>_S_DwU2U?(O3=-&4MQT- z>a`s-3jVxBjuROEd_zjk6K-_5PH$Fg_II1lM*W)J@%f4+4Ue~cSAhBrcBE>MyARbE z!1zv(T-n#vRo2t<`IyOCgD^ccm8ILke*cuB9;ddnw&%d*k*ln#tEsE2sjjVWV4$p` zGlmB&UM|`lxF|Ms^W<@f5I$>H&zVU>Lkk-nHJ8gf&Wnkx=PZ?J{$;RlWo1=WTT4yN zAmDd7GMQ{4R|ZjUge8m`DdPM%!E6^LuG{hxc5(`pCj_{q z#Y0ABO5oFB_wKMf>r0*iQ`L@&hK`z^-oC;fX;5532#3ut-(f@C*_S`Fl7^0s&+U>b zTu;@B zQMQ1Z)ZKeNN5K7dZ~y#Ur+j?WZy$)uyRD(7W~q!Mqjb{DoGb?ljzIgjG`Bc{c-X!J*Mck9UzqZF$McoS?QZvc z0cRaf;VL*0{1_-3w6_tN0dgz}i-e$v*#8K(c`DGH#@r{e`6Z*;@x!OLp4QgZvZD9n z<74S$in$B{QW_qw?Jie3%Nd4iY2ng6UA5Vb)|-0mR;zy>H~vP=++}i^j-%+Zl5m9T zDk^s;f`ZTOCwY9k&x+wI8XWP(r+SN%rsXu#G>1ip$1_Gm7HHKC6%GS;7NcfTz3@Dampw%>R>t*-BS-}HK^`l^^Dp_$TV z%W&FkO}IbC;&M8!=L2$C>$)DNlbWBj^c&&N>xtmk;rt2BJn3@5E4s6n;V zyWc~0`>xx^+(h}aW%n`yjoSCJePiJHFI8FMaNk+7ir%N!d|sy1YPPN`7t-xs zNI=m4NS<@|v-igLCk)pPkA>|VfLV&Og1?PFvn~=Z~5BdBd*9tQ-HIk9B=-d`3uj{J*WnFI`h*ZII9s z##l^7duaD8uIGOm4=LnxW`NA+GT2RzFSVP^5%H5SM_DV^I=U3a$GZ#iQjXA;1U&D} zc1jhp*v^`!8M1lZuRp0r*lz1lBR&=V9+vWBj@-BvhP z5D5i*&X!6AKlkJ7ew9g2ddJ`B_FL;~``$u_BlTn{zdv7d{%+z~cRU}2-~?`gx?L9vgbjP&ssYG`9*@6SgyD`RAh366%ns^xm=zq;4ykHc(2Cb>S#>F@g4 zamT*u8a_{Gb0QAJ*~Fea5A#9J?`Ee z(q_d;HeMb>z;FKD0}fbH+1#ejLE!1Lh7KE-+Ro()xdO(YBiGyBC=IAoc&2ohJN`dk zoVz{`T9f-s+Tq?za_El#OPk~Zi~a%f5edl|7`l1!?j5|8feGqZT%@_Kx&uJ3F7 zHOu=Y0k50S ze7Lucjvipn_CRLYU&aOB@7%w4-NO)Oo3(BIvKeW3rpCc>*$q8HgDoI*+iebYi;J)# z1bzR`0RGTz@G~^#yRkCy{3mP}MhpR;<6OyTv^fKQ z7HbrgdTJ^lnJ_HErAMGd274XJV+r~J;Nl@=3}H5>=T-wXYM3H8Xg8uf615732`(v~(e7@lPMR|_^>G+X?7TZJAn<~Ra zK6^uDCGyu9Yq@R+ygqHpIJ@Zj;d)9hXT+V0^( zKXyq%$^&O7Cl%FhW~?G|N=o=MZkOv2&tyqC>8msyWo2#6abA!RVXn~Dj*gHM!pX_W zx34j|$^1T#_tfRF849W34WIWFYKR+DzKVqR46sBVuUoCQprD}1WXf4QLFbtSN5J5Q zGLv@{k(E{47t@9fkU<*aQ^*!=rRs^n<_VdD_E=%enFp!gR4L;#czWhJ^Cxe9mTBtT)ct7nfN-kg>`X7B{9_hZDt zMaQY5RMgaFnAd2``TC;HVcbl5Cs%sCUm816k7Epl{!07J=kZ%vTXS<%9Arydqau@< zyjvh-a9DZmEEH;F{{z&!Y@ArBTLhx_AF+5$1^w$6PaVPY-YBUdJH6i6@L^N;ESk~I z4li5S;H=ybV{udt-8yr50{Z&urQ%^J)w-G6cDO8Nw-tfKCyE9Q4(CO8qLeNdYgd4R zTU|Z1RlaqC>_8kOR{@vPb!{dSkPR|fedqpc0U|4JX47(IE|<=d`>PKqdac5&!)!&mR#7X?5r~Ozy4-HXJl@(TG+L9f7y?$;^OmhGVuWtfZODr}@8?eWY>o$@{;sCFwzjpCJ4=&r z2dAIrjZ5c~Iq$teNdMblLWO*0Qvi%;-*MZlZQtQ=-|6`thAb^BbFxU4zhnrXR5R4k zxOVh@2t$~jJahi`+20?Qj8R?;hWKZ0X8z!2I-l2j5;ZT)&tV{)#q2yb6bfrGpEo;1 z#pymk-|ll5N%{RgZTKBkKWqv+_PyTT?>h|7SyCEqNd9}9J%z_x|JN^c%zvMsKH@DO z2)UVQnQ3`zD}U6KH=ienk>-%_|46wORB&#&1b0h&bE?bm@;q^# zmzX!G%GO+b1^Lf;`2TVNjoP)XRYgT4l#~{aRIbpWa-u)Lpjs~uzKqpJ`?1Fwk;)@t zl9Iqp!fUJKxy;gFZCc3LDM&|LJ_dx^G+458W9RlXH8w1)%}GgrQzEQqTWiw85wLlr zzS7ybf}~VbxNor(0AtjxdO3CqQ{ePu#t21CN1VYrBaJDG^=5}8hZ#KpQ}KCfLupJ{s%u9g&-bJ zXomO2QUjdpoEn3nf`#uqdzqORMV$coFLRmES14+Up1uuNaY%b=WOQ`nibL_Dp35QI z#%f5b$AD2C!}{UwP!br^j@Ug(eL1HFwN=aiJ0S%98@7V8%sJ+1G@m3p;i z{Z^N)th_C}@-~6zhInaF9%C2mx-I3wc_}PJ_wkum zx;#|RkXdS+Kv}kC5Wvjt?+mOvI+fbTE#EwNx<+&B(|6a@9-#{a7abvBvp6~U^+>JK z9Eh=4^IjXf>2C5D^c4oWEd7>2bH{%o^wI7yk50e)(=pY2diU`;d(Nn0X&eOR@8SX{ zJO8`b+(q#encO4@T|^pfvQ}?F-^q!@+e%8I?l^=DH<@*LIT-~-r(F7c%ay(Lvh{jn zBU0qaJ9L>L3oj^K<@@sJ(xBJNlb;}ZRmPd0i=~q`nXvca(D8oKbN>alzX7llJi>u)r1{&a3Won;2DrB{`~H2e@lHRP}|3j-P}bUENs7DkI=}~*RaH0By7?OUHOfXAmYdIad9~Gk_(ePPRw!O#2{qPG6t=e3Xuvg zo;*0(KvlT7{z5PG+rFoaTp{Lnru?UfCFr7Jt`{GWOitR3vamCuNNZVCxQhAqKW+v_ z2?&w8qBe0yK4`!+ZpzCWDIdv4Vwmn*Df{Uw0a%&G=(UClnD_w<`>d3>%**A9QK z5Zb3_2H3+s? zSz9w~cBinua%yS{fq?U=*5!$j4tlBhw4C4KeWL}Z1ionZ;12N)!M*d zA!EKlD1-R*tv^~i8g8FQcgv~c^C`L1^o+F!SX7L>sy<#nXI~o8fY0f~qs4EQ9y{XoPtE9*zPU zl)(zA8k8YQKuVqpP*2 zs7Ui>Cz(Pquixl9i8f6xmzloT9cP`^)CH~GtP9jFzjxBc&XEgzoi3o7KM57p+vO$^ zDSz+j)hu@T+T|~P&2K)t_(dZ*dFiW-V$GLJf{hp=R#swxzR|M@!o=NT$lWos=mK@L zP+6ML!OmbvI6R;;loD_kYGqpVV&SiG3ZMDo<3UyIX6@d5N7=(%P0`?u!#g+Gi?v?f zVCJg(H9`neCY;}!=TJW>9}2gF3``P^ps?lz>QxPf5yR8z8u9OE&mLN8tDI~NF|3?S z8GpOFbeu(dx6S`y|I^gW*%MzSnzICAaOGl(ybT>mW}OULi2rlG1n`w{A;+B`uekR8`(q-&I|{w-R{ne%mPKe7)X(K4wQ`ws3)?f43g%Rngf+!pDytH=`}RK~54X ze*Om1PtX*hOs;6<%u61;D?0NDm7a6xNg0e&t zxv#-AX|Dtg_flj(p+vXdkI4$%uYaD@ht6S@L~vV0^}xh5YX-ixl^ri|Ky6&KItvgo zS!dFd%IVdloSc%D+PPnhaKrOf5x~eL=xV=*0}j)=)pgoswQ6>}_D~TDkFf>4AtTn{ z?a=h@u>6r~+0&n;Z-_fuo{?Q8v6aLe>RpA!%(^?^Tr!5Et^YRC@EMJFDUM7>R>g}Z zUb7>f<0S9vF#j8Xfqne%4#a!PgyH2VmN%SFii(Qsf2QE$1@A^w6$QWM{l6~S ze;x#PKaV*r=CW3cHRCHzvBH-lQOIx(ARjO0Iqy{|6$u3W@Zt$L;-6L~RW0Uo9J%!! z8wcyH0X3Vn^dv($FDvWCh2ht`>W|lPrv>)>L(FODiJ{NI-MIf}G2whJYxv^1=pbmi z7dZt52R}VMdDo$R(S!hqmKhm2`MsUpV+M1N6*iy8?LwjG{e9TIS6ui*aahb;#Gzx? z7P46e!6!j`c8b?Zx4%+8a(paK6H(Pi;)1Y(ol*LvnN!3l>=3 z+WP<{Emr?uzSH>lIMd97mp2qtlyF4cG1?x0bUHCp5EvZx4<4W0>FAaD(8)QBhNMFm zlo@1TDo{cA{IM|*KCi7Vv06>>+>`5a4eQ^i;`2ucUg?@nK~HQV2x0s zc+p6ShY-=LAVCWWA77jpOd=SMl2qARMYZecaxprXkC@rfBd_b_;r?EW4grq|h&O35 zX5waBo}nBI6c*Xt`o^z#5D6b0{h2Im-%$;SUBD!+i;7fIq(SlweQ1DH!43QnZ4fW2 z#ja91GSZ+PlEp`hpcnDP^fX~>5D(O|SmGEn1}`_U06*3YVnIuJUDS_I1B_FA4(=|{wP({&5dA^TggPpMomS54zoAmOw3G3$;ipbUvXG26fAZY zOTrUyn|lma7z0}P+%A>|3JUo#F)^>NuK@;P<0E8b6t@HBLO;O8;W0Q{7EG-Y#fjBD zyNs_xI{NCqueZeE4d9Q;#gegEOn!Wrr~KZ}m%Pt~+ZMJBtLq%=In?}Lb6M^ll&$8o zS-u}H%}iEKRq`H#V�B6H`+JY+UX~35i64jE18~X-K31RX;l=XXGCjk|Dd_J_oNA zEG%rMk-YpYpmKdC++9AcsczO_`$LQWEx|Bbbxr!^aDf9@-UGm(+UL|Fk(?A}V-{tU zW+mh$&9_cmm$P-|#2vb)#k3LF#I0_NWGj*gmpD)Mmm0cLR<-}QJS!Mhvg_Ih4GdLP z^|iHEPmOa}A`GGGWx3AJ&uOZws%U7br=mJKI*w9OT3qrHMzKSQsd>0rnVY@a3C^Uk z9Ubo&+Nak{USO^WTkpBVzxdIUi<4@Lii*nG+CuGH{G6M|!OUg?N+l8Dv$N@+o_yNt z?Vp)0h2#ggJ~iU-AeJwGBW+EEL?BQ4dYv@n9JEbr^9axolQLI(Tg_irZYL+JgpkO>OPjus7FC!Vq`h)dZn0fnRWwc*l0j zUT5^V>yeF)ZPlXFK$a_0Y|;8U=FtVe1?wNd4e4sNuIBmc*FqD)s6ciXl$0qUDcLL% z6&*DzGj*Q0RW0fC(sE>XX{k{?OFwI8jCmf%0YkyKLQg?4cJso?&b|RA8FB7-hcKtE zXI1?Iec=0>(ChuWH^loywjSWXJBDpg&p)9ycV&|UR^ zxqwyMogUAt?wdSb_c$9!AAQ`?i*qU4|8c<^U?;2_*1CUnR^6N1FNZ@u+iW!bd#qH| zYi_gMyj#Cs%-`CROvi?R7*L36^HnzKMUx9{#uebh! zpL@ZG-_HO}>Kpsy*K`W^zLDS*0oInCH><5uxQ!l^?hm&f;OZDxZ{+aI8$``t}2 z0yK-=&v(uK?;FFPm;Ud!di`#<&Dl0mNd&>4t!De4J1==t+xCtYZB`3?w~b%hD&4h) z?cWxNKc6S@TmHMjFWVmv-Z!5cxrltX1J(6CUiTx?c8DYmo}m{Lm84>RXQk=xHoKm$ zw~6Z28eeaU{zd8G1U{#Uk_4XKPge0t>5{;22*3i zov)IYl1C}|x3(=>3pgH(#NqR<)#*1opD5_w!ql;KT)g0Kce`$`iH0NKb9=SSY0wWp z->?T*06Wy3-PC&DnC(Xn7{QgYm;NWDU)1-`G1S?X@siPG>0}|`@!ihxS}!!Cw%cxZ zJqNpU))@Xg^V$O}4ZGAqoSMXF#6{YAO-LzCqTz^;c9SFxtvP&-CIDtdx8084=P06^ zJ=53w1)I+SiSsNLm&32&EcoD@q>w@2b3C3<_jyhCzXcJ8zj`cfU~Ihj4GP(F zezmM?TxWDt-~Y|iK2YVA7Ob-2D#r!|HJt=vy{9otlh*q-m&HzKqoZkH$Plu~_(?gR zrvp&w08=1P z7sI_-Sd1GF!6YH=-*h^9s)HKTb{Q2(mWj6ZMxU>DHST0dIyupMDy>G}({Z+BJV9w2 z|5jNSPn|jT88(2O#b>M7?w_=(|Ky|>55oso+o(YQsy7XD)4FvRcXdtK*zM)c3OkcnHHIvu4XfwV;Nrp{4qB>y%BDge-`z-wK(zUXlP1o^96dxxg_wd2>&1PTikW)s%?&tL*HY96dc1r{l{F2-bK8580#Y z`g%d{V>ow4g62ZZ+U)6nCXC5=eL@c$fhT6<XVq=#mFfNrG6bD~+H7E4`kQ&RHKbd{960w_d0SHPACG1$b;{e5E? z7)DPu+f79o87D8Vto1|T8#IpVKDX{z-M?=`4@XmHE-ljPV~4=caZ^KnB41HVWaH$n zH#^&hj?Nf=LWgNrb_uI0E6q6_2R1L=7Tc&r0v3phY>U%C))H)_E|%L7E#Mz`03-R0 zIb{E^>DlLce*|!sDz2`rybl@Ro4ZW!DVbreWS-j$9bgdTC8eY_9V(=!r?<9nMJnLM zS#%GZGtmg-uUCDH>+vbxzxx1)P`GT<;A3EZ*?^F|Uav;Zw<3@ljHRv%oiArJa%EKwDclBISL(xZ!Y*l08y;`_4WAfHMX>e%8=z; zftH?C&&cYK!x?S zF*-@n(Ho1+Z$6nszWek2;`hGneckgAXI-!Vx7%HjB{6Ny_PfWkeb;YO-+lXOT9U9A z;QabPg!+EAPKm(hau@)Z&b|zPo~{UgP9fd5?urS2j>2EIoY#8=dq2J*Z$4&!K403u zFWSCA-;u?NEM6|j(-}YOf80OZ`(J+iZi8>WZ^L){ALa;u9xYz@9v8m)Uq?j&$1vc> z4o77%ewmfY`nE)1vw7?R7zv*zYtG&8+RXv?zK^S$pIdLi_eI3(zL)E80zaTF-<#ZM z491Bmgm009f-PW8L+5|~z9*Z4pLZ`eT_1D2H{X-Jg54*5AO6n+qA!B))slUl7xcZ( zUf{u!;)qlDEwA_D?fxHafH6oS@_GCyUUwXJ1H_%$_TBFKn6f(1fG0`5t`B2|;FGGM+TH5|4pd{lo)nGh~F_Z5< zik|L&n7!MvABIbzm<4t`o1dRA$ih&y%~(@XR(5|7Pf)Mj<)UR^kiz5?U8;IK{S}66VoU!xsp0>WrN={g~M|duR3FUhv zglvh$_Pyo%3lb}2kt&9pn_CrNI1%(8%wRU<3Mj2xrKt^>PxvCQZa{$o1C|C~{3Fjy zB7qFk9myJm&uP6z*FgjG1r1$YfBY1VLM2&BUh-h#vOg3$lL8D|I6~71kQt<>S2Y=P znH)*FCLEcym0L>;2`rzU%TZ`#4u9!Z8+4xZ5k~-kSt`@_5GTKlqt#*Z2D_XPMck?onW80hf984@0*Bf{}4T(oP zy*pJvYWAv0m$)6SV1){>(#j&ss5r5V&-A=KU@++9@S0VufYD95H1|>0Q(16x`3=1i zX!C=7&+jlL&G#)!#V5jjLYfaO_$l}(rXtKScO+3QIeW+F7%lTsx=ydbRlwVf z%#271az4A~O3Mc731gP$=qjL_PCM*h%^iP~i%Ccsyhj2Sn<-|xt-f0gI}eVt>)-!A z$=dZ8-^H#o_Uw1PtIuY&s>h?^MXBeRap8L(VLU10eC3!AnV@tOTKqUSZb zRb8LuKdYJU=X+N}t76)EBNuj=a*cXVX(;egm0kD!m!5OWZ5qBEU`EyL_xs|s?|MJ3 z#xwx6>w2$tE}M~!g#M;ZKdM;i@f)^K$nYKQsjlm?IeSX?|Mz!v-LU!e??u`cP+44V zUI7{S7>SA4)<9k-Y?-0oY7lN+-=)NDDy{w7IeYt#*I~PT|66za&g&0FY}RkIEqBik zhUSo7j|6p`cN6iYTfbt9*nB}YixA}zn8FeXi#RN%bf#A**`e6oM4iwPljtBb^Cvk|#Ah{H9;Y6L$t!R)xWPsJmMU+i zWFSH)a5oERyBx$Cgb4;_)j_9L#*RoVBwS%-l)#TEFf5L^$>#TXf9-UpWW-zY&QMN} zJE)c~64T3{5l)tz$K&*o@$zvmv||Q{Tjdxt=J9ZZOcKh@p;#4O=ceLLKbKoU#Hf&F z@NvkFQ4!~ff4t8pGGWUZumxR2q7pM%$STJ{aDZb6*!RF-g5i$xgNZqK`^H0h0Cok5 z@hFerh`Fd6Zj*rwfO}vTuoVQB7%~_=FqSBAo`aMh3SbWxk9-y850_`mU^RYSfqS}1 ziLgW#>{wsOJUnK|=rUU=aC9W0W`d|JhrYopc3%33oy|_zF&zY^4-|>d)WsI&V-LQdW6>r#J4@{4vzTjG!L6fyo~n;T9vOd00wA5mYrrBj zNvNNx*iu3cvNHwa$OdVsxLk@QekT&!9VPa1*b^Z;jk}G83ZwW48IH=s`@i|T7NhSL zaZoQfWLsQ&+%JxBejW<*$Bf0~a=A#AWV&kX0En|i8w)>qhdZ&bB(F){W);*%fP)l0Yq4k=hc6opof7SJ1*u!E4h5JbAh)ez;DpDUc2@(3au$PEsas8AdE?J@?#3oKqd zm_p=S)a&8}y9bp?pafeS76FJE3b9|5%C0s&2t1WEzBqMRg<}MmdXf<`5Yz%-*Jdv& z0urcn2o%AxNDK0!7Zf&H;jId(k{XD{E|NA^2@rDu#&q9+3<9tN5HM1f)Ic{-R)P*6 z(MTnFWfCM7fixC$fohF1*oiE__!&I_Mjhl32Pqg}SpXZLD)LUAj)4eL1E%*Ns~AzL z;iV*lV)qMOhRB+H5OHso<;DO1asfd7W0`aW0g!@VLS$^^bS9Ol@_Q&M!T*eq8t)uI zA>naY+lXkHUvJf;#F)ZK5+vvfB4_yc{@0aEVjj@k+idJeUl8S-fr}F04xds(U!r17 zn>|6IXMolK*fP0SPOpLZi2~Sll=12?MklNll?4Qna25y&KS15thsiGqdP^i);}`{m zsKN6Ur6jaxLJ8O(2-Rav6|{~fvKScwX9o7^&{drG+XPsF4g?6;GC(5*3>!=kgugr@ znI^{pO2dh+fGSW<1mj5qAxvjO&#=@{MEX`AI|xe%NeD=+XqZT)5_&;4vt=nB!ZL@( zDReZLK#0r%1SK|a(3BAc3|K`Dj0p4~B|-cXZJ+9w&#NSmFd0;ZJ;SgJ;vMls3B*v% zon?Zb8IslAvfknA-QGCpVt|CkKI9T2a0D;`n-=tBW$LIywYv1L4xsoNk`9V6APEp8 zpeQZq4zzGivHy>zw+x7*>AH4tcXx+CaEIVdaCZq3++7EE50(JI3C`f|5f*-g~WUQT?>pz={5hp+j)1-8s#3b!WGDvHALpjzvZy*<-7KG+8Ik z9{vBxVfw#{ci4IGah;M(FFj5yu}Q!ULeUhsF2h(}ZNWhMB%8UKZ$cF!a-lzb6_+Rc zd-Dw|rvx)u##YEdSTK=QQp{|S4&w|ai}tfLRk7sdOLwGyjieIM1ARem zUgnEJ6wG8H7#x_T9l*?=CC~Xk*K!A%3-3u4w+hIP7xhprhEgqJ*C`|dHbI^(PA^z4 ztW)FQ=L{|U13jZ1T#dx1+YC6*7A$Wh)B>fKf>0ok`Fqa5*B155C zPZVhdpk<&^f?)*+MBsYqc`%@Nb%O~RY(tp|!fQI?ODUi=d?Hi?yR0f}{2%`+8Y^f(NV2RK5 zza4rpLL&`JK@~@mGK9fOLRCpeU9aHNLd05VE|X*9j~15a8IL7_serxoKOV;HXzvF~ zZ4=z4)}KFnbM~`-NzuU93+hOMrKu$FK~>>9M$%9ewyrR-B$n#`>{O86utrRZOHc|Y zvDrd;xT*4EN3fQ#U|e8c;w5kdc5tB!=qz~>>|YfMA5%UjM!M`UJg^dkLSI=0LGKcsh}rZxR*oBkC_w?SG(gC)!KFqe|167rrF2{m;xJQ zA8}l;TuiIX%Ah=bq$X*Rxq@++p)>Otk#)AQfo{~`xv5FwpkMjgPR z!4B_23{4}VClCyk&KR5j4pGTt7?m`C{-;4B zU z2X7yuHA=!__4WvS5sv=|Cm_{(B1#|bA$=K2UVtn&g2xy+i0mASh^~MfizSS;>9Sl| zS@|bV$opxhd|OVHOeEmuqK|eskxU45BXD;xZLtWLA3_JBFz|E5tQ!#CbCnls=(FHb zLUuMYYFs0m&U*W%%j8-^1*B1-jiacf#X0|TE23@SLQA1YJS6uEq1eut)eRKe7Fe?L zNHer437ls_Q|QZ7JHPW`A5m1qG~p#J+Wt@{?97fXC^Xb4k> zxS^_cvD9Ys<|8x+nI}rLct5xS8}1PKSgS^UAB=La9OesNNkjnLK^U%_lsw}LqpLZz zH0GfMtu-s_P!J&p;j0?c+lqu3Xq4Rz2)CO={q@cn;&pu5vhKIy*s}I(*?H~h)H%@pvM>TN|IW+Q!oLM2`58-})89yh6q4wDAzAvG$wczaQ{4V$%B`ay9i5AvLMufU)hbhEd+ieg zHpPGFlRQ6!enQTxL5#!iseFS)>|VxkI1)$)gy8}Sl7Xz`Tb(0?SVy$x5t!tXvGtM2 zlEw2#3L+PKLOn9!xD)&siC;LgE zcVYz>zGRx*rB@QJ1`oB})RTTl%E5l<5NJ$apNo;g`p2Uuj?F;=Sm zjRUOqxplGf&tJDaSf#L`v2alvJ1}yQy6K3&^w@LnLa8lK#y&0BvR|2|j&g@mk*SNL z(j$Z9TPgRgkp)Ml>W7ooGnF92N!Kybe-U7z^W-PwlmGt>a6xQ@-nMmYhSz6WRb(&I z=zl{aUCS7*&=2n?(u9+hN|U3A)53bTy=vy z5%HZ6omw+_Xv!^_%k!oTTOc2a$}imCk`;ukk5;D?Yv4Pl4v(0O^uMp1<^)t}j_6ZK zu4him)80?le!FB65|~M3GrB70S`rr%oM{MW2>qE70aaByj9??S5DE5(?2AT zaJ+IHtsqD|9gZv?+Gj%#Szx->02{-S)13A{a8c?Ml(ntA+8?DDtR9`Yyi~s$jV@v4wR7kxx5lC7vOzyUQaeiKNaY>U-9Auo1W%nqMJJ9(98o zKCRGmb0FA+Q(s}vOlsH6UB`g*fhR>p5W78tg5|FeQzXNwPH4 z{P8%+#Cg=vptTR`sC$u%HE{x^4l!G7h+u=|<a!H|Bn!Wxip>nZoqY&1k$lR(t%8gEN5Ug~DLB5RWNkt)p{ttx4lRdU7)>F5 z6F!C|6b-aoOi6S)nIv{NZVvYUd=0~6P^CY*MKWPel~O@1^Xr!N3tEOBSxg$#z@;-_ z{jAST&*k2IiO8DN2;Gs zBk{FO8p^ym2Elm{lmg^nC_CPfLMwU+;#~9!HiVmKr8vxj5mK!BN%?5B3#bYJ%_C_T zD&GrDRtf$lGn7x!3rebOSZ8Manx65E#Q%qsUN{FrJ`%639 zB5GznQLYkPCS2%4SN}HZ8NNpkp-BAm++rpC8VEePAT>u`j0LAH3n0Qrs~2m104%+MZM0yMP|oBru+g_(G&@~ z04GoWA7dnOO&SJ!(uoQnECmuiasU*{%NrNLbstc|MV|KEP`uy>9~kAB9RmjUf+DtjA_aX0jgFgLhyxNbqWK|@Y)ly- zJ8meMrazJFn%00violn=m1m<>1b9{$AE63p6LG7M9OmqLp);#DY$APzn*XmCK)3Nw zhj$A{0mI`rVjyfM6_pf~%&SwWUAB!EqKs0TRvh7h0EgoT?OrhQogPaK_}2e@X4=xt zQL*+^RyH%+OevD{K3g39Ilt1(kW7LDkENLwtT+-p2P2^3=_UCS&j^k$8i9vV3QNtn zDy5)!d6wn`(8%rmlGP`$>!GRTj0ZSRe^F#XP|}zcjp}{SGRR#@Q`1oYm~UV<^x&|H zXz<*_9(P7lO7uyWuK zr4eSrG>3xM!WdM(3!CeKyu83=WdfO`AxAxfluLw;EAZ!xNCV;%cx+{JEwV~3lLI%< zt~^P(L}>jsc+=%E<-WdBfKTLg9t^szheze+ZaCpH$v8|W$-JzKRWp?$ib(Dq2tHJV z5gAZ>z&c`U6Tm4DLLNJgxyuGqOfT z0Y9q;zJ4+ncQ2HHg5HEGh0Af+uol*U8jb-FKzJc@7Ac2uKJAeV3?!J&5Oj2O9aM0y zCG!?+o~g*)g?!x|DkBf{O*8_`1{!_|9B3)LaLlkl8k-6M$p*%(t6#lfEZk2PaD^}< zQKPYC3Q>!i{b$qxUH^l>Cbax&wKZQfW8`~x@?&vvah$-&>$GWM;=8EDS|`AfnHc@^ z$Ldyd$>gbDjjR9u>e)x>!UH}YYhcvM4cJiAQ)d^P?90o`uaPoMeISKH z^hRqNU*%CH6I;DpNY$zp^|B$ny=Rr)(Xyo*A0tiK`A}}N3Lhd+Lxyy%ac^~c%BM9~ z4r<(^tqPpbaESAvK7?j@x40MxE9-#aS59oNP)t>1^DejNs{N;O5eT40R{D-F3|Vt! zqt?yu`T6}P_;|a$-v23fq5Y~WX4aOByi(LOo$nt$H1RDj; zYrj6<*t<5DrJsT<+4aQXr>oFe=NaVap^f`m1RtPbWJ4pKPx`GkBeXZ5vvqx{-((T2 z{^P>Iqlf+x4|l=RghlTHP0#EA&a1-#%==sc*BMraUiuR+iGW|h->I^+V*s;kq-FC1 zi2wpiw;wnQr5;@?1gjqTQrjnDoZf+NdTz(|%LT~Onn_C_JfYloP6o;^7*p(TbnZ6X z4D6+^Oq?bUVCQ@~NU?~|8If!??zbaU)-fZn)B8OD!4|iPP7hYBwdTdb{Q$E`$f^@0 z)zuKYr2lG_^hu~<2MNMAz4%vSfDL#7U>D{i%LuGUJgKLH5ZpZ#Js;pdVB-6j4r%Bx zWW7p2Xd)5d-KZx_G87>1SAdzUG03*LLT<@-$B$J@V)os>X_G-k43@gcQKAB9c1zmB zL`IT52bMIA8t^YhNE%Gq6dkp>g6?-f`5&<#w|G7=&X(oSe}d%&Zg2Q50IM@wR+g$A zqm~5SF=TCLQx5ZIWAVmp6DM?%{RP9!-eX}w$o}Lgj-mqTv>BBEn~zfKZ^TLT$34ly z01!CO^Y^OYbxn@@X)*Tf2uHzk2wx;7C!ayIdez`wyD1AeXC`q_y$Vo-M{X^t_JY96;b~h?av#N4_qKcK2QzdS% zBVocXT8BPdoYS1Fthplo7%z`gNn$U@av+x}% zVZH73ur&AS77ThFpnN-s5_{Nem=ZCZ*DE+QK%T|I-@E$R;njIFGv4#Oz77d`hh2XR zT7Mi>1zn9XgTIq6vj`?CKd}#6;q~+ zg5JfGmS@n~m7j7k=wfnVJz($9S_f?8xp!lmX;Xl~(>}4{?GW@jzmV&DbO@kb*s7VG z9Odc#<3_Lw9%3vm+_7~OpD16TexRg68m-TB0W!^PX3q=$V^GilqD}_0qg%O_U3F7- zi^E!7VARs`2L74Fe&Xxvx$4`!Gw6D`5}f&?zsJVzG;A`$k3HO;3e)af67s@lCKzxx z5}VHKi`^D5gks)(^LrfJd3$77nNh8Ot@8P2hIm#PI*eGXoR4bmr#8R&mH+Oufnv`~ zv#KJRjy2eQN`+d*N@d2H@fEfekaqhOK+pY@ne=uwL}*gcP=Oe4tmk#Q)&}rv_7$d3 zZ@**zbcp?f`JuWv>)A%BXtvXHxcNV}%lliqHUN5gYa=w#zdecrci&twvpX+$4xN~h z7ui=}s50ZoZNr6cQ?rCaGc))@_9nAUd`uw!IdRHF!0;e0LDamYxr@1{^k=p>D$|VknmHS>Dz5g z&re2S>@vr=qG+3>3#yeS_xndloFRpO-4+Xp*14c3plLa~cbW}r7NKU*+=N58NCb=W zJDB&oA<5mzqsyd_{h|(w>E*ILxT|maeUFq3&9K?2hI1iyV^zBjONoHSXJn8gH|Xrq zRP^cK{cY+!p!O}WGVff>PFqe4A$7jd_4>Ei`{7j3LyuUE;eE)^N_bU8x8LoN_Bq(U zr*Dml5z!1O;9~`SQgQOWgq_4YEh2k;L%nPQnP7fUP=S@WjUkvqL{md!l_hrxJxh0f zWTPUEJ53a?WU|O_o>F+Ow^m|}#sH-*{xVEdr?2=99<4-=leFu<>)>+iR5f ziCWO^-OrW+qYh?G^PU3QZz&R`Lc5qMuI<6@3a z+Zj^txnwxrstPu4xPvs=w_S-|-!vTma})ry@s5thN)BYMyaF%(x}NV?P3r>YE3_%k z9$oeme~z#D*$>6y14_3A9uiw8CsCh^4PXVoz3l*X*07jPHOPOV4|3l1+-DE4rhw}= z*tExN>1r3iHBI0A#FbTytdl_2m5UqdSM~#RjliwT^AkB|C~uxYC1d2C)i~fMzB?CF zGtxLx%WJYh=cUmbcxZcwAtf{G^qhny8VO`-Vu%qh;M}lUO z2d*y!*gUwMSI)J(JiL7KS_@j*I{y|H4ChVZrqePNh;p~w+P*sghVCy;E&^oA$_dhd zs<^zSf@^+Z#n*2}eU2a~ZqkW6n{;fP83i@2veI5&QBHDxp8&%h7T2+=y83HYx^}wT zB0YV{L|I{d|IjS1_Tmtx6uku!m7X{Wx=B(JC_6iw97D*qyt=xwyrvr9u2j_Q&3|8+ z%(O})ge#EbZEVu3+6QPjZVxWD`aet|*&0P}TZ*4uFW+9DmuLY^nWl>Sq~aa%KdI6orsRg|uj|PdUH*G-YIbyBeC8mMt3$ zj*l31IKP(uWhY0%_>P@CDb&dILrdZXqjYxS&DMr06;QPSG#lO~PqGZ)Sr}4BS1vnj z!Q+sbxj8Kp6B8qi_;30GK0Y6iRlW5>dMN7GR*R<|G*h153YWg z<21~$3^+0Z;G{|t)E~*;=e90OWvzFL??1;Vl;rmfrB=wg`xzLhs3fZC5*eUNW4C`* zw(h|Ei4`BBDpU5MzNfL>@_KLbc)?j%*Gnbb$&!?F>~E~R;D3Xs5h!b24A4`{dKE3l4*yiQuD_EnXXW)P<=7PXKQ;a*;m9QYCzx6aGd7w zzUR3I0JW93w`YAAMI~g5jf)fWIB@w{9abt}P+A>cnFNO+rQoq#rVh+0$c4-YqXC%@ z^ebZY#;#JaY-s|im|6ee=k4FhjEqDJrK(~i2fg(CYFEsXj3-Fbm$KDQHlG9qedi9Q z7fjqIfzOBQl*s+nr=GgHONXJQPljRL#z|=ufPj-OIx2s5upZq~@fS(?4NjL0Vjc2kM`wi_1+n7q$Ig2qY zeqve*CgkfMow42s4&iA#y<4FK?WB-8caDDHpEL&3tC_5&lvw~I=-wnH6 z$GgN{nWDaGrMd1GR3HBX(_%OiTqEo@{XW}DZ3s5wCSu__v#Xgao*Pa5HDOx&Wh{*e z(6@J-0qX#;IooHLxI;V_l(R)ydAlJA34G*|`#|9o@`0AuVx~Bz!D`YR(N*B~c!)5N zN$UwvIQd+BNkj*1ufA?cJ7@JYUu;Pq@I?7!I2jQlSw#%e>27wtI*gZ=mS#(pJ9bIe zA07e1*Q9d*tqAS*$YW9IxZvDM23KtK*+Ngy6orW1b+utjB7W}yr$sl=>Ulqq6Z05JQr2p#6j%i~l7CJ(ucd!E+LWXeLJvTQ8INX(iI&Clh2kIVs>(&_a=WYB<(>^l} z&*iz3i4|5KlJ92Up?a-~eX_}J%jw`jPskpJwseN9eG(aY*lr6XoED0Cv_RYxSQq?^3Iv%Ix z#vq%!T+|2FD88pBx zism9J?4szI0t4=#+jD*nu^_E?5Uid3v5Eg}0{@y%WnqN@uGF7AcHrEJ9@Sc}^q#Vv z1#nmV_M2bb3EA7Lyw7vd(Qh-_KT*FR)CkMNpASGvRdQFm1D|ud{1p`y0Dqu9B^pW2 zO3(&X$3Pw6u>k080mF$uot$2wMHuLt4A(({ZJB699KrJwfGpkXbb0BE6X0vg5w&MwN&%HI;PUYmzY7j6*tSm01~fe3t7`*4PEu%vi|jH#%M9L~%#Yh}=xAwO zbQY*u*(`gOc*y5L!K_8t=z`krJFjkAOV1VLLqW-8uw_AK~ z6~XWFHy;42B$Dv>sZFiEgjmSlkV4o4)vDz2LZyi43B+xPU}SVN$V#Yn=rB)2U3SV+ z0LtRX=x7W9a-pZ9#!P*Eed}%g#MjK2f2AJPw^!VYnd@>qhbaVNYHhj?tzxC6ztE2a zUHYS4HDy(av-vr>X;T|>MBJN4tGgZ5Jwx&uzXNJSv}}lphEczF`kQ{(_r34b+X4@Y z;~!fAOW-p5Fk=Wop9zfc>WD#FFc1B%$JC}4j0FHC;Vlam;RV!Rp#`{zUX(Z=Gz?Z| z6;z_aR){Fmd)stpM$Gxm!f9 zx;ZP0ge`N`I1+uEjU%)q=7JQ!bOD-KzlZ1)z7F^E+}G0asmcOau}d1z%penR3Q>qT zg-&BN1wQ`)df?su_iKgy-?Cz}BA;YigamMQL^mrK!46K%N+ zFK`Tih0cQmc9|_uP`Lc=_c+nIXc4?Jy9x`xbx;u=aKc;2B~Wa;`k#2of!73u?->~x zgU=xy?@F8cgE*gmHxkd5UUPi;9Zw9b5zBIqrLUQNB>8h0_4Q$ zDYoj=;&QuM7P5Yfvbh3U4cWd0OX513$M5#jRt#^#mx zb~a8+v!*~t|Ka`!Vn|8DOP?+y-qRh}Hu+cD)RVdf30nFXL04WSjdSb^nxJyA^rxjZ zoSE{Lho-`v)y87EO?CbFCx0teNt94pRj+^7TQ#f7{N@mVzXq@g7Z=9G=`ZEuD^%W+l`W(;DF-lOGevTuN z`BYH$tCCVs6Ax>UlanSSqMUQghJ)y`IrO9B%R?j0(uGVMoXj9^+wpzgs%gO+!B2iB z&J>Auqtmr5ULIGNAA)>O_x7aCSn9%hTSS1la)$`3fV4;hml0xyDslLmivkMz+k-O3 zY$8M`E;bGT2Sx3pmr5e`kA0K1tdnAf)reS3#>tyNalZUU&%fre4XC`iXSmC3;9+D@ zsj9n2tm$A)f1`Q$p%8tVLU0T=IKO=~Ffh;?Mk5h;xEjj5u5R>q1Dliw`cMhm-Ha?Q ze*g7LmM}?JtJ-Dpr;1$M@M%Jl>crSs^9os%kAvF|(t2TQ#_ie9*_kas^-sBu1bdY) zv082D=ip%E>-z|BXLZ0PUG@uXaYJMHYulUc1ZkJ*juquqRXZ8N)_-#JHTN+NL>g7^ zjX2EZ`?l!g2mw8|S%3J=4G%&*QSB-xKi?-Zl~8LdD*%ji`OW^l8+KlMetMb{Xmh)L zG6Z}}K4(TNg|Rv!vj}y1#GgDEb)|B{*WJch7g)NzR-=&v>z}+;PkHU+`vy}qH453R zuyH5MHkipnwCPAR4;Oabw98e$w@Q|)fB=*P8HS;bj%=C}XNYMuA37@bKLSu50iPO} z+hlY5-&foOfW6}_eU<-9JsR+nmK~H`L{fl1FfrNcnXCn$7#S1wU9>uS)EUggb!>n( z@9I$lMI#{*ENZ*fkGneWi4`T&OEy5&KuQt-aCy2##iFzBWhLnQP;ZUV~>7S&viOcws6yM zQ&5O~Vy3O}!-H;BN?^Ftm9?@mP(nP{hv~CDzJFTmd~5!|$>l>8`3cHXSVcv8`ou*@ z071S8;-o9h^YbIZ&>@=fNPQUB%q#%D$sm}$n~E=zW??TjV)K5Mi9eA!m8`$hA^j{Q zNitf{vb`Q`OW4aUtg_h{$B@l&?J{EC#FItpdgVed%9d+;JTENd;lCRAe1|HCt68X_ zM{uD{&A?y)#&nToyAS2-5AJ}ag+B;cVRGP|=LH;BRYO+@=n1$?Yjd4*>m7i`2!?+HW^R2kF-?CvQ8YfZq$zHvF5 zh0Qu{y#RDsc>Mjlo;KlwpvwjoxDrj4mbn;^jSMoo7R~b$4wze5h*T@)#a>;F#iE=A z0kx1&^SNHL!w@sL`)M!Rnbok_e0NM67+dNZ>v=xS>BrIE+?yoGhK=uTeHs}O@s{r( z4KU0sh=+?5|LCGXQysD*WoP#hwd30|&EZF9Mm8okmCv8gW4hSaJf!*GB;9W&W?L-v0`x)Z2^wW2=y#p}S-qerJw3d*yS>JnqZQ^L%#6y4*$n zeo-J}sPl#_0xMgiZ^U!J=;JK_L0h^mSlAu~U;+J$mvstNrme~hxRt7jaI6U40#=q< zd1oA;$?9)<*m)@_fBeO}OsbLIJosn>byixZ)_<5h@zTr0eBn2vWF-EmQ@t5zYGuW6 zjO>+aK+w;W0}xlH0mPmDPthpc&^_^5SClV?ebBuIl$HPZ8o&Q@G-`2N(K)*mE@33n z{L5O9Z7AUDV%D-0V3JmS3X?|{3#n#AV^?$H&3T}ZY+V6GMW%|XjVi(B708~7%zePS zW4IjPDu)k&T5bb|v_Q8~r^aA3^GDTO)pXJD4JC&-b{$3s#Hz(F@Kp8;70*{vY5Wdo zT_t^@?jH_Aj7D|Tpq1NYuVi0ob{A63bdN&&!Q<-|FOPG|H?vm50yo?t;n9h$8EO~p zz}zuF8$u~x(;{&DS69Xd__WTTd3gPb_!Y)1xd*af+P$a)&9^n*F=` z&`f3NWDa&7KqtC<49xu(WMS?pl*Ov!^komhT}rBBU7a3pAuRIA?;kToQf4I*#fDp( zPjxS(|I{ufCT3IJJ*fSBJx}hKm{`Ax?l0gT0vopQ$ooG;Y$e6S#Kt8h#9+KDESUJK zmozJC+d0U-zrD8AFZ}yA_N(*St!bag$f!Da8%{XPw!Ef>jhVTU z|A(-NbCtYG%ve0Kk$c`(TS3^JEw)*_ppO-an<4)*fF-oK>CL&Fgp-Vfx!%?@qt z%%zyVOZPopme}q^p-}B_)|)Yf%I**y52dXv(5q z$cHqBqCs{3gr!FmYj%(MyU>qc6s?bI96CYhGJheR>)m z-olUW-gX@!VK1K=i2#2H%koqd>o1%**2Uf&5&|)0~{L7I>Lr;4^zN5Ou55Q;|iXd8o7aixGd9N#6J_IiJHICg@_o zI?wkGAfE(nMo*SDMu z46>iNAI-DVhsv%1Ugz~$N3QSP4?>fGOMt%O4|G_G7c^Bx+}DdRO@m%_eR^nbvv&Jy z7-<+7+JTA{prvHJXGZ%rXZrRG76mZtz;nBIL7oMrf)f`ELVo_mP)#)%* z_zhzddXsSD#`rzpcmn7p`0WXS`0~P{D{4#A` zz2kA_G2flu1K#}-T+fMBzd)0`nL~&?wxlFddUUU>6jV9^%#9I&$Y<9WGTr!wUj-zD zdMG&^64Sk?X_H4(xJjoW-FMTN*ZreU2(JNpI-f)%3nb|=3JaxW!U*v^=9 z3E<=4;-=Ley3|X{%^J-%W4lpg$Rf-#*i7AMf3tW+2m{9YU0j{TbG!hsXYS@?K8}CL z7dGk;UtRt80i&!u&t$cU?}OXSDp`AM6KY5K+F+KQ){{#=~htyO60J4)RYP z(QLm}zjOFr?O4Jxf9yh2*@NDp3DJWQS(gcz%-wr^zU#SLuFU3htoNVWWx=ohn>Iro zmzDkpU`lT&0`S?)hJ79E0@s#O%CseUSa5xtoC9ZSsR z%R8sk?;T7s!Or(u(Cf3+*RMqJ2)89Z78dHC>ptR#@;wejB@l7uc+S*qe?Up z*LAKI^Szn_@FGA5Psd1Of?WMAD0P;51`%`g^k?cUtB43czjwe}c&Hitb|j(F1f`Je zPOGcM@aD;yh|s4<(%|H5)mB4kT5mbjS*K>6x$B`dmdaXCLHAB*c!);`hj$rm*=G*A z@~IF!bt5B>n~{_Zf)4}o31DALDBhXnW^BOhU z#}~V@ZEI^AlcajE(BkZ{VPZp=pfc@n%b%sBR21@oC(-NO1QJ*JtG&IhoQbIDwy0bk z(gw6uoTz)qn{|w?N*9hVYo+b&92{Qhb#%YTTgiUC<$a6@Ff^+bA_MiX0}sbdt?0F- z{{FFXz*1+OzK+m`l;(AjPU_?EcXKs6d%H=tRAnB+&MNq9gYX2y%)T!iZtI%P{x<9Y zv@VIgz!9{W#3ftzLSJG+oy4Fs$rjZvl$HHzrQ4x2li0w-gJeP;+F?>gE;AHM=ZO-l zVWeU1rp1>vi4aCjFBAC0xa=%iU{$rGxqeXL=rPYb*D$N3S88*IT&lPT6Qd22U`{e& zrP;*z*zthm`LK4;>j>F$dW%O9O5g2wcgrf^X#&>DvkuQ;jnGT zb7TW48tZ4i7l4`iVYcJ^{qUzZ9`Z_V?aT&#Wn`Ciy%*q+(M^FgZT1wPBIniJ{P02Z6Dj=1Cg=-FyzgsvH1s}Oeq2L5?`e7Kx^D?k z`=?gJdzcO37ZR#$?7TUsD+2WeE@)~P)CbI80aN#de~yOZW8;{Vf^J({E9;n5P4i?T zUJln8tS4Kv`jql(*qjRZ)_~HIwJW_49E`&O+-X3RhRhBzGhq>W2a6 zd42sKkQoitT;V#4b+61P>nme=&k`Zg)yvhmDR&30?8<&~E_-A+1y!IRFR+05(aV|8(5sQ{8cQVs+m02n3n1n%=!3QaY@)?}m9&cD8L* zr=NpYyMi*Myrm{5CN}bE>JX<+tjVdu-5wrNc9}EW<;C9nug|;Q-|om)m`UczsplrW z9|kw8SDJz0j6W&AW0li$gZP@A;yj?3lYic%jUt6CJ5zFlWHG4hp5q?W34bXy)K|D2 zpH;hIW|0BFkyFrX)52Q7b%J||_1EMz{Vu&>T`jjX3O8g_WHI-qF3WNkkm$u1aQ0|dxO__*%!_h|`UCjEr zh_+T%HZHVz=@UTSxi5(YIk4NBX#u@PN)=!IEdcg$jmiC8$9d0xe*ezPJ<@aVbAG4n z^D!(JLx#!XxZWr=d8h&M=EYJXrI^>%+-Py}AhlE^9Wkzu1Jzt*Y_tPl#FQl7xOfhy zG1emT)i6rCp^X+W?y%dv^m)ws)56(J1@Om$R|bA?mjY*njYY%qmObUw2tMbfPG4?axNeQ%q2KiMbl7lo z(XDkB!x)pK%Zqc3-s|1>t&-sNi_NvJue)Daovib^y8!m@xtoyp$>Q%*6p<0qPdoJy z*Uxw3z`S(zc2k9|FPqPKHRy|JbvXl*pqWcwv;=Krx^5b|ut#m1{%dNH;9*y(YWDAh zNvkH%!)6q~vsoYf4iokXbVZ~}h8HGA&G~>RbHZkCYz%30w~mXO?-5IZh%oc9JsnI- z9WS`2oA!VP5P^oeSDVjUpEw)7n`tw-xIWV=ttQKVq7(q*oNnjv+(K<&Q(9Wm{Kw-g zfVwia@LRu?y{5TB;ehRa!swE_wW2~C>%V6FboIg8Bgpvi_1ydduOEqV|I*^zh{4X{ zr3FFd&=)Nu3f-_Dq&Vxm^ArwV{&C|&seS}0o(!q%4{FkjWL|5tTl32x5l@uxx@puu4eXc*B+-Jb|Wc=E`;Ya;)fMem0n?AO z)++b}xh=~q2w~HYtmxs)31~vg` zKQIO#F-N zREr83WmS+P`l1%D(Ee&_YaZYE0H?u^+?44rP6D7S0a`Qmw2bt6ApyDmENm1wNUQ`W z(TI3$*|Ye-8e(C2d0k;W4HKtpAE1}Dnu@{U{6q|MYSX8TU5Q9RC4xoeyFj3i)c#M- z?wyvqSHg$$8bwe`)Zo(mljK0MWbk$W22K$nwxsEenc7j8H?BbN^t?5;TVytW^MNd;_@vEtQghlYj;!Gj0kDUXkt?D}rAK(-5z9R?t0 zaL?dlXoj{LUHoee=IB}K|MUe&eL;#Yi68+kWjw%94`5uv%iv_n-mB0+yXm?UKlxky z@6TvFH20b3GTFmRFi@$)bw*dd?eP@Td;h09@LVwYkJ;jd*bbF^`5BjRrntCx^KpQX z)u7SkvJgI#^^0}j?k`fouY2s@r~XV%QTExh&p`v;5N=DGvou>x1WaNFEZH!Q3-k~j z)8{9EJ3T=8((`_As>o(K190@kC$^&*Rpx zo+_%UWOKN_l%>$(;^+krVi0j8>jOzFllZzOqXqKId}#SHn(6*$22P`Afxa-rK5 z!fM*HSIN)PzIP<3So6bsXrZRlY%@*p$7LTwj6#6PdV!m;A|YEBXw-A#7qgRi&}k@h z>5i%rRvnj*aLeMFZ^H*x6XE^kA@>@69{a;4#cr?JnU(I#^z(r0-{)(7v-iIevI%Lw zNxN)oz_bq9dL6$PI(<^ zkMo^w_YW+3T-z14MZc6uM9r?EV_+K)NMstx^ng8425mv8M6)sR_Tv?;pXlOwTV}O3 zXR~2=5{R4ysTi!dajV6t4-*i56p0kqF$>Z9=t={O_WNiNcdhB~24x07`hnKU-^JWl zU!a#@BmBmPPm^#jfg~7W5g$n%8gE`~TAZjow4a<_dtYa3pspF%Nm7NVmwF*-6w|QI zY0-z-f<9vhKXfO$p4x{@AD^090PR4`z1j!WT#vR@^<`(~qEjNYdhWl$A5)4wNO^7M z{^o3|)0jk;#kbyIzsj*>c?~tHH?%j22uh8XK}m-@B4Bq;qGHo!DaGJS`vyj`W%xrwjwxxw8IV>nrs^kt>BSagC6AGoczYLQVH zShIK>>xd%Wx&L3ZX$GM!t zqJ0Doe~+_+Mm+`^*l%nIU<0trCuw(WcOV4r$57#GiABN60eOkX!>W@v(CP-D<#R0` zJ}0ZdLDlGgzOX^Mx6%GDj~s}`jl7$k|AUT{&!>RI(%E$ZL*JwBqJ1QZhofe?)BaaR zs$%XqBE_Ef1}ERBk)VWHX#y!^PgV+>!vJcUiq}A0Rc$7DVk0ew<_Tc3PhBFTd6dp*ttoW7!g=om1H3{g|GaFPS677_^9<%J<{w3&Vc&cW>W0c%TzaW zR~xJ@bj(tAlm^WSnrT|ZT!#plOj;Y=f2Irl`iP*KoCM>%R?48Flk0e?K_zd zB7(x)#k(0OSS|8DCAkz~W!eFyD?B))TjVnRmPl!sN&ix@`&Z?arlGxuxTQX4g9 zt&b*b$i|XXEE=jgJhNst)LcPK)SM08k{y>qCsV|$hOe*?Ij2Mn-UT|BiIos6{Yzen zyIT$6Oom<2A#F;$($x%EEFOv#8GwLp7O8Uyp^M{W9v|En;}wNFC!De6Ceo87PwXL| zZhYGGe)kuDA3R>8N z!T|&Nw3&>N5ZD3gI7v#GIBs$e8cnFmP$Tqgvj?tUtsMBEl@q3aph!9}nIp7`)K_~@Ba8(e_2twYl3y5HM z^`dK%#;y^t&*%*Y4uZrhZA)$`Ffg`!U*`WQ+$m_kF_2cI;7o~$zjQ^zV{0Jy+wRzc z*wY6*LCT+qu=Ruj0d*v?lzQU`YR9gN<+f#GnL>uTn%FO1CC;D;!MYIXmTn{SJnGohA#%Q>8_=;0p#V$dFd#pN@6FlEr z_=bRhI=m_*(SQ{yey{t00URgF0X=3C^b{mC0h>Nb5eAkJM&vSbZWt_NhD0r7gR7F{ zPUMJy8yod8jI9=5)?}nkkXO5V;QG6!9WBw z2E%TyNHaAk0w8>_0Z3R#Q7@PR!$@HyPfWM)g4AJs!*lS2O=|%GC@d5XuuVitlavG? znBx!#yfA468tf#}`D^|RaIV&Vym;UK?_|C`m{>O^5J{2v{!dkM>b;;v{+M3({&*2UeJ{|8fSm7WzBcWA zF`v)PrY!wqIk}03)c5F5FKAiYb`FRgewglzfZz#czB8bGpb(O@Ka-e%Lx8m-#?8et zzuZ&RW@|gx$#6&)_BXmdsZipEnS_Yq=2rFHBbv%6D=Ev%;2*?=sHEyn!+Jhfc^|o) zWVv>oC(>5vr)|@4_!=g1w$MUkVz)9KA)nQ8_(HhIP?5Nik^Iuv!XbR;``Et;f0R%_ z>RzU3;W$D1r`S@+b$*Z_c3!cM&3|J{FK9p&%xus>!{bmhEWPIhQ(OZflT(`HX%<^S(~~$^NYd5;I_ew);EH?RA*$3rur_IzCsUq%W+T=eq3kRJ&P#-BoxJ;UZ5xs1xR#X6@M@ zYi5xwMc)lWg!}^@y%eGQeS?;U7NB0A3`{w1Br``iP z@1)gL#&x~HOQ zYU-+?@l>&7RQe!s#zKt5FIN z`fcIu+)nGL;T1Hrl{Iw{XjMoJ5KLI82|JF{eE=h~QpJ`Ai~!CJj|_|?K=j-x!-r6E z2DswIF?O265b?z+l7pWOFzOa);ZbNPX72082a|^UwL3 zc)@utlIGuOb>%D;A*!IaL6eb6ybIM@gI0lBAz;mqOEUo({8;vGD`w=9kc$se)wYw4 z{DLk_Fhm?J=x!F%tZ`~W8N*NHg%pO09O|SvZ=zgJf=ppWH*(i_Ar9&pB$H?Yu9AQv z`yC>s;gkORoNpK5E}B}RUkK>F3c&Fb-;!dcD&2dnCFNAEkd4KIN1hg}lFsvOC>b%0W}2?C<`^kqAyO|CRU5+u8U4#y71%$j(k$t2!N0x=FXvXIkqOLU}c%)>9h3lzS6+Ijo|S4!Mu~ee7Uk1F*vDOl+}&owpae>p=8G)7uM@9cT&* zB_(_L&UGrZa)sDaC&emo=wBobKyaMk(It^}Qw$u>Z6$xm;FiMGAt{n@SUe_$CQ2&~ z%N^x*x$Pfzar+UcN|<1I*y+iV8dHb;E)xU!?kF$eWVW zX_{T7hGBWETD)IG5wntrw6h4AFgd{M?iVOplz z-4fCK_t9BzZM%awn%-SvuER!IvmDnY*M}q&a7Bsqr2?41LfqQTy1`{lreYnm7=`H} zBxn-`3;kv?oUcKzjGL4q9!-LCLKJZexk%I1b1Wx5j&tm_xq(5A$eW)mbxy@QlXC}6 zv=b3ps4(drT$JHMFHmJ`>bvFEkP>XQE^^>0;(rQK1dSIBuyeCJ$B5H|=P;Ehgd6>z zlGv)2*TfpY7~GzF9H#JE3?=D1G;N=>oVFi=OEwcz!V_i5JS0g2lGW&xGY z0ON;BM_(pkVdKZQny~vKPKL4%=}Jy*y9s=g^~4bInZ>Z4%i_X9U>Et@2jsZ`{kszD zf0>^Rd>+dFULYc1$?aJ~-0OY~mTE6MmpxWIR>!N1nz^Z{)T6Ejv8CkM+X_8PO>EZG z^nJP8NEq$+42RZQkUP$O0(Gud6*sq=+Y`%=iGz|rCVk)`xlqZRE6HXv^1rqxl5u5q8>kFJ-iH0E z!w8A@ljT;b6(7i@{C7mr?^61}sW@TE1bgtH2L9P9Ov5XiGuws;$-D&intz?hAAf;3 zPd>*#8~llQV_B_Me|v`C|JQsAbY7c4(%!sxA5Ur*Gt8e*!94%ufTn-KF#F57WPN>q zIh7peqXw75e8E0~%Z@_2u;ZUR-A()vlGkMApZ)KH2;c3(MDq1-eU`_P6?+K%dS;cK z6do_{qXr{f$fu_@SQCMd%x}$~j}-g$&HLFSj~vnjCkT=;#5NRn#Ppc#3Hw)z`^B_Q4ZI#DM1;B=;j$SOjNjT zq~;`hVR9ip{fMA#A&(av+L=c^VAIU0=M4aVMP0-Lg6St%k{3~k0zi8wb5o2?TOLR%PVSuwJ9woPdG%F(V}118KrJLfCmY5+u^k$_l}PPV zcN3y+^CM#N14C+?vs=I~vERRlx=O*Ba;b?wzOR8vgp&yKF3_E$m#PVu3XUQ(9zIdrPwWarxzo?AYJ2Z#QAwkA&@V@g^PkhIeoFG3gZp7(e^bIbzeR~~#3N|V3XE&L4JoZEjOqoU$n(<)0{7q2+DTJ4l#gfm{En|f$ zl8Bkt$L*vi!i4X&(A$WLao?Pqv>+0pr{iE6(8hE@e!xGD6QJ#EZc_I9bbV&!9P1sZ zZsZ_^n?Zu&xwUrpf|K@dw?m*RI7r=&<5g-!e)r%nWsZ&y6e>BRawjBalelIUO_ z3)GnsMnk?x`#U2G+yA{}09pMW4)22m&(%_(=X zKRFemqyhD_Y5F53hQ$J(gJL10IVUMTH`A=g3X@a=!NC|^mBQ^>rYyNccKp3Ijf6ZE zt1O1cHsu#Wiyy6^z`eM3mDYuP2|G9`&K-hp{mjb}HiURuiikVe#N;hk3#lZb^D|=6 z)5CVCV&Aj|}A&_Q8g!{E(zq)_{j3y@HeK-_4E_t_>j>|aWXUL9mT4s|OG4oyLUxiQNAu!E$SJA=5{7RQZ1DsQhN$sLud0W5U;oPp zQ0IGjr8L5#2)zo8I6}3Un=lvqJ_#?3x3|RDn=i^@d>Ko^Z)(T_!V>;=)Rp5 z2UHu`!MtYrRmXdC%8)fLH=yk@7E z4ww4V6fX)zmV}zw7*L@cd=`;*X4N@}mz{{CY|sgK;VnuIS6BJHtjTNctKshO7*hH= z5=PI0MERZ>j8~}j}0lS_p<-@ z_r(7yS$nSaThX)z9v_2>J5+C-4m!d2)n9#p;XVW7G3e)evOv@!${=MPIOF?wM^VDv z%5F%$MF2wYpcC$lJNQeki%z$oJ|B^fMnlSFjfY$hqV3#2Oa0>f3s{ ze({(yF_UA6#3EqjnbL$0P-^)H;{)%x=8PuT!2y_-HV~IoPEDy598(0#m(Qpqkx+`N zQaPbt(u=YLcMVa(%GU5P7-4ZEMF?Vqx0RMMob4)}TcIP<@Dq_cR!zyOVw&HaPmnOd z6eCYWCXgdK!Gm+?-mlmR46JE-3js<1Wbagrj$TmQdkxUmz4VLB5}hUT>9%y!B|3gz zeP=rtVa+rLgB3XdQSWqzmKBg5ULavI5^YFhs;)aXmDz%3p5fnXtFUR*$)u{ zW*Jt30YZ&Dk|*OQ(Itd3rx){EDou2`I<-((Vb}41Na7C zKSK7mXc=Wi=HFut2T9RS8Ngy#$zy{a3HIy-;ecLbp7Ho2SJ8MTul*ee3EbSk@wqep zq%;bFU zDypT`*lSkUOjWY+`92*J<|nxjo7Q~=I}qO-zPhTMiOyyu=ZO%twb-N6q(3*CdHPMJ zQ1bo7$+c%h&Ku_`7m(P)@7Eo&)nndJ@i;)j>D!R=k0Qra%p4y2f#4-$88@BeGY$?3 zP@Awei=lfMm}e<7$-wsfhDy-opxzoJrBNb8yg^c=hQf-{vrzxX6OVX?aaD14x~UtF zN~YOzqzu!uQ%BZ|3Wh0X^V+dSeKD5=+l<+6pq_-$A>#J zAhcd{bC9v*Mk{TRRoQ*8t15g=YE!5~<(FEc-?}4}S~{s|={^Hn-qBV080$nBty=FJ zPs6N|@jJAky|8LbSKYpx*_PSXnY)PYNiT?x_$Z3 zWco@`@+{HFHluZuAX@3BWz)kHfNA@sSb`1BfnH_24h}z?9yWE>n0Z?sYK0A3{Cc9S zF0Zy=OzT+nA|Ep{PS-K)X^AkJnPOp&Hb2bo4EfHt}0yZejc6j0t|D2%A_( zLqy8d6lcrm*KA?uKU)mUW=kh=2<1uTzOu80S087d_CKg+HJkva1K7I@0yld8cf2^w zHEl}?NS-Vp%oFL_;@bFasjkz-D7N3dk(LyX;(zva0SZ49&2-nmZE zZLRC{Rkl_|2Nw%?%Pe3<~^y7q_g+ zp$%KyZn|l-Z;%9A4^1r%9jjU$kmNLy#r2wwj*c($v+%?}!ES4Oywo*~JS(gNoEQ#| zCGw4jX-+I;lIKV9lON$)WGNYUs#4C!9|dLXQj)!N)He@9V4Rozap$(5?B5~T(@iRv z5&1uzg$vvL{>F3k-8Xo&JY9a){`c7k*ZAYUvi~C(=J?*k8@E0#5;x2)nz*%K7M4}n z?2Z`%3({hu^5Z7ZlRS|ET^ACW=h^ma;~lMKrFlIk2S7l3&1x!q2E0u;gL*SZ6f z93a!UtE*E}Z!2v|n?a^>)I<_ePR$g3T5=hG+GdM=IsifrfD>wa?9+emp`KHhW$pa> zc%fzY`4Km4O#1KNYW9-9XNP?Kmk~Fh<$SgTII-$Cf>0TW5)XARif|%&cPKpI&98Ws zTZ6qESnU+00_VT`7rYLqm)dxai$6Ys^b5^Vo0ZJ&tMzbiWACf0R3k69hcLwkMcUlo zdLf6?X}=C%+j#=Qf>wpj$Fl*7*X20@IfHYpPo1LoisNx&2mK=d1I-Spb;L-I**mk7m4f zT>5eT(Ans)+^m?vo18Wb&t^1%k`9@ICC7)iFOcG{=Z=%wX>i^~F~iq-sa6cf$@3nB z2!Nsic+8lp=y7a3o&hSuAp7jGX?NE5Of*Jvv~t3}cbn$-cYA4w`^nORm19!!{}Yyi z5yd}X8mk0KlXudwZ)Y^)D|)7~N*a^S{c0=$A)(G2K7~q5RYQ0ttJBtZWLlz7o108m_*-Fji(UZohwy$-Ubz zo^{l*be@KHvnTtCXUY$h_2~_^Ke~=q9@c>k&d7Ir2825OTWb2|cQtIAp;0#!8EM$! z-UbGKj%`=7=^nGp-nI+FY#n!hZ7z2UL>zs)EgD~w2>WFQj0-;rm^ttQT8FV?`)yyi z_uou@-{!6*EMnqfM>FhM5aL#C^zb)wn+XUOYd`!f0-r9j-~G+tnRn=n&07$G3lz3b z{}o)uPXLy1n0B!X5G6m{M_bCZDvg?)!HUn3jNeCMCGWBgdPUpwik?IazFfkD3vd&s zXJ(RdQ`yTvT3R|WG2EkjSZKhgLv=-&*=V2|G<)Wx)+v58#H}uc!C#9 zL2#=kRPRc}X98>y<%~?_nOGSbKS{aBzYAU%VL!utiO<8! z8~GPgn8aOLS9c#s=)k1_k@+QPAL!$}nz-@y*ci&|jaM^-r7qZ31v=JU3}Y?=`iz=$^ZpXDT(h0Gt8S zl~Ps4omt$!d%xASO@0*5_kl3oE^*u)#Ju4Kc5y z3Co`q@6+^y17Muz1^JFEZQj}ZE;}9_|CYfh%~IC4l+o^?_BI^_sL0&62EcrDnRLA8 zQ=;R|km5U(zLaF`*0T-y^114>GR%AZ88O@$+~fK7cMo@0KsjY?{o%d2D=~YHv6;Bi}2f)X8mK$aJtQ&{& z9QVDjh<4`lG}Y49o>6gajGh?*<8WJ2q2u4)}km`1w87w3-5$ zH~2LVg>yPCZ5wOu?ty0brR1Q}c(?WUi*{L+5MvaA#=LzHRf~j9@NDMU|5c=%#%;Yg zUCIUbJDQMdjRdn&*~}bu5q7YaXb!3*63@Cd)wRmP@3vK<3bq0U?Ea4+KdenCTd{^$ zY!+hxr7!xGkdK75EaAAS4)zZEXbS+^xBp2d2Djesm8Zum5ZXQc^}TYi-RyVc)!dIC z0YZR;({&Fl8h@E_77B|}12^__2pFlLHyXi2_N&x_f?-DM!y}%GNC6`csrQJasl$p+ z`CZUcc%i6%=f5LOqXHR=KlTj@8_g|0=OjvDdjJPz9-4$w2;1b?BUBw-w+9O*R>10q zK1859=PY@y_f3&whY)JD?w_nvpTj5LU44)j_YBh6bZ(jj1JQ7AAq}@cvZ(6)y~%vC z*6YWw%Pm>%{c%f642iTZ-`Y>oZC#w5e`tYt?-v>09WcT$xX*7TG+bT1ycPjIFl-k+ zgWLMgJpwANQu_3UbI08xFHxP4KTb5@gbFxMg#oBTOBGQg$9alVm zYJ2_N`}nwYdzbKL{i455LY}7@@|jeqJJRMf+*@ZUnvln)s}(`p*llL2yy_(Jmp5pl zVuc^)`(lW<4OMw%m1T#C6NY2lN9M8j(-@>NUM;tNh$@|3`X)W5_h46OE`v<_vQUgoi1vZu^nJsr(zZ5^Su)}yaKBYn!`zg~Lczh2>DJ6&n= zAi9grc=O)oy;RtsmE9d~6}m8u$xr||OKjE=5u!-q}Uzu%`exTG)pZFknbQkj{VVeXLVwY?wh$|Tt@D-e9^ zeYQpccZWG31F#CI+_VyOb&(*kZ~~yP)Xk<0rM^2wh6M$Qg)hfX7s`h?QfmRa0YycZ ziG<@zCDU@A3}RvyseEN|;PhS4dsjee5G=h=4qcBpbDl!?LR6YS^IRICvtrYCk23yE zl~>q*+O(Aw`8oRUd}~PmW^#-4ZvxTeyvY(0bP(T-M)JiM*fEVh^cIRET3`~sIjjGr zG&(lcsA~`S3R6eGb{Uy4q0qhbB>+umDEV>oyEp1J z*%HO=fJ*k+dKFWXeCk1&jgmd^s*G9;Ymtob8))k2>ghSu&gaN-LtReRTS0cVDwXt# z`!EXt0sXwRR@bFAe3&a|Yd+fmgn}N|7{Ii(_|`M}efq;tjmJ1?_|LB0Q;;EpHgz6O;mmxMG(v$8Ww_1#C?+&#U^x7@lCC{PJCz5 zKX`&o5Y7wn5^axg;=M>d7m}5n{YX9rYw@rC{-lHif%hYO1@vS8#DgWBq@-dmFG&Lf zMcsD1%Kyoy2VtJa#Kd4A`K;!wVJV5EFt5{Fo&!4hXv0oO2(>ADm0^eJ?%48T7#wU+ z5Nxo$)?59<3!zNm)6I{=emZ)FMzXPJQeQVa6@}wm_SU*GL0s?oCS5cMI|oCZx1Ef0 zaZbo(&j?pBa1-{ePW=2+e6jIHTencX@AU=%zC4O>7&@kJQ%(}%GNE~LLC6a37qJp^CB&X@b&O+c_I zmb9bXKK+)O%itbmQcuDgtf;K zy$lVPmbm-KY>Ezw7C_s4Ex)x)>=4n=7da{_%4WBBPn{Dz8b-v##JXF@ zD-HiZ-p)?J>2qxPSs>C^pFe}3=5+e2ZC|b;!{Vp+<9o?Db0_=}Pi@gQ2BrMh=xkM? zX5xy|2nQms(SBwhum9xaUew2Z2%jLh5N znA;Ak?VIJ*?S7B9yJWtXlR)5bR$Bbk>*)crUFW9v;6x0``8LAf`UgGgm*Pp{%UAqN25|uBf$j=*kUc#6c&d*N%4%pgSw^ zgoUp?0M(KRoc_-vvctn@sdqX$RtgHmN?CbS-Bdau$a9a0F3Hp&IQt)CQ@t zH+3Wuf=Mm|3`v44TI}fPF_|)bp?&Y>^2RET?$dk}0P|+C&h2oq!B%ElS@@ye;sQ@e z@^A!QuTJaxr!XS@j~3#eByY=w>-tQvXoKUl%@V5qHw)-c5$pKxsOEA?Fz-A&y#6&` zCwq$Ne8*X3) zdA#m;YCFF>bXoB_9OZX$@ZMT+8RMs8ZT}X-ptrlhbyaR|E^XpJ{bniC18}u`e8faWO^u8Kv1kb;Dzxz&w~P7V+8 z=j$D@39$)raSedmx==p#xfiN#``e*yta*2F@MM(6wX4`j=Fss}#ib-H$iX3ss7iB8 zgud0^nX7i)<50FNPa%o8ZWNRQx8A&{YH-DBid9je&@Ln-UKQ0sGK^AdY zhGX-77;#m{%|;ZcjqyowPL@lYD)05a+1j71zfGE{{W+=ED#i7?>E%`)>G;HJ0pP}y1!hRUm&cG3X~_3<9{ z(RnC3ZMo$-U^6E2Zli%%i|xjzD^D^CW9QX07C}-`LAn1P+FtM+ms6d&h>+de6@Bsk zQhSbuak=#CuwF)+G@(&9HyNR7sthw-6gku(CdR{CSAA7ovy{~cZnwzKvPviE2~#|* zLRGfTf8yH3k^T}*3EPTvjQII_T`DM_ex2gs=im^c6j12nNJnGloBw_qKS@>YU46;A z{424Aj?Uv#%rPzw&erC;vg+#JO+O!4O#Drceie_`ce%@&}Q_a`LDssKdlb!v1zIhtkCp(y0@x!F}5fz`aV-I+EhSB^Gdq8o!4= zzWwq;)-3>Pzrj@fNXb`dtDQLcB{A{a<{E~JJ&WxR8R27X8(bn`Qz2DB^}Eln1Wadp zevPGnI7#Cg7%sTh)&374w4fmXxVhYo=zQnl%_ zQ+RN-wKRdcu{XSbP_L3YCe6?*_LabgzXe=lS+~2w<3dmO-^Q}}K5R_nihErRp`2TP z@F@KZPD^`2h8@L|3 z%?bQjO59GdAqhf<`5DgiWd6Ob?vJqY{chbMYtz{F|BxFYTF|3`|3A0aOCKM2z8m-+v&e|Oq?ankzn;;ZMzrw*{8?J)Rw-sI1Jn!v>N@wjqs1Y->2 zi&rijC!z{Ou3V*DC9}67boHU;i(<}G+oSLn0L<);XIwve1E>3-H<{m`uEpa+y|H%6 zW_7y81~D=5xeDEj`{D6buYP-NgAcvvbH>6?iOR6BunW?%@^VxT@&r0EQj*eahRsQ# zS-m!yF%nE*P)$ zYMr;+yA8!|$>^u6f7hJE%o+QGybpha?^Cn~94HhQ42}Z9!&B`wn!n3Bp8U?i;PrCl zd0ssB77(9}Yn;01vVHz65?8l9tpAqRX5~Vi9OS7 zAM<+2b3GIvr^|#pnoPJ|TZ=7p?hjp`Tjkw8o%;)25)auEGpu$NhB^r*B?=NTr_1>` z{p1$U+l`MGJAPL)shOji`bpw~gTLfjmR0rCx;X_|SXcy?AC!OAhpej2{hs~5+cq2K zR1ytyW5>t^QAO3Li&p_O;DFzFOQ5Ht)A?0E*#;2Hr6e`X%~yqdgM))yoH1VF4s`68 z$;j_jDIm9b&CF_nF_YgyUE#1cvvHF%f;XMF`)NHlFCqd0N9w?PpHP3T@ex+T4a`@I z9S+L}+rz1#5Bc!)*ap}v`-07u=qHJQ@ndCm*8bo<^8Q*OZkEMuC~45HTtiF4ZlT%Y zcVp#Scf0ZN@r$b~i~hph93w(FPFq`Bz~g4_C{Dw|7Ir_f;x)XfX*b;rdpVq@tj%g% zYj*o*8?4hz5`(`5#I2bukY&`Qq$F=`kuWneMn*)-fHP!gn2mn^hxK!C6zGw(KxsAS z!=y{E58WtX{R_v)IP~e~BqEZa>x@}#inhkqE`Cx{(rm3L`TS26@kL)>Uo*qhQHNo+ z0pS{d;cpD|%=BnzDACBDFR&jOe;2YR6N#b4%gV~)g2Ii8D!<#Od-AumwJt-3QFMG3 z#mW*mX7yUUD@#9cM_`~65_#Z%Pvj5~pyZ_NcKD91?sN#Xlq~#%K>{}NA2Q*+VYd9(lc(DhA|p)9q< z-*@u{3;rfgCx$Kju2B&Y(2GwfSYKD8f(UI;-i59o?rLl3m~#_tzT0GPMD#*PN`GUy z-0tiB-C$DX0jz&Gp;jTOAxd!c-fByfH7&1I)`kXP1B?7~CEtUF(s z-{RovwSmiS)_0+^PG8K2!$)bdf7bxg@i+pqA)dOqo_x=5p9Ie5Em94;)x`huh`<*V z7iWE(CG>ylN5>TOe1f}Py{`5byxhx=o$SIl@?7u5H@-jhH}(X516#{c9cz^?3EQ2^ z--X>Jp9>buC4b=u)73qYBkO&C-v8DAaRCfrj*BuL<5OnQiOycM1H#$Yr`?Ow*3Hk- zWFJFR#)U3M!27wH&z~TBy6zwodWilN?A!3v9a@UIhN7YusuxN*Prfc;H#?#W+LMF* z;w<-BUCXSGJA`}chT7FDZITz3zIh8kWKmts#?%V~hnVSc@-cd2-CxjW&d?*F-b-F2;{ckWioZJv{VvJb}{oUH|a-)*MF1 zF{2lyBQ>tAhUXTbcNZyU%ofVmVPW{MuL4@=lqV=bF!zKz$FFv;(!~f3QH-XRHEk%C z-1E=S(J{7n1i;Zf#)>c_Kx-p4W7y+##h#l8jJD?mHCMwZ+}`|OiSJ6t?lqYvTtjioJr4I< zxJg~F<0KgIJ^HIf%lY}Pck%1(lk7nfp5sZ6;@+`DD~^|6MBnwJ6K3P~;!2{kOTqVC z%AD}{bbk3nRjf?%ai~C*t1D@et2jEH!}=^FcllrMP1x@c5Pv}q+e~*&{KlmFi|H@A z=r0`BH)q#;wa*`AB~5+ci-nCe`lf~qmbCvHV45@ zAV{mAcAxO%jKfLXiL4Hp`k@N1Fu%f%Qn;(u4I>7%41mgg+K*3Odd*0#24(8!VBjcS z;t%Ewr(y7~3+3x}3qmBzfzuS76KhE9n;<<;1FRjwFC2CveQ^|RQm{$w)^Og17;Ei3 z2?2PkqP%=rV{2>VeKW7^J0l+7^`WQ1gDUvX3(_YaL#t{N>{+IU@iRXv^>@Fb@0F|$ zm)^9gnR0y!_!4mQbq=DKXWgbLmv*^Hkt*X*3KOg%B-R3tkQs;3Jz*#0^arkyojwa973(9g%~nZW2pg)5O{s3?gP1dT1_Be>hc zyD}#PC~>h;#tWcS1LJMO&;jkiy-1s!kGs_tRkU<8bo7k$^t2g6dJz_bib7rcRbh=+bX~vT#4(78i^}D|xt38+2tq^= zG$-QVwPVzBC2`9j&8;p42*`V33ixkMa6hJgl2S!o3bdiXRf&>f8YKSTEP#F*7B>JE zD#pzc5&cRf6#g%frG=zLQ}26@xj7ybt}%OYdu#;boIX`IOh;&$q}L=;Gc}EoO=TIM z_)jsg68Tl_NG6=StP~8%4)_6w8?bE|RMSD!+H$a5|9Y2zdBxOi_)}WoJ5QJ29=C;I z3pPw08fUA#7?^p+Fe{4nZ){ElynhLZeSD$!ojt4GXwsa;x)@yUmnpz zB*ms$X|j;!b16Qk1|k^FE?&PpGQ8>SZUW`r-Gb%Qzt!?=pKDn^`*y39uAonES-~ga zfHfo(?qsMIUOg72mMYmwFSnof8Z|ngF4_cVwDR3_H+d4Hcp@^b2Yx~prnLqQil)pb z+E|RX#%-}DP5(Cv*f}PyarM=JfuP{`^sq55^w0IN`}Uu_M+;ugbXi<{e3_(XggAFV z9#LVC&m^ zoFy46AK*7|UsKtCT>3+T%shWl?u?Oq!c-zOOf3 zY@F6$u3-*QX*VkjS+6!ns7_wh$2#$&jmT z{iA^(U=%3L<4zt!55Z8=n+VkFiKq&qY{1!@`aC7HRvz;CN2jH`beYO>+sou&F(=0$ zo4}ldV=m3~@F4s%b~RVxtRa-nb==PYo5i3`o9%aJ?f>Sq_18F`FA#fxd1e)|a>6>C z>xy*jf)ZZo3~YX5$$3_JSiUpLy8Y9o-G5z1ZhHEVi=4z}76?RQ~dwWfd$!fbVKy@wx*5>C|DDJ@h z>oWJ*u*Kt8M4kC9=rI}r&Fa9$-7E>KimZD`Us5g-rw2*R1KVF#)SOUBRV*fV|9l@j z5)l^m#qSExBF;~llc?ha@v!tv&I53|B#X+`!pTGa;E{7s>W3DnhT?Oxu&YUQ=cXj% z4aUEb6iLQ7MT_Ic^mO^0FNs6Yb<^u_%Y~Lj<;ftOOzy z!|>+?%YRQONyM#pmk}5OL8g?k0|M`1yEL)jU)_cyaFN8xnk2yC7HY)ke75y7_o2oz z70U7|x&#%~!I7+G7XPubrQ#Ep2*2-8Q?ZiJ?)0E#wvc2zSARB#{m4;IghnoNlT*Ps zNm9)W1r1&Rc1}bJehNljp)nIp@Nkh-zC@I(xEwAs?Ya?$vm=XYmqN1px_53-)1G zJWQ-CcLHV<2KR_wrquRj>AP?UJt-#E0$jaVzRZyfc@+KsmEbv+YXn?5RjP}Bw6mM+ zu|E$z4olfKSf`tKiNHel1~!ovB0cUKk5&|{12GG#k_iICCH3zu+!kS}N8t_zQJG#s zJ6jCPG*rsl8rI}Zo+Qazio>Q5rTZ~p7~D$h%hVCnQJMSU>MiL~YWc1}~Yfksj4!wdcc+JyO*+{hoP7>W&%4nUZZQx8#X3F|vAglWuwB^8aJ%tHYw|*06JG|h5ZrQfq5OtzX?q>sA z>ld_Y)SuOZ-zn2(nPwB9tH9|aB|~Tke4&UWS#{4Np=MOHl`^#y0*MvxqguAE$iFO?`I9$Hos)D9g{0Eb$A7bb`* zl4=h%2B8>6>X>{Xjyo64N|ZnyLf}^PPq);M+H4I=cO+oi^l%?ujcEo+*^~hPwY!oz zJ^_}yDmJGT6Jv#71?>kL_}jIl5lZznTFQYi%b!>TMdC4^izxCkQXCmnn1KZ-yNyjo zB7V|2@ux_IIgDdggaD<-H_Rjfj=H&Qv{FSB>LK|)KH=iHObPAKgFDM+EvpP2{2pt3 zCRm7k7K&Z&6czCybOK+)9fnw4Mkh9l)i)NZHm(dq;QC`yQ*K)k?@&e*TOW?D10B^2 zp9E2Hz0ge~frmhSQSLwz-wLm;T&*L}7on$9Uk(p7ObylwN2^er=lRTQej5%sr66dX zQbHD*45@#h4h;o=2?C8Ts#dwqFf{HNdgsU&bZ#01RNh}`N(t^%Mv~GS{*na*S=|V` zzEm-F3^3H9u`$CI{`zyn(B>``Eo)|~%(~HHPvs+}6_ZvO-nUs-&pkF|LP

;0DAx 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 z z+D!IUGR8G$ryhF@Ww(&uaeUu8T5!x)O8J$V%4gJz$oz&=90fUl^e0b&fsu$6s@-z# zX_M-%_Wx=DS;%!xhB9)i!F$=4)!`fLH4S;ElO%pSkF9^l6iMeF7bSE)lpmy6)qAo{ zA6-ud<)TFZK%eZ`ChP5Ieo_qG_xie&U<~UvI zI4vsp^%oQaoJpcoR@9FV3qzrrqBljKS*UMlc82ljvR(|sJ$U^&6plX}Z*0T)1STdB zs(uu76m712+`zn?2>cHPHdFUaWtzIdHrf|d=(>=upMuoXv2oqi@B(iHgaK=qK$&po z@>i@H{d*w^n0SrtwSc<`58p8a++FFZX;36^lV|+Eba~4^;+~gNSQsJ!&qrVMnegsE z1EAuu)nl_;Y0j%I{=QZCIj&#+E4w$t92jH%wo+Bbfq9d?5)$>Jf5^jsmsHG47;gRA z9&qT{p4U2dF; zTfOx`aYgwjh{GUXX*l;`w)!<@%~#^=wIM>d?fC^VQzA@>2)Y)Q0Zh0<^JQkIT)w7~8rqS;zZL{!Iy?oa$J;3ktHP%Qt? zQ4NZ0l!BkpVrcO2+STcS*UJa;aVCaPcVkfa^t!EdQA2KsI#~GyguKmE`!W4-L^ukVDK;OpZwqcC@ZC!_XI^$ zd~?4y={q;3k>axb(`bJBcP1Y9m(vGV+9Fs4blcVX=l}5a?p7aP?WcQl0xW_m8to?GCupYP7p9X@7;_NdR%touvzKI!@S%Hq$B@v z5iH#yHd#~9j4@MpaAh|Z> zS>V}%F0!-)EZo-59=n~2SRJ%u#&nSa&qr*p4;8NuEvv7Q(Dy@36~z3`h)VzYx?!Yq z-~DSpJnR|ksIHy&lR+-}=*T=T&e2ji*=t>2htzqPv~<+20H1zcd2;4iu6o+Efa{xE zOo9S{P1V~ZQ3?ncKLsMSLcoEqhw6}Q#ns48*zGSGu131g&4RhlaIf_Q)5 z67}1kun;2(ZtI;92de&!dHe^Ei=LXEZm?N- z_>&Vg$2EgN(mfrLQ=#O_$iZs5-00wE5Uu#P)thacI`7)F)_cBuMQ8q-xbx$+&prSM zgAxAodv9>eHIZtXp9)S_vb!3bh-=&n7l3Atva9*2^MM=_S6}&-NRf;SzUR=%iH9UT zt4yMPmruNPss-8507{XD9EKc8no|9fywBB&$Y?iXmKk#V3?5GiMiT;ob9@LpS+Wrg z1D7j!>6~OsJSn_P8i& zX%$iU(~heus+ycOdm$8cR!_*cfX&D&S`!T*- z0K+|h_A9e_2Ne9`yKzCp9?#}S)Meg}t`wvkO=v(CYVd4p2WcW(ZT`B;8<9Yn-v_iS zMn=rm>_|fI5fI~wEX}Ywqe%gm#!Q1YAlN}gMd$m)Oc7|{aB_0y=N0r@%X}k9E~h*@ zDt&J|Xu7>!2F)qK&aE{xB&*A;>Ewi(1l1$YLj~}6Yw=9wIXUSnZXf!Rx1MpU^YZfA z1fI-^OQ9sg3A&n#0sZku2qN_P?A#17&-cKRfT3LRoA$`{Fj5XLYQy2-QOKVpU8S&| z4iNq;tv!-Aq`*h~Ksn$ZQ2rYqDX=vnLIDs6)PjDb(1P;P#Du{~e{Jo=h(UBH90V?4 zkeVhTIL@%kpt3PH8U6kH_q^T@>~=r)evaH_DTXHcNcsQbw7Rk=Ki^4wySzb#{m?}J z-&>kS*0?#$eE+y;%dZ>ke~w%}&Dq9VL9O ztF;Dn{Z&|0Ea9enc_l@CQ1$|Vq#$&Xl(b}aFmzEjUph)+{EDA9^0lurt4E_u=X#q3 zVhO_Y;KPK|@~8%mHKV^c4u5%`JRht+jb``#;6VD&6-pv%X7v_Yvs5Q0HC67--LdPk zhy!8h+>hdD{iwCy(Q$0ww~N(L@ZTG3kaBp;Tx<`QH$M!e#qbC)@3`v7A7%HU2wfMo z03q0M5RqNuN%LX3Zi~yx@!?6+?JuJ84xf?a$$Zt*{xw^tzJpo)m#HM7+oo|{2)Oxf z{gUnDTtmC}=wh7%*115tj+{X4W2zaWQvpJU-~nl+VlZuYy~`Ur9JA3B_i=$+ufwma z&FjC3YHF${gXdV?!Xi2og2KCA2E6>>C^bZLOVkH&N0N(QWvg-4C zU|l|_sP>AhU>BGr77U=&-%ggBSkWEH1h`y}BDhwr?#Cf7sjGK87(QnKEhnu^EJ7@5 zIBY+}(sV>Xt6>z-o&KxvzP8S|A2A2(c0N-@^F?tK&KGh&fZ!xImbC0-U?jZyQxtJ)T*C5A9ntAL*Q!L1n%Ox?J(sr3hDYrUbJFBbD z@_YP5-@ifrL$W>t?LPU@+IjLPOG9`HGcOZCum$^9HVlCoZ$w2V>{ zz7k0HkNx7dvpTu5bgv-?!S{3?Lq%;TUcs!)-Z$FWZ2$3&q*wndCQV$%5Unp^S!aJ45?TY@4H5 z-3w}tl-O(XZxu5rrTOAv-ysSL6DuO9vOcn+hss9`nG}Ak)foHQ=F)eq>R4dut$9F+ zP1I~p5NBmz{@a{wY#0B%-Y07wa!(f+7V$#Z_T^}*puBM5!83pl2*E<>C;Q1q9i^Nf zcZ@?*l~eQklLyN0G5IiqUEjIEiQILz-{XLHD=BMIOmXz5#6b?H(#mpjAvr%HRe;)| zkro|G%0p*vt7>{zQJ33PUgW!Y$`xttJi6&bZ|kb`9yu+#a$K+Vd6U?0rSS|t$L?0l zof0eg(R3My95%;vQ3tmTjFIplie|C#5Tfpxs&8Y+&F6rN;L!E^r#UhioGfY>RIELf zh7ny9Lo%Pcp-Z=Y*0?eTYW15qs%hG&pMoxXffk`kk@BNtf<7CCgGiBE?L37clYf7= zr@Qusq#@z_{-HJ7&U|Vv8~0Z*KI%M+Fq;TkiaZlef-SB2?e;{rMQie9@mniy?2iPv zqRo1KpD=l^yP}UcbSULdzhW>IrOeE8CqF2A`eyZHihO4-z5HZ=c7z_b^t?_#SV(OG zWwFzGx@Vnf0hbq~O2+K~)yrVUEDhPC9Flqh$3g>KXe5#$5uO}!ByyMNBx*qu1T&TC5lEHx zymE@n2xsOIS+5xvgWyimu^4f@$s0@qwjk95j5AcO5cgGe+T!BUW-~?_r^5HzAxv3~ zQ%q>Fh){X4n7(>ERM0XgjDya8LfggE*z{xxD_h#P49f4cKcwXMU6h)<8??5PUwo#> z)b_EY6yA=V=-Q4FlEqZH!b&Wl9Kykf#f5&@70r?87q3#~t1|$#>&^~b+Fo+zLWDhy zU<+QQED^`YDZ~TlF)KSnXXZ2iE2~FV#Wa|o6tXv$5A?W(*ZJRz-?Af#NJ--cDSyKtdFM^Ck)G>aaM0_`-t@8dqcEtZ7 zFa3)~u#*siMR9J8T(v>3LZ4x8_h*)AP&?n>h_NJ;kSI zBKBy^=2M9INJ9~DSLosE0IRldSRl6F6F-C#N-8`CU&;tWHNL^!GbtR8X9OMLpVzgp zff>ulLaYP?K^PwyI-v!(co7Kl0Q2I4(L8}To@^6f6ky*CkVC(?SPD5^oh^O+3%VOi zzmqs$_WckzZ5GtFt6%$Y#tfBn`k0X<~odcR?Mp4fR;IP4!q((OkG16JjP|=yIF` zG&OPl32)J*W5YTr-j-6oSs-Hg$Jr+<4GA~^~E3`P-^Pj zUnPA(LMKPIhdMp|h7qDfFkmF|vou#Cq=-8UN(OGbg8S3^(BJ5uk}W>b`YC|Z(pXHS z6N8eF=49JBMi5FWB=`z8Nl!BcC+)kc8O;E`m-JpYB{6Z4h4@9b0CD?MVKjXV$kiu^ z7vE#T#LLJqAweesW0G*_zZWdJ^7|x|yf79uInw(Ld*?=%(}l|swsHQuT_K^f0)!J3 zl7ChavDMoZJ5mgCQm?ad3@}Ysf4sEhzYcj+c)zcQ7Lx2qosulW`-a=``*#4#+Q&0;Qtt8 zpfr79`v&1e&^O}#!iFa+dEk4+E{>ayzc&b;^^jZ8H~x7PsO(l;gz%SaC@cU59Wx%& zlbHM6)etgauK~s%Phm8STqFg`Pe#Ez7%a)0wtq*EP=N3#Nyy8~zx-va|viJYfL zeSP`ALdO3FYfQV!=4a+6^)&VMLCf^%P5P!L9e<|(oqqa1*<(?*v^0KliV9;hXh2zjx-}UkXR|OcL2P82Upk)y5v^lhGnROXS5nvi4gd|P` z!u7ssR3@B5v!LvKY7t_8OKfC2J25USco)E1C`yk`ABo*rME5W50J2M5@vs}qbI>)Y zj4bD*1b1l%Np59A=d(5CUj`m$31Kn*^Oz(vned+jXiayrDQdg&BcI!f}_T2-`mS)xSA}QI(H1qCOWyqiaY)u7fLjV9(0RX)1|i&T54IQ~A;|>8zD~KK zayn|~S@equ)4flhPzE=yRnw#%oSY-4C^M!RiM-wrNJ(wSLo*JxAp_vX635$9yK3vT z&hLT{QSbQ6K2uG1kl0gzVpU&>rzV7NAyqVIEJEZ*HC&L{@Kpn!e<4JfvyXq|s^s4n z6bjMOP{4}b8^4RrBCDtN2nk4iWg5J^7bz;LvjATV6Re&{DnfA zj~?p}N7&|IWi70L?3Qn(zi_9oAc$#IB5-T@hBSu z$Rs}Ub3OIzTE95)zWVHDpRW2I2YCuc22L&~DyhNVV0GS0ApFvRkFLd zALPm44@tqW$4g*V$C)(w()FSfpY`Jyz%{OC#!ItPS232HYp3UaeU|bPDb_IL-m|(VF|}-<5p=1v>Xt^Bg06H)Ox3#H-81 zTSOaHmKu7*-ocJ>sL;e9hod37fB1MnKwXS3eU%8?>yIpfjR5yU%vXhS9bAKA#U-)d z2;;87ifSEWbHxJUOWIl>nB@_V4Rrd-afwkkQJI+)@#VuBl=w&jnrtK7KF`s+ZLuVO z(#NLubD<=6a-zO;D(*6JoC`|II0wv(cv6E9FO?LJpS7yGRXR&L>tU)6A^wvT>9#$y z*cMh7oNm1l3L{!FxnIL7D_LKw5b*rSq4HovxHqK}dV5u%ETFsLL3mi*7Sc96kC@Ud zJ?ELH+gu=_5ZKC?Lu=-M3ytWn)_{zqI)22E1uOb?+gCi8u2YLbqWR=?rr;; zSjm|LZtgobK|&ss#`UPJT=I3~w0FLe(0P<5e!y<%5}H8$tC!tt!-hkrO!9|Pb1!l5 zmq{ubCweaWcO~N7pznli&o@x$tAf?dI3~Sw;TMMmcBoKq%n^agk__`p0;#AxH6gh0 z$8!rq5erW!^LC;|VrL6u`>R#TGlo+0IcxY%Qy^PNZ(zg|$w)(h=-Bqzkmrgkiy|K& z7KT?9&+gX@0%_&d9~QO{G#?DMZvVo*gS~B&A`Cwhyn({U#{bA=oV$@m)#$!-6SAwe zUSyu(eWKa%G+P0AKHSZKv}e_P9=U%hwkq0E_g&dRT_#>k<;4oQkcZOlp z`~Q0PX&k2bO|6IPGjLeGo&~SI?ga}0Ra^T7!1G+Mz8tSc;gQCjWlIDij7rBKh79j6 z)*YsEt$O5SSLuu>FqE=u;jrP0V_;#ig{r_uMP(y!591E+Lmj;T5=h+{R+||+;21#h zhPzL=#H!fivaF%rc1ioxu=i8;fE+_IeLD3oMnMn2l!5{)G%|J728IX>81q7s)*iDL z#xBa_7Ab@s1M50~N1;ns)1#^XmkCX;9y`S3KS*g$9Q}m?5ZCVPEt&jdsVAY{tRYFE zBgz9?2J{QG-`z76M&Z#ZXCdK{-wEj&_JLV|{y**;4Xjl!ao`)Xsoh)mMg9+?qoB&= zd0jXE_wR*^x3@rjduQCV)nL0MTORGFv7TZh@>%+nrv95-2VC*wJYNKptdTXtQ`00g~N!P?DF4GV@ zn=iX$wfET=7}s;cYQ<%bAEq7W^20CYAojU|GIXR!w&+T>^`f0;g!YF?=gc*OtI&@qPzA+g}H(nsO8 z0ZX1dK^1BSjaCQ4orZQ7jk1<0n&k(?!PkYM zJY4>m6)kDh4S`#zXZK&MXK$PY=@5l+2O>!cgP;=(1sOx>){H2Mwo%8mYAw!zhgB6@ zrPm7~YzoF0H92QRWg+D4hBVwV`HEqlCx#M(#0YhkxO}%B`5|l?_}POydICBtPX|kS z*>{Ru?8a6kHXI5;SOqWQXSg&wGBq@@IW?^noOCyI8lrS2F(OK=L{T934nQiis2bX*(`KE7PFodB$$CCK-uwmHw?d@TH5Eda#a6qcFwjjb~m z>|UySQ3<}EpxcI2C};x#P$Zd<^V6NBrks@Q_qkI4CQv&Z`Ni(JkhaaG?|gaW-}D(9 zZ-^%7O-pV-@|!Dy(c_H^nN)q=Co_AUWSX)8UA4?H)k%=4WBBFk#tIwKpDBK6&PCd@ z&BYe`gAdx-vDbPqhwZW;B9#x!ID>I+TE(>Jn3#2^4Pgzw6kPpk3;x+nNl!oZs%DZE(;egI25~c@(cOBL%-CVpa;>O-g(`d6hI?T z!}9p0N|?Q4sj}roO_)F=ekrS2)6w2ulV4UNz{cjNwlhE=gPQIt+lxjPls6c#aV;&E zS_@AN#hY73Gx23fZ(+l{A?lIWHXMg0ol=;tBcwrf*%ksD@bmL=5<2TVlTPx7vM$Mv z`yAGbSS$#{8neMFsbb7L(uRGfWpU1+W>|BTc{B?`fUnf);cplP8>?qQl6$#>!X2 zFbxgWmmMOzzpks#uTM&^7XTc;@%r4M-_~fDLpvu=Z8R22UH7)a8YExF1zKK;=rR_X z98dqYA)L0Hc9Fdt0h-&jQpf8h+0*ud6n__I0XO@!J~zyUkgn6g^}L?vn$qoS4^U*% z2|b_R`rI`@ZZFB&9&W6Y?GgP3B7aBbiy>gNf!Nr;M)mdHW)w)X1@+ne_ zlG4&ryUM?Q-zh^XLfy$EhTup`{lfF>e?LFo3V|6U0Ld=^)7i7`2cjY&@S-!snwU9N zH4caMWi2;HJJsJqatce6v+nd?ul0f194KDh0u8p2^LkJ5R*Sl)l?0xzUSHNB8GxX# zN>d;TzYC(qTsDhd#ap$>3G*?!8v^!gYoM#%em|>usBMu$SS;rij6ve=&=chSck zLY@c*1%W#!u;FuUzuZN5ePVgNU;)q8!cs!3QzvqQ9jj(~k5XZTGCD|;SFTu=%g*Q6 zwFA6-KDR9Z-`|!O;EY6zHLbNd48L-G*;-?M3oIZ5;4xu9o>qlGS7~^agjk7^NMKA2 zK1}5>c5JbEvALPIqKggcU0y$Q=PF;RD3WPk1LBZK>#9Je2N$k74s76Fzj&+u=7sST zNs=%dfvwJ#yrED23r=6ZzR&$O5Qyx74!!5d6aPb!)XT+UNd+koL>E_2eGKpIr7jus z*{8Rr_qv{)C-r;^6%x9Gj0-lrESP^`=097@cxk;I@EIPZWKOa^{nZ8-oHL;9U*~;T z@BP))#>?Yb==oy4<7tq^=duR!&lS(d$M@b`x@8rBJDC~JT2`NLs-(!g4~h!N+}65; zo?fD&_%Hs*I5PI<5!p68_727oaoRrpvmmVnKp2@=G=u7I>VaNU=w{CtTz+1kmsVeF zPk(vKt}4N!QV}4+KS7h_W+aG|@KG0MWf|^{{d1V*m*Vs*wccIHb=>y}y(*%XQJ3S&%2AjAHFS7A-ww|XzB{6v$N2fBI- z_hV!E%qQpc(33|hG?Qtty=ofLm1Sk=G0MPP`sIt;)1Rv9sZTlPyGlHv?ukVKW6d48 zje)ZdgV{JA{1Sows6PK@WS?z&dz%^m(Piosv0mn@0<7!R!(vMFCLOn8ecdI@eBt+m zMN;1HUZ%**~<=x6|S2%}}7>tbvQ z_TZgHkDMdXiFd(G+tbvrlF;+WT-g%nWncV`7#<^qS-6{$yIqC6&e?qR7KD5|Rg||s zjS(0xgMitWUEm`jB_ymfx*s|$Z}I63i2+{ByIaWXc<`?WxjH$4T$iK@Yi+P~bF@(S zoZu9+qk(L0o#x6x3A{8&RY)u4Srs>ta|gv?fKSTF!4XcJ;P`yaRr=L+cWV$1{4KAu zuHe6mZ8Te^$W#MZK?ShMw^Buf{LfiPEjin{?dwx|7waJa|`{+B$s;j5Q7G~zr zECVX}8F>E@PMls=X!; z+izfsXulxiZ}WeX*ze5oReA6T2fZ~_R8^6Yku}P+-8Un+fRx_8X(d8W1H;h40Ub2e zBZxU-q3?m*6l`f(XgEx-Q#kZrhLS28H^L&v#;7C^N>*0B1~JwQ&sRGS*S9_107V+x z;%WP#>by=HCo`uH@Row;GSnkv^Wp-;_6pKsu&{Y7r?#x;^|+j6p$~mmpHFVVv*rHW0cH$GzT>och>t0fy?*fu|w>}Tk`VSjP-@N%P~0l0pV2n7uk(YRH&1iK6qC-Ytwb3z^)p6mmJbn^yWM<&eJU(jBHm zpbR<#&Xev4Y_IhQc<_B*yF8qykJqX9DLYkIS-S?euT4qAB^7tEf9|05xTc`%%n6TEKAap+G1KcGxyVkLEsx1=i!9fNbT6wT-4%?nD9U36~#cwijw?A#$ z{&>^U;dZ*)agzrmugtQ|5Hy_cTp%G-9c&W$j)RiLZh31kZf86L0@RG7KLr}{7TSEC zQS934@Tm-k;xa2OyYSqsQPB$U8l((vK- zwbEyjeRSQP_v)n8+nXTmB|JRb-x3Za&(b~`J`Eu87#Hl6H#uCBWVBoc@!2)sGG(+s z-+T>5Bbwq$O2{q=pzNGNjm4-%a8jscwo95`2l_%qY3Z}tI(O9T;p89mNz+oy)X})+ zRxcAsCGOR!@!aXysb$0n^cr(q)}4$HA-R*9CaM;%RsyRllfHl zVMU`e;8o^Gg@c}&066$L$W&d_QV*va_ea$=G$;(E)_xls0^)&RDL@&;IX1mGL^(pX zS3`eQ>kdSrqr)vDr6Wa6Z1eB+P-r6=*PsIuB36ag^30hn(y*{}v@G}c`9o^2XX*>k zopSyoU4esGX9y1GzIkpLD6PR1^dCDPMb?;A~&R6(aX|N6o)b%Gf&R`URgy(zw{Gq9!%EHjl zQ1X|O;u0KeY?OS(;ei2uV6qL}>`zzR4M|&9lLmRYa$3dq7n z!1&00Nkvmia372JKGW*s(kTSY$Gtqvx7WL!W8*bRS%E}6o0(G+i5mJY$D1py(hT6TjY~_zMs(5tWO=?1+z~A=4~IKr>2WcM zW5-!^ZhyFXRCGy+Z**^jeJsX{hbte*eDd}1WrIW2P20D$1o!X?G|uiwA>AP@Te#DNN3p9<0S9M;2bgGVI*&&DL}0B7r*;=@eGb;dyc9L@-R_v zYj0p<)wVh){mC|+&6a>oNEZsg5g))94HyzCt(v_0?sjx;X2lce^$ zKIg-^2m)40r$GZXZwsv0GZ7t9fzJQByowL3Ld>EyLItM~)2+pFqi&{@oT65I@bUy; zxoR_ZGdH|X{4(Es)z+4k{d4{yA~Y17d<{iT!awgDe^-%=9DT>-eH6}NJ@;O}os!G- zJs)T5PQe|gWf^@*X;GQ=WvzsyI1LR=L%l~NF;BI3f8^rgyBi^=U_CXRR?l%#>KA16 zP=XZxRs&+|ocnwC&EJuu+rNd(zjxKPGQ>I3<%`oWHjwV4NJneR@9z^TnwvO$9s~di zFqnw~>LCl0TUM8iXjGlK3!B6wG)O!=JR^%;nd@}c18dO(h7377W1PDa$$J((IxB@d zY7e9bVbkKcCYfSU(SLw}@z0`+lH53HEQj?@c$4am5-D4rflgQN=eX}vQa{pc+=ka2 zssuVm?0;z`(5Z;XO-)|}$!mW!UFi1TZW5#2Tb>&o{W$kF96I;E%kU_oU3_6&R8F-t zU>{yeNLKR-nVa2?`0;~`i`mX3#Tj3UMX^9^n!}Mlg+cH|qhaa)?R%p#WMYevp9zgG zE-(IwtX~)E+Bv*s)p4pZA5BT&W7Ct{pXA%D>vj9U5YN6E`2Du#qjg?_iJ~t__Wxx*pv+?ZXkmfe-hmPmNdtiBf!C7BW>i8OGt;yN4=4D z{!>dU=JV$_6xGrbEF`*9@8S)#<*ii2wFgkvF}r&QZ2ngZxMbWUwlpF|XXK}~egdM8 z>C1wCsmiTtPPa2?ZU&`+J`uR4#@2wQBLRbJYIAB-7p^Xr!k^e5R#UKM49V~V>;8*W z{tz%>-#1Qs&Xa1X3^^CbL{hcU6cY;=-yI$q8Im4H{DHS0E)T9fAxiB2JEai`>i$bB zVJ7Zfe5W=`^&K~hM5&zrUm>zttOa_Zd30iK0t*{+t?8LRArJyLw`-4o`n*1L`0_> z;k=v-Qec&yF3b>S2nlLLUCPaeW^caUCcQpptiHNTCn}HzBu(D@NlCWBTJocvqEI8y zRrV;`!`m{#sK$tQR(9{#4{O#TC-+dCY9X+R)aIikV8`8Y7 zdQNUnbUo{BRRW~R$9QE$ z3SN3ae^Nvcg^eWQV&>#bBs}OH#4%I{=NLYRClg%--9RdTSnGK4h!Mhsv^20F4oi-r4x;@Xzkpiwj02>(u;x^w5uW&w`5Pxs}~m{AthO-ni&1`%dBnL3hvV zT&d5&7_ApWI~$9Y!DwR#c)o88RCOEsopkvB z#=ZD7A0L+1VUp6VC83<=Eh0A09<1n)jBB6SJtR^I4@=x8Cc(4+POCN~L^=U?Qbk3@ z9oxd8sT8s;?SbxUeh9+B!?MF_Ex3?njXx6J-{wH;Vx#0U>C2_>|huUv;M83mC844q7TD~A6hOW`S6)_W@eVX z^240NzetIB+IXj4&xdHM7=1E4ZG4XWr*qxtmDx7Mi%924tdRgG@~`za&mFIxd!cl{ z-ZQgct^YP7Y>jiLAdK;GFsf-fcZCE8 zwhD0yymbac(G)*JLmiMp&x=v1xnge&taA#=OG|6>^NX8{t1Hjso#oWi3!1B& z!Z*GUtmR|<)wfzfSNICnT>sjaHff8upm(@wIrpI~@d6$FJe#$+Y?#R21=&q>PN z-QB@P#yYbsw|paEH1(I)gUmbUjov|!Fr&SEoh?|7@zba%X|F49&3d}p?~aX)&CcEc z^i<6{H4V-rs>3BK2V^lF9sU;O6k0U2YqaC*2$BdI=RAdU1-oOP%k|*biwEn97Wg|l zVS=S_FOx5oU0d!qof1yzO=DYuwu`m<0v zs;a+gfXGCunzSZO{E2#L-+pdxmcui35f#H4MtNF$N}jv)Tr(rmUh(Lb0M1Mq2N`2E^+Lxc&qacMu3e!x88%FjkJ<~{+QzQ1D*vSn=3v9=)ZdB| zrSLo59PyMAydz3|xd5fdOQDy;)7KZWm-YGAJ8*z`3GL6|bz3vgwHyVCQGjLZ0(#M6 zUEYoBM)%9N|8~1HH1~sa8Fzoj+iwH(pN;`pEx-=)nyUZ!GXL^&3b_X88QFQb=xoWatemz<3Ipt_w`Qc_1^^87j1p3<{&|a z!9lH`KS@ZASz6DYFd+9iWUm+C*C(SKJYVj2F-Up;Of3VP?E32K%k3doMT5^y?9ccn zgRbuI@GDoBwo6doJo(r15&~=F%f1pu>%&2bIr2EWIu|&QFR|Dx6Cktb-iH<8@(d403N_~aJT1<<7K;g*-syMsNMJC2UW4Lu>qjw z#qRaS4pf<6FTf9{{~pP|)8F@wqk{`GQ**5`Zy8t3EA?1WJA{;5l8iLp5jtA`4ePyc z{0>jtn}K~NU9boyYZ+qcO5>Q7OJzklmY{D?0Ty4d#rO4kJpS-_bL@F|+@Qw+L94fX z&3e|InmuNWtWLQw?pOR+2$Y)cS9g=7ZFhbB2f$LA^ABVpZh7h>IaV3NFL&qt0;pAj zFL#^ag=8;h!SUVQ-iufJ-valJsI@(+JLc-LaeuHg%F8L8)4I%J1*7-GaA0 z7aEV#nX;D-$f>*@QVv8a$~mI6D6^T37<>)U31}qt=oHlNdQ@A`sk0CXXgGOydWz<_ zD>3cCOp)eyp_$vC?UWQS^QdugVJ*D+0P#|3-rMZo9ZzOu6BNwKZ@yXU>H)8yklUF7 z@R|pF2exI^9eJWpP8ODy?uLe+gYV~&KN)T{{)e&~MHn|dqt@UJGApY-*8Pz-EiT7z zK(|{)Ru<@kLn97f_~i8`<|qExgQ5T^aj4I$(b3S+6;M0ZHk|vUw{!!HpF6I#tyMKI zJ1eE((VykgBY9FM4B|hJV|+`u$E%JHSA)WxTs~fZOBZT_Fvv7CG``;rbSYYDHl<;6 zxDVw%o!>W`*8bFFZ3CB=qo_OO zI9j$AddmEvwS@(@_l~@bj00G0Jv~#g*c;LC@$st0`)$R8=ihyl^z`Io5kLz_ajM*( znq^bwgE@W?27aK$)7!dQ_OFvU)E@FK%u7*yeSN59fH?^wUb%&p(dpP4s6|CZU73qf z`(x|Z9zelUh>9P%N@ij4jatsZK}JFX?vZ{)Q9vIEX`Ke5g+IFOToGCkJtRT26z>AaI!#T2DjpFL2kadZ1}$Uqnm%3v-3BXcOW#FCIspw28f|||qfo8|UBnISa z9`ejpqERLrBBT6ae3%G?sF*tL^2WUnm-Jr`=3fqgVdufM;}!^hj~gIouB(qPw;i6h zE3SFB%ag`ed#p`48Wl|&_0A1GV65fgcSFZ{+bQIoxykqwN>lEZ(Ort4#+7Oj>g5#$q3xwx^dc z^MZo0z$85E4OCpvtT8MveclBt0-I&9I5mjMC9?)}q2|BE6-TUatE8tlZ@>~IgI8D0vEtIxIY4=E!wQlF#a42Bph>M!9h06#- zE>!75GOzRX!7K`XwV~w;RyK2_!{!B0@Ls+ycw%&N7hAu+o|JpAB)(sWwONQ=_B_Q~ z-b+UJ3yf}s=ncww({v>1At6D-Q260`ptTVirw|d`{w?vSXj$Za9Y4~FkZOs2Pek;M zEwy6I=agsF^Q6t(41B-cjg?CbCuHLlTug42RgfbTGFnKii<^IGrX_VX?(Xgq+%34fOK|7yoO922@B2Tqckk-z>guXqYkhPY)rhQU z+K5PTYpKUMloVo&q~}Xthrx;MC!7`T>_34Xe$^!wpO=(S}<3KpR-DyzSxZ z5p`@@kyt`3p+1Z6O(N`f=GKRYVczj&2{FRWS#zL2b#3%~;ohJ`#7?Q(TYUZ}GplUC9%e(zzT?b5&}PTtfSbC$8I6Z$=uAS$nteN1M$~w(eGMu(4LNm&7mZ{iA7I7B`LL2{j3KwDC32+1Jk=(&t8IKNB%i6gY|L>&aTI zUJ@hmMs@jGjo(3UsCQ|7eQ)oyS_!MhY{4dv*rCw-)uX4Am64u5{EVnRlf~?-U6Cog z(hqj))rpsG)2rBAVHGOe>$d{#SG9k{X)Jmy=zGDK>{O*_n%lScaA?FVCYy}}?T~$; zEp%29#!luQJ7-;v!Rsb6xLwzAx<|&qEVia7rbv zV48lCSUT|#lqPu|y~00Wg&kM1K`!4RPFsd$e{VX@B0c`S@05052HzCjLYQm9`jbj_ z;N2p+38xj+|Ln$$r`|JR`Tgidu zR*UZ}$7c}5ZT6*qB(RnY?wp0H2lVURAB1(!b4o6s+;CDFO*2~5&)68f)^K1U{JXmS zABCG;AAnYrT>WkKTNncg#`_?lVP6MaV}?rJd0Me~Cp#gRNbre zVAfZ**!&Ouy^>PASX*0ITL(;7LDJYn2VGu@LDw16m;A3Z{b=|hYP#4hlq*#hZb@BP zpF0*+hw>F$_Z>hLT{2-P1d3shIH)V04{(UkD&mM);h@jygP`QiU=WWAh!rxA@`M26 z1my>%|D?@B;$aMe;-L&g2{V!uMO@cL&d`CKM(Yi3e>8y*vwwGDh;G%2}B z1PWo3u)h*PFv2PbfS#>ZXN4H4{nHeOfE$b~otW4t{>q`ugBiRkK}Or=|{YbkP>X>BUEI1O4$V1km5zknz@=|s@?BlGwbF~fQXT~$wIu&|;}!+&tKo#$X8L+wM6WJ7|F z)kmOWutiWXa0y5h4nkKH(@fsDs$FT<)ToWYfXI6w;fU*aOc10>&e0NMab&Zc6kfI- zP(c?th(;3xpKWq`!{Pa+-fo5dHEj~$)@Zgo1N7qZl~TCu3h!Sp5d_=biF4!q#QXxC zgGdhDN!JPe1KOB3O)OE{HPO)G+zZCD5=4=S|8oO_*-^$hyaOmowCBd90eNZ~e0|_LVOnN9%Ilm({trvC?q^vRag- z*g6T#0FgtpPUrq6lfms;M_qgsY0gFHlY-PfpR{0I)%DGvlZ?EIhaApo3O`H=K@mj5 z>91;H4L;2=wx;MrCle9S&IZ?D35!sB!#GhRo`bSYL_j@=P);>T`3u0=t{Z706(_s) zcuy5-fzQ%+|8)9|%7R7|^)!oXGAMe1ZaK?Z*A!51`S1a^V(73hBp)D%tNn58nIxOx zLFQ0UaIVNq_LdB8gk-}vW?M}Xn@L1zT0~3X2}Fn|f->-R5YD-$xQF2Rlh}m{CkGyH z0ez>#`b6SfnXW-`o1rzgfs^rn$V=tmGw0p3#1;Ji<6GscI#rR4b~l!4`ijXMfho_z$2^&Sd{ zG3>AICkq-j!QxkER&fS1_k6b)?GWXYicHN7ZiHnJeN6^688n!28AUuCI|i<^ih~^P zyt4`%LKKivroZdr&Y}&+=9*G{RIr90~XNR&{*WQRr5CfVH zo$~8&(g;=`y+%M}90y=BJfUGELPU*IJkU(w@l6bt_HhSWpmtNh;6p78C zO-k5fN$~ijQdE;&-CSmC7a1^`N-#|vyP5Ukph*>~j?*wO!>C}^O*#=#3gS`G{n-%^ z5un7Pz+@(!bjD~Va44t?kPVt7!eG!xJFU!$rpVrLby%~0mZgCaoHan` zjfeq-ryCH=-Bnqa=x%mfl$aHy@c9#r!y=Abffcfip2Fq*uq<%)Hz%h zE_1Ei(2}F#mW|gdue%At1u_m^yN?@iBm4y$I9R+;e?FOx8W0pR{4lo+W{+cxwkt(I zMgccC)dO>)#X_Oj%||?RdPAl8TZ*(Orp(21?#}hd-p^JeBU$83)@b+7?vJl<8Z+CU z?oag1X=wTtGB`HtZSxKIOeZqmJ$F2kshs!6c;u~p)at@dAxMqYVgXt);V;03sJN_H zc6*r*w&M(}stCo*W`v`GxFLyUPRA{T!>yBB-ily{pSD~Hy!p9sk!pm?b5MV};UW|y zK)gJfQ~B!J)8E~N&A{UNhk(n4T(Xb>YhkD6PbCLbcNGOA3&N9Y55C#{fWhZ4TR037 z)=m{<0HU}BF{C3J?g(lE&R|=zpVQ&QAeVW~_B|o4S zmZYNdsuFhfq9jTd)Jf%#L90Yk6~0d=2>OGm42M(vkFv3 z_gReU>6L`fA4us!0vxj*$JMuzzBT{nsL1@CTlYe@JYgu*RmjFgZy65P56M>*NcN&&8A+fcPSbq3+`AESF-W0JSpv5ixE?=YX*_gb+;9mP= zw2f3bK5&6bF^b$R$s{X4^IU2`Ff1HY!m}jR!Ok<|`hF&Ss%pvHQbK`fEnwlR^W1wv zzb&dQM{TykiIIiiz2vJz^!RkF@Q$O;x;Sq4*Q zd?-WG#^ve8jmx3Qkb<`K1pWO^!$J7U-(2djs~O)oHHi(=?!8k3WV z8i+ebtw6`g-|3r8I&H}>Q^r+dKHH~bYK!-!(!6P90Krnrr!yh%;~%O5%p8(b5q(za z_`#zvW06I=2~S{65f8;GMkBP+kJh@Cz-O&r(RUUhIgNoaT(N{4z)vpFeG}_Y6nLmN zzwQO96?Iaya|V-j3V6n)7!oXT<%NvZ>aVV%Fe#;gen*pmeO`2)=ThL*>=+OcYr&Q_ z$mvA_d)9>G>$UgVgbUk+6thn0a8>nV);ObwE?w%7aU5gb3(*OjD;NZ*#g9!fP`>++ z{b&rBFg3=}OM=n~0UsS<5*;E1ks2Q|JU8aY;~e?)BZUkFUR675Q+Ndeevi^o3kHVw zGwLaPf5ark8Mj-5aD+#yiJexkw~_Pl!PRZSEhZQAQUYa9FM9g2|~WK09C~)PWshOGi9_ToS2oW zY#~V^x7*RAGcW!|EHC}80aXIlge^sKQ-fl-@=}M?l##hO@qRHGB~OMM@n@GZc1W*S z=IIK3zYf+hbkZn|->HPB?Z}AK0Xj+(iOzzNq+}97b${0d&JjFp2xvd!0ZGwIWZ8$2$j*v|z{oWM#XD6>Nl&$XHQKYKE@*ENJ z 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 RfD=I=83{%4DpA9q{|gGi@aX^m literal 0 HcmV?d00001 diff --git a/listen.log b/listen.log new file mode 100644 index 0000000..62168b8 --- /dev/null +++ b/listen.log @@ -0,0 +1,14 @@ +h2 tcpdump -i h2-eth0 -w /tmp/attempt1/h2/h2_eth0_fwd.pcap & +h3 tcpdump -i h3-eth0 -w /tmp/attempt1/h3/h3_eth0_fwd.pcap & +leaf1 tcpdump -i leaf1-eth1 -w /tmp/attempt1/leaf1/leaf1_eth1_fwd.pcap & +leaf1 tcpdump -i leaf1-eth2 -w /tmp/attempt1/leaf1/leaf1_eth2_fwd.pcap & +leaf1 tcpdump -i leaf1-eth3 -w /tmp/attempt1/leaf1/leaf1_eth3_fwd.pcap & +leaf1 tcpdump -i leaf1-eth4 -w /tmp/attempt1/leaf1/leaf1_eth4_fwd.pcap & +leaf1 tcpdump -i leaf1-eth5 -w /tmp/attempt1/leaf1/leaf1_eth5_fwd.pcap & +leaf1 tcpdump -i leaf1-eth6 -w /tmp/attempt1/leaf1/leaf1_eth6_fwd.pcap & +leaf2 tcpdump -i leaf2-eth1 -w /tmp/attempt1/leaf2/leaf2_eth1_fwd.pcap & +leaf2 tcpdump -i leaf2-eth2 -w /tmp/attempt1/leaf2/leaf2_eth2_fwd.pcap & +leaf2 tcpdump -i leaf2-eth3 -w /tmp/attempt1/leaf2/leaf2_eth3_fwd.pcap & +leaf2 tcpdump -i leaf2-eth4 -w /tmp/attempt1/leaf2/leaf2_eth4_fwd.pcap & +leaf2 tcpdump -i leaf2-eth5 -w /tmp/attempt1/leaf2/leaf2_eth5_fwd.pcap & +leaf2 tcpdump -i leaf2-eth6 -w /tmp/attempt1/leaf2/leaf2_eth6_fwd.pcap & \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..e69de29 diff --git a/onos.log b/onos.log new file mode 100644 index 0000000..ba161bf --- /dev/null +++ b/onos.log @@ -0,0 +1,19 @@ +deviceId=device:leaf1, flowRuleCount=18 + id=100001e5fba59, state=ADDED, bytes=0, packets=0, duration=2350, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:arp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=10000217b5edd, state=ADDED, bytes=183520, packets=1480, duration=2350, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:lldp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=1000039959d4d, state=ADDED, bytes=0, packets=0, duration=2350, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:ipv6, IP_PROTO:58, ICMPV6_TYPE:136], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=1000078c06d68, state=ADDED, bytes=344, packets=4, duration=2350, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:ipv6, IP_PROTO:58, ICMPV6_TYPE:135], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=10000d1887c0b, state=ADDED, bytes=0, packets=0, duration=2350, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:bddp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000007e251531, state=ADDED, bytes=4956, packets=42, duration=2350, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_my_station_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xaa00000001], treatment=DefaultTrafficTreatment{immediate=[NoAction()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000028ed981d, state=ADDED, bytes=0, packets=0, duration=2141, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010001000200000000000000000001/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0x20], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000005f8a4559, state=ADDED, bytes=0, packets=0, duration=2346, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010002000300000000000000000000/64], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xec3b0000], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000076325a77, state=ADDED, bytes=0, packets=0, duration=2346, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010002000400000000000000000000/64], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xec3b0000], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000078797bee, state=ADDED, bytes=0, packets=0, duration=2346, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x30201000200000000000000000000/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xba], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000a2deb332, state=ADDED, bytes=0, packets=0, duration=2345, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x30202000200000000000000000000/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xb9], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000190d48bb, state=ADDED, bytes=1416, packets=12, duration=2141, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0x20], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x6)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000abeb8fd1, state=ADDED, bytes=0, packets=0, duration=2345, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xbb00000001], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x1)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000f57b2b7c, state=ADDED, bytes=3540, packets=30, duration=2345, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xbb00000002], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x2)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000a489d650, state=ADDED, bytes=2800, packets=40, duration=2350, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_ternary_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0x333300000000&&&0xffff00000000], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_multicast_group(gid=0xff)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000c8cf6dac, state=ADDED, bytes=0, packets=0, duration=2350, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_ternary_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xffffffffffff&&&0xffffffffffff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_multicast_group(gid=0xff)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000026ddb735, state=ADDED, bytes=344, packets=4, duration=2350, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ndp_reply_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ndp.target_ipv6_addr=0x200100010002000000000000000000ff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.ndp_ns_to_na(target_mac=0xaa00000001)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000e71f7679, state=ADDED, bytes=0, packets=0, duration=2350, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ndp_reply_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ndp.target_ipv6_addr=0x200100010001000000000000000000ff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.ndp_ns_to_na(target_mac=0xaa00000001)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} \ No newline at end of file diff --git a/p4src/main.p4 b/p4src/main.p4 index 3bcd2d1..d683ae1 100644 --- a/p4src/main.p4 +++ b/p4src/main.p4 @@ -63,7 +63,6 @@ const bit<32> NDP_FLAG_ROUTER = 0x80000000; const bit<32> NDP_FLAG_SOLICITED = 0x40000000; const bit<32> NDP_FLAG_OVERRIDE = 0x20000000; - //------------------------------------------------------------------------------ // HEADER DEFINITIONS //------------------------------------------------------------------------------ @@ -423,7 +422,6 @@ control IngressPipeImpl (inout parsed_headers_t hdr, counters = direct_counter(CounterType.packets_and_bytes); } - // *** TODO EXERCISE 5 (IPV6 ROUTING) // // 1. Create a table to to handle NDP messages to resolve the MAC address of @@ -446,11 +444,167 @@ control IngressPipeImpl (inout parsed_headers_t hdr, // You can name your tables whatever you like. You will need to fill // the name in elsewhere in this exercise. + action ndp_ns_to_na(mac_addr_t target_mac) { + hdr.ethernet.src_addr = target_mac; + hdr.ethernet.dst_addr = IPV6_MCAST_01; + ipv6_addr_t host_ipv6_tmp = hdr.ipv6.src_addr; + hdr.ipv6.src_addr = hdr.ndp.target_ipv6_addr; + hdr.ipv6.dst_addr = host_ipv6_tmp; + hdr.ipv6.next_hdr = IP_PROTO_ICMPV6; + hdr.icmpv6.type = ICMP6_TYPE_NA; + hdr.ndp.flags = NDP_FLAG_ROUTER | NDP_FLAG_OVERRIDE; + hdr.ndp.type = NDP_OPT_TARGET_LL_ADDR; + hdr.ndp.length = 1; + hdr.ndp.target_mac_addr = target_mac; + standard_metadata.egress_spec = standard_metadata.ingress_port; + } + + table ndp_reply_table { + key = { + hdr.ndp.target_ipv6_addr: exact; + } + actions = { + ndp_ns_to_na; + @defaultonly NoAction; + } + const default_action = NoAction; + @name("ndp_reply_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + table ipv6_my_station_table { + key = { + hdr.ethernet.dst_addr: exact; + } + actions = { + NoAction; + } + const default_action = NoAction; + @name("ipv6_my_station_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + // ECMP action selector definition: + action_selector(HashAlgorithm.crc16, 32w1024, 32w16) ecmp_selector; + + action set_nexthop(mac_addr_t dst_mac) { + hdr.ethernet.src_addr = hdr.ethernet.dst_addr; + hdr.ethernet.dst_addr = dst_mac; + hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1; + } + + table ipv6_routing_table { + key = { + hdr.ipv6.dst_addr: lpm; + } + actions = { + set_nexthop; + drop; + } + implementation = ecmp_selector; + size = 1024; + } // *** TODO EXERCISE 6 (SRV6) // // Implement tables to provide SRV6 logic. + // --- srv6_my_sid---------------------------------------------------------- + + // Process the packet if the destination IP is the segemnt Id(sid) of this + // device. This table will decrement the "segment left" field from the Srv6 + // header and set destination IP address to next segment. + + action srv6_end() { + hdr.srv6h.segment_left = hdr.srv6h.segment_left - 1; + hdr.ipv6.dst_addr = local_metadata.next_srv6_sid; + } + + direct_counter(CounterType.packets_and_bytes) srv6_my_sid_table_counter; + table srv6_my_sid { + key = { + hdr.ipv6.dst_addr: lpm; + } + actions = { + srv6_end; + } + counters = srv6_my_sid_table_counter; + } + + // --- srv6_transit -------------------------------------------------------- + + // Inserts the SRv6 header to the IPv6 header of the packet based on the + // destination IP address. + + + action insert_srv6h_header(bit<8> num_segments) { + hdr.srv6h.setValid(); + hdr.srv6h.next_hdr = hdr.ipv6.next_hdr; + hdr.srv6h.hdr_ext_len = num_segments * 2; + hdr.srv6h.routing_type = 4; + hdr.srv6h.segment_left = num_segments - 1; + hdr.srv6h.last_entry = num_segments - 1; + hdr.srv6h.flags = 0; + hdr.srv6h.tag = 0; + hdr.ipv6.next_hdr = IP_PROTO_SRV6; + } + + /* + Single segment header doesn't make sense given PSP + i.e. we will pop the SRv6 header when segments_left reaches 0 + */ + + action srv6_t_insert_2(ipv6_addr_t s1, ipv6_addr_t s2) { + hdr.ipv6.dst_addr = s1; + hdr.ipv6.payload_len = hdr.ipv6.payload_len + 40; + insert_srv6h_header(2); + hdr.srv6_list[0].setValid(); + hdr.srv6_list[0].segment_id = s2; + hdr.srv6_list[1].setValid(); + hdr.srv6_list[1].segment_id = s1; + } + + action srv6_t_insert_3(ipv6_addr_t s1, ipv6_addr_t s2, ipv6_addr_t s3) { + hdr.ipv6.dst_addr = s1; + hdr.ipv6.payload_len = hdr.ipv6.payload_len + 56; + insert_srv6h_header(3); + hdr.srv6_list[0].setValid(); + hdr.srv6_list[0].segment_id = s3; + hdr.srv6_list[1].setValid(); + hdr.srv6_list[1].segment_id = s2; + hdr.srv6_list[2].setValid(); + hdr.srv6_list[2].segment_id = s1; + } + + direct_counter(CounterType.packets_and_bytes) srv6_transit_table_counter; + table srv6_transit { + key = { + hdr.ipv6.dst_addr: lpm; + // TODO: what other fields do we want to match? + } + actions = { + srv6_t_insert_2; + srv6_t_insert_3; + // Extra credit: set a metadata field, then push label stack in egress + } + counters = srv6_transit_table_counter; + } + + // Called directly in the apply block. + action srv6_pop() { + hdr.ipv6.next_hdr = hdr.srv6h.next_hdr; + // SRv6 header is 8 bytes + // SRv6 list entry is 16 bytes each + // (((bit<16>)hdr.srv6h.last_entry + 1) * 16) + 8; + bit<16> srv6h_size = (((bit<16>)hdr.srv6h.last_entry + 1) << 4) + 8; + hdr.ipv6.payload_len = hdr.ipv6.payload_len - srv6h_size; + + hdr.srv6h.setInvalid(); + // Need to set MAX_HOPS headers invalid + hdr.srv6_list[0].setInvalid(); + hdr.srv6_list[1].setInvalid(); + hdr.srv6_list[2].setInvalid(); + } // *** ACL // @@ -503,6 +657,10 @@ control IngressPipeImpl (inout parsed_headers_t hdr, // 1. Set the packet egress port to that found in the cpu_out header // 2. Remove (set invalid) the cpu_out header // 3. Exit the pipeline here (no need to go through other tables + + standard_metadata.egress_spec = hdr.cpu_out.egress_port; + hdr.cpu_out.setInvalid(); + return; } bool do_l3_l2 = true; @@ -514,6 +672,10 @@ control IngressPipeImpl (inout parsed_headers_t hdr, // If this is an NDP NS packet, i.e., if a matching entry is found, // unset the "do_l3_l2" flag to skip the L3 and L2 tables, as the // "ndp_ns_to_na" action already set an egress port. + + if (ndp_reply_table.apply().hit) { + do_l3_l2 = false; + } } if (do_l3_l2) { @@ -523,12 +685,36 @@ control IngressPipeImpl (inout parsed_headers_t hdr, // routing table. You should also add a conditional to drop the // packet if the hop_limit reaches 0. + // if (ipv6_my_station_table.apply().hit) { + // if (hdr.ipv6.isValid() && hdr.ipv6.hop_limit == 0) { + // mark_to_drop(standard_metadata); + // } else { + // ipv6_routing_table.apply(); + // } + // } + // *** TODO EXERCISE 6 // Insert logic to match the SRv6 My SID and Transit tables as well // as logic to perform PSP behavior. HINT: This logic belongs // somewhere between checking the switch's my station table and // applying the routing table. + if (hdr.ipv6.isValid() && ipv6_my_station_table.apply().hit) { + if (srv6_my_sid.apply().hit) { + if (hdr.srv6h.isValid() && hdr.srv6h.segment_left == 0) { + srv6_pop(); + } + } else { + srv6_transit.apply(); + } + + ipv6_routing_table.apply(); + + if(hdr.ipv6.hop_limit == 0) { + drop(); + } + } + // L2 bridging logic. Apply the exact table first... if (!l2_exact_table.apply().hit) { // ...if an entry is NOT found, apply the ternary one in case @@ -556,6 +742,9 @@ control EgressPipeImpl (inout parsed_headers_t hdr, // 1. Set cpu_in header as valid // 2. Set the cpu_in.ingress_port field to the original packet's // ingress port (standard_metadata.ingress_port). + + hdr.cpu_in.setValid(); + hdr.cpu_in.ingress_port = standard_metadata.ingress_port; } // If this is a multicast packet (flag set by l2_ternary_table), make diff --git a/ptf/tests/packetio.py b/ptf/tests/packetio.py index 0960bec..846c1d4 100644 --- a/ptf/tests/packetio.py +++ b/ptf/tests/packetio.py @@ -67,7 +67,7 @@ def testPacket(self, pkt): packet_out_msg = self.helper.build_packet_out( payload=str(pkt), metadata={ - "MODIFY ME": outport, + "egress_port": outport, "_pad": 0 }) # ---- END SOLUTION ---- @@ -110,12 +110,12 @@ def testPacket(self, pkt): # clone_to_cpu action. # ---- START SOLUTION ---- self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.acl_table", match_fields={ # Ternary match. - "MODIFY ME": (eth_type, 0xffff) + "hdr.ethernet.ether_type": (eth_type, 0xffff) }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.clone_to_cpu", priority=DEFAULT_PRIORITY )) # ---- END SOLUTION ---- @@ -128,7 +128,146 @@ def testPacket(self, pkt): exp_packet_in_msg = self.helper.build_packet_in( payload=str(pkt), metadata={ - "MODIFY ME": inport, + "ingress_port": inport, + "_pad": 0 + }) + # ---- END SOLUTION ---- + + # Send packet to given switch ingress port and expect P4Runtime + # PacketIn message. + testutils.send_packet(self, inport, str(pkt)) + self.verify_packet_in(exp_packet_in_msg) +# Copyright 2019-present Open Networking Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# ------------------------------------------------------------------------------ +# CONTROLLER PACKET-IN/OUT TESTS +# +# To run all tests in this file: +# make p4-test TEST=packetio +# +# To run a specific test case: +# make p4-test TEST=packetio. +# +# For example: +# make p4-test TEST=packetio.PacketOutTest +# ------------------------------------------------------------------------------ + +# ------------------------------------------------------------------------------ +# Modify everywhere you see TODO +# +# When providing your solution, make sure to use the same names for P4Runtime +# entities as specified in your P4Info file. +# +# Test cases are based on the P4 program design suggested in the exercises +# README. Make sure to modify the test cases accordingly if you decide to +# implement the pipeline differently. +# ------------------------------------------------------------------------------ + +from ptf.testutils import group + +from base_test import * + +CPU_CLONE_SESSION_ID = 99 + + +@group("packetio") +class PacketOutTest(P4RuntimeTest): + """Tests controller packet-out capability by sending PacketOut messages and + expecting a corresponding packet on the output port set in the PacketOut + metadata. + """ + + def runTest(self): + for pkt_type in ["tcp", "udp", "icmp", "arp", "tcpv6", "udpv6", + "icmpv6"]: + print_inline("%s ... " % pkt_type) + pkt = getattr(testutils, "simple_%s_packet" % pkt_type)() + self.testPacket(pkt) + + def testPacket(self, pkt): + for outport in [self.port1, self.port2]: + # Build PacketOut message. + # TODO EXERCISE 4 + # Modify metadata names to match the content of your P4Info file + # ---- START SOLUTION ---- + packet_out_msg = self.helper.build_packet_out( + payload=str(pkt), + metadata={ + "egress_port": outport, + "_pad": 0 + }) + # ---- END SOLUTION ---- + + # Send message and expect packet on the given data plane port. + self.send_packet_out(packet_out_msg) + + testutils.verify_packet(self, pkt, outport) + + # Make sure packet was forwarded only on the specified ports + testutils.verify_no_other_packets(self) + + +@group("packetio") +class PacketInTest(P4RuntimeTest): + """Tests controller packet-in capability my matching on the packet EtherType + and cloning to the CPU port. + """ + + def runTest(self): + for pkt_type in ["tcp", "udp", "icmp", "arp", "tcpv6", "udpv6", + "icmpv6"]: + print_inline("%s ... " % pkt_type) + pkt = getattr(testutils, "simple_%s_packet" % pkt_type)() + self.testPacket(pkt) + + @autocleanup + def testPacket(self, pkt): + + # Insert clone to CPU session + self.insert_pre_clone_session( + session_id=CPU_CLONE_SESSION_ID, + ports=[self.cpu_port]) + + # Insert ACL entry to match on the given eth_type and clone to CPU. + eth_type = pkt[Ether].type + # TODO EXERCISE 4 + # Modify names to match content of P4Info file (look for the fully + # qualified name of the ACL table, EtherType match field, and + # clone_to_cpu action. + # ---- START SOLUTION ---- + self.insert(self.helper.build_table_entry( + table_name="IngressPipeImpl.acl_table", + match_fields={ + # Ternary match. + "hdr.ethernet.ether_type": (eth_type, 0xffff) + }, + action_name="IngressPipeImpl.clone_to_cpu", + priority=DEFAULT_PRIORITY + )) + # ---- END SOLUTION ---- + + for inport in [self.port1, self.port2, self.port3]: + # TODO EXERCISE 4 + # Modify metadata names to match the content of your P4Info file + # ---- START SOLUTION ---- + # Expected P4Runtime PacketIn message. + exp_packet_in_msg = self.helper.build_packet_in( + payload=str(pkt), + metadata={ + "ingress_port": inport, "_pad": 0 }) # ---- END SOLUTION ---- diff --git a/ptf/tests/routing.py b/ptf/tests/routing.py index a3707c2..df0655b 100644 --- a/ptf/tests/routing.py +++ b/ptf/tests/routing.py @@ -64,10 +64,10 @@ def testPacket(self, pkt): # qualified name of tables, match fields, and actions. # ---- START SOLUTION ---- self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_my_station_table", match_fields={ # Exact match. - "MODIFY ME": pkt[Ether].dst + "hdr.ethernet.dst_addr": pkt[Ether].dst }, action_name="NoAction" )) @@ -79,11 +79,13 @@ def testPacket(self, pkt): # qualified name of tables, match fields, and actions. # ---- START SOLUTION ---- self.insert(self.helper.build_act_prof_group( - act_prof_name="MODIFY ME", + act_prof_name="IngressPipeImpl.ecmp_selector", group_id=1, actions=[ # List of tuples (action name, action param dict) - ("MODIFY ME", {"MODIFY ME": next_hop_mac}), + ("IngressPipeImpl.set_nexthop", { + "dst_mac": next_hop_mac + }), ] )) # ---- END SOLUTION ---- @@ -94,10 +96,10 @@ def testPacket(self, pkt): # qualified name of tables, match fields, and actions. # ---- START SOLUTION ---- self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_routing_table", match_fields={ # LPM match (value, prefix) - "MODIFY ME": (pkt[IPv6].dst, 128) + "hdr.ipv6.dst_addr": (pkt[IPv6].dst, 128) }, group_id=1 )) @@ -109,14 +111,14 @@ def testPacket(self, pkt): # qualified name of tables, match fields, and actions. # ---- START SOLUTION ---- self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.l2_exact_table", match_fields={ # Exact match - "MODIFY ME": next_hop_mac + "hdr.ethernet.dst_addr": next_hop_mac }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.set_egress_port", action_params={ - "MODIFY ME": self.port2 + "port_num": self.port2 } )) # ---- END SOLUTION ---- @@ -149,14 +151,14 @@ def runTest(self): # qualified name of tables, match fields, and actions. # ---- START SOLUTION ---- self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ndp_reply_table", match_fields={ # Exact match. - "MODIFY ME": switch_ip + "hdr.ndp.target_ipv6_addr": switch_ip }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.ndp_ns_to_na", action_params={ - "MODIFY ME": target_mac + "target_mac": target_mac } )) # ---- END SOLUTION ---- diff --git a/ptf/tests/srv6.py b/ptf/tests/srv6.py index 90e6846..6854aaa 100644 --- a/ptf/tests/srv6.py +++ b/ptf/tests/srv6.py @@ -108,10 +108,10 @@ def testPacket(self, pkt, sid_list, next_hop_mac): # Add entry to "My Station" table. Consider the given pkt's eth dst addr # as myStationMac address. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_my_station_table", match_fields={ # Exact match. - "MODIFY ME": pkt[Ether].dst + "hdr.ethernet.dst_addr": pkt[Ether].dst }, action_name="NoAction" )) @@ -130,10 +130,10 @@ def testPacket(self, pkt, sid_list, next_hop_mac): actions_params = {"s%d" % (x + 1): sid_list[x] for x in range(sid_len)} self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.srv6_transit", match_fields={ # LPM match (value, prefix) - "MODIFY ME": (pkt[IPv6].dst, 128) + "hdr.ipv6.dst_addr": (pkt[IPv6].dst, 128) }, action_name=action_name, action_params=actions_params @@ -141,11 +141,11 @@ def testPacket(self, pkt, sid_list, next_hop_mac): # Insert ECMP group with only one member (next_hop_mac) self.insert(self.helper.build_act_prof_group( - act_prof_name="MODIFY ME", + act_prof_name="IngressPipeImpl.ecmp_selector", group_id=1, actions=[ # List of tuples (action name, {action param: value}) - ("MODIFY ME", {"MODIFY ME": next_hop_mac}), + ("IngressPipeImpl.set_nexthop", {"dst_mac": next_hop_mac}), ] )) @@ -154,7 +154,7 @@ def testPacket(self, pkt, sid_list, next_hop_mac): # Match on L3 routing table. first_sid = sid_list[0] self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_routing_table", match_fields={ # LPM match (value, prefix) "hdr.ipv6.dst_addr": (first_sid, 128) @@ -164,14 +164,14 @@ def testPacket(self, pkt, sid_list, next_hop_mac): # Map next_hop_mac to output port self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.l2_exact_table", match_fields={ - # Exact match - "MODIFY ME": next_hop_mac + # Exact match. + "hdr.ethernet.dst_addr": next_hop_mac }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.set_egress_port", action_params={ - "MODIFY ME": self.port2 + "port_num": self.port2 } )) @@ -227,37 +227,37 @@ def testPacket(self, pkt, next_hop_mac, my_sid): # Add entry to "My Station" table. Consider the given pkt's eth dst addr # as myStationMac address. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_my_station_table", match_fields={ # Exact match. - "MODIFY ME": pkt[Ether].dst + "hdr.ethernet.dst_addr": pkt[Ether].dst }, action_name="NoAction" )) # This should be missed, this is plain IPv6 routing. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.srv6_my_sid", match_fields={ # Longest prefix match (value, prefix length) - "MODIFY ME": (my_sid, 128) + "hdr.ipv6.dst_addr": (my_sid, 128) }, - action_name="MODIFY ME" + action_name="IngressPipeImpl.srv6_end" )) # Insert ECMP group with only one member (next_hop_mac) self.insert(self.helper.build_act_prof_group( - act_prof_name="MODIFY ME", + act_prof_name="IngressPipeImpl.ecmp_selector", group_id=1, actions=[ # List of tuples (action name, {action param: value}) - ("MODIFY ME", {"MODIFY ME": next_hop_mac}), + ("IngressPipeImpl.set_nexthop", {"dst_mac": next_hop_mac}), ] )) # Map pkt's IPv6 dst addr to group self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_routing_table", match_fields={ # LPM match (value, prefix) "hdr.ipv6.dst_addr": (pkt[IPv6].dst, 128) @@ -267,14 +267,14 @@ def testPacket(self, pkt, next_hop_mac, my_sid): # Map next_hop_mac to output port self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.l2_exact_table", match_fields={ - # Exact match - "MODIFY ME": next_hop_mac + # Exact match. + "hdr.ethernet.dst_addr": next_hop_mac }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.set_egress_port", action_params={ - "MODIFY ME": self.port2 + "port_num": self.port2 } )) @@ -328,31 +328,31 @@ def testPacket(self, pkt, sid_list, next_hop_mac, my_sid): # Add entry to "My Station" table. Consider the given pkt's eth dst addr # as myStationMac address. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_my_station_table", match_fields={ # Exact match. - "MODIFY ME": pkt[Ether].dst + "hdr.ethernet.dst_addr": pkt[Ether].dst }, action_name="NoAction" )) # This should be matched, we want SRv6 end behavior to be applied. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.srv6_my_sid", match_fields={ # Longest prefix match (value, prefix length) - "MODIFY ME": (my_sid, 128) + "hdr.ipv6.dst_addr": (my_sid, 128) }, - action_name="MODIFY ME" + action_name="IngressPipeImpl.srv6_end" )) # Insert ECMP group with only one member (next_hop_mac) self.insert(self.helper.build_act_prof_group( - act_prof_name="MODIFY ME", + act_prof_name="IngressPipeImpl.ecmp_selector", group_id=1, actions=[ # List of tuples (action name, {action param: value}) - ("MODIFY ME", {"MODIFY ME": next_hop_mac}), + ("IngressPipeImpl.set_nexthop", {"dst_mac": next_hop_mac}), ] )) @@ -360,7 +360,7 @@ def testPacket(self, pkt, sid_list, next_hop_mac, my_sid): # next SID in the list, we should route based on that. next_sid = sid_list[1] self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_routing_table", match_fields={ # LPM match (value, prefix) "hdr.ipv6.dst_addr": (next_sid, 128) @@ -370,14 +370,14 @@ def testPacket(self, pkt, sid_list, next_hop_mac, my_sid): # Map next_hop_mac to output port self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.l2_exact_table", match_fields={ - # Exact match - "MODIFY ME": next_hop_mac + # Exact match. + "hdr.ethernet.dst_addr": next_hop_mac }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.set_egress_port", action_params={ - "MODIFY ME": self.port2 + "port_num": self.port2 } )) @@ -435,38 +435,38 @@ def testPacket(self, pkt, sid_list, next_hop_mac, my_sid): # Add entry to "My Station" table. Consider the given pkt's eth dst addr # as myStationMac address. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_my_station_table", match_fields={ # Exact match. - "MODIFY ME": pkt[Ether].dst + "hdr.ethernet.dst_addr": pkt[Ether].dst }, action_name="NoAction" )) # This should be matched, we want SRv6 end behavior to be applied. self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.srv6_my_sid", match_fields={ # Longest prefix match (value, prefix length) - "MODIFY ME": (my_sid, 128) + "hdr.ipv6.dst_addr": (my_sid, 128) }, - action_name="MODIFY ME" + action_name="IngressPipeImpl.srv6_end" )) # Insert ECMP group with only one member (next_hop_mac) self.insert(self.helper.build_act_prof_group( - act_prof_name="MODIFY ME", + act_prof_name="IngressPipeImpl.ecmp_selector", group_id=1, actions=[ # List of tuples (action name, {action param: value}) - ("MODIFY ME", {"MODIFY ME": next_hop_mac}), + ("IngressPipeImpl.set_nexthop", {"dst_mac": next_hop_mac}), ] )) # Map pkt's IPv6 dst addr to group next_sid = sid_list[1] self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.ipv6_routing_table", match_fields={ # LPM match (value, prefix) "hdr.ipv6.dst_addr": (next_sid, 128) @@ -476,14 +476,14 @@ def testPacket(self, pkt, sid_list, next_hop_mac, my_sid): # Map next_hop_mac to output port self.insert(self.helper.build_table_entry( - table_name="MODIFY ME", + table_name="IngressPipeImpl.l2_exact_table", match_fields={ - # Exact match - "MODIFY ME": next_hop_mac + # Exact match. + "hdr.ethernet.dst_addr": next_hop_mac }, - action_name="MODIFY ME", + action_name="IngressPipeImpl.set_egress_port", action_params={ - "MODIFY ME": self.port2 + "port_num": self.port2 } )) diff --git a/query.log b/query.log new file mode 100644 index 0000000..a053e44 --- /dev/null +++ b/query.log @@ -0,0 +1,1510 @@ +I have the following code: +``` +/* + * Copyright 2019-present Open Networking Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include +#include + +// CPU_PORT specifies the P4 port number associated to controller packet-in and +// packet-out. All packets forwarded via this port will be delivered to the +// controller as P4Runtime PacketIn messages. Similarly, PacketOut messages from +// the controller will be seen by the P4 pipeline as coming from the CPU_PORT. +#define CPU_PORT 255 + +// CPU_CLONE_SESSION_ID specifies the mirroring session for packets to be cloned +// to the CPU port. Packets associated with this session ID will be cloned to +// the CPU_PORT as well as being transmitted via their egress port (set by the +// bridging/routing/acl table). For cloning to work, the P4Runtime controller +// needs first to insert a CloneSessionEntry that maps this session ID to the +// CPU_PORT. +#define CPU_CLONE_SESSION_ID 99 + +// Maximum number of hops supported when using SRv6. +// Required for Exercise 7. +#define SRV6_MAX_HOPS 4 + +typedef bit<9> port_num_t; +typedef bit<48> mac_addr_t; +typedef bit<16> mcast_group_id_t; +typedef bit<32> ipv4_addr_t; +typedef bit<128> ipv6_addr_t; +typedef bit<16> l4_port_t; + +const bit<16> ETHERTYPE_IPV4 = 0x0800; +const bit<16> ETHERTYPE_IPV6 = 0x86dd; + +const bit<8> IP_PROTO_ICMP = 1; +const bit<8> IP_PROTO_TCP = 6; +const bit<8> IP_PROTO_UDP = 17; +const bit<8> IP_PROTO_SRV6 = 43; +const bit<8> IP_PROTO_ICMPV6 = 58; + +const mac_addr_t IPV6_MCAST_01 = 0x33_33_00_00_00_01; + +const bit<8> ICMP6_TYPE_NS = 135; +const bit<8> ICMP6_TYPE_NA = 136; + +const bit<8> NDP_OPT_TARGET_LL_ADDR = 2; + +const bit<32> NDP_FLAG_ROUTER = 0x80000000; +const bit<32> NDP_FLAG_SOLICITED = 0x40000000; +const bit<32> NDP_FLAG_OVERRIDE = 0x20000000; + +//------------------------------------------------------------------------------ +// HEADER DEFINITIONS +//------------------------------------------------------------------------------ + +header ethernet_t { + mac_addr_t dst_addr; + mac_addr_t src_addr; + bit<16> ether_type; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<6> dscp; + bit<2> ecn; + bit<16> total_len; + bit<16> identification; + bit<3> flags; + bit<13> frag_offset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdr_checksum; + bit<32> src_addr; + bit<32> dst_addr; +} + +header ipv6_t { + bit<4> version; + bit<8> traffic_class; + bit<20> flow_label; + bit<16> payload_len; + bit<8> next_hdr; + bit<8> hop_limit; + bit<128> src_addr; + bit<128> dst_addr; +} + +header srv6h_t { + bit<8> next_hdr; + bit<8> hdr_ext_len; + bit<8> routing_type; + bit<8> segment_left; + bit<8> last_entry; + bit<8> flags; + bit<16> tag; +} + +header srv6_list_t { + bit<128> segment_id; +} + +header tcp_t { + bit<16> src_port; + bit<16> dst_port; + bit<32> seq_no; + bit<32> ack_no; + bit<4> data_offset; + bit<3> res; + bit<3> ecn; + bit<6> ctrl; + bit<16> window; + bit<16> checksum; + bit<16> urgent_ptr; +} + +header udp_t { + bit<16> src_port; + bit<16> dst_port; + bit<16> len; + bit<16> checksum; +} + +header icmp_t { + bit<8> type; + bit<8> icmp_code; + bit<16> checksum; + bit<16> identifier; + bit<16> sequence_number; + bit<64> timestamp; +} + +header icmpv6_t { + bit<8> type; + bit<8> code; + bit<16> checksum; +} + +header ndp_t { + bit<32> flags; + ipv6_addr_t target_ipv6_addr; + // NDP option. + bit<8> type; + bit<8> length; + bit<48> target_mac_addr; +} + +// Packet-in header. Prepended to packets sent to the CPU_PORT and used by the +// P4Runtime server (Stratum) to populate the PacketIn message metadata fields. +// Here we use it to carry the original ingress port where the packet was +// received. +@controller_header("packet_in") +header cpu_in_header_t { + port_num_t ingress_port; + bit<7> _pad; +} + +// Packet-out header. Prepended to packets received from the CPU_PORT. Fields of +// this header are populated by the P4Runtime server based on the P4Runtime +// PacketOut metadata fields. Here we use it to inform the P4 pipeline on which +// port this packet-out should be transmitted. +@controller_header("packet_out") +header cpu_out_header_t { + port_num_t egress_port; + bit<7> _pad; +} + +struct parsed_headers_t { + cpu_out_header_t cpu_out; + cpu_in_header_t cpu_in; + ethernet_t ethernet; + ipv4_t ipv4; + ipv6_t ipv6; + srv6h_t srv6h; + srv6_list_t[SRV6_MAX_HOPS] srv6_list; + tcp_t tcp; + udp_t udp; + icmp_t icmp; + icmpv6_t icmpv6; + ndp_t ndp; +} + +struct local_metadata_t { + l4_port_t l4_src_port; + l4_port_t l4_dst_port; + bool is_multicast; + ipv6_addr_t next_srv6_sid; + bit<8> ip_proto; + bit<8> icmp_type; +} + + +//------------------------------------------------------------------------------ +// INGRESS PIPELINE +//------------------------------------------------------------------------------ + +parser ParserImpl (packet_in packet, + out parsed_headers_t hdr, + inout local_metadata_t local_metadata, + inout standard_metadata_t standard_metadata) +{ + state start { + transition select(standard_metadata.ingress_port) { + CPU_PORT: parse_packet_out; + default: parse_ethernet; + } + } + + state parse_packet_out { + packet.extract(hdr.cpu_out); + transition parse_ethernet; + } + + state parse_ethernet { + packet.extract(hdr.ethernet); + transition select(hdr.ethernet.ether_type){ + ETHERTYPE_IPV4: parse_ipv4; + ETHERTYPE_IPV6: parse_ipv6; + default: accept; + } + } + + state parse_ipv4 { + packet.extract(hdr.ipv4); + local_metadata.ip_proto = hdr.ipv4.protocol; + transition select(hdr.ipv4.protocol) { + IP_PROTO_TCP: parse_tcp; + IP_PROTO_UDP: parse_udp; + IP_PROTO_ICMP: parse_icmp; + default: accept; + } + } + + state parse_ipv6 { + packet.extract(hdr.ipv6); + local_metadata.ip_proto = hdr.ipv6.next_hdr; + transition select(hdr.ipv6.next_hdr) { + IP_PROTO_TCP: parse_tcp; + IP_PROTO_UDP: parse_udp; + IP_PROTO_ICMPV6: parse_icmpv6; + IP_PROTO_SRV6: parse_srv6; + default: accept; + } + } + + state parse_tcp { + packet.extract(hdr.tcp); + local_metadata.l4_src_port = hdr.tcp.src_port; + local_metadata.l4_dst_port = hdr.tcp.dst_port; + transition accept; + } + + state parse_udp { + packet.extract(hdr.udp); + local_metadata.l4_src_port = hdr.udp.src_port; + local_metadata.l4_dst_port = hdr.udp.dst_port; + transition accept; + } + + state parse_icmp { + packet.extract(hdr.icmp); + local_metadata.icmp_type = hdr.icmp.type; + transition accept; + } + + state parse_icmpv6 { + packet.extract(hdr.icmpv6); + local_metadata.icmp_type = hdr.icmpv6.type; + transition select(hdr.icmpv6.type) { + ICMP6_TYPE_NS: parse_ndp; + ICMP6_TYPE_NA: parse_ndp; + default: accept; + } + } + + state parse_ndp { + packet.extract(hdr.ndp); + transition accept; + } + + state parse_srv6 { + packet.extract(hdr.srv6h); + transition parse_srv6_list; + } + + state parse_srv6_list { + packet.extract(hdr.srv6_list.next); + bool next_segment = (bit<32>)hdr.srv6h.segment_left - 1 == (bit<32>)hdr.srv6_list.lastIndex; + transition select(next_segment) { + true: mark_current_srv6; + default: check_last_srv6; + } + } + + state mark_current_srv6 { + local_metadata.next_srv6_sid = hdr.srv6_list.last.segment_id; + transition check_last_srv6; + } + + state check_last_srv6 { + // working with bit<8> and int<32> which cannot be cast directly; using + // bit<32> as common intermediate type for comparision + bool last_segment = (bit<32>)hdr.srv6h.last_entry == (bit<32>)hdr.srv6_list.lastIndex; + transition select(last_segment) { + true: parse_srv6_next_hdr; + false: parse_srv6_list; + } + } + + state parse_srv6_next_hdr { + transition select(hdr.srv6h.next_hdr) { + IP_PROTO_TCP: parse_tcp; + IP_PROTO_UDP: parse_udp; + IP_PROTO_ICMPV6: parse_icmpv6; + default: accept; + } + } +} + + +control VerifyChecksumImpl(inout parsed_headers_t hdr, + inout local_metadata_t meta) +{ + // Not used here. We assume all packets have valid checksum, if not, we let + // the end hosts detect errors. + apply { /* EMPTY */ } +} + + +control IngressPipeImpl (inout parsed_headers_t hdr, + inout local_metadata_t local_metadata, + inout standard_metadata_t standard_metadata) { + + // Drop action shared by many tables. + action drop() { + mark_to_drop(standard_metadata); + } + + + // *** L2 BRIDGING + // + // Here we define tables to forward packets based on their Ethernet + // destination address. There are two types of L2 entries that we + // need to support: + // + // 1. Unicast entries: which will be filled in by the control plane when the + // location (port) of new hosts is learned. + // 2. Broadcast/multicast entries: used replicate NDP Neighbor Solicitation + // (NS) messages to all host-facing ports; + // + // For (2), unlike ARP messages in IPv4 which are broadcasted to Ethernet + // destination address FF:FF:FF:FF:FF:FF, NDP messages are sent to special + // Ethernet addresses specified by RFC2464. These addresses are prefixed + // with 33:33 and the last four octets are the last four octets of the IPv6 + // destination multicast address. The most straightforward way of matching + // on such IPv6 broadcast/multicast packets, without digging in the details + // of RFC2464, is to use a ternary match on 33:33:**:**:**:**, where * means + // "don't care". + // + // For this reason, our solution defines two tables. One that matches in an + // exact fashion (easier to scale on switch ASIC memory) and one that uses + // ternary matching (which requires more expensive TCAM memories, usually + // much smaller). + + // --- l2_exact_table (for unicast entries) -------------------------------- + + action set_egress_port(port_num_t port_num) { + standard_metadata.egress_spec = port_num; + } + + table l2_exact_table { + key = { + hdr.ethernet.dst_addr: exact; + } + actions = { + set_egress_port; + @defaultonly drop; + } + const default_action = drop; + // The @name annotation is used here to provide a name to this table + // counter, as it will be needed by the compiler to generate the + // corresponding P4Info entity. + @name("l2_exact_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + // --- l2_ternary_table (for broadcast/multicast entries) ------------------ + + action set_multicast_group(mcast_group_id_t gid) { + // gid will be used by the Packet Replication Engine (PRE) in the + // Traffic Manager--located right after the ingress pipeline, to + // replicate a packet to multiple egress ports, specified by the control + // plane by means of P4Runtime MulticastGroupEntry messages. + standard_metadata.mcast_grp = gid; + local_metadata.is_multicast = true; + } + + table l2_ternary_table { + key = { + hdr.ethernet.dst_addr: ternary; + } + actions = { + set_multicast_group; + @defaultonly drop; + } + const default_action = drop; + @name("l2_ternary_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + // *** TODO EXERCISE 5 (IPV6 ROUTING) + // + // 1. Create a table to to handle NDP messages to resolve the MAC address of + // switch. This table should: + // - match on hdr.ndp.target_ipv6_addr (exact match) + // - provide action "ndp_ns_to_na" (look in snippets.p4) + // - default_action should be "NoAction" + // + // 2. Create table to handle IPv6 routing. Create a L2 my station table (hit + // when Ethernet destination address is the switch address). This table + // should not do anything to the packet (i.e., NoAction), but the control + // block below should use the result (table.hit) to decide how to process + // the packet. + // + // 3. Create a table for IPv6 routing. An action selector should be use to + // pick a next hop MAC address according to a hash of packet header + // fields (IPv6 source/destination address and the flow label). Look in + // snippets.p4 for an example of an action selector and table using it. + // + // You can name your tables whatever you like. You will need to fill + // the name in elsewhere in this exercise. + + action ndp_ns_to_na(mac_addr_t target_mac) { + hdr.ethernet.src_addr = target_mac; + hdr.ethernet.dst_addr = IPV6_MCAST_01; + ipv6_addr_t host_ipv6_tmp = hdr.ipv6.src_addr; + hdr.ipv6.src_addr = hdr.ndp.target_ipv6_addr; + hdr.ipv6.dst_addr = host_ipv6_tmp; + hdr.ipv6.next_hdr = IP_PROTO_ICMPV6; + hdr.icmpv6.type = ICMP6_TYPE_NA; + hdr.ndp.flags = NDP_FLAG_ROUTER | NDP_FLAG_OVERRIDE; + hdr.ndp.type = NDP_OPT_TARGET_LL_ADDR; + hdr.ndp.length = 1; + hdr.ndp.target_mac_addr = target_mac; + standard_metadata.egress_spec = standard_metadata.ingress_port; + } + + table ndp_reply_table { + key = { + hdr.ndp.target_ipv6_addr: exact; + } + actions = { + ndp_ns_to_na; + @defaultonly NoAction; + } + const default_action = NoAction; + @name("ndp_reply_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + table ipv6_my_station_table { + key = { + hdr.ethernet.dst_addr: exact; + } + actions = { + NoAction; + } + const default_action = NoAction; + @name("ipv6_my_station_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + // ECMP action selector definition: + action_selector(HashAlgorithm.crc16, 32w1024, 32w16) ecmp_selector; + + action set_nexthop(mac_addr_t dst_mac) { + hdr.ethernet.src_addr = hdr.ethernet.dst_addr; + hdr.ethernet.dst_addr = dst_mac; + hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1; + } + + table ipv6_routing_table { + key = { + hdr.ipv6.dst_addr: lpm; + } + actions = { + set_nexthop; + drop; + } + implementation = ecmp_selector; + size = 1024; + } + + // *** TODO EXERCISE 6 (SRV6) + // + // Implement tables to provide SRV6 logic. + + + // *** ACL + // + // Provides ways to override a previous forwarding decision, for example + // requiring that a packet is cloned/sent to the CPU, or dropped. + // + // We use this table to clone all NDP packets to the control plane, so to + // enable host discovery. When the location of a new host is discovered, the + // controller is expected to update the L2 and L3 tables with the + // corresponding bridging and routing entries. + + action send_to_cpu() { + standard_metadata.egress_spec = CPU_PORT; + } + + action clone_to_cpu() { + // Cloning is achieved by using a v1model-specific primitive. Here we + // set the type of clone operation (ingress-to-egress pipeline), the + // clone session ID (the CPU one), and the metadata fields we want to + // preserve for the cloned packet replica. + clone3(CloneType.I2E, CPU_CLONE_SESSION_ID, { standard_metadata.ingress_port }); + } + + table acl_table { + key = { + standard_metadata.ingress_port: ternary; + hdr.ethernet.dst_addr: ternary; + hdr.ethernet.src_addr: ternary; + hdr.ethernet.ether_type: ternary; + local_metadata.ip_proto: ternary; + local_metadata.icmp_type: ternary; + local_metadata.l4_src_port: ternary; + local_metadata.l4_dst_port: ternary; + } + actions = { + send_to_cpu; + clone_to_cpu; + drop; + } + @name("acl_table_counter") + counters = direct_counter(CounterType.packets_and_bytes); + } + + apply { + + if (hdr.cpu_out.isValid()) { + // *** TODO EXERCISE 4 + // Implement logic such that if this is a packet-out from the + // controller: + // 1. Set the packet egress port to that found in the cpu_out header + // 2. Remove (set invalid) the cpu_out header + // 3. Exit the pipeline here (no need to go through other tables + + standard_metadata.egress_spec = hdr.cpu_out.egress_port; + hdr.cpu_out.setInvalid(); + return; + } + + bool do_l3_l2 = true; + + if (hdr.icmpv6.isValid() && hdr.icmpv6.type == ICMP6_TYPE_NS) { + // *** TODO EXERCISE 5 + // Insert logic to handle NDP messages to resolve the MAC address of the + // switch. You should apply the NDP reply table created before. + // If this is an NDP NS packet, i.e., if a matching entry is found, + // unset the "do_l3_l2" flag to skip the L3 and L2 tables, as the + // "ndp_ns_to_na" action already set an egress port. + + if (ndp_reply_table.apply().hit) { + do_l3_l2 = false; + } + } + + if (do_l3_l2) { + + // *** TODO EXERCISE 5 + // Insert logic to match the My Station table and upon hit, the + // routing table. You should also add a conditional to drop the + // packet if the hop_limit reaches 0. + + if (ipv6_my_station_table.apply().hit) { + if (hdr.ipv6.isValid() && hdr.ipv6.hop_limit == 0) { + mark_to_drop(standard_metadata); + } else { + ipv6_routing_table.apply(); + } + } + + // *** TODO EXERCISE 6 + // Insert logic to match the SRv6 My SID and Transit tables as well + // as logic to perform PSP behavior. HINT: This logic belongs + // somewhere between checking the switch's my station table and + // applying the routing table. + + // L2 bridging logic. Apply the exact table first... + if (!l2_exact_table.apply().hit) { + // ...if an entry is NOT found, apply the ternary one in case + // this is a multicast/broadcast NDP NS packet. + l2_ternary_table.apply(); + } + } + + // Lastly, apply the ACL table. + acl_table.apply(); + } +} + + +control EgressPipeImpl (inout parsed_headers_t hdr, + inout local_metadata_t local_metadata, + inout standard_metadata_t standard_metadata) { + apply { + + if (standard_metadata.egress_port == CPU_PORT) { + // *** TODO EXERCISE 4 + // Implement logic such that if the packet is to be forwarded to the + // CPU port, e.g., if in ingress we matched on the ACL table with + // action send/clone_to_cpu... + // 1. Set cpu_in header as valid + // 2. Set the cpu_in.ingress_port field to the original packet's + // ingress port (standard_metadata.ingress_port). + + hdr.cpu_in.setValid(); + hdr.cpu_in.ingress_port = standard_metadata.ingress_port; + } + + // If this is a multicast packet (flag set by l2_ternary_table), make + // sure we are not replicating the packet on the same port where it was + // received. This is useful to avoid broadcasting NDP requests on the + // ingress port. + if (local_metadata.is_multicast == true && + standard_metadata.ingress_port == standard_metadata.egress_port) { + mark_to_drop(standard_metadata); + } + } +} + + +control ComputeChecksumImpl(inout parsed_headers_t hdr, + inout local_metadata_t local_metadata) +{ + apply { + // The following is used to update the ICMPv6 checksum of NDP + // NA packets generated by the ndp reply table in the ingress pipeline. + // This function is executed only if the NDP header is present. + update_checksum(hdr.ndp.isValid(), + { + hdr.ipv6.src_addr, + hdr.ipv6.dst_addr, + hdr.ipv6.payload_len, + 8w0, + hdr.ipv6.next_hdr, + hdr.icmpv6.type, + hdr.icmpv6.code, + hdr.ndp.flags, + hdr.ndp.target_ipv6_addr, + hdr.ndp.type, + hdr.ndp.length, + hdr.ndp.target_mac_addr + }, + hdr.icmpv6.checksum, + HashAlgorithm.csum16 + ); + } +} + + +control DeparserImpl(packet_out packet, in parsed_headers_t hdr) { + apply { + packet.emit(hdr.cpu_in); + packet.emit(hdr.ethernet); + packet.emit(hdr.ipv4); + packet.emit(hdr.ipv6); + packet.emit(hdr.srv6h); + packet.emit(hdr.srv6_list); + packet.emit(hdr.tcp); + packet.emit(hdr.udp); + packet.emit(hdr.icmp); + packet.emit(hdr.icmpv6); + packet.emit(hdr.ndp); + } +} + + +V1Switch( + ParserImpl(), + VerifyChecksumImpl(), + IngressPipeImpl(), + EgressPipeImpl(), + ComputeChecksumImpl(), + DeparserImpl() +) main; + +``` + +``` +/* + * Copyright 2019-present Open Networking Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onosproject.ngsdn.tutorial; + +/* includes */ + +/** + * App component that configures devices to provide IPv6 routing capabilities + * across the whole fabric. + */ +@Component( + immediate = true, + // *** TODO EXERCISE 5 + // set to true when ready + enabled = true +) +public class Ipv6RoutingComponent { + + private static final Logger log = LoggerFactory.getLogger(Ipv6RoutingComponent.class); + + private static final int DEFAULT_ECMP_GROUP_ID = 0xec3b0000; + private static final long GROUP_INSERT_DELAY_MILLIS = 200; + + private final HostListener hostListener = new InternalHostListener(); + private final LinkListener linkListener = new InternalLinkListener(); + private final DeviceListener deviceListener = new InternalDeviceListener(); + + private ApplicationId appId; + + //-------------------------------------------------------------------------- + // ONOS CORE SERVICE BINDING + // + // These variables are set by the Karaf runtime environment before calling + // the activate() method. + //-------------------------------------------------------------------------- + + /* fields ... */ + + //-------------------------------------------------------------------------- + // COMPONENT ACTIVATION. + // + // When loading/unloading the app the Karaf runtime environment will call + // activate()/deactivate(). + //-------------------------------------------------------------------------- + + @Activate + protected void activate() { + appId = mainComponent.getAppId(); + + hostService.addListener(hostListener); + linkService.addListener(linkListener); + deviceService.addListener(deviceListener); + + // Schedule set up for all devices. + mainComponent.scheduleTask(this::setUpAllDevices, INITIAL_SETUP_DELAY); + + log.info("Started"); + } + + @Deactivate + protected void deactivate() { + hostService.removeListener(hostListener); + linkService.removeListener(linkListener); + deviceService.removeListener(deviceListener); + + log.info("Stopped"); + } + + //-------------------------------------------------------------------------- + // METHODS TO COMPLETE. + // + // Complete the implementation wherever you see TODO. + //-------------------------------------------------------------------------- + + /** + * Sets up the "My Station" table for the given device using the + * myStationMac address found in the config. + *

+ * This method will be called at component activation for each device + * (switch) known by ONOS, and every time a new device-added event is + * captured by the InternalDeviceListener defined below. + * + * @param deviceId the device ID + */ + private void setUpMyStationTable(DeviceId deviceId) { + + log.info("Adding My Station rules to {}...", deviceId); + + final MacAddress myStationMac = getMyStationMac(deviceId); + + // HINT: in our solution, the My Station table matches on the *ethernet + // destination* and there is only one action called *NoAction*, which is + // used as an indication of "table hit" in the control block. + + // *** TODO EXERCISE 5 + // Modify P4Runtime entity names to match content of P4Info file (look + // for the fully qualified name of tables, match fields, and actions. + // ---- START SOLUTION ---- + final String tableId = "IngressPipeImpl.ipv6_my_station_table"; + + final PiCriterion match = PiCriterion.builder() + .matchExact( + PiMatchFieldId.of("hdr.ethernet.dst_addr"), + myStationMac.toBytes()) + .build(); + + // Creates an action which do *NoAction* when hit. + final PiTableAction action = PiAction.builder() + .withId(PiActionId.of("NoAction")) + .build(); + // ---- END SOLUTION ---- + + final FlowRule myStationRule = Utils.buildFlowRule( + deviceId, appId, tableId, match, action); + + log.error("#!#!#!#! INSERTED ipv6_my_station_table ENTRY: deviceId = {}, appId = {}", deviceId, appId); + + flowRuleService.applyFlowRules(myStationRule); + } + + /** + * Creates an ONOS SELECT group for the routing table to provide ECMP + * forwarding for the given collection of next hop MAC addresses. ONOS + * SELECT groups are equivalent to P4Runtime action selector groups. + *

+ * This method will be called by the routing policy methods below to insert + * groups in the L3 table + * + * @param nextHopMacs the collection of mac addresses of next hops + * @param deviceId the device where the group will be installed + * @return a SELECT group + */ + private GroupDescription createNextHopGroup(int groupId, + Collection nextHopMacs, + DeviceId deviceId) { + + String actionProfileId = "IngressPipeImpl.ecmp_selector"; + + final List actions = Lists.newArrayList(); + + // Build one "set next hop" action for each next hop + // *** TODO EXERCISE 5 + // Modify P4Runtime entity names to match content of P4Info file (look + // for the fully qualified name of tables, match fields, and actions. + // ---- START SOLUTION ---- + final String tableId = "IngressPipeImpl.ipv6_routing_table"; + for (MacAddress nextHopMac : nextHopMacs) { + final PiAction action = PiAction.builder() + .withId(PiActionId.of("IngressPipeImpl.set_nexthop")) + .withParameter(new PiActionParam( + // Action param name. + PiActionParamId.of("dst_mac"), + // Action param value. + nextHopMac.toBytes())) + .build(); + + actions.add(action); + } + // ---- END SOLUTION ---- + + return Utils.buildSelectGroup( + deviceId, tableId, actionProfileId, groupId, actions, appId); + } + + /** + * Creates a routing flow rule that matches on the given IPv6 prefix and + * executes the given group ID (created before). + * + * @param deviceId the device where flow rule will be installed + * @param ip6Prefix the IPv6 prefix + * @param groupId the group ID + * @return a flow rule + */ + private FlowRule createRoutingRule(DeviceId deviceId, Ip6Prefix ip6Prefix, + int groupId) { + + // *** TODO EXERCISE 5 + // Modify P4Runtime entity names to match content of P4Info file (look + // for the fully qualified name of tables, match fields, and actions. + // ---- START SOLUTION ---- + final String tableId = "IngressPipeImpl.ipv6_routing_table"; + final PiCriterion match = PiCriterion.builder() + .matchLpm( + PiMatchFieldId.of("hdr.ipv6.dst_addr"), + ip6Prefix.address().toOctets(), + ip6Prefix.prefixLength()) + .build(); + + final PiTableAction action = PiActionProfileGroupId.of(groupId); + // ---- END SOLUTION ---- + + log.error("#!#!#!#! INSERTED ipv6_routing_table ENTRY: deviceId = {}, groupId = {}, ip6Prefix = {}", deviceId, groupId, ip6Prefix); + + return Utils.buildFlowRule( + deviceId, appId, tableId, match, action); + } + + /** + * Creates a flow rule for the L2 table mapping the given next hop MAC to + * the given output port. + *

+ * This is called by the routing policy methods below to establish L2-based + * forwarding inside the fabric, e.g., when deviceId is a leaf switch and + * nextHopMac is the one of a spine switch. + * + * @param deviceId the device + * @param nexthopMac the next hop (destination) mac + * @param outPort the output port + */ + private FlowRule createL2NextHopRule(DeviceId deviceId, MacAddress nexthopMac, + PortNumber outPort) { + + // *** TODO EXERCISE 5 + // Modify P4Runtime entity names to match content of P4Info file (look + // for the fully qualified name of tables, match fields, and actions. + // ---- START SOLUTION ---- + final String tableId = "IngressPipeImpl.l2_exact_table"; + final PiCriterion match = PiCriterion.builder() + .matchExact(PiMatchFieldId.of("hdr.ethernet.dst_addr"), + nexthopMac.toBytes()) + .build(); + + + final PiAction action = PiAction.builder() + .withId(PiActionId.of("IngressPipeImpl.set_egress_port")) + .withParameter(new PiActionParam( + PiActionParamId.of("port_num"), + outPort.toLong())) + .build(); + // ---- END SOLUTION ---- + + return Utils.buildFlowRule( + deviceId, appId, tableId, match, action); + } + + //-------------------------------------------------------------------------- + // EVENT LISTENERS + // + // Events are processed only if isRelevant() returns true. + //-------------------------------------------------------------------------- + + /** + * Listener of host events which triggers configuration of routing rules on + * the device where the host is attached. + */ + class InternalHostListener implements HostListener { + + @Override + public boolean isRelevant(HostEvent event) { + switch (event.type()) { + case HOST_ADDED: + break; + case HOST_REMOVED: + case HOST_UPDATED: + case HOST_MOVED: + default: + // Ignore other events. + // Food for thoughts: + // how to support host moved/removed events? + return false; + } + // Process host event only if this controller instance is the master + // for the device where this host is attached. + final Host host = event.subject(); + final DeviceId deviceId = host.location().deviceId(); + return mastershipService.isLocalMaster(deviceId); + } + + @Override + public void event(HostEvent event) { + Host host = event.subject(); + DeviceId deviceId = host.location().deviceId(); + mainComponent.getExecutorService().execute(() -> { + log.info("{} event! host={}, deviceId={}, port={}", + event.type(), host.id(), deviceId, host.location().port()); + setUpHostRules(deviceId, host); + }); + } + } + + /** + * Listener of link events, which triggers configuration of routing rules to + * forward packets across the fabric, i.e. from leaves to spines and vice + * versa. + *

+ * Reacting to link events instead of device ones, allows us to make sure + * all device are always configured with a topology view that includes all + * links, e.g. modifying an ECMP group as soon as a new link is added. The + * downside is that we might be configuring the same device twice for the + * same set of links/paths. However, the ONOS core treats these cases as a + * no-op when the device is already configured with the desired forwarding + * state (i.e. flows and groups) + */ + class InternalLinkListener implements LinkListener { + + @Override + public boolean isRelevant(LinkEvent event) { + switch (event.type()) { + case LINK_ADDED: + break; + case LINK_UPDATED: + case LINK_REMOVED: + default: + return false; + } + DeviceId srcDev = event.subject().src().deviceId(); + DeviceId dstDev = event.subject().dst().deviceId(); + return mastershipService.isLocalMaster(srcDev) || + mastershipService.isLocalMaster(dstDev); + } + + @Override + public void event(LinkEvent event) { + DeviceId srcDev = event.subject().src().deviceId(); + DeviceId dstDev = event.subject().dst().deviceId(); + + if (mastershipService.isLocalMaster(srcDev)) { + mainComponent.getExecutorService().execute(() -> { + log.info("{} event! Configuring {}... linkSrc={}, linkDst={}", + event.type(), srcDev, srcDev, dstDev); + setUpFabricRoutes(srcDev); + setUpL2NextHopRules(srcDev); + }); + } + if (mastershipService.isLocalMaster(dstDev)) { + mainComponent.getExecutorService().execute(() -> { + log.info("{} event! Configuring {}... linkSrc={}, linkDst={}", + event.type(), dstDev, srcDev, dstDev); + setUpFabricRoutes(dstDev); + setUpL2NextHopRules(dstDev); + }); + } + } + } + + /** + * Listener of device events which triggers configuration of the My Station + * table. + */ + class InternalDeviceListener implements DeviceListener { + + @Override + public boolean isRelevant(DeviceEvent event) { + switch (event.type()) { + case DEVICE_AVAILABILITY_CHANGED: + case DEVICE_ADDED: + break; + default: + return false; + } + // Process device event if this controller instance is the master + // for the device and the device is available. + DeviceId deviceId = event.subject().id(); + return mastershipService.isLocalMaster(deviceId) && + deviceService.isAvailable(event.subject().id()); + } + + @Override + public void event(DeviceEvent event) { + mainComponent.getExecutorService().execute(() -> { + DeviceId deviceId = event.subject().id(); + log.info("{} event! device id={}", event.type(), deviceId); + setUpMyStationTable(deviceId); + }); + } + } + + //-------------------------------------------------------------------------- + // ROUTING POLICY METHODS + // + // Called by event listeners, these methods implement the actual routing + // policy, responsible of computing paths and creating ECMP groups. + //-------------------------------------------------------------------------- + + /** + * Set up L2 nexthop rules of a device to providing forwarding inside the + * fabric, i.e. between leaf and spine switches. + * + * @param deviceId the device ID + */ + private void setUpL2NextHopRules(DeviceId deviceId) { + + Set egressLinks = linkService.getDeviceEgressLinks(deviceId); + + for (Link link : egressLinks) { + // For each other switch directly connected to this. + final DeviceId nextHopDevice = link.dst().deviceId(); + // Get port of this device connecting to next hop. + final PortNumber outPort = link.src().port(); + // Get next hop MAC address. + final MacAddress nextHopMac = getMyStationMac(nextHopDevice); + + final FlowRule nextHopRule = createL2NextHopRule( + deviceId, nextHopMac, outPort); + + flowRuleService.applyFlowRules(nextHopRule); + } + } + + /** + * Sets up the given device with the necessary rules to route packets to the + * given host. + * + * @param deviceId deviceId the device ID + * @param host the host + */ + private void setUpHostRules(DeviceId deviceId, Host host) { + + // Get all IPv6 addresses associated to this host. In this tutorial we + // use hosts with only 1 IPv6 address. + final Collection hostIpv6Addrs = host.ipAddresses().stream() + .filter(IpAddress::isIp6) + .map(IpAddress::getIp6Address) + .collect(Collectors.toSet()); + + if (hostIpv6Addrs.isEmpty()) { + // Ignore. + log.debug("No IPv6 addresses for host {}, ignore", host.id()); + return; + } else { + log.info("Adding routes on {} for host {} [{}]", + deviceId, host.id(), hostIpv6Addrs); + } + + // Create an ECMP group with only one member, where the group ID is + // derived from the host MAC. + final MacAddress hostMac = host.mac(); + int groupId = macToGroupId(hostMac); + + final GroupDescription group = createNextHopGroup( + groupId, Collections.singleton(hostMac), deviceId); + + // Map each host IPV6 address to corresponding /128 prefix and obtain a + // flow rule that points to the group ID. In this tutorial we expect + // only one flow rule per host. + final List flowRules = hostIpv6Addrs.stream() + .map(IpAddress::toIpPrefix) + .filter(IpPrefix::isIp6) + .map(IpPrefix::getIp6Prefix) + .map(prefix -> createRoutingRule(deviceId, prefix, groupId)) + .collect(Collectors.toList()); + + // Helper function to install flows after groups, since here flows + // points to the group and P4Runtime enforces this dependency during + // write operations. + insertInOrder(group, flowRules); + } + + /** + * Set up routes on a given device to forward packets across the fabric, + * making a distinction between spines and leaves. + * + * @param deviceId the device ID. + */ + private void setUpFabricRoutes(DeviceId deviceId) { + if (isSpine(deviceId)) { + setUpSpineRoutes(deviceId); + } else { + setUpLeafRoutes(deviceId); + } + } + + /** + * Insert routing rules on the given spine switch, matching on leaf + * interface subnets and forwarding packets to the corresponding leaf. + * + * @param spineId the spine device ID + */ + private void setUpSpineRoutes(DeviceId spineId) { + + log.info("Adding up spine routes on {}...", spineId); + + for (Device device : deviceService.getDevices()) { + + if (isSpine(device.id())) { + // We only need routes to leaf switches. Ignore spines. + continue; + } + + final DeviceId leafId = device.id(); + final MacAddress leafMac = getMyStationMac(leafId); + final Set subnetsToRoute = getInterfaceIpv6Prefixes(leafId); + + // Since we're here, we also add a route for SRv6 (Exercise 7), to + // forward packets with IPv6 dst the SID of a leaf switch. + final Ip6Address leafSid = getDeviceSid(leafId); + subnetsToRoute.add(Ip6Prefix.valueOf(leafSid, 128)); + + // Create a group with only one member. + int groupId = macToGroupId(leafMac); + + GroupDescription group = createNextHopGroup( + groupId, Collections.singleton(leafMac), spineId); + + List flowRules = subnetsToRoute.stream() + .map(subnet -> createRoutingRule(spineId, subnet, groupId)) + .collect(Collectors.toList()); + + insertInOrder(group, flowRules); + } + } + + /** + * Insert routing rules on the given leaf switch, matching on interface + * subnets associated to other leaves and forwarding packets the spines + * using ECMP. + * + * @param leafId the leaf device ID + */ + private void setUpLeafRoutes(DeviceId leafId) { + log.info("Setting up leaf routes: {}", leafId); + + // Get the set of subnets (interface IPv6 prefixes) associated to other + // leafs but not this one. + Set subnetsToRouteViaSpines = stream(deviceService.getDevices()) + .map(Device::id) + .filter(this::isLeaf) + .filter(deviceId -> !deviceId.equals(leafId)) + .map(this::getInterfaceIpv6Prefixes) + .flatMap(Collection::stream) + .collect(Collectors.toSet()); + + // Get myStationMac address of all spines. + Set spineMacs = stream(deviceService.getDevices()) + .map(Device::id) + .filter(this::isSpine) + .map(this::getMyStationMac) + .collect(Collectors.toSet()); + + // Create an ECMP group to distribute traffic across all spines. + final int groupId = DEFAULT_ECMP_GROUP_ID; + final GroupDescription ecmpGroup = createNextHopGroup( + groupId, spineMacs, leafId); + + // Generate a flow rule for each subnet pointing to the ECMP group. + List flowRules = subnetsToRouteViaSpines.stream() + .map(subnet -> createRoutingRule(leafId, subnet, groupId)) + .collect(Collectors.toList()); + + insertInOrder(ecmpGroup, flowRules); + + // Since we're here, we also add a route for SRv6 (Exercise 7), to + // forward packets with IPv6 dst the SID of a spine switch, in this case + // using a single-member group. + stream(deviceService.getDevices()) + .map(Device::id) + .filter(this::isSpine) + .forEach(spineId -> { + MacAddress spineMac = getMyStationMac(spineId); + Ip6Address spineSid = getDeviceSid(spineId); + int spineGroupId = macToGroupId(spineMac); + GroupDescription group = createNextHopGroup( + spineGroupId, Collections.singleton(spineMac), leafId); + FlowRule routingRule = createRoutingRule( + leafId, Ip6Prefix.valueOf(spineSid, 128), + spineGroupId); + insertInOrder(group, Collections.singleton(routingRule)); + }); + } + + //-------------------------------------------------------------------------- + // UTILITY METHODS + //-------------------------------------------------------------------------- + + /** + * Returns true if the given device has isSpine flag set to true in the + * config, false otherwise. + * + * @param deviceId the device ID + * @return true if the device is a spine, false otherwise + */ + private boolean isSpine(DeviceId deviceId) { + return getDeviceConfig(deviceId).map(FabricDeviceConfig::isSpine) + .orElseThrow(() -> new ItemNotFoundException( + "Missing isSpine config for " + deviceId)); + } + + /** + * Returns true if the given device is not configured as spine. + * + * @param deviceId the device ID + * @return true if the device is a leaf, false otherwise + */ + private boolean isLeaf(DeviceId deviceId) { + return !isSpine(deviceId); + } + + /** + * Returns the MAC address configured in the "myStationMac" property of the + * given device config. + * + * @param deviceId the device ID + * @return MyStation MAC address + */ + private MacAddress getMyStationMac(DeviceId deviceId) { + return getDeviceConfig(deviceId) + .map(FabricDeviceConfig::myStationMac) + .orElseThrow(() -> new ItemNotFoundException( + "Missing myStationMac config for " + deviceId)); + } + + /** + * Returns the FabricDeviceConfig config object for the given device. + * + * @param deviceId the device ID + * @return FabricDeviceConfig device config + */ + private Optional getDeviceConfig(DeviceId deviceId) { + FabricDeviceConfig config = networkConfigService.getConfig( + deviceId, FabricDeviceConfig.class); + return Optional.ofNullable(config); + } + + /** + * Returns the set of interface IPv6 subnets (prefixes) configured for the + * given device. + * + * @param deviceId the device ID + * @return set of IPv6 prefixes + */ + private Set getInterfaceIpv6Prefixes(DeviceId deviceId) { + return interfaceService.getInterfaces().stream() + .filter(iface -> iface.connectPoint().deviceId().equals(deviceId)) + .map(Interface::ipAddressesList) + .flatMap(Collection::stream) + .map(InterfaceIpAddress::subnetAddress) + .filter(IpPrefix::isIp6) + .map(IpPrefix::getIp6Prefix) + .collect(Collectors.toSet()); + } + + /** + * Returns a 32 bit bit group ID from the given MAC address. + * + * @param mac the MAC address + * @return an integer + */ + private int macToGroupId(MacAddress mac) { + return mac.hashCode() & 0x7fffffff; + } + + /** + * Inserts the given groups and flow rules in order, groups first, then flow + * rules. In P4Runtime, when operating on an indirect table (i.e. with + * action selectors), groups must be inserted before table entries. + * + * @param group the group + * @param flowRules the flow rules depending on the group + */ + private void insertInOrder(GroupDescription group, Collection flowRules) { + try { + groupService.addGroup(group); + // Wait for groups to be inserted. + Thread.sleep(GROUP_INSERT_DELAY_MILLIS); + flowRules.forEach(flowRuleService::applyFlowRules); + } catch (InterruptedException e) { + log.error("Interrupted!", e); + Thread.currentThread().interrupt(); + } + } + + /** + * Gets Srv6 SID for the given device. + * + * @param deviceId the device ID + * @return SID for the device + */ + private Ip6Address getDeviceSid(DeviceId deviceId) { + return getDeviceConfig(deviceId) + .map(FabricDeviceConfig::mySid) + .orElseThrow(() -> new ItemNotFoundException( + "Missing mySid config for " + deviceId)); + } + + /** + * Sets up IPv6 routing on all devices known by ONOS and for which this ONOS + * node instance is currently master. + */ + private synchronized void setUpAllDevices() { + // Set up host routes + stream(deviceService.getAvailableDevices()) + .map(Device::id) + .filter(mastershipService::isLocalMaster) + .forEach(deviceId -> { + log.info("*** IPV6 ROUTING - Starting initial set up for {}...", deviceId); + setUpMyStationTable(deviceId); + setUpFabricRoutes(deviceId); + setUpL2NextHopRules(deviceId); + hostService.getConnectedHosts(deviceId) + .forEach(host -> setUpHostRules(deviceId, host)); + }); + } +} + +``` + +I do h2 ping h3 (they are in different subnets: h2 is connected to leaf1 switch, h3 is connected to leaf2 switch, leaf2 and leaf1 switches are connected and they are also connected with spine1 and spine2 switches. + +At the begining the tables (especially ipv6_routing_table) are the following: + +``` +capy@pcn-rzymovets-w:/mnt/d/Projects/ngsdn-tutorial$ make onos-cli +*** Connecting to the ONOS CLI... password: rocks +*** Top exit press Ctrl-D +Password authentication +(onos@localhost) Password: +Welcome to Open Network Operating System (ONOS)! + ____ _ ______ ____ + / __ \/ |/ / __ \/ __/ + / /_/ / / /_/ /\ \ + \____/_/|_/\____/___/ + +Documentation: wiki.onosproject.org +Tutorials: tutorials.onosproject.org +Mailing lists: lists.onosproject.org + +Come help out! Find out how at: contribute.onosproject.org + +Hit '' for a list of available commands +and '[cmd] --help' for help on a specific command. +Hit '' or type 'logout' to exit ONOS session. + +f~ onos@root > hosts 07:15:19 +onos@root > flows any device:leaf1 07:15:22 +deviceId=device:leaf1, flowRuleCount=16 + id=100001e5fba59, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:arp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=10000217b5edd, state=ADDED, bytes=6944, packets=56, duration=85, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:lldp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=1000039959d4d, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:ipv6, IP_PROTO:58, ICMPV6_TYPE:136], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=1000078c06d68, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:ipv6, IP_PROTO:58, ICMPV6_TYPE:135], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=10000d1887c0b, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:bddp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000007e251531, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_my_station_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xaa00000001], treatment=DefaultTrafficTreatment{immediate=[NoAction()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000005f8a4559, state=ADDED, bytes=0, packets=0, duration=83, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010002000300000000000000000000/64], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xec3b0000], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000076325a77, state=ADDED, bytes=0, packets=0, duration=83, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010002000400000000000000000000/64], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xec3b0000], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000078797bee, state=ADDED, bytes=0, packets=0, duration=83, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x30201000200000000000000000000/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xba], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000a2deb332, state=ADDED, bytes=0, packets=0, duration=83, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x30202000200000000000000000000/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xb9], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000abeb8fd1, state=ADDED, bytes=0, packets=0, duration=83, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xbb00000001], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x1)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000f57b2b7c, state=ADDED, bytes=0, packets=0, duration=83, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xbb00000002], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x2)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000a489d650, state=ADDED, bytes=560, packets=8, duration=85, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_ternary_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0x333300000000&&&0xffff00000000], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_multicast_group(gid=0xff)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000c8cf6dac, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_ternary_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xffffffffffff&&&0xffffffffffff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_multicast_group(gid=0xff)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000026ddb735, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ndp_reply_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ndp.target_ipv6_addr=0x200100010002000000000000000000ff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.ndp_ns_to_na(target_mac=0xaa00000001)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000e71f7679, state=ADDED, bytes=0, packets=0, duration=85, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ndp_reply_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ndp.target_ipv6_addr=0x200100010001000000000000000000ff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.ndp_ns_to_na(target_mac=0xaa00000001)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} +onos@root > flows any device:leaf2 07:15:32 +deviceId=device:leaf2, flowRuleCount=16 + id=1000009bc6ecf, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:ipv6, IP_PROTO:58, ICMPV6_TYPE:136], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=10000106ec5af, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:bddp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=100006be310d5, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:ipv6, IP_PROTO:58, ICMPV6_TYPE:135], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=1000084a7d695, state=ADDED, bytes=7688, packets=62, duration=93, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:lldp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=10000a76b5079, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=40000, tableId=IngressPipeImpl.acl_table, appId=org.onosproject.core, selector=[ETH_TYPE:arp], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.clone_to_cpu()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000d9aa3be2, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_my_station_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xaa00000002], treatment=DefaultTrafficTreatment{immediate=[NoAction()], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000213ad7e6, state=ADDED, bytes=0, packets=0, duration=88, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010001000100000000000000000000/64], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xec3b0000], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000041bda7fc, state=ADDED, bytes=0, packets=0, duration=87, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x30202000200000000000000000000/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xb9], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000a3342144, state=ADDED, bytes=0, packets=0, duration=88, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x20010001000200000000000000000000/64], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xec3b0000], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c00000aacfac11, state=ADDED, bytes=0, packets=0, duration=87, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ipv6_routing_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ipv6.dst_addr=0x30201000200000000000000000000/128], treatment=DefaultTrafficTreatment{immediate=[GROUP:0xba], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000000bf6807f, state=ADDED, bytes=0, packets=0, duration=87, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xbb00000001], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x1)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000005627c934, state=ADDED, bytes=0, packets=0, duration=87, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_exact_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xbb00000002], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_egress_port(port_num=0x2)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000022bfc4bb, state=ADDED, bytes=420, packets=6, duration=93, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_ternary_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0x333300000000&&&0xffff00000000], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_multicast_group(gid=0xff)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c0000095e3d42d, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.l2_ternary_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ethernet.dst_addr=0xffffffffffff&&&0xffffffffffff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.set_multicast_group(gid=0xff)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000006f559492, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ndp_reply_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ndp.target_ipv6_addr=0x200100020004000000000000000000ff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.ndp_ns_to_na(target_mac=0xaa00000002)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} + id=c000009f5751b1, state=ADDED, bytes=0, packets=0, duration=93, liveType=UNKNOWN, priority=10, tableId=IngressPipeImpl.ndp_reply_table, appId=org.onosproject.ngsdn-tutorial, selector=[hdr.ndp.target_ipv6_addr=0x200100020003000000000000000000ff], treatment=DefaultTrafficTreatment{immediate=[IngressPipeImpl.ndp_ns_to_na(target_mac=0xaa00000002)], deferred=[], transition=None, meter=[], cleared=false, StatTrigger=null, metadata=null} +``` +Nothing is known about hosts at the begining. +When I do h2 ping h3 from mininet, the ping fails: +``` + mininet> h2 ping h3 +PING 2001:2:3::1(2001:2:3::1) 56 data bytes +^C +--- 2001:2:3::1 ping statistics --- +14 packets transmitted, 0 received, 100% packet loss, time 13253ms +``` + +That triggers Host added event in onos: +``` +onos | 07:15:15.727 INFO [OpenSSHKeyPairProvider] Creating ssh server private key at /root/onos/apache-karaf-4.2.8/etc/host.key +onos | 07:15:15.748 INFO [OpenSSHKeyPairGenerator] generateKeyPair(RSA) generating host key - size=2048 +onos | 07:15:18.192 INFO [ServerUserAuthService] Session onos@/172.19.0.1:50994 authenticated +onos | 07:17:17.084 INFO [Ipv6RoutingComponent] HOST_ADDED event! host=00:00:00:00:00:20/None, deviceId=device:leaf1, port=6 +onos | 07:17:17.090 INFO [Ipv6RoutingComponent] Adding routes on device:leaf1 for host 00:00:00:00:00:20/None [[2001:1:2::1]] +onos | 07:17:17.096 ERROR [Ipv6RoutingComponent] #!#!#!#! INSERTED ipv6_routing_table ENTRY: deviceId = device:leaf1, groupId = 32, ip6Prefix = 2001:1:2::1/128 +onos | 07:17:17.322 INFO [L2BridgingComponent] HOST_ADDED event! host=00:00:00:00:00:20/None, deviceId=device:leaf1, port=6 +onos | 07:17:17.325 INFO [L2BridgingComponent] Adding L2 unicast rule on device:leaf1 for host 00:00:00:00:00:20/None (port 6)... +``` + +So we insert an entry about h2 to ipv6_routing_table + +When I do h3 ping h2, I have the same event and insertion in the table, but the difference is that the ping starts working, as now onos has info about both h2 and h3 and the switch already has entry related to h2 which allows to match h3 -> h2 pings by it. + +How to make it work no matter who pings first. I just want "h2 ping h3" to work at once \ No newline at end of file diff --git a/util/p4rt-sh b/util/p4rt-sh index 884c237..9521eff 100755 --- a/util/p4rt-sh +++ b/util/p4rt-sh @@ -28,12 +28,15 @@ import sys import tempfile import shutil import subprocess +import os DOCKER_IMAGE = 'p4lang/p4runtime-sh' TMP_DIR = os.path.dirname(os.path.abspath(__file__)) + '/.pipe_cfg' def main(): + print("#!#! PWD: ", os.getcwd()) + FwdPipeConfig = namedtuple('FwdPipeConfig', ['p4info', 'bin']) def pipe_config(arg): @@ -86,12 +89,12 @@ def main(): logging.debug( "Created temporary directory '{}', it will be mounted in the docker as '{}'".format( TMP_DIR, mount_path)) - shutil.copy(args.config.p4info, os.path.join(TMP_DIR, fname_p4info)) - shutil.copy(args.config.bin, os.path.join(TMP_DIR, fname_bin)) + shutil.copy(args.config.p4info, os.path.join(TMP_DIR, fname_p4info).replace("\\", "/")) + shutil.copy(args.config.bin, os.path.join(TMP_DIR, fname_bin).replace("\\", "/")) docker_args.extend(["-v", "{}:{}".format(TMP_DIR, mount_path)]) new_args.extend(["--config", "{},{}".format( - os.path.join(mount_path, fname_p4info), os.path.join(mount_path, fname_bin))]) + os.path.join(mount_path, fname_p4info).replace("\\", "/"), os.path.join(mount_path, fname_bin).replace("\\", "/"))]) cmd = ["docker", "run", "-ti", "--network", "host"] cmd.extend(docker_args) diff --git a/util/p4rt_without_onos b/util/p4rt_without_onos new file mode 100644 index 0000000..e2413e7 --- /dev/null +++ b/util/p4rt_without_onos @@ -0,0 +1,5 @@ +#!/bin/bash + +docker stop onos +util/p4rt-sh --grpc-addr localhost:50001 --config p4src/build/p4info.txt,p4src/build/bmv2.json --election-id 0,1 +docker start onos diff --git a/util/restart-all b/util/restart-all new file mode 100644 index 0000000..4200c4c --- /dev/null +++ b/util/restart-all @@ -0,0 +1,12 @@ +#!/bin/bash + +docker rm -f $(docker ps -aq) +make start +sleep 20 + +until make netcfg; do + echo "make netcfg failed, retrying in 2 seconds..." + sleep 2 +done + +make app-build app-reload diff --git a/yang/demo-port.yang b/yang/demo-port.yang index 91edf04..96280df 100644 --- a/yang/demo-port.yang +++ b/yang/demo-port.yang @@ -46,6 +46,10 @@ module demo-port { type boolean; description "Number"; } + leaf capybara { + type boolean; + description "Capybara"; + } } // Top-level model definition