From 7f62f8fb99f1c05be7a6063187aa67ca6607be64 Mon Sep 17 00:00:00 2001 From: Luke Gorrie Date: Thu, 17 Mar 2016 04:47:15 +0000 Subject: [PATCH 1/6] Documentation: Remove build artifacts from repo The markdown files in the repository are now all "source" e.g. containing ascii art rather than references to Ditaa-generated images. Specifically this change overwrites the ".md" files with their ".src.md" versions and removes the ".png" image files. This stuff can all be built on demand instead of stored in the repo. --- src/.images/Architecture.png | Bin 5964 -> 0 bytes src/.images/Network.png | Bin 5519 -> 0 bytes src/README.md | 30 +- src/README.src.md | 630 -------------- src/apps/basic/.images/Buzz.png | Bin 1118 -> 0 bytes src/apps/basic/.images/Join.png | Bin 3564 -> 0 bytes src/apps/basic/.images/Repeater.png | Bin 2168 -> 0 bytes src/apps/basic/.images/Sink.png | Bin 2210 -> 0 bytes src/apps/basic/.images/Source.png | Bin 2413 -> 0 bytes src/apps/basic/.images/Split.png | Bin 3917 -> 0 bytes src/apps/basic/.images/Tee.png | Bin 3760 -> 0 bytes src/apps/basic/README.md | 64 +- src/apps/basic/README.src.md | 104 --- src/apps/bridge/.images/bridge.png | Bin 4851 -> 0 bytes src/apps/bridge/README.md | 11 +- src/apps/bridge/README.src.md | 98 --- src/apps/intel/.images/Intel10G.png | Bin 2340 -> 0 bytes src/apps/intel/.images/Intel1g.png | Bin 1894 -> 0 bytes src/apps/intel/.images/LoadGen.png | Bin 2095 -> 0 bytes src/apps/intel/README.md | 21 +- src/apps/intel/README.src.md | 195 ----- src/apps/ipv6/.images/SimpleKeyedTunnel.png | Bin 6743 -> 0 bytes src/apps/ipv6/.images/nd_light.png | Bin 2623 -> 0 bytes src/apps/ipv6/README.md | 21 +- src/apps/ipv6/README.src.md | 117 --- .../packet_filter/.images/PacketFilter.png | Bin 2326 -> 0 bytes src/apps/packet_filter/.images/PcapFilter.png | Bin 2242 -> 0 bytes src/apps/packet_filter/README.md | 7 +- src/apps/packet_filter/README.src.md | 35 - src/apps/pcap/.images/PcapReader.png | Bin 3014 -> 0 bytes src/apps/pcap/README.md | 7 +- src/apps/pcap/README.src.md | 20 - src/apps/rate_limiter/.images/RateLimiter.png | Bin 2221 -> 0 bytes src/apps/rate_limiter/README.md | 7 +- src/apps/rate_limiter/README.src.md | 48 - src/apps/socket/.images/RawSocket.png | Bin 2481 -> 0 bytes src/apps/socket/README.md | 7 +- src/apps/socket/README.src.md | 18 - src/apps/solarflare/.images/Solarflare.png | Bin 2187 -> 0 bytes src/apps/solarflare/README.md | 7 +- src/apps/solarflare/README.src.md | 40 - src/apps/vhost/.images/VhostUser.png | Bin 2265 -> 0 bytes src/apps/vhost/README.md | 7 +- src/apps/vhost/README.src.md | 36 - src/apps/virtio_net/.images/VirtioNet.png | Bin 2353 -> 0 bytes src/apps/virtio_net/README.md | 7 +- src/apps/virtio_net/README.src.md | 32 - src/apps/vpn/.images/VPWS.png | Bin 4877 -> 0 bytes src/apps/vpn/README.md | 13 +- src/apps/vpn/README.src.md | 61 -- src/lib/hardware/README.src.md | 207 ----- src/lib/protocol/.images/Datagram.png | Bin 7074 -> 0 bytes src/lib/protocol/.images/Relocation.png | Bin 4577 -> 0 bytes src/lib/protocol/README.md | 15 +- src/lib/protocol/README.src.md | 818 ------------------ src/lib/virtio/.images/Virtio.png | Bin 14708 -> 0 bytes src/lib/virtio/README.md | 38 +- src/lib/virtio/README.src.md | 65 -- src/program/snabbnfv/.images/NFV.png | Bin 6878 -> 0 bytes src/program/snabbnfv/README.md | 15 +- src/program/snabbnfv/README.src.md | 97 --- .../snabbnfv/doc/.images/compute-node.png | Bin 182247 -> 0 bytes .../snabbnfv/doc/.images/database-node.png | Bin 103129 -> 0 bytes .../snabbnfv/doc/.images/network-node.png | Bin 101092 -> 0 bytes .../snabbnfv/doc/.images/neutron-map.png | Bin 98460 -> 0 bytes 65 files changed, 251 insertions(+), 2647 deletions(-) delete mode 100644 src/.images/Architecture.png delete mode 100644 src/.images/Network.png delete mode 100644 src/README.src.md delete mode 100644 src/apps/basic/.images/Buzz.png delete mode 100644 src/apps/basic/.images/Join.png delete mode 100644 src/apps/basic/.images/Repeater.png delete mode 100644 src/apps/basic/.images/Sink.png delete mode 100644 src/apps/basic/.images/Source.png delete mode 100644 src/apps/basic/.images/Split.png delete mode 100644 src/apps/basic/.images/Tee.png delete mode 100644 src/apps/basic/README.src.md delete mode 100644 src/apps/bridge/.images/bridge.png delete mode 100644 src/apps/bridge/README.src.md delete mode 100644 src/apps/intel/.images/Intel10G.png delete mode 100644 src/apps/intel/.images/Intel1g.png delete mode 100644 src/apps/intel/.images/LoadGen.png delete mode 100644 src/apps/intel/README.src.md delete mode 100644 src/apps/ipv6/.images/SimpleKeyedTunnel.png delete mode 100644 src/apps/ipv6/.images/nd_light.png delete mode 100644 src/apps/ipv6/README.src.md delete mode 100644 src/apps/packet_filter/.images/PacketFilter.png delete mode 100644 src/apps/packet_filter/.images/PcapFilter.png delete mode 100644 src/apps/packet_filter/README.src.md delete mode 100644 src/apps/pcap/.images/PcapReader.png delete mode 100644 src/apps/pcap/README.src.md delete mode 100644 src/apps/rate_limiter/.images/RateLimiter.png delete mode 100644 src/apps/rate_limiter/README.src.md delete mode 100644 src/apps/socket/.images/RawSocket.png delete mode 100644 src/apps/socket/README.src.md delete mode 100644 src/apps/solarflare/.images/Solarflare.png delete mode 100644 src/apps/solarflare/README.src.md delete mode 100644 src/apps/vhost/.images/VhostUser.png delete mode 100644 src/apps/vhost/README.src.md delete mode 100644 src/apps/virtio_net/.images/VirtioNet.png delete mode 100644 src/apps/virtio_net/README.src.md delete mode 100644 src/apps/vpn/.images/VPWS.png delete mode 100644 src/apps/vpn/README.src.md delete mode 100644 src/lib/hardware/README.src.md delete mode 100644 src/lib/protocol/.images/Datagram.png delete mode 100644 src/lib/protocol/.images/Relocation.png delete mode 100644 src/lib/protocol/README.src.md delete mode 100644 src/lib/virtio/.images/Virtio.png delete mode 100644 src/lib/virtio/README.src.md delete mode 100644 src/program/snabbnfv/.images/NFV.png delete mode 100644 src/program/snabbnfv/README.src.md delete mode 100644 src/program/snabbnfv/doc/.images/compute-node.png delete mode 100644 src/program/snabbnfv/doc/.images/database-node.png delete mode 100644 src/program/snabbnfv/doc/.images/network-node.png delete mode 100644 src/program/snabbnfv/doc/.images/neutron-map.png diff --git a/src/.images/Architecture.png b/src/.images/Architecture.png deleted file mode 100644 index 5d80ffbc63cf15e946582d8e6fe9ed91e9a5aeb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5964 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 VOK<-g2ZL6G!3m?|*}vG`{Xfc4Na_Fp diff --git a/src/README.md b/src/README.md index f4dcfc4181..bfceaeb669 100644 --- a/src/README.md +++ b/src/README.md @@ -7,7 +7,18 @@ quickly realize your network designs and its really fast too! Furthermore, Snabb Switch is extensible and encourages you to grow the ecosystem to match your requirements. -![Architecture](.images/Architecture.png) + DIAGRAM: Architecture + +---------------------+ + | Your Network Design | + +----*-----*-----*----+ + | | | + + (Built in and custom Apps and Libraries) + + | | | + +-----*-----*-----*-----+ + | Snabb Switch Core | + +-----------------------+ The Snabb Switch Core forms a runtime environment (*engine*) which executes your *design*. A design is simply a Lua script used to drive the @@ -22,7 +33,22 @@ you might expect. Apps, on the other hand, are code objects that implement a specific interface, which is used by the Snabb Switch engine to organize an *App Network*. -![Network](.images/Network.png) + DIAGRAM: Network + +---------+ + | | + +->* Filter0 *--+ + | | | | + | +---------+ | + +---+----+ | | +----+---+ + | *--+ +->* | + | NIC0 | | NIC1 | + | *<-+ +--* | + +---+----+ | | +----+---+ + | +---------+ | + | | | | + +--* Filter1 *<-+ + | | + +---------+ Usually, a Snabb Switch design will create a series of apps, interconnect these in a desired way using *links* and finally pass the resulting app diff --git a/src/README.src.md b/src/README.src.md deleted file mode 100644 index bfceaeb669..0000000000 --- a/src/README.src.md +++ /dev/null @@ -1,630 +0,0 @@ -# Introduction - -*Snabb Switch* is an extensible, virtualized, Ethernet networking -toolkit. With Snabb Switch you can implement networking applications -using the *Lua language*. Snabb Switch includes all the tools you need to -quickly realize your network designs and its really fast too! -Furthermore, Snabb Switch is extensible and encourages you to grow the -ecosystem to match your requirements. - - DIAGRAM: Architecture - +---------------------+ - | Your Network Design | - +----*-----*-----*----+ - | | | - - (Built in and custom Apps and Libraries) - - | | | - +-----*-----*-----*-----+ - | Snabb Switch Core | - +-----------------------+ - -The Snabb Switch Core forms a runtime environment (*engine*) which -executes your *design*. A design is simply a Lua script used to drive the -Snabb Switch stack, you can think of it as your top-level "main" routine. - -In order to add functionality to the Snabb Switch stack you can load -modules into the Snabb Switch engine. These can be Lua modules as well as -native code objects. We differentiate between two classes of modules, -namely libraries and *Apps*. Libraries are simple collections of program -utilities to be used in your designs, apps or other libraries, just as -you might expect. Apps, on the other hand, are code objects that -implement a specific interface, which is used by the Snabb Switch engine -to organize an *App Network*. - - DIAGRAM: Network - +---------+ - | | - +->* Filter0 *--+ - | | | | - | +---------+ | - +---+----+ | | +----+---+ - | *--+ +->* | - | NIC0 | | NIC1 | - | *<-+ +--* | - +---+----+ | | +----+---+ - | +---------+ | - | | | | - +--* Filter1 *<-+ - | | - +---------+ - -Usually, a Snabb Switch design will create a series of apps, interconnect -these in a desired way using *links* and finally pass the resulting app -network on to the Snabb Switch engine. The engine's job is to: - - * Pump traffic through the app network - * Keep the app network running (e.g. restart failed apps) - * Report on the network status - - -# Snabb Switch API - -The core modules defined below can be loaded using Lua's `require`. For -example: - -``` -local config = require("core.config") - -local c = config.new() -... -``` - -## App - -An *app* is an isolated implementation of a specific networking -function. For example, a switch, a router, or a packet filter. - -Apps receive packets on *input ports*, perform some processing, and -transmit packets on *output ports*. Each app has zero or more input and -output ports. For example, a packet filter may have one input and one -output port, while a packet recorder may have only an input port. Every -app must implement the interface below. Methods which may be left -unimplemented are marked as "optional". - -— Method **myapp:new** *arg* - -*Required*. Create an instance of the app with a given argument *arg*. -`Myapp:new` must return an instance of the app. The handling of *arg* is -up to the app but it is encouraged to use `core.config`'s `parse_app_arg` -to parse *arg*. - - -— Field **myapp.input** - -— Field **myapp.output** - -Tables of named input and output links. These tables are initialized by -the engine for use in processing and are *read-only*. - - -— Method **myapp:pull** - -*Optional*. Pull packets into the network. - -For example: Pull packets from a network adapter into the app network by -transmitting them to output ports. - - -— Method **myapp:push** - -*Optional*. Push packets through the system. - -For example: Move packets from input ports to output ports or to a -network adapter. - - -— Method **myapp:reconfig** *arg* - -*Optional*. Reconfigure the app with a new *arg*. If this method is not -implemented the app instance is discarded and a new instance is created. - - -— Method **myapp:report** - -*Optional*. Print a report of the current app status. - - -— Method **myapp:stop** - -*Optional*. Stop the app and release associated external resources. - - -— Field **myapp.zone** - -*Optional*. Name of the LuaJIT *profiling zone* used for this app -(descriptive string). The default is the module name. - - - -## Config (core.config) - -A *config* is a description of a packet-processing network. The network -is a directed graph. Nodes in the graph are *apps* that each process -packets in a specific way. Each app has a set of named input and output -*ports*—often called *rx* and *tx*. Edges of the graph are unidirectional -*links* that carry packets from an output port to an input port. - -The config is a purely passive data structure. Creating and -manipulating a config object does not immediately affect operation. -The config has to be activated using `engine.configure`. - -— Function **config.new** - -Creates and returns a new empty configuration. - - -— Function **config.app** *config*, *name*, *class*, *arg* - -Adds an app of *class* with *arg* to the *config* where it will be -assigned to *name*. - -Example: - -``` -config.app(c, "nic", Intel82599, {pciaddr = "0000:00:00.0"}) -``` - - -— Function **config.link** *config*, *linkspec* - -Add a link defined by *linkspec* to the config *config*. *Linkspec* must -be a string of the format - -``` -app_name1.output_port->app_name2.input_port -``` - -where `app_name1` and `app_name2` are names of apps in *config* and -`output_port` and `input_port` are valid output and input ports of the -referenced apps respectively. - -Example: - -``` -config.link(c, "nic1.tx->nic2.rx") -``` - - - -## Engine (core.app) - -The *engine* executes a config by initializing apps, creating links, and -driving the flow of execution. The engine also performs profiling and -reporting functions. It can be reconfigured during runtime. Within Snabb -Switch scripts the `core.app` module is bound to the global `engine` -variable. - -— Function **engine.configure** *config* - -Configure the engine to use a new config *config*. You can safely call -this method many times to incrementally update the running app -network. The engine updates the app network as follows: - - * Apps that did not exist in the old configuration are started. - * Apps that do not exist in the new configuration are stopped. (The app `stop()` method is called if defined.) - * Apps with unchanged configurations are preserved. - * Apps with changed configurations are updated by calling their `reconfig()` method. If the `reconfig()` method is not implemented then the old instance is stopped a new one started. - * Links with unchanged endpoints are preserved. - -— Function **engine.main** *options* - -Run the Snabb Switch engine. *Options* is a table of key/value pairs. The -following keys are recognized: - - * `duration` - Duration in seconds to run the engine for (as a floating - point number). If this is set you cannot supply `done`. - * `done` - A function to be called repeatedly by `engine.main` until it - returns `true`. Once it returns `true` the engine will be stopped and - `engine.main` will return. If this is set you cannot supply - `duration`. - * `report` - A table which configures the report printed before - `engine.main()` returns. The keys `showlinks` and `showapps` can be - set to boolean values to force or suppress link and app reporting - individually. By default `engine.main()' will report on links but not - on apps. - * `no_report` - A boolean value. If `true` no final report will be - printed. - - -— Function **engine.now** - -Returns monotonic time in seconds as a floating point number. Suitable -for timers. - -— Variable **engine.busywait** - -If set to true then the engine polls continuously for new packets to -process. This consumes 100% CPU and makes processing latency less -vulnerable to kernel scheduling behavior which can cause pauses of -more than one millisecond. - -Default: false - -— Variable **engine.Hz** - -Frequency at which to poll for new input packets. The default value is -'false' which means to adjust dynamically up to 100us during low -traffic. The value can be overridden with a constant integer saying -how many times per second to poll. - -This setting is not used when engine.busywait is true. - -## Link (core.link) - -A *link* is a [ring buffer](http://en.wikipedia.org/wiki/Circular_buffer) -used to store packets between apps. Links can be treated either like -arrays—accessing their internal structure directly—or as streams of -packets by using their API functions. - -— Function **link.empty** *link* - -Predicate used to test if a link is empty. Returns true if *link* is -empty and false otherwise. - - -— Function **link.full** *link* - -Predicate used to test if a link is full. Returns true if *link* is full -and false otherwise. - - -— Function **link.receive** *link* - -Returns the next available packet (and advances the read cursor) on -*link*. If the link is empty an error is signaled. - - -— Function **link.front** *link* - -Return the next available packet without advancing the read cursor on -*link*. If the link is empty, `nil` is returned. - - -— Function **link.transmit** *link*, *packet* - -Transmits *packet* onto *link*. If the link is full *packet* is dropped -(and the drop counter increased). - - -— Function **link.stats** *link* - -Returns a structure holding ring statistics for the *link*: - - * `txbytes`, `rxbytes`: Counts of transferred bytes. - * `txpackets`, `rxpackets`: Counts of transferred packets. - * `txdrop`: Count of packets dropped due to ring overflow. - - -## Packet (core.packet) - -A *packet* is a data structure describing one of the network packets that -is currently being processed. The packet is used to explicitly manage the -life cycle of the packet. Packets are explicitly allocated and freed by -using `packet.allocate` and `packet.free`. When a packet is received -using `link.receive` its ownership is acquired by the calling app. The -app must then ensure to either transfer the packet ownership to another -app by calling `link.transmit` on the packet or free the packet using -`packet.free`. Apps may only use packets they own, e.g. packets that have -not been transmitted or freed. The number of allocatable packets is -limited by the size of the underlying "freelist", e.g. a pool of unused -packet objects from and to which packets are allocated and freed. - -— Function **packet.allocate** - -Returns a new empty packet. An an error is raised if there are no packets -left on the freelist. - -— Function **packet.free** *packet* - -Frees *packet* and puts in back onto the freelist. - -— Function **packet.data** *packet* - -Returns a pointer to the payload of *packet*. - -— Function **packet.length** *packet* - -Returns the payload length of *packet*. - -— Function **packet.clone** *packet* - -Returns an exact copy of *packet*. - -— Function **packet.append** *packet*, *pointer*, *length* - -Appends *length* bytes starting at *pointer* to the end of *packet*. An -error is raised if there is not enough space in *packet* to accomodate -*length* additional bytes. - -— Function **packet.prepend** *packet*, *pointer*, *length* - -Prepends *length* bytes starting at *pointer* to the front of -*packet*. An error is raised if there is not enough space in *packet* to -accomodate *length* additional bytes. - -— Function **packet.shiftleft** *packet*, *length* - -Truncates *packet* by *length* bytes from the front. - -— Function **packet.from_pointer** *pointer*, *length* - -Allocate packet and fill it with *length* bytes from *pointer*. - -— Function **packet.from_string** *string* - -Allocate packet and fill it with the contents of *string*. - - -## Memory (core.memory) - -Snabb Switch allocates special -[DMA](https://en.wikipedia.org/wiki/Direct_memory_access) memory that -can be accessed directly by network cards. The important -characteristic of DMA memory is being located in contiguous physical -memory at a stable address. - -— Function **memory.dma_alloc** *bytes* - -Returns a pointer to *bytes* of new DMA memory. - -— Function **memory.virtual_to_physical** *pointer* - -Returns the physical address (`uint64_t`) the DMA memory at *pointer*. - -— Variable **memory.huge_page_size** - -Size of a single huge page in bytes. Read-only. - - -## Lib (core.lib) - -The `core.lib` module contains miscellaneous utilities. - -— Function **lib.equal** *x*, *y* - -Predicate to test if *x* and *y* are structurally similar (isomorphic). - -— Function **lib.can_open** *filename*, *mode* - -Predicate to test if file at *filename* can be successfully opened with -*mode*. - -— Function **lib.can_read** *filename* - -Predicate to test if file at *filename* can be successfully opened for -reading. - -— Function **lib.can_write** *filename* - -Predicate to test if file at *filename* can be successfully opened for -writing. - -— Function **lib.readcmd** *command*, *what* - -Runs Unix shell *command* and returns *what* of its output. *What* must -be a valid argument to `file:read`. - -— Function **lib.readfile** *filename*, *what* - -Reads and returns *what* from file at *filename*. *What* must be a valid -argument to `file:read`. - -— Function **lib.writefile** *filename*, *value* - -Writes *value* to file at *filename* using `file:write`. Returns the -value returned by `file:write`. - -— Function **lib.readlink** *filename* - -Returns the true name of symbolic link at *filename*. - -— Function **lib.dirname** *filename* - -Returns the `dirname(3)` of *filename*. - -— Function **lib.basename** *filename* - -Returns the `basename(3)` of *filename*. - -— Function **lib.firstfile** *directory* - -Returns the filename of the first file in *directory*. - -— Function **lib.firstline** *filename* - -Returns the first line of file at *filename* as a string. - -— Function **lib.files_in_directory** *directory* - -Returns an array of filenames in *directory*. - -— Function **lib.load_string** *string* - -Evaluates and returns the value of the Lua expression in *string*. - -— Function **lib.load_conf** *filename* - -Evaluates and returns the value of the Lua expression in file at -*filename*. - -— Function **lib.store_conf** *filename*, *value* - -Writes *value* to file at *filename* as a Lua expression. Supports -tables, strings and everything that can be readably printed using -`print`. - -— Function **lib.bits** *bitset*, *basevalue* - -Returns a bitmask using the values of *bitset* as indexes. The keys of -*bitset* are ignored (and can be used as comments). - -Example: - -``` -bits({RESET=0,ENABLE=4}, 123) => 1<<0 | 1<<4 | 123 -``` - -— Function **lib.bitset** *value*, *n* - -Predicate to test if bit number *n* of *value* is set. - -— Function **lib.bitfield** *size*, *struct*, *member*, *offset*, -*nbits*, *value* - -Combined accesor and setter function for bit ranges of integers in cdata -structs. Sets *nbits* (number of bits) starting from *offset* to -*value*. If *value* is not given the current value is returned. - -*Size* may be one of 8, 16 or 32 depending on the bit size of the integer -being set or read. - -*Struct* must be a pointer to a cdata object and *member* must be the -literal name of a member of *struct*. - -Example: - -``` -local struct_t = ffi.typeof[[struct { uint16_t flags; }]] --- Assuming `s' is an instance of `struct_t', set bits 4-7 to 0xF: -lib.bitfield(16, s, 'flags', 4, 4, 0xf) --- Get the value: -lib.bitfield(16, s, 'flags', 4, 4) -- => 0xF -``` - -— Function **string:split** *pattern* - -Returns an iterator over the string split by *pattern*. *Pattern* must be -a valid argument to `string:gmatch`. - -Example: - -``` -for word, sep in ("foo!bar!baz"):split("(!)") do - print(word, sep) -end - -> foo ! -> bar ! -> baz nil -``` - -— Function **lib.hexdump** *string* - -Returns hexadecimal string for bytes in *string*. - -— Function **lib.hexundump** *hexstring* - -Returns byte string for *hexstring*. - -— Function **lib.comma_value** *n* - -Returns a string for decimal number *n* with magnitudes separated by -commas. Example: - -``` -comma_value(1000000) => "1,000,000" -``` - -— Function **lib.random_data** *length* - -Returns a string of *length* bytes of random data. - -— Function **lib.bounds_checked** *type*, *base*, *offset*, *size* - -Returns a table that acts as a bounds checked wrapper around a C array of -*type* and *size* starting at *base* plus *offset*. *Type* must be a -ctype and the caller must ensure that the allocated memory region at -*base*/*offset* is at least `sizeof(type)*size` bytes long. - -— Function **lib.timer** *s* - -Returns a function that accepts no parameters and acts as a predicate to -test if *ns* nanoseconds have elapsed. - -— Function **lib.waitfor** *condition* - -Blocks until the function *condition* returns a true value. - -— Function **lib.waitfor2** *name*, *condition*, *attempts*, *interval* - -Repeatedly calls the function *condition* in *interval* -(milliseconds). If *condition* returns a true value `waitfor2` -returns. If *condition* does not return a true value after *attempts* -`waitfor2` raises an error identified by *name*. - -— Function **lib.yesno** *flag* - -Returns the string `"yes"` if *flag* is a true value and `"no"` -otherwise. - -— Function **lib.align** *value*, *size* - -Return the next integer that is a multiple of *size* starting from -*value*. - -— Function **lib.csum** *pointer*, *length* - -Computes and returns the "IP checksum" *length* bytes starting at -*pointer*. - -— Function **lib.update_csum** *pointer*, *length*, *checksum* - -Returns *checksum* updated by *length* bytes starting at -*pointer*. The default of *checksum* is `0LL`. - -— Function **lib.finish_csum** *checksum* - -Returns the finalized *checksum*. - -— Function **lib.malloc** *etype* - -Returns a pointer to newly allocated DMA memory for *etype*. - -— Function **lib.deepcopy** *object* - -Returns a copy of *object*. Supports tables as well as ctypes. - -— Function **lib.array_copy** *array* - -Returns a copy of *array*. *Array* must not be a "sparse array". - -— Function **lib.htonl** *n* - -— Function **lib.htons** *n* - -Host to network byte order conversion functions for 32 and 16 bit -integers *n* respectively. - -— Function **lib.ntohl** *n* - -— Function **lib.ntohs** *n* - -Network to host byte order conversion functions for 32 and 16 bit -integers *n* respectively. - - - -## Main - -Snabb Switch designs can be run either with: - - snabb * * - -or - - #!/usr/bin/env snabb * - ... - -The *main* module provides an interface for running Snabb Switch scripts. -It exposes various operating system functions to scripts. - -— Field **main.parameters** - -A list of command-line arguments to the running script. Read-only. - - -— Function **main.exit** *status* - -Cleanly exists the process with *status*. diff --git a/src/apps/basic/.images/Buzz.png b/src/apps/basic/.images/Buzz.png deleted file mode 100644 index a8fc8b85b7875632a0c4a25b0c2b73d7b41aca8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoXK^qA$#4ZWAjzWY>EaktaqI2fjb6&R5^WD1 z1UTn49T!}aqr2vy7 ztl-(epeOtwZ~N`{-`~G~f7qgpQS3k})18+k>(;NY-W$i0F3%RhFrBkt_0_EHw+-ji zTFf>$z_i1sVfNWHpxn8=CG*qppjE~3beYEw7tE(8JO36VyvsGI(6#Nqes>1 zKI=p3uFCT>0$mu-^yA^fg%>kYQj?P(D>p2+wy}wch?sHW{{uy!O+Sk79ho)d_w&`O zSD)nE_}%@0ySuyP+OXBK^78e61b{yNGt>IRgvvUov0Nk_;xjXQF?m1{ojxGWkA93pY1``)>+dh_qXcn>o2cQ zb^7w>&mY^p`4Fd7bKlJ{i3@-AwJPr2+qX}j-@bkO>eZ_+<4-=D!~QH@=%M2)S(nCz>&fo z6lJhDK#xpd;3GvQP#rvCF$@K2MKTmyWEwL@TxMJ|$y9=8*WJA3mov9UolPsQ-*=kD zsNF}|_+$#hwKe84e82zJnawHNJvaM%3aXS;Z_)Z2ufG;uO?$p`#(Sg2Gm4i__!vnx zn7$Tuow!!*diJ+Dcg*9?m(O%~HX$=bZ6?owSznJmE?jrzjoHqW&sWOr@24`&bY3=b zW{MFkm!an^UQ8i@f{9ew*A}ukNw~2!xMbx Sa8v+G3VtW-1lQ?UCGDR%03==9*g( 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 I^v;L>8~bmfg#Z8m diff --git a/src/apps/basic/.images/Repeater.png b/src/apps/basic/.images/Repeater.png deleted file mode 100644 index 80904357a36b6fa91b0fd3b32687c51cf9ede629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2168 zcmb_ec|4nW8c&PeF5AJ-kWMutsx2~zqaCAIm7p`Ej-u|FB-O44qiG#Y9aTqY%SK75 zYc$)Ujy7T4M=jC>ku}b^H6^N!x=AATrL|1|-haNI-}5}*-}652`+Gm%?=RjCZFN}s zs5A%!I()$z=>P&9Xb09$4jlxr5Hg(P?U#anxu0YvW)fW!4y;>S(|PtY4N0j z7!maITotdjp7;I6WIMmKvORslrc0l{(Lq4-iiI+fqt83!KqUBUSklZzkR}p$015sZ z?tq*th%5!bPJje|3dmAGWjlk~rtDjMQT}4LGw!;DN-FQy^Ei#KxefWz$}IdDV*~NIK0^;K0sHL>*TQ^nd zB)q!X;OMBCuC83x!xcQ-N9FVOpx|Jut5}l^7LLv>qRNm_I4uY_<7~j{^71+2DjZyj z#bOh+kzn!>*F6AO@~(RT6i~q1?SlM1CbIW8V9fi#RJ)K+1Oz}%>l1uSC+#FYL&7$B z5B4)Z_t{6^=87wVqJ0JT#AVFhXK>Hzo5R(&{QUgP!bR&Aw<|tEkHduS{1!~kHQ;$m z(%kj+_3@@S?9w~dBOn3$aN{l$T@y4rQ0_N~k*~(SNsN<)cIe~08^Ry5V`F2FKA2hg z(D#Tu^y-(UDgqw~oQc1B#?ajKw6DLvS2>=$IMEh7Ke9PDT(eBg%F6oC_cF<|jNgizYh9G^@eE{^Ro$F{VCZEBtM9yg(p`YG|4HUCqeA zpu4|cnd6~Co}HZ?21Z=;ert*Exa!qCi7YH;TK=M+ZlnFUCS(DF_aCk{+?*PzBVwI# zrQ9&#YRhDnaqy3!^GfgkjDH8Oma}Iz^gY)0Ot{>BicY0cX;rsZrbQ-UVPQW};PIT& zkkis3qV*;u9J}h%^q$XHLf~T=FJG9P3!WWt;)dGaQz)K<8RuE? zM5iN+(SG2ux+F%=cPZ=Nv=l6~qf<9$qmbs3*p7Bl`Z_*i!q;NEC&PESpN6%ywS5n5 zGjm&J@dcP473bYL$s$6t7JNR^#8)(~HJE!1+0!~ORw&w7x~XIuE>dP|64iy1 z>FQ(GIV3Ynv#x}Vx5Psu%0F21TY?nI84eSrj<0qdy~|q28kJ_Uuo;4S`|*- zFqh(^4xWs#1lW^hcEG=~W-!YY0EL^gh&L*CQk7ol~(_&~!zV|&3U1EBC)H;&T@47N4K+ zW@v^WR8&+p&OTdK;ysr42|9yO;$>!1-!-_|jnw8Z#IKf8A|ScaXbZ6p+4Dg|%EZ}v z8w2vn$o(Sb6X5VYDVs353>*?fE>PgmSUfj3myx1nsl(8<)MMyd_T@6W7(MdYqdW5QkRaS%WAk^vqoX4e~F*1Vi%bS{-?Bg!Sm{2_sw-K?3WJEUN z#aG`UDSvl#bfnEBXg3SAItZfrMmo6HG`dK|Hq=t zw{#FpCX#uO1P5Rz0AME|6`Aik>5dow&wh8ayY3t*Z3&J{P}sKY%bDUowPV!@(;QV* Q;6?$ufI=fn&i@?sU-n)pcmMzZ diff --git a/src/apps/basic/.images/Sink.png b/src/apps/basic/.images/Sink.png deleted file mode 100644 index c8880ffc1242d7c440842e4a19431d8e776bf213..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2210 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 diff --git a/src/apps/basic/.images/Split.png b/src/apps/basic/.images/Split.png deleted file mode 100644 index 18b9d00255a044a82af6010505c30c8a4178d967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3917 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 diff --git a/src/apps/basic/README.md b/src/apps/basic/README.md index d5943c77da..7473b17abf 100644 --- a/src/apps/basic/README.md +++ b/src/apps/basic/README.md @@ -9,7 +9,16 @@ The `Source` app is a synthetic packet generator. On each breath it fills each attached output link with new packets. The packet data is uninitialized garbage and each packet is 60 bytes long. -![Source](.images/Source.png) + DIAGRAM: Source + +--------+ + | | + | *---- (any) + | | + | Source *---- (any) + | | + | *---- (any) + | | + +--------+ ## Join @@ -17,7 +26,16 @@ The `Join` app joins together packets from N input links onto one output link. On each breath it outputs as many packets as possible from the inputs onto the output. -![Join](.images/Join.png) + DIAGRAM: Join + +--------+ + | | + (any) ----* | + | | + (any) ----* Join *----- out + | | + (any) ----* | + | | + +--------+ ## Split @@ -25,14 +43,32 @@ The `Split` app splits packets from multiple inputs across multiple outputs. On each breath it transfers as many packets as possible from the input links to the output links. -![Split](.images/Split.png) + DIAGRAM: Split + +--------+ + | | + (any) ----* *----- (any) + | | + (any) ----* Split *----- (any) + | | + (any) ----* *----- (any) + | | + +--------+ ## Sink The `Sink` app receives all packets from any number of input links and discards them. This can be handy in combination with a `Source`. -![Sink](.images/Sink.png) + DIAGRAM: Sink + +--------+ + | | + (any) ----* | + | | + (any) ----* Sink | + | | + (any) ----* | + | | + +--------+ ## Tee @@ -40,7 +76,16 @@ The `Tee` app receives all packets from any number of input links and transfers each received packet to all output links. It can be used to merge and/or duplicate packet streams -![Tee](.images/Tee.png) + DIAGRAM: Tee + +--------+ + | | + (any) ----* *----- (any) + | | + (any) ----* Tee *----- (any) + | | + (any) ----* *----- (any) + | | + +--------+ ## Repeater @@ -48,5 +93,12 @@ The `Repeater` app collects all packets received from the `input` link and repeatedly transfers the accumulated packets to the `output` link. The packets are transmitted in the order they were received. -![Repeater](.images/Repeater.png) + DIAGRAM: Repeater + +----------+ + | | + | | + input ----* Repeater *----- output + | | + | | + +----------+ diff --git a/src/apps/basic/README.src.md b/src/apps/basic/README.src.md deleted file mode 100644 index 7473b17abf..0000000000 --- a/src/apps/basic/README.src.md +++ /dev/null @@ -1,104 +0,0 @@ -# Basic Apps (apps.basic.basic_apps) - -The module *apps.basic.basic_apps* provides apps with general -functionality for use in you app networks. - -## Source - -The `Source` app is a synthetic packet generator. On each breath it fills -each attached output link with new packets. The packet data is -uninitialized garbage and each packet is 60 bytes long. - - DIAGRAM: Source - +--------+ - | | - | *---- (any) - | | - | Source *---- (any) - | | - | *---- (any) - | | - +--------+ - -## Join - -The `Join` app joins together packets from N input links onto one -output link. On each breath it outputs as many packets as possible -from the inputs onto the output. - - DIAGRAM: Join - +--------+ - | | - (any) ----* | - | | - (any) ----* Join *----- out - | | - (any) ----* | - | | - +--------+ - -## Split - -The `Split` app splits packets from multiple inputs across multiple -outputs. On each breath it transfers as many packets as possible from -the input links to the output links. - - DIAGRAM: Split - +--------+ - | | - (any) ----* *----- (any) - | | - (any) ----* Split *----- (any) - | | - (any) ----* *----- (any) - | | - +--------+ - -## Sink - -The `Sink` app receives all packets from any number of input links and -discards them. This can be handy in combination with a `Source`. - - DIAGRAM: Sink - +--------+ - | | - (any) ----* | - | | - (any) ----* Sink | - | | - (any) ----* | - | | - +--------+ - -## Tee - -The `Tee` app receives all packets from any number of input links and -transfers each received packet to all output links. It can be used to -merge and/or duplicate packet streams - - DIAGRAM: Tee - +--------+ - | | - (any) ----* *----- (any) - | | - (any) ----* Tee *----- (any) - | | - (any) ----* *----- (any) - | | - +--------+ - -## Repeater - -The `Repeater` app collects all packets received from the `input` link -and repeatedly transfers the accumulated packets to the `output` -link. The packets are transmitted in the order they were received. - - DIAGRAM: Repeater - +----------+ - | | - | | - input ----* Repeater *----- output - | | - | | - +----------+ - diff --git a/src/apps/bridge/.images/bridge.png b/src/apps/bridge/.images/bridge.png deleted file mode 100644 index d1010f805a7480a30e35d9eb68f382416b2562e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4851 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 diff --git a/src/apps/bridge/README.md b/src/apps/bridge/README.md index 5916a41b96..3a1f06da05 100644 --- a/src/apps/bridge/README.md +++ b/src/apps/bridge/README.md @@ -11,7 +11,16 @@ group are never forwarded to any output port belonging to the same split-horizon group. There are two `bridge` implementations available: `apps.bridge.flooding` and apps.bridge.learning`. -![bridge](.images/bridge.png) + DIAGRAM: bridge + +----------+ + port1 ---->* *----> port1 + | | + port2 ---->* *----> port2 + | bridge | + ... ---->* *----> ... + | | + portN ---->* *----> portN + +----------+ ## Configuration diff --git a/src/apps/bridge/README.src.md b/src/apps/bridge/README.src.md deleted file mode 100644 index 3a1f06da05..0000000000 --- a/src/apps/bridge/README.src.md +++ /dev/null @@ -1,98 +0,0 @@ -# Bridge Apps - -A `bridge` app implements a basic Ethernet bridge with split-horizon -semantics. It has an arbitrary number of ports. For each input port there -must exist an output port with the same name. Each port name is a member -of at most one *split-horizon group*. If it is not a member of a -split-horizon group, the port is also called a *free port*. Packets -arriving on a free input port may be forwarded to all other output -ports. Packets arriving on an input port that belongs to a split-horizon -group are never forwarded to any output port belonging to the same -split-horizon group. There are two `bridge` implementations available: -`apps.bridge.flooding` and apps.bridge.learning`. - - DIAGRAM: bridge - +----------+ - port1 ---->* *----> port1 - | | - port2 ---->* *----> port2 - | bridge | - ... ---->* *----> ... - | | - portN ---->* *----> portN - +----------+ - -## Configuration - -A `bridge` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **ports** - -*Optional*. An array of free port names. The default is no free ports. - -— Key **split_horizon_groups** - -*Optional*. A table mapping split-horizon groups to arrays of port -names. The default is no split-horizon groups. - -— Key **config** - -*Optional*. The configuration of the actual bridge implementation. - - -# Flooding bridge (apps.bridge.flooding) - -The flooding `bridge` app implements the simplest possible bridge, which -floods a packet arriving on an input port to all output ports within its -scope according to the split-horizon topology. - -## Configuration - -The flooding `bridge` app ignores the *config* key of its configuration. - - -# Learning bridge (apps.bridge.learning) - -The learning `bridge` app implements a *learning bridge* using a -custom hash table to store the set of MAC source addresses of packets -arriving on each input port. When a packet is received it is forwarded -to all output ports whose corresponding input ports match the packet's -destination MAC address. When no input port matches, the packet is -flooded to all output ports. Multicast MAC addresses are always -flooded to all output ports associated with the input port. The -scoping rules according to the split-horizon topology apply unchanged. - -## Configuration - -The learning `bridge` app accepts a table as the value of the *config* -key of its configuration. The following keys are defined: - -— Key **mac_table** - -*Optional*. This is a table that defines the characteristics of the - MAC table. The following keys are defined - -— Key **size** - -*Optional*. The number of MAC addresses to be stored in the - table. Default is 256. The size of the table is increased - automatically if this limit is reached or if an overflow in one of - the hash buckets occurs. This value is capped by **resize_max**. - -— Key **timeout** - -*Optional*. Timeout for learned MAC addresses in seconds. Default is -60. - -— Key **verbose** - -*Optional*. A boolean value. If true, statistics about table usage is logged during each timeout interval. Default is `false`. - -— Key **copy_on_resize** - -*Optional*. A boolean value. If true, the contents of the table is copied to the newly allocated table after a resize operation. Default is `true`. - -— Key **resize_max** - -*Optional*. An upper bound for the size of the table. Default is 65536. diff --git a/src/apps/intel/.images/Intel10G.png b/src/apps/intel/.images/Intel10G.png deleted file mode 100644 index f56f0aaf4aa5f40ce14f5be9710c22cf074076b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2340 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 diff --git a/src/apps/intel/.images/LoadGen.png b/src/apps/intel/.images/LoadGen.png deleted file mode 100644 index 37e0d3f30e308ca74795c148548476cc82ee8511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2095 zcmb7`c~H|y7RP@`O;DVlfEO5$aEt=WErDP#AOb@oM<{Lyki`|40Kzz71j2|YV-NvF z7zJS#41_S;AZNm#_h-%gv9q;n?N(QHy?WjK>UH(|eqN`z zxjKUKaCra#KpfWI9ROqkAvlr(~G&SXPI2`D?vgBaat7V+2 zNGsf{guJ60U!p8JxA^Sw&qiGu##$d`Da?JX!a`x0vVNm(Qlw-i?* zvT9h&T@f#CHwu0Ydc7$reX-dreot=T^$px*_a%geG^9xn0JifgdjPsjr!iv=4;)e_ z0cYVr1`P55|J}sO0vsR_321=87tKG#vFFUcNadNpk(qRvTDzW&m^4^Aoh#niS|SjM zGo77@Y=JhY0j`$N+S=NRin@4fx{778B!HA?1G>1lxR$I>wZxR!MMW9^?(_2U0zt5> ztLGk~rKJTYi^${Z;9 z>u@7t`%mJr%20NGTf$B*GV$L=1}p={ISU2AeojFHq|4B6Aiv}^u~s`1yDIpUstFyt zXbAE<*3yfW;V-~}-rmyk^3+je4(8nFXnRAGN?h{1-Q7=hlT`9hmsiXES!Esr@9~s_dHcZMkYlnk}1K=|PYARQZ?I6%VM##l^Xn3|lwV*CWl$ z%rrHFp5FXQ*~owI+JHh}-3bv#1Dz_$0DT$F&6fK5;_-%Xc7cttt}fQeNxC{`M<4!P zy0tV~?t?F|#^~vhM$5c%>)Duu?dE(d66c%CefgO9*1&3WC#h5XWzk6Kc#?o!(A4p= z)T3l0mRl7-LsdL^^20F0#Vn)`i^KKy_qSc)ecNdft}Bsa=b@sob`rX#l@$T?Iv^mx z@vhp?0_#Vy1S(bnfe>Jnec-&ybXz<(R~3Ok%%9RMtA-n}kgKt0LT;og8}ke4kRleBE!N&VzCvOpXU7}YQ}nf^UfW4m#}JP zf=LUT@}Sr$TeLP@g13tp-I2ckv4|$V{qW&Y@Y(WI%jV$|-R=G8SWn!hP&ib?pVb6w zv#26bm|5xZir(kX?WL1Y0p{T_g9}tpwSt+YgTMO$iKS3Jw#C1%Ph>r=`)#LYY|xO< zXi!KpiCWab=jY(+l%tiDTIp=Ta79|$*Jh>hTI-*h^Kg|CewPOyp z_f%C?`!6{e6yz!`5e|uKPuexyJ z5N3I439LO4@(37T+&Uo#gH@m$VheIIsB3xDL9#68vFt!@dC?%H@Z-TOA5cDPxuAa! zD{N3H!lnYMisOsr)IpMOT}b*#{I8a@HH4a4eYH+B{Gl;1vO{IxeJZqPXTc(in(}~p zy@iIwVh1nb@%J8$+zRd-pXc$4&>*YdNKbD_+V3~}aZ`-8(U;?+TbaxYwU%-37JR4O za-@62RISse-=IHmx!ehE(ZsGI>M*35QQqZ=#y1LUiH4@!a7ZMORMSj+k{KU>KDDAF zM~;M4F_kb^B{{B+Xx(gs3kPc&nPfq(O{hvb=^rm&!q;L7He4s#ueC&))~B7KMcK?A z)jo%?%f%m>ifmGUZA101y?85M_`PLx%*8?w+3XUg%vR)pu^w!pc|1 z1aP!WUmglijdzcTZwpu_Zd3NcPzakc9e9f2I#%FE3*CW`b^Qc{i`JH{8>-_i-2 z=`XM$vN`G_?fVnN53{oc0zo)x@gPoFql`J$7_$->eq(&xuh_)g+-v`LkwHOoUC9bK zy9kD6>uu+Z6%+tz%Y@mZs=3nL9jQ-s;OOWmhO!|<{p?g!Vmg8iJ5y=X;S5)-q);f<*LNqUr>p+P zqS0uuIgXI@wRt8SFIF(fg4vftn)&;DG*ax(9UI%SdR9C%tP=K(c|P2WlPI)6BI!Ke zP-az?(Y>B^xj!xXnrtf|o&~1|MK4kQ|JL`Px~VfA3H;t-w+lM}8q*Wk_*Q!g`Un6x M2Uq*5bAP@0Pv4-* Intel10G *----> tx + | | + +----------+ — Method **Intel10G.dev:get_rxstats** @@ -126,7 +131,12 @@ Features: - Configuration and statistics registers are mirrored to shared memory objects (NYI). - Receive and transmit links are optional and can have any name. -![Intel1g](.images/Intel1g.png) + DIAGRAM: Intel1g + +----------+ + | | + -=-->* Intel1g *--=-> + | | + +----------+ ### Configuration @@ -167,7 +177,12 @@ controller. It reads up to 32,000 packets from the `input` port and transmits them repeatedly onto the network. All incoming packets are dropped. -![LoadGen](.images/LoadGen.png) + DIAGRAM: LoadGen + +----------+ + | | + input ---->* LoadGen | + | | + +----------+ ### Configuration diff --git a/src/apps/intel/README.src.md b/src/apps/intel/README.src.md deleted file mode 100644 index 40e9aa0115..0000000000 --- a/src/apps/intel/README.src.md +++ /dev/null @@ -1,195 +0,0 @@ -# Intel 82599 Ethernet Controller Apps - -## Intel10G (apps.intel.intel_app) - -The `Intel10G` drives one port of an Intel 82599 Ethernet controller. -Packets taken from the `rx` port are transmitted onto the network. -Packets received from the network are put on the `tx` port. - - DIAGRAM: Intel10G - +----------+ - | | - rx ---->* Intel10G *----> tx - | | - +----------+ - -— Method **Intel10G.dev:get_rxstats** - -Returns a table with the following keys: - -* `counter_id` - Counter id -* `packets` - Number of packets received -* `dropped` - Number of packets dropped -* `bytes` - Total bytes received - -— Method **Intel10G.dev:get_txstats** - -Returns a table with the following keys: - -* `counter_id` - Counter id -* `packets` - Number of packets sent -* `bytes` - Total bytes sent - -### Configuration - -The `Intel10G` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **pciaddr** - -*Required*. The PCI address of the NIC as a string. - -— Key **macaddr** - -*Optional*. The MAC address to use as a string. The default is a -wild-card (e.g. accept all packets). - -— Key **vlan** - -*Optional*. A twelve bit integer (0-4095). If set, incoming packets from -other VLANs are dropped and outgoing packets are tagged with a VLAN -header. - -— Key **vmdq** - -*Optional*. Boolean, defaults to false. Enables interface -virtualization. Allows to have multiple `Intel10G` apps per port. If -enabled, *macaddr* must be specified. - -— Key **mirror** - -*Optional*. A table. If set, this app will receive copies of all selected -packets on the physical port. The selection is configured by setting keys -of the *mirror* table. Either *mirror.pool* or *mirror.port* may be set. - -If *mirror.pool* is `true` all pools defined on this physical port are -mirrored. If *mirror.pool* is an array of pool numbers then the specified -pools are mirrored. - -If *mirror.port* is one of "in", "out" or "inout" all incoming and/or -outgoing packets on the port are mirrored respectively. Note that this -does not include internal traffic which does not enter or exit through -the physical port. - -— Key **rxcounter** - -— Key **txcounter** - -*Optional*. Four bit integers (0-15). If set, incoming/outgoing packets -will be counted in the selected statistics counter respectively. Multiple -apps can share a counter. To retrieve counter statistics use -`Intel10G.dev:get_rxstats()` and `Intel10G.dev:get_txstats()`. - -— Key **rate_limit** - -*Optional*. Number. Limits the maximum Mbit/s to transmit. Default is 0 -which means no limit. Only applies to outgoing traffic. - -— Key **priority** - -*Optional*. Floating point number. Weight for the *round-robin* algorithm -used to arbitrate transmission when *rate_limit* is not set or adds up to -more than the line rate of the physical port. Default is 1.0 (scaled to -the geometric middle of the scale which goes from 1/128 to 128). The -absolute value is not relevant, instead only the ratio between competing -apps controls their respective bandwidths. Only applies to outgoing -traffic. - -For example, if two apps without *rate_limit* set have the same -*priority*, both get the same output bandwidth. If the priorities are -3.0/1.0, the output bandwidth is split 75%/25%. Likewise, 1.0/0.333 or -1.5/0.5 yield the same result. - -Note that even a low-priority app can use the whole line rate unless other -(higher priority) apps are using up the available bandwidth. - -### Performance - -The `Intel10G` app can transmit and receive at approximately 10 Mpps per -processor core. - -### Hardware limits - -Each physical Intel 82599 port supports the use of up to: - -* 64 *pools* (virtualized `Intel10G` app instances) -* 127 MAC addresses (see the `macaddr` configuration option) -* 64 VLANs (see the `vlan` configuration option) -* 4 *mirror pools* (see the `mirror` configuration option) - -## Intel1G (apps.intel.intel1g.intel1g) - -The `intel1g` app drives one port of an Intel Gigabit Ethernet -controller. - -Hardware support: -- Intel i210, i350 (in progress) - -Features: -- Optionally attach to a pre-initialized NIC. -- Optionally use specific TX and RX queue numbers (or none). -- Configuration and statistics registers are mirrored to shared memory objects (NYI). -- Receive and transmit links are optional and can have any name. - - DIAGRAM: Intel1g - +----------+ - | | - -=-->* Intel1g *--=-> - | | - +----------+ - -### Configuration - -— Key **pciaddr** - -*Required*. The PCI address of the NIC as a string. - -— Key **attach** - -*Optional*. True means attach to a transmit and/or receive queue of an already-initialized NIC. - -— Key **txq** - -*Optional*. Transmit queue number to use. `false` means no transmit function. Default: 0. - -— Key **rxq** - -*Optional*. Receive queue number to use. `false` means no receive function. Default: 0. - -— Key **ndesc** - -*Optional*. Number of DMA descriptors to use i.e. size of the DMA -transmit and receive queues. Must be a multiple of 128. Default is not -specified but assumed to be broadly applicable. - -— Key **rxburst** - -*Optional*. Maximum number of packets to receive on one -breath. Default is not specified but assumed to be broadly applicable. - -+— Key **loopback** -*Optional*. Set to `"MAC"` for MAC loopback, or to `"PHY"` for PHY loopback modes. - -## LoadGen (apps.intel.loadgen) - -`LoadGen` is a *load generator* app based on the Intel 82599 Ethernet -controller. It reads up to 32,000 packets from the `input` port and -transmits them repeatedly onto the network. All incoming packets are -dropped. - - DIAGRAM: LoadGen - +----------+ - | | - input ---->* LoadGen | - | | - +----------+ - -### Configuration - -The `LoadGen` app accepts a string as its configuration argument. The -given string denotes the PCI address of the NIC to use. - -### Performance - -The `LoadGen` app can transmit at line-rate (14 Mpps) without significant -CPU usage. diff --git a/src/apps/ipv6/.images/SimpleKeyedTunnel.png b/src/apps/ipv6/.images/SimpleKeyedTunnel.png deleted file mode 100644 index 89a42334e1f1c446d543b07b79ed41af3837b347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6743 zcmcgxXIN9&x{fg5jEFc$QTk{UQHp|e1Qh8=6$oNPGeZ$VC-kB+;6$W|N(%u2DN>CX zkQ$XH2mykG5-{fp_xrvZX>DoD ze?aU22n6CcHMwF70&xWcZNiUSz^@5dECvJ;lQO+>>00RM;&_b5z}7^Ef1a6qgM5g! z*)g`wfi^R_n?nUpZC{w=2}y1~aDDJp{^Q~I%#Pii0_z>hQFR|meGkG9JA_!U^uL&1 zN2A3vZeXQkgEH%L=IcJe6pmenS{9Zy<&Y8@agoir(;Xx$QtQt0)~3Pgom4B`t+gjQ zQN^ZTP;71xX!X{S24Gf#d?5XwPBDH0frifkZ4i=?=uk(L-5irtU1N?3KY4cV6=;g0mNFF3>ck1v*VM#~imC1>g2j=GH z$5wHmGn+BYa3P~Bhk(re> z+7uDu>N=gK;GBg*S>@`YZ6B|!tS}hCxxK}of)I%D<|tC#yB?G}b9;Ly8dpjB{P|lm zZKT@0XAt2K6%`c|v)k46Famqx#0gTZ?~tdLmzS}zG5RdNw|9T+rE0vs%=2}Zx`30; zgJXK8nj0_0Q`iXqH0Up*Cf=oL5Y$B-9Shhc*giq8z&S$U!-ogrRHTy2^dB6OByd}> z{EAJYfSAk5%3@<@P4LFI$|O>n~7$Y_c#?ZJaRSH=JFz?qxGHIA@$J^)e8RM$em+yK*a6b~T^H=jtuN zt7m@zHj>ArJds*x{8Z%}^yW=se(4-7CBD?nrh<^K^_z(5*MZ4z-(GY`d6;DRW3}?y zl9CQpLmmquuP9eunKDmCV&VGje58=JN@&9vDU!8~;Ou@1L|pi6R1UvvKEtM48xV+}Vv%&XX?Ya4vQKQ3V}>?rvB(tI zYkioVlXBhTR!@`C>Lh8soK=dI5)z%8>nI5<4H_@^#_Q@ouHmHD-PX#)FiZ#x29rc$ z8?E6+zvE$GK~vv6x~*RqU)!O<^Ad*|TqKAY1nB#bkr6l&>#N`1;6@g1v_1&Tc^F$4 zzFr!itR1}Y7BQbDvhF7)E^cSp2qrd;zpSjpx7rr;o-j_zs2(Me5SYBYU(h)y6sa!I zJ)Ezhp+Tj2+*D65gf_Oiy87gsb0osS*%_r-hQ-<^$XaIi%|YbdUZJKhOb`Ew7rMo6Uj4d!~EZRq{?&pQMO@f`XRF+b`HrbA{+=FtL=&6Gu%+$rgdVqZ}LdSRfo8Wsdn{u=CI=8VsSCCP=y0vk-`nZdI{}dAj{>d zkQWiur^MwMlyCIbxMF*`yes%dK0HM$S$ahFoHx-6#EA zR$B!0cG}gO^CDOzGP@>}%fS*UDK4(k@yw{iw{gWN9EQ-RrhL+f>J=d1Ba;$nbLf04!_Jlx8=+5SfU2av+B*_=&T_o-a zhkq7kGMPZaVuwdZw})_S)#(pnBHB;n>N?PKzuIm5VC;_1HpP95SZXTfXE0f!N;fS= z@Nh@<+(dSdZ}ij+TXFadW;tLW-#d85K{+-$8F_U#k10E|#$3WJ<-DUV#q2hu2VSIA zBK)Ks&F?@m_0jk(=mVB1xZO(9D; zmhL(lVcqvz^WPjftJJuBKVGQ*-Px+f{Jacir;SyDm~*-B*VPU^Hm16I;Gnyt9&@Bu z9yv&Fww!-SZt`evO%1s1exvNjjJEQ?5d4%zfYBW>E7VU(W9b)^*{s0;g!c=h;n6d~ zAF>N?=ZXl+Dye%nYj@Z2sr!sU>|h9IMyr;Wn)bj*1S7C%p%NkS)3M|--)K6@Y@sTK zP;&m3 zsjI8&cHIat7nfC0+-4kmoyihwDTFt&s4Nx>|7!4{rz)Es3RPKY*=CD)&6K^84UVFO zk3i=&cwb98nk`txY!BR*-p%*^iu|LMt4_MD28-2PiXhDC?QZqbDDOQkT(`4(@?u1tJKB`lRTiTb$7))N>SYBN1Eo5?RelHnN5ea^HF$ z%Hi7pCe2{AFDjH)(L!E^4iN~evC=#GCmii0Szcd2>kN`F``|k5}{1nVHAviAOj&a58(i<$-|SI!Z`= zQ+C+VB??X)ej3KG@){5g=b6ut|au`L@UHRmv2f-JHuV#Mz7)J36SIHLWZQS@0 zVbxS`_20c$)DrK8sRYrIJu%4F90r72=*yn)ix z0VaN876O!JOj@d~{Rk7R$^VYcVsc9CxcfuT;Kwk_@=S}DUs3%eQdv()Wo1#7rWL%o z;to+R1@g2JhJyayxnSLngbtM3$zV?3Zqsb|5os7EOJwf-w>Q*iFtKzS-Dj(VC_>){ z6Lsf>fZIcU#w(_lWd?(4i}7#l-nF`+5FFeu)o>T>oUqWo8?ob=d8hcOAnN<+_8Jn3 z_z}YZ?SVtLAa0{_rLFbuXfCATODzQT+WBt9R6K<~9a$tPL$c5|{FuoZ>ts1+ta%IV zP@fU^QMnwO@`%4?3?{2Ae%<=!T7>>^N-b)yI~E88?5MH`l2dxXnd#+|YNWjY_HzP? zxo@Z|L~^tW{XTTnu$$;FnA1zG;kle!O+PQ$`#;rMxwk4D*2%@m0dS3mpz}4~yC2DE zzB@i?w4~$Txn~-Oa{}BX6~f^~DZ@eq1qE0vRyWs|$yjV@X_1@G`0sRdv6=Q4_r!a9 zdIsc1FczGu&!FvHT*zcH?)B@*q=Ang|M0P?Epr}H({Rkr%@yE{bwl6N*Pq7)Oq!CbZyoqWTHFqlpykA1jD0$ ztI^urJV68jMMtmAKGqr<8L3NZy{;xRRk{#DY%bt1xl1s+#Zj!e`1AKAPL0v5`UZ&^ zuNGf&v$sfkdOEhGD9ez4^Noh4=G@9e!7neheesFZ-$k^ww7Ox2wqU`|w}OdE7f%si z?>nXh$5k^V4FT@VCy45z(4E@js7~8sAZjkNUhG6sl>_&C>(kfl?51wU2DUwlwb`SZ zD!ulBfz|Oj0Efc2tr;loQ9tkH0Qc(g3jhI@H(3}J^g@=fZt$BTh$~YacI=(GlNdUk zUivEnfgR9{3$FO<64SkC0_m4AVRE4`*zqZZ0sv?~=T#p?ULiQoHVS30Ud9+84nAn1 zi9S#*3Uc%d4pwu9EsCd{Phn_(;%ftB912 z&rJE5*F@2lat~I&v(Fx#eeZAeZT*;d>@HOnNG6J!nwnN_fD;7LhmF+DZAZ@xD9tHI z96Q#pKn+IB(*zbhSo;r2^l2fWEb#+z*|;{N0vn#;a))tAY3bfH;NBmXmtT#*m;RXt z36pu(sQzaJ_KJq1$v6c>dpN8oA2_*R zUvU;f__=V(%s4&iyp)FwCR9oR_$Vp@FzMJEFBTYi;M@JAlae-Cl|eysN2l)b3MNqc zr#g~VKlag|8;N5e3xP7CLGp8d5c~@Z%sY+>Tu6cFBs(}dt{*J%kIy-91lf8#g-+h=kyHx*o?SCiXVJ&JWr>8!IUFQZ&01ldP#C|FSQ2K^2fQN3- z#-BZV=3E26|4Co}~>YJ$eKuH$%%RDk>x;B@vYxdV10ad3&_D@7*QFOm{tl+XwD~ zr^kwY?zViYJna2qPfAEhNu9y~wuHALwEminO`ad1Z-i(2@(jA-w?)Eq@mMEnY+UG^3N^fpRjZ+Yi93Ujtrs?xf?zie2 z8_Nyt2gZNlx9`cnUTBE;DDU~MxUI9(R7w4Xx#$00&4R#0qqfnf?Z}d-&$INcpzGsT zT`G9*=UJB&6}2}-Gd)#hf|Fr}^S(Yl#J<4Wx8K)gM9-cCgx<%u{0!)A8oUO@3rZQj zmS*7t#)zd-%Yj5H-q{*3hfydL`wlAAvpDd;;`Jk5NBsZ+$q z5CAXSuFT3C9e=zgqNT)B+-SXEE!i^hirIEMQEpr~8;$PaRM~HhUJU4a09*87Lo?LD zGBI7+FlGu+M%QoLxFPZXrDH*YUIqFL24kBQ&0{d}6K|}P9{5+@=k<{?hx-J?#l_K9 zb@KA^9%$WMt0_zRT>6>_kZvXJVm@aG0FulS1tc_{BdGP;>Ou!JV-gaL3J$z-s;Jl2 z)y+}hDCdcZ+tnj-vE%TDNz+vW?a^!Auhg820WU0NINu=qPxH$JKDT@lBmFP_7|(xc zGq%@*pvmOF zy3G>3JUye=3Z(BuY!(9c+i7V4iuw8Z0g0^iv0^?L@PMjZaCjvyz|lIk&ECN6wu}1; zeJfIZM4O+Vas({4=Q@eW$xEc#DjD?((#61;gE%h0&zqjZqqPA_z*9E|WPe?qW;71~ zfL#Lwf^FW6%V=X59e4t73IlhHdm%ds5Y1}o)fd)CSI@TNLI>gwtTWV8AVTlf)`AQS zxUD)|)9SgBa&GG#1w1J}ri~&1O?*IQb8~Y$*ZR0BZ>^fc_wDi?WWK)zsBVj0e%J$m z+7$zSNKK8}hG@?#t1dYVfTMs0bESxS!=|UxU5G6yQI}yhK9)H;ne0X6LRx?se4k!2 zUo!Gpg>&tpLx)~F13IC#DPrTo+s;kI%Z2RMrtsT1`vYH&cyYY6y1)l$1DMU|hY3Gm zF>8Fm?z>Mf!FobY41NB*9G@jJ+|uJ1FQ)O%0Jk_a-+-g@$SrN&s@HA!Mnt zynO7nt9f7`eQuz5e5fgmUUcXe9JwkGm6bI{$+;LoEH`r>92(l#*r+Nme>-(SSvlYN z^CFdq<;M#H;1m1)xsy9kncG!2>QXB_X}K@5nV=h3c7AIY~wZ`vs(eh&t!a0hBRr z@C9I&L04w`3uqrQ#jk<|0WRC0Prq;W_nh(WL9PGRuFlDzH!hBc0^80@Zyi;anNka_s~+*m0vG|?Mauu^RHkd2 z!}fu0j=1bzP~x$&u=uU9aykyCay&@n#AB0iK6LthyPKzjOOgQdmNogR{VDAL@St@yq!zUACQ~2){TgWU`69HWo3>Y)RN9S&uz^DAO3N6>@U}{KJ7ob zmi30?l|JLFJjsgPclWrj7gv_W804kUYll59l!8!$r43V4QzL?2WY94wDK*sMpScJU zl6rCtU^{!SJMI!D0DJQPLaP29+4{SFA!Xnlip+z(*D4~QyMz^&sB>Psn&z)R0Iz01 NriPYRDlgx<{~vFUPTc?i diff --git a/src/apps/ipv6/.images/nd_light.png b/src/apps/ipv6/.images/nd_light.png deleted file mode 100644 index c3a7f1ecc9f098a7a88ab9e3960ddaa7bea72531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2623 zcmb_edpJ~E8=p$IUAj1v`lgdmXvZPfP{<%N4AqQsq@k2?tB8aooyHcq4k2V1O_a+_ zlUp;&bf$~L7?R86G9=EBTV;kYF5gz?`@ZKpf1hVP&wkeat+n30-}n8!?{CE(b+nZS zPyhmfkjG-I@d(5+20V{nvmAaFM|D~w5Wp&|wWU*N=a`6yAw(c*zvjJBDB6MvZMM05 zUvxY=Dh4B`&`I1Bb0@=1t~n>9C%D;xm46`Q%-b#~jRHNseT^OS@Hf)Y^wJVY8c0>t z^lX#7w755T&^4P-l~Xn*V}}~o3fK$Oh}^{vey?F9BJX4AnKg(T$mKV7LEL3|yks;& z8A2QamcbALltbXxAn2PA7!|}nw~+2HKXL12EHXceFui&vk5aCssg$Il5IZw7b55_W z*#@u#GIHeC6G7N9T-xDl%ce{JQ_`Eo-|L&_f{GuI0vN`9%$MZ@PYG#Thb%WwA9%Ur*T+*!(G?$6k; zaiib255JR5>wn?Di@q{xGx%-TRr;LW0O-#n;jdZ(W)xms9k#64(I;fAvw~E`W_N@= zGAb`-(V{>yiXXo19H@l!ccp!mFrK&CRR)JcM zz*a@YtKs27rh8NFS~Y0T6~I%-AQA|K$mb^`BNuy~hew$A)aoEl5Aew zR-G(LYy4;FrRb3R_uI+EiwO~Ga)Ep^E zsT>h94>)&+O%A6;tbFb4HO_fhS!sj>N&`=XetP!+SCu|brN=kzU2JQlI87847c+^~ zVq71zZmW@hPs7e64Jg0_iaz;eYRom<{GlyVi8DnB81FVQqf1iIZMGIeun!!EvX6;u zDI5k8F;^$9fn%=e*q3u4q`_jirSJ%+VqW&G&|Sa9tggT0sO0xMl-9-I&aN&8U{EYB zpBK8Xwgthc1K=I`?MB|be9fWrj^HJ8`sC^M1~nb<+SF)f$8mDQ?E@s?we!t2mpwc@ z3_*jcsp+q0%Zd}Eek6`Y7_QIVHn63@!H%Y0DkdLZVtnMgrj*+_u(d9WtzmI}4wK~A zlPe3lZlh7;qD{OA5H1Q{Y4g`6vo;tR8cs^3NCOBmwygAbFbhW6e@rE6BNoKB$cRw0CUXv-VPtydeNZfr-2F%t%=&3-<*I{uLq(5tuc51*5+BnciW@Iwi z#Ere)d{HJAY@fIC_46}Z_}4&RU*CnUO1Ma3JiPt=bF;Jg&$HFCxQU4yB&YgrZQQwG zhbcWWMjWli`uSzw%UdRPSe0iLM%YgUU&MlJd3pJ%Ti9~GDv_JP*4_-aCC1mz&fRVp zng#jEDSGi5?%QsmnkqzpyRzq0cGM)m*MZnfdusrDh7}fYK|$zT0B*Nu;QH-=vhOf$ z-NC0uSd|k6k8n${2cTd2*Y2PTDa%W7giOirTAD4PD$u79h2M~hT^~N=?H8(pZ|e=V z?BUlNQ0-_zMAc-T$2th@_G|X;oZinmua?$Y>J606G418>L(Bac4*0w@pS?$?(tMuj zYhGq7p(tkQU#PZb%hPP0G&uGUAR4Hszyd5i2hVy>PgE8Dt`AWa&W30}P=O7-{rFU` zM-HE34Re+A#?LP`nKxm7W_&~ej^&X0kx~aVz}JHKCo^J@DQI{NrvfX43fM6CQ(^}f z4R=sWm@(fWIWWo=KRqt0hTHzd?x)Rz61ayoHa4Be_>6eeLbz*xsR`@8=#J7s>OVl+%b2y0uvM0?mhH zSh6y4tH_pP!yA&($>^u|colJ~6wIuRKp@~)q^72loVRzjb-!JB;HS#IiR|3}5S7KP zw1fY(FV=V?dTnvxIUDo9-aoU^ckDt0AHe^r)TFfJW?(quadENVNPFp& zl&S0E&GxG8CYhjFMv&(5T%WAJCYTFe9l%eSI6+y`lIl!nqqw-iR zR$^k}A>}+5>Oyg zu>*zT#HYO*@>y?~f;y70_m(1P4aU~?vwp?>l!@7$Z#zLOxpVl)*@u+YP+upLa*T={ zR+aL$qkD9;MCoN#^Ff}SkJKOi_@% diff --git a/src/apps/ipv6/README.md b/src/apps/ipv6/README.md index 3de0003190..2ecdec57f1 100644 --- a/src/apps/ipv6/README.md +++ b/src/apps/ipv6/README.md @@ -20,7 +20,13 @@ port. All packets from the `north` port are discarded as long as ND has not yet succeeded. Packets received from the `south` port are transmitted to the `north` port unaltered. -![nd_light](.images/nd_light.png) + DIAGRAM: nd_light + +----------+ + north | | + ---->* nd_light *<---- + <----* *----> + | | south + +----------+ ### Configuration @@ -61,7 +67,18 @@ on the `encapsulated` output port. Packets transmitted on the `encapsulated` input port will be decapsulated and put on the `decapsulated` output port. -![SimpleKeyedTunnel](.images/SimpleKeyedTunnel.png) + DIAGRAM: SimpleKeyedTunnel + +-------------------+ + encapsulated | | + ---->* SimpleKeyedTunnel *<---- + <----* *----> + | | decapsulated + +-------------------+ + + encapsulated + ------------\ /-------------- + <-----------|---/ /-----------> + \-----/ decapsulated ### Configuration diff --git a/src/apps/ipv6/README.src.md b/src/apps/ipv6/README.src.md deleted file mode 100644 index 2ecdec57f1..0000000000 --- a/src/apps/ipv6/README.src.md +++ /dev/null @@ -1,117 +0,0 @@ -# IPv6 Apps - -## Nd_light (apps.ipv6.nd_light) - -The `nd_light` app implements a small subset of IPv6 neighbor discovery -(RFC4861). It has two duplex ports, `north` and `south`. The `south` -port attaches to a network on which neighbor discovery (ND) must be -performed. The `north` port attaches to an app that processes IPv6 -packets (including full ethernet frames). Packets transmitted to the -`north` port must be wrapped in full Ethernet frames (which may be -empty). - -The `nd_light` app replies to neighbor solicitations for which it is -configured as a target and performs rudimentary address resolution for -its configured *next-hop* address. If address resolution succeeds, the -Ethernet headers of packets from the `north` port will be overwritten -with headers containing the discovered destination address and the -configured source address before they are transmitted over the `south` -port. All packets from the `north` port are discarded as long as ND has -not yet succeeded. Packets received from the `south` port are transmitted -to the `north` port unaltered. - - DIAGRAM: nd_light - +----------+ - north | | - ---->* nd_light *<---- - <----* *----> - | | south - +----------+ - -### Configuration - -The `nd_light` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **local_mac** - -*Required*. Local MAC address as a string or in binary representation. - -— Key **local_ip** - -*Required*. Local IPv6 address as a string or in binary representation. - -— Key **next_hop** - -*Required*. IPv6 address of *next hop* as a string or in binary -representation. - -— Key **delay** - -*Optional*. Neighbor solicitation retransmission delay in -milliseconds. Default is 1,000ms. - -— Key **retrans** - -*Optional*. Number of neighbor solicitation retransmissions. Default is -unlimited retransmissions. - -## SimpleKeyedTunnel (apps.keyed_ipv6_tunnel.tunnel) - -The `SimpleKeyedTunnel` app implements "a simple L2 Ethernet over IPv6 -tunnel encapsulation" as described in -[Keyed IPv6 Tunnel](http://tools.ietf.org/html/draft-mkonstan-keyed-ipv6-tunnel-01). -It has two duplex ports, `encapsulated` and `decapsulated`. Packets -transmitted on the `decapsulated` input port will be encapsulated and put -on the `encapsulated` output port. Packets transmitted on the -`encapsulated` input port will be decapsulated and put on the -`decapsulated` output port. - - DIAGRAM: SimpleKeyedTunnel - +-------------------+ - encapsulated | | - ---->* SimpleKeyedTunnel *<---- - <----* *----> - | | decapsulated - +-------------------+ - - encapsulated - ------------\ /-------------- - <-----------|---/ /-----------> - \-----/ decapsulated - - -### Configuration - -The `SimpleKeyedTunnel` app accepts a table as its configuration -argument. The following keys are defined: - -— Key **local_address** - -*Required*. Local IPv6 address as a string. - -— Key **remote_address** - -*Required*. Remote IPv6 address as a string. - -— Key **local_cookie** - -*Required*. Local cookie, 8 bytes encoded in a hexadecimal string. - -— Key **remote_cookie** - -*Required*. Remote cookie, 8 bytes encoded in a hexadecimal string. - -— Key **local_session** - -*Optional*. Unsigned integer, 32 bit. If set, the `session_id` field of -the L2TPv3 header will be overwritten with this value. - -— Key **hop_limit** - -*Optional*. Unsigned integer. Sets the *hop limit*. Default is 64. - -— Key **default_gateway_MAC** - -*Optional*. Destination MAC as a string. Not required if overwritten by -an app such as `nd_light`. diff --git a/src/apps/packet_filter/.images/PacketFilter.png b/src/apps/packet_filter/.images/PacketFilter.png deleted file mode 100644 index 14b2ef57e2ec887d7cae92bdd77544149878a4fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2326 zcmbVOdsLFy7N@Dn9#dX(Zay-ZNk^`gl3JQN^40Z$q(a`w%vYFHmKY70QYzSEN>jwr z)D$0cGj+@|jj&NNrZOEhB|$M2tpxPqixdz+KA5jrtF`XjKki+3{y69CwZDD#{(Woz z&iS2d`?2VCYb@8mV6b%@hOErSE&HJe@d-#;`5Nz2K?4AdbBHZW^z)i zRS_u^3J#YOmaVh_`^)u#c7opC-oZf&BrG_MWhp~zYXL9^4$w67$5K*K`hXs=JMIo# z_CT+E+}PO2X8VF-5rEZwa=N*>p+9=^I*zi!KJB0ADJ7mf*_39Wl`K+{l8XEN0SG*V z$_C`;K+~i>2zfqQe`dkmZfKZOOz@zT$2_O5>j96bb^XdczPgLmLChp^TQ)aW|Fz*k zT^&iruM7$bdg*b-M2?am=GF4Vw}1|F*BRvQoZ5PVeNZ%Cs4vE*#XxvLeR+7mP5oJg zOi-O=hGY=e!%>lCGWf50K3)`t0QvG=RX=3yc*S&+53*vZvq@T|?CRC4?_Z>&i%*X} z3A?RKH$xt7-KA2g^7Hkdr4(Sayb||3`ny*}F6x=#P&*m&+o?NvZI-)jhZHK{820dJ zYlcZ;V&b;Yx>VI<$n1RtuB^m~;3u*?9e^wK2#G$S$SJw|voigL4chwKbM*tLO|J17 zWB8}3O|`XC8pT8&0>?-z_#4=fAN+5UbWrt3F*d}(hV ztQGrK4ul!Xyi!P_pXbWqTSVk3#%9l4CiLrnS&KSsY>i4aXUa!ghM$~I(BFWJO$}M} z!<;0CrtyWDVejdsobE%J)KN>b7?&P9euQ}Yy-5Mw zFUNW_;%bApxA%+uZJ}qr+hAe=&{8qL6p*YuagpQGn%6}hvtm9bjcom1viKgIZMiFP zvTygfAdWuIDVv5zISSEURK~kE4TLTSu!%*w0AW8U z>JKM&aW@JK0gu~ijwQQ~u3Z284LTxS7t*jQ$I3ldXZ!Xkwab`j|Ma~n@6>h{E0$N~ z*?OK#Ac!R$d4!Hi&daH@XNc2q<{ar=ESeM-msu*7N(9xorpM#f4u<+l)D%+pFJHsR zFFe2cFDjw3xv>v3YT1DWT;%{sYnau9K5_=TBOFr|!Y7l1u;7jpoTSD zi27hZ_OY)>u;p|VJ1(T0I}!HiL~y+I?(e^HjCC$LIxe+#z*fbuDk>^A2!Mp~R~(9b zTyENMB0fG4bvZM`N1amYQ|Jf=6l}+E3ruT@Jt?Hws9d~4I52=7Bd}UpsKbq?S{S;q zmst{y*PP|`r~V=i1vzW}z=%wYr|ES~H8u8rE>zJ`D}bh3oRIN=1MktumxX)9pL=e8 zb`J4~25Qf3?X(2}X5w-(s8#9uhxq*Y;aav3>VyKy^#vzNn0a^-7x`2pU zUX%z5feltJwg-tNWz~4Orsa2bY6XTA0b)~5=?^!(G)S*K@) z*ySjy^!C>q@5>F&% zU3#?tWK3Vobj%8Z6=7%4$vfqGDyU_%SWx4=hD>4^>YANSaZX82mz)?*#Z^1`I72gs zBR=4C*JOfT6gd7(zMY>#o1@>3HYY#9O+T#+kHg`VTY5IySPjNE=It}B*hnz5F&CRx zoZM#vN&EjJ@5}wUh|l+EmtCj9?!aL(qkl7_U-OOkWJ4chMn4XLX1I)^D*qB)74+VL NVSKSZb$^e(^cxmr^PT_z diff --git a/src/apps/packet_filter/.images/PcapFilter.png b/src/apps/packet_filter/.images/PcapFilter.png deleted file mode 100644 index 228f4a1875cb078747f1b489c8d924aee78dc125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2242 zcmZ`*dsvcL9>$t+v#rcBoy@d!EW1fc-cqC~jkJr|Ht8<#fvC-+TUB}})je!78xEc9vbprGBXvf>3jC#YK~Hmgx$+J70KU)QM2C>x7yj+ znd`&X=9dAwH~F^EQ|!p~VtWLM_>~fV10~~9U`U>9a4OKk78B7#n0>*7YMTce)8q^& zIso(R3T67XA3mg@M_hw$^Q?;(Iq->=DWcT&1+_|E6n4uyd8Fb%PUp9hr6POqyfLeS zQ`Ma}cRW1xQ;82QrU{GYBn=O8l6yI2zG-oap+;O{6Wl*zej0KBwb*`f9TV7{@Up5B zNuO^N_5FmZ91ydkrY0vZet7pvSPUC~dbj;dqD_{oq0F4qLZK!sN@lx}!`e z`k2G!q!L(sH!o95GU$p)((3AJ-7-O<2(930^;ItQ4Grulu2=POf11l-MpZc`Rpf{u zO@pBys85(Q*1QR(@2~&4p}~v9_2^gt;<{H4Ke_Ob%}!E6ahq2et3Hr9~aPY1n{60)Xcj8Pc`;oy7ykFIun1=xv-$zqV3wo z{2SJA$!y{EkxT?h=VOyrrS2%&id&o=Z`GcqG4gXD5#78qW)csYGuv>dCoNbi(!PBzOfN#T(!o6y^^3YvEKA(7Q zsfsy1)4zlSA#cQg5V^FyVtBBH_gwo5j%bEjg{q81ZlIVdz5 zkv1WW$WbFHwxf~@Uf})!ulK3;c$q-5IP7|(LML2*N4m!b$G_RJh5@|mT6n9dh;c48 z2A_;P7Qk!QzJGI|s_r+$e)~-lE6wA{(U!}Z0RX5T%l9ilMLY{57!8?NEVglm*J~0& z#(Cv%Utb^KSJRK;W89dBSH)Iet0fv$B7}AU2qjxigD+w=^*qOttk-xZ;7e)Q+1V%L z8GpA7E&RG1LDbA8VA97s%>w+lh46~v`{gj&8kyFh*G`5}(xFjL&THpqWJSQUVinS{ z%o=Cn7z5yO*yyJ`NqNSP5w%XM==Q#Am>}moR4?f^8}9f_zkPeZl_+9)11*>Tbaf#& z;y1B)Yq>ly@XqjLdBsgvNeA66UQ~Ab%H!td%mu}8$5BvydFa9Z{%@F-=zN=9+l5Kg zXdL-`G4&kCB11`zrK12=iXa=N#5Lo)N!*EviCb%2GjaKcMWBPMt$w=3SsGYe|A_;Go#JsVN(r>Tc4v${Awfd za%?r*)kc~^y0FEW0i-To_BC`DS+RT>{~~VCjt$l)^n#9&O-cn*NRE5jPK?^YVl7$C z%ho!8R5A*Yabm%{= zv^;{`klnL7KA@XS-A@goQWA2Bu*Z>Zw#}4{=qt{wu5@?1F=3mU9!9C9Sh?>i_)KsmJz;(!4qsDEMyz2@X0I$lf2F^>4=z!N~vs diff --git a/src/apps/packet_filter/README.md b/src/apps/packet_filter/README.md index c4c0ea4467..084b646b87 100644 --- a/src/apps/packet_filter/README.md +++ b/src/apps/packet_filter/README.md @@ -10,7 +10,12 @@ connection*. For a connection to be sanctioned it must be tracked in a Multiple `PcapFilter` apps—e.g. for inbound and outbound traffic—can refer to the same connection by sharing a state table identifer. -![PcapFilter](.images/PcapFilter.png) + DIAGRAM: PcapFilter + +------------+ + | | + input ---->* PcapFilter *----> output + | | + +------------+ ## Configuration diff --git a/src/apps/packet_filter/README.src.md b/src/apps/packet_filter/README.src.md deleted file mode 100644 index 084b646b87..0000000000 --- a/src/apps/packet_filter/README.src.md +++ /dev/null @@ -1,35 +0,0 @@ -# PcapFilter App (apps.packet_filter.pcap_filter) - -The `PcapFilter` app receives packets on the `input` port and transmits -conforming packets to the `output` port. In order to conform, a packet -must match the *[pcap-filter](http://www.tcpdump.org/manpages/pcap-filter.7.html) -expression* of the `PcapFilter` instance and/or belong to a *sanctioned -connection*. For a connection to be sanctioned it must be tracked in a -*state table* by a `PcapFilter` app using the same state table. All -`PcapFilter` apps share a global namespace of *state table identifiers*. -Multiple `PcapFilter` apps—e.g. for inbound and outbound traffic—can -refer to the same connection by sharing a state table identifer. - - DIAGRAM: PcapFilter - +------------+ - | | - input ---->* PcapFilter *----> output - | | - +------------+ - -## Configuration - -The `PcapFilter` app accepts a table as its configuration argument. The -following keys are available: - -— Key **filter** - -*Required*. A string containing a [pcap-filter](http://www.tcpdump.org/manpages/pcap-filter.7.html) -expression. - -— Key **state_table** - -*Optional*. A string naming a state table. If set, packets passing any -*rule* will be tracked in the specified state table and any packet that -belongs to a tracked connection in the specified state table will be let -pass. diff --git a/src/apps/pcap/.images/PcapReader.png b/src/apps/pcap/.images/PcapReader.png deleted file mode 100644 index cfcdeb81a9088db13a21e1b09b46413144677b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3014 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 output input ---->* PcapWriter | + | | | | + +------------+ +------------+ ## Configuration diff --git a/src/apps/pcap/README.src.md b/src/apps/pcap/README.src.md deleted file mode 100644 index 99728bbab1..0000000000 --- a/src/apps/pcap/README.src.md +++ /dev/null @@ -1,20 +0,0 @@ -# PcapReader and PcapWriter Apps (apps.pcap.pcap) - -The `PcapReader` and `PcapWriter` apps can be used to inject and log raw -packet data into and out of the app network using the -[Libpcap File Format](http://wiki.wireshark.org/Development/LibpcapFileFormat/). -`PcapReader`reads raw packets from a PCAP file and transmits them on its -`output` port while `PcapWriter` writes packets received on its `input` -port to a PCAP file. - - DIAGRAM: PcapReader and PcapWriter - +------------+ +------------+ - | | | | - | PcapReader *---> output input ---->* PcapWriter | - | | | | - +------------+ +------------+ - -## Configuration - -Both `PcapReader` and `PcapWriter` expect a filename string as their -configuration arguments to read from and write to respectively. diff --git a/src/apps/rate_limiter/.images/RateLimiter.png b/src/apps/rate_limiter/.images/RateLimiter.png deleted file mode 100644 index 57cfffce14a2b1513a1685bf9444593751eace08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2221 zcmbVOc~DbH9*!fk%<2l`a4Q-S6p&j*JbA)^+#qIvgeyWEf`miBAs{3f84sf25OzRC z6OjZ&1VrvLiwGgep$Ye?AjHTG;Yh;E+h^78Ut2R@YPVzC zu5AbeVuyph%>@Kviwus*-+cqOj_sfJA`stQb+EDeDRyXX)XBbwfc)3elc$N{);9{1 z_8s=VdcbV5@)_JqCr_TNt*xE-cHfr>Pi@d1>T!e0@ZDqeaVtW8{xixf*crk^3K67MY2a+#?I^;AZuoWO(Fj^jA7vcOReO(NQCi2VBPQ;Q_^SA@?1jr^;@zLLRHA zs7NVOb~!Gn>rqXDcv&KmFaS!*+D=|A7>o?NFHI5TI35CXAO2!n?tM30>_loxHwkZFE4tJ`x zwY9yy9a9$6`QQkCrmrYsys;A!-rTO{`2xKYNUmb3nfPl41%RslVmhU3%Xj~apceyA-zRDRTFZm@ItqDTZAVpO|+z~?^&UO8%vWP zntt1^YN)=b!_=e5<(A!5HM+yUuOoy;Ul^Qsa(X-6nJw7-L2cs7>B5ShOp1OUPz&F^ zL@LE~wS1JU&a6;sNzyg6%3x>=CuL7$>||@Qb!+1Q5j?Tv4Wn~L$iVZR+_uge{Cqb% zN1h`EkH>2oV_xY%$Lvz~hJ}TJf-IPR3L7@TSK1fG*#Jo*IzAU$9(!+qO`(iD$;k=m z5SA1aP&w4-HlUs)jqy!MP?KGE)6!M##-ARhTxA0n<#1gKBQ?>>Ov>U5gLjWl5tqFP zzDdp1Q62x;G$dXTa07Y(1sq91%&-3bc4>ASc(gJIWeEn%kJOZ!(RPOpyws{}5bINu z41KFje-{ynL|w*ee}BIsC2K%g5jF7q`Sa@O(K;eG0E@+HwhrGk%Lgt;)-QfS-V(Bv z=`w3q!yh*7fG-+Ra)NFKFvw#7Guz64ew%sKi%?($U2uk;k#{W|h|Zb}`yfXnmH#q? zRk^#^@!$ye!RE#i?us!=e9LWr*6R`JuR}va%gf8?pqk--D2=31-Zl|6ew3h2XbPyT zDWdlAzfT4ET~E)qXz4xakjWNhg-f7$83Cqd&3Jvwl&%~7lh-6nj`veP#egMPw(GHQ z@i1@TQj0l!L%SEnGSi#MR#ZY@hNUcGgPAQ`dW81=Tj~et`huE~_tC)^P+aCJVL=N_ zc0&WHjhIl1z1u94$v&9|eNlFTXc|XSG*6^Mq&hgk?z7vY<4beHRZQtpXisl1YZU|a zmtb*QI5>p?eSreQl5{dKps=t|zMkxyE=m==;Vr|2+uTW;FY&1gA8#aO=z_oDN1s_P zIz(1v4lQTNt^=c$VZ&)`!C-YHPLqB*?yxcb@PkX!Q-F79-o(q?++1}&*4=$+@ndsS z6&2mn*LRR%Woz?PDrO(ige(%)W(Sq}-w>Rm&=`!yZG1O9`R%>@-a;?MYNur#Voc0* zah&M0duXR;v9Csib~;wew+jD zrxZ1hn@)`P<;!&ar~}Fza}N&>?njs(#JQp0Pjk6dTJj^ToE)un9Rd49Qat?LO^RtM zXcS7xN<$Vs*TV-Yl?(ranIqEK`T|)UZ^4E%BA`wFQvyv@;5}uW?kY^=l^#8!2l`>(^zaiQRJ2Yw(LI~N- WakKCJYvFGQ!ok+nrr7#o;=cj4*sml2 diff --git a/src/apps/rate_limiter/README.md b/src/apps/rate_limiter/README.md index 03b8f506a5..4b990bbc33 100644 --- a/src/apps/rate_limiter/README.md +++ b/src/apps/rate_limiter/README.md @@ -5,7 +5,12 @@ The `RateLimiter` app implements a single bucket dropping non-conforming packets. It receives packets on the `input` port and transmits conforming packets to the `output` port. -![RateLimiter](.images/RateLimiter.png) + DIAGRAM: RateLimiter + +--------------+ + | | + input ---->* RateLimiter *----> output + | | + +--------------+ — Method **RateLimiter:snapshot** diff --git a/src/apps/rate_limiter/README.src.md b/src/apps/rate_limiter/README.src.md deleted file mode 100644 index 4b990bbc33..0000000000 --- a/src/apps/rate_limiter/README.src.md +++ /dev/null @@ -1,48 +0,0 @@ -# RateLimiter App (apps.rate_limiter.rate_limiter) - -The `RateLimiter` app implements a -[Token bucket](http://en.wikipedia.org/wiki/Token_bucket) algorithm with a -single bucket dropping non-conforming packets. It receives packets on -the `input` port and transmits conforming packets to the `output` port. - - DIAGRAM: RateLimiter - +--------------+ - | | - input ---->* RateLimiter *----> output - | | - +--------------+ - -— Method **RateLimiter:snapshot** - -Returns throughput statistics in form of a table with the following -fields: - -* `rx` - Number of packets received -* `tx` - Number of packets transmitted -* `time` - Current time in nanoseconds - - -## Configuration - -The `RateLimiter` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **rate** - -*Required*. Rate in bytes per second to which throughput should be -limited. - -— Key **bucket_capacity** - -*Required*. Bucket capacity in bytes. Should be equal or greater than -*rate*. Otherwise the effective rate may be limted. - -— Key **initial_capacity** - -*Optional*. Initial bucket capacity in bytes. Defaults to -*bucket_capacity*. - -## Performance - -The `RateLimiter` app is able to process more than 20 Mpps per CPU -core. Refer to its selftest for details. diff --git a/src/apps/socket/.images/RawSocket.png b/src/apps/socket/.images/RawSocket.png deleted file mode 100644 index 7cf1667b7d2704b0f4d1fe9fb17a5084f2019b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2481 zcmcImc|6o>7at{Rs3b$-CMjNHD@(Rawz4D!GsDo>mtiC&OtxIzQ7J?-%D#nR7>#8n zG`dYU%UCAMvYF2H_J+&A%bYm>h= z#Heg2Fg6{=_w~(0U0qLn!HF!K{xBW?qAmf(iEMvd1Ogdz4q1XgNnjDs8R+JI(9sTa z0tiHw0)ZeqK*fLrvHKq(Tp0v{ih_QL@Q>|7J8yzj6`-Qtlm)f>XHp|IW$$%NjE;`p zwJxo!yxn{oECQJ-1-}}P(3cm^&Jv{pt)`AZMG=qhK_v;6moHz=w6#8s2=5%RA|!z$ zoe962A3Y?=PGRpQ9nxKeD;KjaA$(n3ABK@f;G}Dsvi@@=mga~maas=I6ei5P)k3_l%i3mV%pQd7 z3k{cyc;LLL^u2`TTy9xbQ8C5%ar=Cb*TQyD_C!ZUk#Xb{71K%#mn<_)-2CqB=}A$U z`F>E5S)>Y_Vykd9?r8p4!A&hc;u!*&%~|Nyly6wu|KxAV9w)z z0uP^}f`x@8$TwPC7=LBA5ypRx77Ggt zyWcUvDKyK2CA4_ytt9IjMUh&YGgWNTu>rI1Y2c~80#gjj=nDT#+S%CU&K8p^zP=?* zRwWNk_ZFDGYq@dbhJf8rMYTZk*(8l0YXo^gECY69$@=WXzq=lObC#8p^L~z}&65~( zx~z;0+0)G}Smk$fpKk)LNin~iWAX))zPxiXt>L-eWuE?TgKAI*14FSWQH7oXQZm>z z@y}e@@rd_(6E{|RVf_cy9LW^7rbpVC^{tInO_vf{P;V~d%2-Q0e8%%|PesXTUvkG_v`C+2_!7@< ze667W3~bic_r)@KLFgMg48LG*@(`&6izkQ2#l<0!$N>_gvGKh+5zkXi>l_6SwZ_a} zH^DT}3tag~u4ZnCSWV1KV&|Z<){5*cm z<;4K^t*tDi(@XVY?h~T5DcP$vajPY!KeXAgz{EfglDM|?8XUl^;GqX-D`^UbLs~jI zZW|w8-ilT<7~&T5crRCm%AvD!pH5Vzrh@I*^lTy#3$H5b7U3epv6#SU0lzs?jZ2!* z%yzV|4XQX0D?wGpJah9ODB`z!gC4mqC;A+giv+jm_%O_f0yJsVbfq~rZom2@qZ z8T&1?z48IBeG{oan(>=yklO%bL2<}rJ}yGtYVK)meb@T8newx18dc<3p%5tyS@RDG zsgn25V}GeR_EuH+v9FXaZ3aQ3G$mqM;c=>%r!6jdO~`7>j2U8pG(1eA#TtI_kzPNb zi}I~D+K@6dOsRKI!Ic+V7F932DY06Ch*F9hW@vYYjq*ViOX!2oiF$(Il@X zb?)KXOT8S!EeKx{TZ+!!q^lK9_Z7Ih)uHwzt}m;5BHR&(>+^hO+XfbmLZLi*sguzCvGa4m z3%$}OV&t2zO{Vgq#hEmk^LD-Bo7RS*iBKowMhc~y+uvtz>Gkk%;9d&x#6=+-gApE4 z@??f(Tzp&WInCr?GcHc`0{d@ZbU+tV;8Zz`-wESQ+lKZ-JmJ%!26J$CeWRsy3<%2NvwbA=;&x`_jPvzS+F*;?#lQ2|WGn9ksxuhX2oCq(sODQroH>6P`irXKAFzH;4a26GgujG_cYiF2qrAiLL_sDb%Y3Ak-B<9FK&+FQ+;dBv=L zD>NEyV`H<9+vzl!4i+~sgeyaPYGtII7BjAk01cWf1=;am5JlVp*zV^M;ABWCKvX~3 zs2D)96hLK`h}}OCAU^;Bwf{rC#2dmY`srf9fab2LxbL=QiTTktLqkI#m0Nz4-5PzV zbicm8tOy@#` zQ)`da7-{fQjSudJB)_mdE^Y792qV>!qj9$~EojI;Ai?K6PX&J}v0RWdGc)tZVY@b3 y`_tUj{@3zX4j)O*z+jV* RawSocket *----> tx + | | + +-----------+ ## Configuration diff --git a/src/apps/socket/README.src.md b/src/apps/socket/README.src.md deleted file mode 100644 index 6e31ba9c9b..0000000000 --- a/src/apps/socket/README.src.md +++ /dev/null @@ -1,18 +0,0 @@ -# RawSocket App (apps.socket.raw) - -The `RawSocket` app is a bridge between Linux network interfaces (`eth0`, -`lo`, etc.) and a Snabb app network. Packets taken from the `rx` port are -transmitted over the selected interface. Packets received on the -interface are put on the `tx` port. - - DIAGRAM: RawSocket - +-----------+ - | | - rx ---->* RawSocket *----> tx - | | - +-----------+ - -## Configuration - -The `RawSocket` app accepts a string as its configuration argument. The -string denotes the interface to bridge to. diff --git a/src/apps/solarflare/.images/Solarflare.png b/src/apps/solarflare/.images/Solarflare.png deleted file mode 100644 index fc4ca97f11afa89b19b2bf1724307c3548a072e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2187 zcma)82~bn#77n-pDo83)N?8RAJWxsYHG1^TxS#FUH$i=2J>~KAgR*L} z>Q<2~724gq$0V&*+*i~Q>g6>4^R(~zI#SyA)Cn5&V~OXa7!o=miP6Id9lEIgQ(f_! zP4(_uLQ%BJSD!zB`SQ6@2Q(rf<8N@Ih zrjv&t4d>+K6xjy`2j45QgIGYOj|7+~J89)`xm-HY`zb>sS2g#a$+yD8!$U$&XW2f? z8}-oBm(-NdEFs*tsd(gRUpLa}fg>_+ZRj}=CvJkBDyf_VUjS(AV^G1 z%%MYv;5IhYsu9+g`Z><=K!6d)fY<}T>>!ew0DCX?PE*ZI1Ot)%7uX*_3!uWi!}sDZ zlzJozg)b}wm@Aa$p92XkyXwTadxm598Sy4v1aSE6a9EIKb4bNww9Kb(;Z72 zGqa0}ejVtDfB<5I^5RShlyEwj_p_0m!Y(O0v7r`r18ADD)kWD*%vx9oEv;{CTwPzB zY{S`VkbPUrLq#Y;Et$+#Si@jUW=f<2ru9>t!E`-IV#rVR)4gf(`WNQsST(pWQS46C zvwU3{Ws{|V9uAv5hjVmtqAeu#Jq*CBO%d87-xMn(wY9b7oN_v-k-HfrO(>xe3@U2y z@_F?%mCNaWV?iaMEMRyg{WM`=($*(iE z_10?yX03C+-w=gF3QD0-dPR);nasS>*7Ne?gX6xJXkpxBqw;Cb#=!oplW>L&3;lDZ zidpS)gS2<75y`58`Q(Yss(-wext|~2FOQlTUrmkOyj5zVN?;g%ch5M%=+mJHE68`! z^_A8p$}Q5Ox0}QF`9QZ39x4&E&Q1}B;-@A>d~~%hLq_F-XN+B)lddDOcAykWvKC-o zE_&2l4KHF#$WZOHGRw67hXqF!ef}ht!I3i z83mWKt2u*%SDN$lS7!!r1EG_hm!t4z*w6)_Ht)0kye@k-iOOs=b8%RXo;4L1{Sw9O zX+cdE(?+!fEW zYKXSOIxxmUv(z)^8gr((7g3{>qcSqcgsLWjzK4egj@yRrmo6d)H&#?C`NqW1$|6@a zlechY*iFmXS0zGtAU0LL)kf`3Z4oy>d$TD+BEa18HjkmOiu{B(YT}FHd4}f&b)2V+ zIhC0_qB!kDbB>4EHLJ)l5i4Av|7~y6L=hNVs$}iv+ zc`vCqh9^2=5`LQ;T01FBNtOu3g<=-=DlsyPr;EZEpcZ}G!k?m_`9$H0iy1g0Xw<^UIPj?i zl7a>7y0&o^i#QhCxAlvlW3Qr=l$56F%PpbfH6E035A1wdneyw20{1z1uAx+x?KKYh zGI~xNO!w6favwb|cqaF_o^lfAbse()W-LeuWy`J(#d*e=@~3(d8bxUaSij;BByu>< z+s!Sn)!)s3I! zvNbQRdAVH~C^OZuy}kS6Z8iN<1D^(k*4w+Xro;=4hy{KJcdJJ zLoAg_jTOCZU23u*Nf6VDEFqGwUyjBNX}{CgKV|cs%KneK{tXcZB=uuC-jnkG!ovBg*J{d2?e+JrNq`(M zT}6uwr9L~HE-{?#tnR6G>QqEsfvpA=(Nv*eq0KMitWquwdS16G%ufXOWIw$|O=511 zd}G7GT>XGsSy@TdYf58+9f&U6_jdoV((I2r@BeqvcNYDjTRWczo-ywJo)0BDkgsBE Vt))|S1o+7S*;zYUkzrTje+4O~^&* Solarflare *----> tx + | | + +------------+ The `Solarflare` app requires [OpenOnload](http://www.openonload.org/) version *201502* to be installed and the `sfc` module to be loaded. diff --git a/src/apps/solarflare/README.src.md b/src/apps/solarflare/README.src.md deleted file mode 100644 index 15cb695591..0000000000 --- a/src/apps/solarflare/README.src.md +++ /dev/null @@ -1,40 +0,0 @@ -# Solarflare Ethernet Controller Apps - -## Solarflare (apps.solarflare.solarflare) - -The `Solarflare` app drives one port of a Solarflare SFN7 Ethernet -controller. Multiple instances of the Solarflare app can be instantiated -on the same PCI device. Packets received from the network will be -dispatched between apps based on destination MAC address and VLAN. -Packets taken from the `rx` port are transmitted onto the network. -Packets received from the network are put on the `tx` port. - - DIAGRAM: Solarflare - +------------+ - | | - rx ---->* Solarflare *----> tx - | | - +------------+ - -The `Solarflare` app requires [OpenOnload](http://www.openonload.org/) -version *201502* to be installed and the `sfc` module to be loaded. - -### Configuration - -The `Solarflare` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **pciaddr** - -*Required*. The PCI address of the NIC as a string. - -— Key **macaddr** - -*Optional*. The MAC address to use as a string. The default is a -wild-card (e.g. accept all packets). - -— Key **vlan** - -*Optional*. A twelve bit integer (0-4095). If set, incoming packets from -other VLANs are dropped and outgoing packets are tagged with a VLAN -header. diff --git a/src/apps/vhost/.images/VhostUser.png b/src/apps/vhost/.images/VhostUser.png deleted file mode 100644 index 1c3e178c95218357db92d23495d3404369061903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2265 zcmbtWXH-+!7QQeR1Sx`mfCOZuNpxW-D#V~fItpR}0YOB8P!hufLXjdRQHo+ilp>Li zBw&yUPD0ZtBGL>Rz<@!BN(sma0z)GDE~C!#y;*DK$NO{F+28s0UT5!f_qR{F>mfT? zX?1A;0AwBP54Zt<#3gW@C?yGg$#0&$0syI74hQz5VtCUx589)AHnour9ebVA(%kVn zgY%5Ev@``BSh3B<4SE|mJ9x}cUy`4z^xI-+$w93Y^<=WFqN1s;a)6fe`m9yFfo!t? z!VE>O;C-B3o25zCOzqOL%JsOOrb0E!o}L-RSSQ0VQ3B{xbd-_+w4p#!$~vJI0O;?> z07-NJP*4Fu(rQ3T1_1md0JilHFaUrXDKNT zSxMLUi1C1eigPMGasSBS0;Ti=u-wfW8ct5;p0f$5J?VjJU z`Nc)~_3Iy<*ty4vsB%)?Pl6rpff)(gt(gAAv#Ji|zjHxBMH?DT=5jb&u(!K=hm0@V z8-K_8`uezBZhwD;j#HiWV+dQ4M5Y6NTcGv?B*`slP?UHUnKvuHh!AH zV1!sDh)mhxo|p%1YrvzLSQxZUa;X%nGl-FZ>pOhBS`wFsm=U{h17S1#rq|3}yLVR> zj&5C`Kcj;1_vxyc>=$&RyF9v-Qefty~9Cv=N7VQ6{o8k z8@-F%@6Vr#i;HV|<&`31grw+fmJ?p@wd8mvWcADqB+M3C& z`Yw?jB(n z0fWITEUGj$t2hPR01H!T@$B2oD{vq3OLvT#Xli2OFuqbjR#x^l3LgF@tp*ny{2{7% z@s97-LEckUtZY$Uo_aLt8p1rBN-yXl7pwG9J?_L$gEvE^(Y){aw+s945a(Vrdllp< zo;EZxI+8Of+2v|sY1wqUtkmn5pu@kRvQMCb4BE>yG()HfjF_v>8^`OgJ)K1bWk{bu zxm^VQ)Ltrhx^CFHqG5RKtiO5%Nllc^jLfb6Y|7=1WGEXo-h2Xkd1#IP`8hCUAElgV z+#9%Vq{&LzlnPm~bLEGE9m}St2k%8Bu3IWDy&vRSXc^tzn4`CQf_W2d{+`F^$U%+u zQ2IZ=f7Os0Y7^yTMODkarw%g;U=g*f663?d!o0T8)`?9CkIxZ9yJh^Yw!YjyHSk1V zv)o8k!Cit(eAlTqhpx>vVbzbH;tV~ip@)3=AZX)5d%Ii(P%5r5YC4aFF7oftong5Y zvNKvw5Q#*V&)_0~l5>MT_K`nzEvnrRNpZU&hyG~|bX@WZWDLBUDp6Q9dp7GreD8w? z-up0LMkbzDs0%xCwr92pcp+Ab>A&jH_C&lZ*!?fISToAS<>JQ|&z}AEL11^%sH=5S zD6D&GJIA;s@*wbbVCeg{KOhHe#_9((8x}31d4q#Z{9HP=F6o5+4L+i&JfG$=rTryxXyl%YtWSiW~ z!^)5rqA({G2R1|gw)+buIyT#pNMtkCo!C`kchNaBDsr6bdKRIDh&Nc8RE=GlE%Uq* zipQI^o-FLK9S=M%@b>g%M$hoYi!+uwwD!l3vv2(F)tJueRty>-AryUc4~6%CF1R%*+hTL<*5o>+nI!h+3OWSIEhHyUBcn za$Vw|Wf~N5kn}%d{T=)}$^I(;|Izzz!u}OLlT1GzxT5dn$p>^cT(A|3#Scfq?Ck6` zHm+%P-{4-LjBhPSK1bJ9z0&RvhxFsYf6kzUb<5bGK7&3=3o?4Q9!^@#G&VOcS964_ z9N97Pd3Y^(e=VA%jI}ws6Z?7#^a&ZYtxTi&u6=Z3m;0K(cp?xrpE!Gc)3fcjo-O+C zu>a>YUYX6`NBWjONBBwwlRWjo0pIrRQBa* VhostUser *----> tx + | | + +-----------+ ## Configuration diff --git a/src/apps/vhost/README.src.md b/src/apps/vhost/README.src.md deleted file mode 100644 index 85f822b30f..0000000000 --- a/src/apps/vhost/README.src.md +++ /dev/null @@ -1,36 +0,0 @@ -# VhostUser App (apps.vhost.vhost_user) - -The `VhostUser` app implements portions of the -[Virtio](http://ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf) protocol -for virtual ethernet I/O interfaces. In particular, `VhostUser` supports -the virtio *vring* data structure for packet I/O in shared memory (DMA) -and the Linux *vhost* API for creating vrings attached to -[tuntap](https://www.kernel.org/doc/Documentation/networking/tuntap.txt) -devices. - -With `VhostUser` SnabbSwitch can be used as a virtual ethernet interface -by *QEMU virtual machines*. When connected via a UNIX socket, packets can -be sent to the virtual machine by transmitting them on the `rx` port and -packets send by the virtual machine will arrive on the `tx` port. - - DIAGRAM: VhostUser - +-----------+ - | | - rx --->* VhostUser *----> tx - | | - +-----------+ - -## Configuration - -The `VhostUser` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **socket_path** - -*Optional*. A string denoting the path to the UNIX socket to connect -on. Unless given all incoming packets will be dropped. - -— Key **is_server** - -*Optional*. Listen and accept an incoming connection on *socket_path* -instead of connecting to it. diff --git a/src/apps/virtio_net/.images/VirtioNet.png b/src/apps/virtio_net/.images/VirtioNet.png deleted file mode 100644 index f1a81696fbe66d5ef049593478b42b5e4029b878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2353 zcmbuBX;4#H7RMt(lkTvpV1WvVpwlCQ$PzUof+9;Ws1OZ=kk~Ad08tRVHp6DJ1fxyf5XRKU82Zh6MI~N+LIZ%jUSm^C; zv$2YbN_2V1R@iA}C8uiL!h>h!^c+(~#m2p5JYFF6 zi&^gr`{1fr?WL}C7{$jl-F7KdAaQ+@+)HZO*pQAM!~3+ov;^Uz?sWFbHZ5M2#^(b;)iB}@~)e^cS+8>k`VOR=rF;o5)H-;L&I_9$&!D_c2}qtAiQjNF)|3 zU0s-=h)15gV(Y@aMXClW1~Wetvf1pC5=6)9@~o$mlX7q@E&}HYMdjz`6ZmELE;ls# zRaI3IO%@{CURD2BL&Mr&0pi@bbI#7a1x}g&oUgjM66EUYN+vH9UM>Zz14-zjHd6=6 z5rNx$&t^5~Hmp-DAeYVM|8m16_ATi~w)8GT_TW=`er3<-XqV<*6#uxdgOgKfaq)U` zy#pNHn_Ysf6LGP$@>^pK(IaF@qpd=9*ZGYEvBgd!kH61`TEiNyi%+oW-jjERiOSz} ztXV2A?0??A-|=YBM2i#Tl7~lz5{EowNKsz2YVB&rpF9Ds;7p7#~S2>tvsH>piJ5Dz<^*6a@0BRHI1qqBv}lwV8rEV zmbh15gswlry1N%)2TCxo^O0@s?Hu<4$K<%Aq@*WL0>4dmybdnE=haS0gI*g+OGt2W zb0a*#C0Aw(imyMyg}8+rdP8E7qLFCy%xowR!5yl(+M_G93|lQHW*jHCRa56OrLqNC zmN!rZ7t+(yCzS{eRBDy@`D1>6eWZM&dzz0d$$V@$*DGmOLl0#etJVJte~0!b{p`8C z@?z8rYXRwaVDB9wHT83ipebe-=YosNj?gH{k~mhw#Aji;ANUb9;s%#ZZxsp;|_tLJYkhKW$<0(p9JZROiO zt)i^)qV0x-a_~uBvghR47G@OR9b&wvD9f^Vz&&gVmWL%zYR{ea^7j6lO>(Cc0)cd3 zo5knKf$IMSKW5akFf%ao@c<&NdvSKWnNxG6@lM2B&kBh|a#zg&^8;asHux#1lH?5A zD)!9~kU5{Y*nzl+NE7P()IIrwQ%B{)=A|DdTH`xDfCXkncExgZwPc*!`XS7LX|7L4 ziuXt|d+?#CwzL)sg{H!$lIx0!c$B^A$Ab5-nHW@(zQk$4nZAP_wKpqo`1yauDK23e zvgP5odU-s@;XX4Qj>YrExnN1ky9IPQT@Ip-5-Pw21tXQJok6URZaOGw&cid9xp)5N z1-;M3@fC%Ig~jRy7^d(3m2mg3)BT03DQeHVGA(C@db+!_^2tDnzcQZ<2@!U7-H{_T zw1E@X{JO43s%dLm&cm$(WNY+HJ*q>E!`DJFq7@PJK$*V2{?_$FGIh7R-Cu=tP|`9j zZ)K#UP(QxjG9wEQ-e+WV?WMN9*|>==U#5QbZpM(HBNgva+TW3rqZ{DoM4@oW^h5?j zeSUjhVq#*ddB9tn98s=4BQsM>ncc<~4smCa03@21PAUb>9XZe9IhQk*bd0JFqLuFE zayZCcR#?)~anjV|QFOSPn%a0%Oe%~b8gGszCzp<=!6=AkjR^?Y6^Trwqyg~Eh>y>; zQ2&uJee8|XPKoijGZuSoopXw{k==haW2lD4le@Qw)l`BC(bIO+d!?Q*j8XC1sOhj|vm&hAi+bMMj`MxK4d3x!;TwMtmst^K=7I|}v zv`qPt1CdBnnkM2frNw|m;}Yy&b8BZ?^d``KEwnDgY5`rAieN- z<#kW9@8}&F=>*WbZ<+LK${WP*Am8NtA4m^y{tu-8E(E_z!M~OPjR5pvQyu=()W6Av z^s;&CA*CK>Qj#5@Bf43Ih3#Y4-w7Az=H_-miEH$!?stSJvrf%`m}A>xaeH?dGH2E$ zOEEDq91cfW`($uX1x6zmN!r`uqDW&XTVBn>A?SV=9``?%T3d9@N&Jv>5YK z`;uIjpZ{4u=d@>`D*vcox!I)S33~MT&=Xq4+7* VirtioNet *----> tx + | | + +-----------+ ## Configuration diff --git a/src/apps/virtio_net/README.src.md b/src/apps/virtio_net/README.src.md deleted file mode 100644 index 490c216a47..0000000000 --- a/src/apps/virtio_net/README.src.md +++ /dev/null @@ -1,32 +0,0 @@ -# VirtioNet App (apps.virtio_net.virtio_net) - -The `VirtioNet` app implements a subset of the driver part of the -[virtio-net](http://docs.oasis-open.org/virtio/virtio/v1.0/csprd04/virtio-v1.0-csprd04.html) -specification. - -With `VirtioNet` SnabbSwitch can be used as a virtual ethernet interface -by *QEMU virtual machines*. When connected via a UNIX socket, packets can -be sent to the virtual machine by transmitting them on the `rx` port and -packets send by the virtual machine will arrive on the `tx` port. - - DIAGRAM: VirtioNet - +-----------+ - | | - rx --->* VirtioNet *----> tx - | | - +-----------+ - -## Configuration - -The `VirtioNet` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **pciaddr** - -*Required*. The PCI address of the virtio-net device. - -— Key **use_checksum** - -*Optional*. Boolean value to enable the checksum offloading pre-calculations -applied on IPv4/IPv6 TCP and UDP packets. - diff --git a/src/apps/vpn/.images/VPWS.png b/src/apps/vpn/.images/VPWS.png deleted file mode 100644 index 4edceb4a852e0c72827a4cf9b5d216342d959ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4877 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 diff --git a/src/apps/vpn/README.md b/src/apps/vpn/README.md index 828527ece2..139ecfcc25 100644 --- a/src/apps/vpn/README.md +++ b/src/apps/vpn/README.md @@ -10,7 +10,18 @@ are encapsulated and put on the `uplink` output port. Packets transmitted on the `uplink` input port are decapsulated and put on the `customer` output port. -![VPWS](.images/VPWS.png) + DIAGRAM: VPWS + +--------+ + customer | | + ---->* VPWS *<---- + <----* *----> + | | uplink + +--------+ + + customer + -------\ /-------- + <------|---/ /-----> + \-----/ uplink ## Configuration diff --git a/src/apps/vpn/README.src.md b/src/apps/vpn/README.src.md deleted file mode 100644 index 139ecfcc25..0000000000 --- a/src/apps/vpn/README.src.md +++ /dev/null @@ -1,61 +0,0 @@ -# VPWS App (apps.vpn.vpws) - -The `VPWS` app implements a so-called Virtual Private Wire Service -(VPWS). It provides a L2 VPN on top of IP (v4/v6) and GRE. - -This app has two duplex ports, `customer` and `uplink`. The former -transports Ethernet frames while the latter transports Ethernet frames -encapsulated in IP/GRE. Packets transmitted on the `customer` input port -are encapsulated and put on the `uplink` output port. Packets transmitted -on the `uplink` input port are decapsulated and put on the `customer` -output port. - - DIAGRAM: VPWS - +--------+ - customer | | - ---->* VPWS *<---- - <----* *----> - | | uplink - +--------+ - - customer - -------\ /-------- - <------|---/ /-----> - \-----/ uplink - -## Configuration - -The `vpws` app accepts a table as its configuration argument. The -following keys are defined: - -— Key **local_vpn_ip** - -*Required*. Local VPN IPv6 address as a string or in binary -representation. - -— Key **remote_vpn_ip** - -*Required*. Remote VPN IPv6 address as a string or in binary -representation. - -— Key **local_mac** - -*Required*. Local MAC address as a string or in binary representation. - -— Key **remote_mac** - -*Optional*. Remote MAC address as a string or in binary -representation. Default is `02:00:00:00:00:00`. - -If *remote_mac* is not supplied, the `uplink` port needs to be connected -to something that performs address resolution and overwrites the Ethernet -header (e.g. the `nd_light` app). - -— Key **checksum** - -*Optional*. Enables GRE checksumming if set to a true value. - -— Key **label** - -*Optional*. A GRE key (32 bit unsigned integer). Enables GRE keying if -supplied. diff --git a/src/lib/hardware/README.src.md b/src/lib/hardware/README.src.md deleted file mode 100644 index 537b0b7c35..0000000000 --- a/src/lib/hardware/README.src.md +++ /dev/null @@ -1,207 +0,0 @@ -### PCI (lib.hardware.pci) - -The `lib.hardware.pci` module provides functions that abstract common -operations on PCI devices on Linux. In order to drive a PCI device using -[Direct memory access (DMA)](https://en.wikipedia.org/wiki/Direct_memory_access) -one must: - -1. Unbind the PCI device using `pci.unbind_device_from_linux`. -2. Enable PCI bus mastering for device using `pci.set_bus_master` in - order to enable DMA. -3. Memory map PCI device configuration space using `pci.map_pci_memory`. -4. Control the PCI device by manipulating the memory referenced by the - pointer returned by `pci.map_pci_memory`. -5. Disable PCI bus master for device using `pci.set_bus_master`. -6. Unmap PCI device configuration space using `pci.close_pci_resource`. - -The correct ordering of these steps is absolutely critical. - - -— Variable **pci.devices** - -An array of supported hardware devices. Must be populated by calling -`pci.scan_devices`. Each entry is a table as returned by -`pci.device_info`. - -— Function **pci.canonical** *pciaddress* - -Returns the canonical representation of a PCI address. The canonical -representation is preferred internally in Snabb Switch and for -presenting to users. It shortens addresses with leading zeros like -this: `0000:01:00.0` becomes `01:00.0`. - -— Function **pci.qualified** *pciaddress* - -Returns the fully qualified representation of a PCI address. Fully -qualified addresses have the form `0000:01:00.0` and so this function -undoes any abbreviation in the canonical representation. - -— Function **pci.scan_devices** - -Scans for available PCI devices and populates the `pci.devices` table. - -— Function **pci.device_info** *pciaddress* - -Returns a table containing information about the PCI device by -*pciaddress*. The table has the following keys: - -* `pciaddress`—String denoting the PCI address of the - device. E.g. `"0000:83:00.1"`. -* `vendor`—Identification string e.g. `"0x8086"` for Intel. -* `device`—Identification string e.g. `"0x10fb"` for 82599 chip. -* `interface`—Name of Linux interface using this device e.g. `"eth0"`. -* `status`—String denoting the Linux operational status, or `nil` if not - known. -* `driver`—String denoting the Lua module that supports this hardware - e.g. `"apps.intel.intel10g"`. -* `usable`—String denoting if the device was suitable to use when - scanned. One of `"yes"` or `"no"`. - -— Function **pci.which_driver** *vendor*, *model* - -Returns the module name for a suitable device driver (if available) for a -device of *model* from *vendor*. - -— Function **pci.unbind_device_from_linux** *pciaddress* - -Forces Linux to unbind the device identified by *pciaddress* from any -kernel drivers. - -— Function **pci.set_bus_master** *pciaddress*, *enable* - -Enables or disables PCI bus mastering for device identified by -*pciaddress* depending on whether *enable* is a true or a false -value. PCI bus mastering must be enabled in order to perform DMA on the -PCI device. - -— Function **pci.map_pci_memory** *pciaddress*, *n* - -Memory maps configuration space *n* of PCI device identified by -*pciaddress*. Returns a pointer to the memory mapped region and a file -descriptor of the opened sysfs resource file. PCI bus mastering must be -enabled on device identified by *pciaddress* before calling his function. - -— Function **pci.close_pci_resource** *file_descriptor*, *pointer* - -Closes memory mapped *file_descriptor* of sysfs resource file and unmaps -it from *pointer* as returned by `pci.map_pci_memory`. - - -### Register (lib.hardware.register) - -The `lib.hardware.register` module provides an abstraction for hardware -device registers. This abstraction can be used to declaratively specify -and conveniently manipulate structured memory regions via DMA. The -functions `register.define` and `register.define_array` construct -`Register` objects based on a *register description* string. The -resulting `Register` objects can be used to manipulate the defined -registers using the methods `Register:read`, `Register:write`, -`Register:set`, `Register:clr`, `Register:wait` and `Register:reset` -(exact set depends on the *register mode*). - -A register description is a string with one `Register` object definition -per line. A `Register` object definition must be expressed using the -following grammar: - -``` -Register ::= Name Offset Indexing Mode Longname -Name ::= -Indexing ::= "-" - ::= "+" OffsetStep "*" Min ".." Max -Mode ::= "RO" | "RW" | "RC" -Longname ::= -Offset ::= OffsetStep ::= Min ::= Max ::= -``` - -A `Register` object definition is made up of the following properties: - -* *Name*—A string to be used to refer to the `Register` object. Must - be a valid Lua identifier, e.g. `"foo"`, `"foo_bar"`, `"FOO"` etc. -* *Offset*—Integer specifying the offset from the base pointer (as - supplied to `register.define` and `register.define_array`). -* *Indexing*—Optional. Three integers specifying the offset step as well - as minimum and maximum indexes in bytes. -* *Mode*—One of `"RO"`, `"RW"` or `"RC"` standing for *read-only*, - *read-write* and *counter* modes respectively. Counter mode is for - counter registers that clear back to zero when read. -* *Longname*—A string describing the register (used for - self-documentation). - -For instance, the following `Register` object definition defines a -register range "TXDCTL" in read-write mode starting at offset 0x06028 -with 128 registers each of length 0x40. - -``` -TXDCTL 0x06028 +0x40*0..127 RW Transmit Descriptor Control -``` - -The next example defines a singular register "TPT" in counter mode -located at offset 0x01428. - -``` -TPT 0x01428 - RC Total Packets Transmitted -``` - -— Function **register.define** *description*, *table*, *base_pointer*, -*n* - -Creates `Register` objects for *description* relative to -*base_pointer*. The resulting `Register` objects will become a named -entries in *table* using the names defined in *description*. If an entry -in *description* defines an indexing range then *n* specifies the index -of the register within that range. *N* defaults to 0. - -— Function **register.define_array** *description*, *table*, -*base_pointer* - -Creates `Register` objects for *description* relative to -*base_pointer*. The resulting `Register` objects will become a named -entries in *table* using the names defined in *description*. If an entry -in *description* defines an indexing range, an array of `Register` -objects will be created instead of a singular `Register` object. - -— Function **register.dump** *table* - -Prints a pretty-printed register dump of a *table* of registers. - -— Method **Register:read** - -Returns the value of register. For convenience register objects can be -called without arguments instead of calling -`Register:read`. E.g. `reg:read()` is equivalent to `reg()`. - -— Method **Register:write** *value* - -Sets the value of register to *value*. Only available on registers in -read-write mode. For convenience register objects can be called with an -argument instead of calling `Register:write`. E.g. `reg:write(value)` is -equivalent to `reg(value)`. - -If register is in counter mode it is assumed that the register will be -reset to zero upon reading. The read value is added to a *register -accumulator* and the sum of all reads is returned. - -— Method **Register:set** *bitmask* - -Sets bits of register according to *bitmask*. Only available on registers -in read-write mode. - -— Method **Register:clr** *bitmask* - -Clears bits of register according to *bitmask*. Only available on -registers in read-write mode. - -— Method **Register:wait** *bitmask*, *value* - -Blocks until applying *bitmask* to the register equals *value*. If -*value* is not supplied blocks until all bits in the mask are set -instead. Only available on registers in read-write and read-only modes. - -— Method **Register:reset** - -Reset the register accumulator to 0. Only available on registers in -counter mode. - -— Method **Register:print** - -Prints the register state to standard output. diff --git a/src/lib/protocol/.images/Datagram.png b/src/lib/protocol/.images/Datagram.png deleted file mode 100644 index 0106f96574919858f5da14abe6053cfea95ff82e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7074 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 t{^ff!1IQy)8UDj>r%ruc=g#gI6kgXZSCm "54:52:00:01" -``` - -— Method **ethernet:src_eq** *mac* - -— Method **ethernet:dst_eq** *mac* - -Predicate methods to test if *mac* is equal to the source or destination -addresses individually. - -— Method **ethernet:swap** - -Swaps the values of the source and destination fields. - -— Function **ethernet:pton** *string* - -Returns the binary representation of MAC address denoted by *string*. - -— Function **ethernet:ntop** *mac* - -Returns the string representation of *mac* address. - -— Function **ethernet:ipv6_mcast** *ip* - -Returns the MAC address for IPv6 multicast *ip* as defined by RFC2464, -section 7. - - -### IPv4 (lib.protocol.ipv4) - -The `lib.protocol.ipv4` module contains a class for representing -*IPv4 headers*. The `ipv4` protocol class supports four upper -layer protocols: `lib.protocol.tcp`, `lib.protocol.udp`, -`lib.protocol.gre` and `lib.protocol.icmp.header`. - -— Method **ipv4:new** *config* - -Returns a new IPv4 header for *config*. *Config* must a be a table -which may contain the following keys: - -* `dst` - Destination IPv4 address (binary representation). Default is - `0.0.0.0`. -* `src` - Source IPv4 address (binary representation). Default is - `0.0.0.0`. -* `protocol` - The upper layer protocol, can be 6 (TCP), 17 (UDP), 47 - (GRE) or 58 (ICMP). Default is 255. -* `dscp` - "Differentiated Services Code Point" field (6 bit unsigned - integer). Default is 0. -* `ecn` - "Explicit Congestion Notification" field (2 bit unsigned - integer). Default is 0. -* `id` - "Identification" field (16 bit unsigned integer). Default is 0. -* `flags` - "Don't Fragment (DF)" and "More Fragments (MF)" fields (3 bit - unsigned integer). Default is 0. -* `frag_off` - "Fragment Offset" field (13 bit unsigned integer). Default - is 0. -* `ttl` - "Time To Live" field (8 bit unsigned integer). Default is 0. - -— Method **ipv4:dst** *ip* - -— Method **ipv4:src** *ip* - -— Method **ipv4:protocol** *protocol* - -— Method **ipv4:dscp** *dscp* - -— Method **ipv4:ecn** *ecn* - -— Method **ipv4:id** *id* - -— Method **ipv4:flags** *flags* - -— Method **ipv4:frag_off** *frag_off* - -— Method **ipv4:ttl** *ttl* - -Combined accessor and setter methods. These methods set the values of the -instance fields (see `new`) of an IPv4 header. If no argument is given -the current value is returned. - -— Method **ipv4:version** *version* - -Combined accessor and setter method for the "Version" field (4 bit -unsigned integer). Defaults to 4 (set automatically by `new`). -Sets the "Version" field to *version*. If no argument is given the -current value is returned. - -— Method **ipv4:ihl** *ihl* - -Combined accessor and setter method for the "Internet Header Length" -field (4 bit unsigned integer). Set automatically by `new`. Sets the -"Internet Header Length" field to *ihl*. If no argument is given the -current value is returned. - -— Method **ipv4:total_length** *length* - -Combined accessor and setter method for the "Total Length" field (16 bit -unsigned integer). Defaults to header length (set automatically by `new`). -Sets the "Total Length" field to *length*. If no argument is given the -current value is returned. - -— Method **ipv4:checksum** - -Computes and sets the IPv4 header checksum. Its called automatically by -`new` but must be called after the header is changed. - -— Method **ipv4:dst_eq** *ip* - -— Method **ipv4:src_eq** *ip* - -Predicate methods to test if *ip* is equal to the source or destination -addresses individually. - -— Function **ipv4:pton** *string* - -Returns the binary representation of IPv4 address denoted by *string*. - -— Function **ipv4:ntop** *ip* - -Returns the string representation of *ip* address. - - -### IPv6 (lib.protocol.ipv6) - -The `lib.protocol.ipv6` module contains a class for representing -*IPv6 headers*. The `ipv6` protocol class supports four upper -layer protocols: `lib.protocol.tcp`, `lib.protocol.udp`, -`lib.protocol.gre` and `lib.protocol.icmp.header`. - -— Method **ipv6:new** *config* - -Returns a new IPv6 header for *config*. *Config* must a be a table -which may contain the following keys: - -* `dst` - Destination IPv6 address (binary representation). Default is - `0::0`. -* `src` - Source IPv6 address (binary representation). Default is - `0::0`. -* `traffic_class` - "Traffic Class" field (8 bit unsigned - integer). Default is 0. -* `flow_label` - "Flow Label" field (20 bit unsigned - integer). Default is 0. -* `next_header` - "Next Header" field (8 bit unsigned - integer). Default is 0. -* `hop_limit` - "Hop Limit" field (8 bit unsigned - integer). Default is 0. - -— Method **ipv6:dst** *ip* - -— Method **ipv6:src** *ip* - -— Method **ipv6:traffic_class** *traffic_class* - -— Method **ipv6:flow_label** *flow_label* - -— Method **ipv6:next_header** *next_header* - -— Method **ipv6:hop_limit** *hop_limit* - -Combined accessor and setter methods. These methods set the values of the -instance fields (see `new`) of an IPv6 header. If no argument is given -the current value is returned. - -— Method **ipv6:version** *version* - -Combined accessor and setter method for the version field (4 bit unsigned -integer). Defaults to 4 (set automatically by `new`). Sets the "Version" -field to *version*. If no argument is given the current value is returned. - -— Method **ipv6:dscp** *dscp* - -Combined accessor and setter method for the "Differentiated Services Code -Point" field (6 bit unsigned integer). Default is 0. This is a sub-field -of the "Traffic Class" field. Sets the "Differentiated Services Code -Point" field to *dscp*. If no argument is given the current value is -returned. - -— Method **ipv6:ecn** *ecn* - -Combined accessor and setter method for the "Explicit Congestion -Notification" (2 bit unsigned integer). Default is 0. This is a sub-field -of the "Traffic Class" field. Sets the "Explicit Congestion Notification" -field to *ecn*. If no argument is given the current value is returned. - -— Method **ipv6:payload_length** *length* - -Combined accessor and setter method for the "Payload Length" field (16 -bit unsigned integer). Default is 0. Sets the "Payload Length" field to -*length*. If no argument is given the current value is returned. - -— Method **ipv6:dst_eq** *ip* - -— Method **ipv6:src_eq** *ip* - -Predicate methods to test if *ip* is equal to the source or destination -addresses individually. - -— Function **ipv6:pton** *string* - -Returns the binary representation of IPv6 address denoted by *string*. - -— Function **ipv6:ntop** *ip* - -Returns the string representation of *ip* address. - -— Function **ipv6:solicited_node_mcast** *ip* - -Returns the solicited-node multicast address from the given unicast -*ip*. - - -### TCP (lib.protocol.tcp) - -The `lib.protocol.tcp` module contains a class for representing *TCP -headers*. - -— Method **tcp:new** *config* - -Returns a new TCP header for *config*. *Config* must a be a table -which may contain the following keys: - -* `src_port` - "Source Port Number" field (16 bit unsigned - integer). Default is 0. -* `dst_port` - "Destination Port Number" field (16 bit unsigned - integer). Default is 0. -* `seq_num` - "Sequence Number" field (32 bit unsigned integer). Default - is 0. -* `ack_num` - "Acknowledgement Number" field (32 bit unsigned - integer). Default is 0. -* `window_size` - "Window Size" field (16 bit unsigned integer). Default - is 0. -* `offset` - "Data Offset" field (4 bit unsigned integer). Default is 0. -* `ns` - "NS" flag (1 bit). Default is 0. -* `cwr` - "CWR" flag (1 bit). Default is 0. -* `ece` - "ECE" flag (1 bit). Default is 0. -* `urg` - "URG" flag (1 bit). Default is 0. -* `ack` - "ACK" flag (1 bit). Default is 0. -* `psh` - "PSH" flag (1 bit). Default is 0. -* `rst` - "RST" flag (1 bit). Default is 0. -* `syn` - "SYN" flag (1 bit). Default is 0. -* `fin` - "FIN" flag (1 bit). Default is 0. - -— Method **tcp:src_port** *port* - -— Method **tcp:dst_port** *port* - -— Method **tcp:seq_num** *seq_num* - -— Method **tcp:ack_num** *ack_num* - -— Method **tcp:window_size** *window_size* - -— Method **tcp:offset** *offset* - -— Method **tcp:ns** *ns* - -— Method **tcp:cwr** *cwr* - -— Method **tcp:ece** *ece* - -— Method **tcp:urg** *urg* - -— Method **tcp:ack** *ack* - -— Method **tcp:psh** *psh* - -— Method **tcp:rst** *rst* - -— Method **tcp:syn** *syn* - -— Method **tcp:fin** *fin* - -Combined accessor and setter methods. These methods set the values of the -instance fields (see `new`) of a TCP header. If no argument is given the -current value is returned. - -— Method **tcp:flags** *flags* - -Combined accessor and setter method for the TCP header flags (NS, CRW, -ECE, URG, ACK, PSH, RST, SYN and FIN). Sets the header's flags accoring -to *flags* (9 bit unsigned intetger). If no argument is given the current -flags are returned. - -— Method **tcp:checksum** *payload*, *length*, *ip* - -Computes and sets the "Checksum" field for *length* bytes of *payload* -and optionally *ip*. If no argument is given the current value of the -"Checksum" field is returned. - - -### UDP (lib.protocol.udp) - -The `lib.protocol.udp` module contains a class for representing *UDP -headers*. - -— Method **udp:new** *config* - -Returns a new UDP header for *config*. *Config* must a be a table -which may contain the following keys: - -* `src_port` - "Source Port Number" field (16 bit unsigned - integer). Default is 0. -* `dst_port` - "Destination Port Number" field (16 bit unsigned - integer). Default is 0. - -— Method **udp:src_port** *port* - -— Method **udp:dst_port** *port* - -Combined accessor and setter methods for the source and destination port -fields. Sets the source or destination port individually. Returns the -current port if called without arguments. Default is 8 (the UDP header -length). - -— Method **udp:length** *length* - -Combined accessor and setter method for the "Length" field. Sets the -"Length" field* to *length* (a 16 bit unsigned integer). If no argument -is given the current value of the "Length" field is returned. - -— Method **udp:checksum** *payload*, *length*, *ip* - -Computes and sets the "Checksum" field for *length* bytes of *payload* -and optionally *ip*. If no argument is given the current value of the -"Checksum" field is returned. - - -### GRE (lib.protocol.gre) - -The `lib.protocol.gre` module contains a class for representing *GRE -headers*. The `gre` protocol class only supports the checksum and key -extensions and the `lib.protocol.ethernet` upper layer protocol. - -— Method **gre:new** *config* - -Returns a new GRE header for *config*. *Config* must a be a table -which may contain the following keys: - -* `protocol` - Upper layer protocol. May be `0x6558` (Ethernet). Default - is `nil`. -* `checksum` - Set to `true` to enable checksumming. Default is `false`. -* `key` - 32 bit unsigned integer. Enables keying if supplied. Default is - `nil`. - -— Method **gre:checksum** *payload*, *length* - -Combined accessor and setter method for the checksum field. Computes and -sets the checksum field for *length* bytes of *payload*. If no argument -is given the current checksum is returned. Returns `nil` if checksumming -is disabled. - -— Method **gre:checksum_check** *payload*, *length* - -Predicate to verify *length* bytes of *payload* against the header -checkum. Return `nil` if checksumming is disabled. - -— Method **gre:key** *key* - -Combined accessor and setter method for the key field. Sets the key field -to *key*. If no argument is given the current key is returned. Returns -`nil` if keying is disabled. - -— Method **gre:protocol** *protocol* - -Combined accessor and setter method for the upper layer protocol. Sets -the upper layer protocol to *protocol*. If no argument is given the -current upper layer protocol is returned. - - -### ICMP (lib.protocol.icmp.header) - -The `lib.protocol.icmp.header` module contains a class for representing -*ICMP headers*. The `icmp` protocol class currently supports two upper -layer protocols: `lib.protocol.icmp.nd.ns` and `lib.protocol.icmp.nd.na`. -These upper layer protocols implement the headers necessary to perform -"Neighbor Discovery". - -— Method **icmp:new** *type*, *code* - -Returns a new ICMP header of *type* which may be either 135 or 136 for -`lib.protocol.icmp.nd.ns` or `lib.protocol.icmp.nd.na` -respectively. Optionally *code* can be supplied to set the "Code" field -for the type. - -— Method **icmp:type** *type* - -— Method **icmp:code** *code* - -Combined accessor and setter methods. These methods set the values of the -instance fields (see `new`) of an ICMP header. If no argument is given -the current value is returned. - -— Method **icmp:checksum** *payload*, *length*, *ipv6* - - -Computes and sets the "Checksum" field for *length* bytes of -*payload*. If the lower protocol layer is `lib.protocol.ipv6` then *ipv6* -must be set to a true value. - -— Method **icmp:checksum_check** *payload*, *length*, *ipv6* - -Predicate to test if the header's "Checksum" field matches *length* bytes -of *payload*. If the lower protocol layer is `lib.protocol.ipv6` then -*ipv6* must be set to a true value. - - -#### Neighbor Solicitation (lib.protocol.icmp.nd.ns) - -— Method **ns:new** *target* - -Returns a new *Neighbor Solicitation* header. *Target* is the IP address -used for the "Target Address" field. - -— Method **ns:target** *target* - -Combined accessor and setter method for the "Target Address" field. Sets -the "Target Address" field to *target*. If no argument is given the -current value is returned. - -— Method **ns:target_eq** *target* - -Predicate to test if the header's value in the "Target Address" field is -equivalent to *target*. - - -#### Neighbor Advertisement (lib.protocol.icmp.nd.na) - -— Method **na:new** *target*, *router*, *solicited*, *override* - -Returns a new *Neighbor Advertisement* header. *Target* is the IP address -used for the "Target Address" field. *Router*, *solicited* and *override* -can be boolean values to set the "Router", "Solicited" and "Override" -flags respectively. The default for the flags is 0. - -— Method **ns:target** *target* - -— Method **ns:router** *router* - -— Method **ns:solicited** *solicited* - -— Method **ns:override** *override* - -Combined accessor and setter methods. These methods set the values of the -instance fields (see `new`) of an Neighbor Advertisement header. If no -argument is given the current value is returned. - -— Method **ns:target_eq** *target* - -Predicate to test if the header's value in the "Target Address" field is -equivalent to *target*. - - -#### Neighbor Discovery Options (lib.protocol.icmp.nd.header) - -Both Neighbor Solicitation and Advertisement (`lib.protocol.icmp.nd.ns` -and `lib.protocol.icmp.nd.na`) headers implement an `options` method for -parsing *TLV Options* contained in the their payloads. - -Example: - -``` - -- Parse datagram with ICMP/NA packet -local na = dgram:parse() - -- Parse TLV Options -local options = na:options(dgram:payload()) -``` - -— Method **nd:options** *payload*, *length* - -Parses and returns an array of TLV Options (see -`lib.protocol.icmp.nd.options.tlv`) from *length* bytes of *payload*. - - -#### TLV Option (lib.protocol.icmp.nd.options.tlv) - -The `lib.protocol.icmp.nd.options.tlv` module contains a class for -representing TLV Options. Currently only two types of options are -implemented: "Source Link-Layer Address" (`"src_ll_addr"`) and "Target -Link-Layer Address" (`"tgt_ll_address"`). Both are represented by the -`lladdr` class (see `lib.protocol.icmp.nd.options.lladdr`). - -— Method **tlv:new** *type*, *data* - -Returns a new TLV Option object for *data* of *type*. *Type* may be -either 1 for "Source Link-Layer Address" or 2 for "Target Link-Layer -Address". *Data* must be a `lladdr` object. - -— Method **tlv:name** - -Returns a string denoting the type of the option. Either `"src_ll_addr"` -for "Source Link-Layer Address" or `"tgt_ll_address"` for "Target -Link-Layer Address". - -— Method **tlv:length** - -Returns the the size of the TLV Option as multiples of 8 bytes. - -— Method **tlv:type** *type* - -Combined accessor and setter method. Sets the type field (see `new`) to -*type*. If no argument is given the current value of the type field is -returned. - -— Method **tlv:option** - -Returns an object of the class denoted by the type field. Currently that -only includes `lladdr` instances. - -#### Link-Layer Address Option (lib.protocol.icmp.nd.options.lladdr) - -The `lib.protocol.icmp.nd.options.lladdr` module contains a class for -representing Link-Layer Address Options. - -— Method **lladdr:new** *address* - -Returns a new Link-Layer Option object for MAC *address* in binary -representation. - -— Method **lladdr:name** - -Returns the string `"ll_addr"`. - -— Method **lladdr:addr** *address* - -Combined accessor and setter method. Sets the address field (see `new`) -to *address*. If no argument is given the current value of the address -field is returned. - - -### Datagram (lib.protocol.datagram) - -The `lib.protocol.datagram` module provides basic mechanisms for parsing, -building and manipulating a hierarchy of protocol headers and the -associated payload contained in a data packet. In particular, it -supports: - -* Parsing and in-place manipulation of protocol headers in a received - packet -* In-place decapsulation by removing leading protocol headers -* Adding headers to an existing packet -* Creation of a new packet -* Appending payload to a packet - -It mediates between packets as defined in `core.packet` and *protocol -classes* which are defined as classes derived from the protocol header -base class in the `lib.protocol.header` module. - -The contents of a datagram instance are logically divided into three -areas: The payload, parsed headers and pushed headers. The datagram -payload is a sequence of bytes either inherited from the packet given to -`datagram:new` or appended using `datagram:payload`. The headers in the -payload can be parsed using `datagram:parse_match`, which will shrink the -payload by the header. Finally, synthetic headers can be prepended to the -datagram using `datagram:push`. To get the whole datagram as a packet -use `datagram:packet`. - - DIAGRAM: Datagram - datagram packet - +------------------+ - |packet | - | | - |+------=---------+| - || Pushed headers || - |+----------------+| - |+------=---------+|<---Beginning of initial packet - || Parsed headers || - ||------=---------|| - || Payload || - |+----------------+| - +------------------+ - -A datagram can be used in two modes of operation, called "immediate -commit" and "delayed commit". In immediate commit mode, the `push` -and `pop` methods immediately modify the underlying packet. However, -this can be undesireable. - -Even though the manipulations are relatively fast by using SIMD -instructions to move and copy data when possible, performance-aware -applications usually try to avoid as much of them as possible. -This creates a conflict if the caller performs operations to push -or parse a sequence of protocol headers in immediate commit mode. - -This problem can be avoided by using delayed commit mode. In this -mode, the `push` methods add the data to a separate buffer as -intermediate storage. The buffer is prepended to the actual packet in -a single operation by calling `datagram:commit`. - -The `pop` methods are made light-weight in delayed commit mode as well -by keeping track of an additional offset that indicates where the -actual packet starts in the packet buffer. Each call to one of the -`pop` methods simply increases the offset by the size of the popped -piece of data. The accumulated actions will be applied as a single -operation by `datagram:commit`. - -The `push` and `pop` methods can be freely mixed in delayed commit -mode. - -Due to the destructive nature of these methods in immediate commit -mode, they cannot be applied when the parse stack is not empty, -because moving the data in the packet buffer will invalidate the -parsed headers. The `push` and `pop` methods will raise an error in -that case. - -The buffer used in delayed commit mode has a fixed size of 512 -bytes. This limits the size of data that can be pushed in a single -operation. A sequence of push/commit operations can be used to -push an arbitrary amount of data in chunks of up to 512 bytes. - - -— Method **datagram:new** *packet*, *protocol*, *options* - -Creates a datagram for *packet* or from scratch if *packet* is `nil`. -*Protocol* will be used by `parse_match` to parse the packet -payload. If *protocol* is not `nil` it is set as the initial upper -layer protocol. If *options* is not `nil` it must be a table that -selects configurable properties of the class. Currently, the only -option is the selection of immediate or delayed commit mode by setting -the key `delayed_commit` to `false` or `true`, respectively. The -default is immediate commit mode. - -— Method **datagram:push** *header* - -Prepends *header* to the front of the datagram. This method -destructively modifies the underlying packet in immediate commit mode -and raises an error if the parse stack is not empty. - -In delayed commit mode, *header* is prepended to an intermediate buffer. - -— Method **datagram:push_raw** *data*, *length* - -This method behaves like the *datagram:push* method for an arbitrary -chunk of memory of length *length* located at the address pointed to -by *data*. - -— Method **datagram:parse_match** *protocol*, *check* - -Attempts to parse the next header in the datagram, thereby removing it -from the payload. Returns a header instance of class *protocol* on -success. If *protocol* is `nil` the current upper layer protocol as set -by `datagram:new` or previous calls to `parse_match` is used. - -If neither *protocol* nor the upper layer protocol is set or the -constructor of the protocol class returns `nil`, the parsing operation -has failed and `parse_match` returns `nil`. The datagram remains -unchanged. - -If the protocol class instance has been created successfully, it is -passed as single argument to the anonymous function *check*. - -If *check* returns a false value, the parsing has failed and -`parse_match` returns `nil`. The packet remains unchanged. - -If *check* is not supplied or if it returned a true value, the parsing -has succeeded and the current upper layer protocol of the datagram is set -to the value returned by `header:upper_layer`. - -— Method **datagram:parse** *protocols_and_checks* - -A wrapper around `parse_match` that allows parsing of a sequence of -headers with a single method call. - -If *protocols_and_checks* is a sequence of protocol class and check -function pairs, `parse_match` is called for each pair. Returns the header -object of the last header parsed or `nil` if any of the calls to -`parse_match` return `nil`. - -If called with a `nil` argument, this method is equivalent to -`parse_match` called without arguments. - -— Method **datagram:parse_n** *n* - -A wrapper around `parse_match` that parses the next *n* protocol headers -using the current upper layer protocol and subsequent values of -`header:upper_layer`. It returns the last header object or `nil` if less -than *n* headers could be parsed successfully. - -— Method **datagram:unparse** *n* - -Undoes the last *n* calls to `parse_match` on the datagram. E.g. prepends -*n* parsed headers back to the payload. The sequence of parsed headers -can be obtained by calling `stack`. - -— Method **datagram:pop** *n* - -Removes the leading *n* parsed headers from the datagram. Note that -headers added via `push` can not be removed using `pop`. The caller -has to ensure that the datagram contains at least *n* headers that -were parsed using `parse_match`. The sequence of parsed headers can -be obtained by calling `stack`. This method destructively modifies the -underlying packet in immediate commit mode and raises an error if the -parse stack is not empty. - -In delayed commit mode, the packet is not modified and the parse stack -remains valid. - -For instance let *d* be an datagram with an Ethernet header followed by -an IPv6 header. Assuming we have parsed both headers using -`d:parse_n(2)`, we could call `d:pop(1)` to decapsulate the IPv6 packet -from its Ethernet header. - -— Method **datagram:pop_raw** *length*, *ulp* - -Removes *length* bytes from the beginning of the datagram. If *ulp* is -given it is set as the current upper layer protocol. This method -destructively modifies the underlying packet in immediate commit mode -and raises an error if the parse stack is not empty. - -In delayed commit mode, the packet is not modified and the parse stack -remains valid. - -— Method **datagram:stack** - -Returns the parsed header objects as a sequence. - -— Method **datagram:packet** - -Returns a packet (see `core.packet`) containing the datagram (including -pushed headers). - -— Method **datagram:payload** *pointer*, *length* - -Combined payload accessor and setter method. Returns a pointer to the -datagram payload and its byte size. - -If *pointer* and *length* are supplied then *length* bytes starting from -*pointer* are appended to the datagram's payload. - -— Method **datagram:data** - -Returns the location and size of the buffer of the underlying packet. -This is a shortcut to *datagram:packet* followed by calls to -*packet.data* and *pakcet.length*. - -- Method **datagram:commit** - -If called in delayed commit mode, the operations accumulated by the -`push` and `pop` methods since the creation of the datagram or the -last invocation of *datagram:commit* are commited to the underlying -packet. An error is raised if the parse stack is not empty. - -The method can be safely called in immediate commit mode. diff --git a/src/lib/virtio/.images/Virtio.png b/src/lib/virtio/.images/Virtio.png deleted file mode 100644 index a805497afdf3db12dd7ad1cfaa65dc7a86393a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14708 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 diff --git a/src/lib/virtio/README.md b/src/lib/virtio/README.md index 93d3e046ad..dea5757d0b 100644 --- a/src/lib/virtio/README.md +++ b/src/lib/virtio/README.md @@ -13,9 +13,43 @@ the available ring points to descriptors with real packets. The Rx virtqueue on empty buffers (packets) to the device, so the packet is received in the descriptor pointed by the used ring indexes. -![Virtio](.images/Virtio.png) + DIAGRAM: Virtio operation + DESCRIPTOR TABLE AVAILABLE RING USED RING + +--------------------------------------------------+ + | | + +-----------------------------+ | + | | | | + v v | | + +------+------+------+-------+---+--+------+--------------+--+---+------+--------+ + | D | D | D | | I | | | I | | | + | E | E | E | | D | | | D | | | + | S | S | S | | X | | | X | | | + | C | C | C | | | | | | | | + | 0 | 1 | 2 | | 0 | | | 1 | | | + +--+---+--+---+------+-------+------+------+--------------+------+------+--------+ + | | + +---------+ +--------------------------------+ + | | + v v ++------+------+ +------+------+ +| D | D | | D | D | +| E | E | | E | E | +| S | S | | S | S | +| C | C | | C | C | +| | | | | | ++--+---+---+--+ +--+---+---+--+ + | | | | + v | v | ++--------+ | +-----------------------+ +--------+ | +-----------------------+ +| | | | | | | | | | +| Virtio | | | | | Virtio | | | | +| packet | +-> packet.data | | packet | +-> packet.data | +| header | | | | header | | | +| | | | | | | | ++--------+ +-----------------------+ +--------+ +-----------------------+ + The virtio-net specification mandates that each packet is prepended with a packet header which contains information such as checksum and segmentation offloading. The picture shows the usage of indirect descriptors, where the descriptor in the Descriptor table does not point to a real data buffer. Instead @@ -27,5 +61,5 @@ During the initialization of the virtio-net driver, the following structures are * the virtio packet headers After that sending a packet, or giving and empty buffer to the device is just a matter of finding the free -descriptor and attach a pointer to it. +descriptor and attach apointer to it. diff --git a/src/lib/virtio/README.src.md b/src/lib/virtio/README.src.md deleted file mode 100644 index dea5757d0b..0000000000 --- a/src/lib/virtio/README.src.md +++ /dev/null @@ -1,65 +0,0 @@ -# Virtio support library (lib.virtio) - - -The `Virtio` library implements the virt-queue handling as described in -[virtio-net](http://docs.oasis-open.org/virtio/virtio/v1.0/csprd04/virtio-v1.0-csprd04.html) -specification. The device part is used in the VhostUser, while the driver part is used -in the VirtioNet app. - -The Basic operation of the virtqueues is presented on the picture. The driver puts a packet in -a descriptor and then adds its index in the Available ring. The Device gets that packet processes -it and puts it back to the Used ring for recycling. The Tx virtqueue is used to send packets - i.e. -the available ring points to descriptors with real packets. The Rx virtqueue on the other hand offers -empty buffers (packets) to the device, so the packet is received in the descriptor pointed by the -used ring indexes. - - DIAGRAM: Virtio operation - DESCRIPTOR TABLE AVAILABLE RING USED RING - - - +--------------------------------------------------+ - | | - +-----------------------------+ | - | | | | - v v | | - +------+------+------+-------+---+--+------+--------------+--+---+------+--------+ - | D | D | D | | I | | | I | | | - | E | E | E | | D | | | D | | | - | S | S | S | | X | | | X | | | - | C | C | C | | | | | | | | - | 0 | 1 | 2 | | 0 | | | 1 | | | - +--+---+--+---+------+-------+------+------+--------------+------+------+--------+ - | | - +---------+ +--------------------------------+ - | | - v v -+------+------+ +------+------+ -| D | D | | D | D | -| E | E | | E | E | -| S | S | | S | S | -| C | C | | C | C | -| | | | | | -+--+---+---+--+ +--+---+---+--+ - | | | | - v | v | -+--------+ | +-----------------------+ +--------+ | +-----------------------+ -| | | | | | | | | | -| Virtio | | | | | Virtio | | | | -| packet | +-> packet.data | | packet | +-> packet.data | -| header | | | | header | | | -| | | | | | | | -+--------+ +-----------------------+ +--------+ +-----------------------+ - -The virtio-net specification mandates that each packet is prepended with a packet header which contains -information such as checksum and segmentation offloading. The picture shows the usage of indirect -descriptors, where the descriptor in the Descriptor table does not point to a real data buffer. Instead -they point to a table of chained descriptors which point to the real data. - -During the initialization of the virtio-net driver, the following structures are created: - * the descriptor table with all descriptors - * the indirect descriptor tables - * the virtio packet headers - -After that sending a packet, or giving and empty buffer to the device is just a matter of finding the free -descriptor and attach apointer to it. - diff --git a/src/program/snabbnfv/.images/NFV.png b/src/program/snabbnfv/.images/NFV.png deleted file mode 100644 index 3885e4d7b293bb27bb7321ac3d7da6a4a96ba2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6878 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 R;Jp<@MM*=k^ud$B{{RoLB| network | + | | \-=-------/ + : : + v | + +----------+-+ + |{io} | + | nfvconfig | + | | + +------------+ — Function **nfvconfig.load** *file*, *pci_address*, *socket_path* diff --git a/src/program/snabbnfv/README.src.md b/src/program/snabbnfv/README.src.md deleted file mode 100644 index 06b039830e..0000000000 --- a/src/program/snabbnfv/README.src.md +++ /dev/null @@ -1,97 +0,0 @@ -### NFV config (program.snabbnfv.nfvconfig) - -The `program.snabbnfv.nfvconfig` module implements a [Network Functions -Virtualization](https://en.wikipedia.org/wiki/Network_Functions_Virtualization) -component based on Snabb Switch. It introduces a simple configuration -file format to describe NFV configurations which it then compiles to app -networks. This NFV component is compatible with [OpenStack -Neutron](https://wiki.openstack.org/wiki/Neutron). - - DIAGRAM: NFV - +------+ - |{d} | - | NFV | /---------\ - | conf | | App | - +------+ /--->| network | - | | \-=-------/ - : : - v | - +----------+-+ - |{io} | - | nfvconfig | - | | - +------------+ - -— Function **nfvconfig.load** *file*, *pci_address*, *socket_path* - -Loads the NFV configuration from *file* and compiles an app network using -*pci_address* and *socket_path* for the underlying NIC driver and -`VhostUser` apps. Returns the resulting engine configuration. - - -#### NFV Configuration Format - -The configuration file format understood by `program.snabbnfv.nfvconfig` -is based on *Lua expressions*. Initially, it contains a list of NFV -*ports*: - -``` -return { , ..., } -``` - -Each port is defined by a range of properties which correspond to the -configuration parameters of the underlying apps (NIC driver, `VhostUser`, -`PcapFilter`, `RateLimiter`, `nd_light` and `SimpleKeyedTunnel`): - -``` -port := { port_id = , -- A unique string - mac_address = , -- MAC address as a string - vlan = , -- .. - ingress_filter = , -- A pcap-filter(7) expression - egress_filter = , -- .. - tunnel = , - rx_police_gbps = , -- Allowed input rate in Gbps - tx_police_gbps = } -- Allowed output rate in Gbps -``` - -The `tunnel` section deviates a little from `SimpleKeyedTunnel`'s -terminology: - -``` -tunnel := { type = "L2TPv3", -- The only type (for now) - local_cookie = , -- As for SimpleKeyedTunnel - remote_cookie = , -- .. - next_hop = , -- Gateway IP - local_ip = , -- ~ `local_address' - remote_ip = , -- ~ `remote_address' - session = <32bit-int> -- ~ `session_id' } -``` - -### snabbnfv traffic - -The `snabbnfv traffic` program loads and runs a NFV configuration using -`program.snabbnfv.nfvconfig`. It can be invoked like so: - -``` -./snabb snabbnfv traffic -``` - -`snabbnfv traffic` runs the loaded configuration indefinitely and -automatically reloads the configuration file if it changes (at most once -every second). - -### snabbnfv neutron2snabb - -The `snabbnfv neutron2snabb` program converts Neutron database CSV dumps -to the format used by `program.snabbnfv.nfvconfig`. For more info see -[Snabb NFV Architecture](doc/architecture.md). It can be invoked like -so: - -``` -./snabb snabbnfv neutron2snabb [] -``` - -`snabbnfv neutron2snabb` reads the Neutron configuration *csv-directory* -and translates them to one `lib.nfv.conig` configuration file per -physical network. If *hostname* is given, it overrides the hostname -provided by `hostname(1)`. diff --git a/src/program/snabbnfv/doc/.images/compute-node.png b/src/program/snabbnfv/doc/.images/compute-node.png deleted file mode 100644 index 8402dc7dcbcd5723f7c0da0a7f712a6aa662e15a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182247 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

hl8IM#p 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

    #MIKNX&l6_0BZe6tOKiEYuQsUG9S~YN-4AgwS#D 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

    t4-av1m}(;($HDjZg` zRwB_LSMuGyDiy+m?OS6!BxCS!8zBJ7k%VLZ$?y3dG)316=;laAD9;D;g~IgBefE;PlmQ(v3#M_g^3} zQoHXIlqprUn7{W_Hve|#5LB4nUMDt4Oh#Rg9AbcepMhBjD3G>i3hRN`ngMez?!>Hj z_Yce(nD6`v#+bSsaG*;hLS(e`&lDN>!zdzTaj%M^1{#v(8n^x@wJ?#uhzLV3KZQ~# zHzF~JiWOfqWWilx&RH`sgjHI6MhVPikE3!&ET8>3VP^6h1$!WrT;@9<=COLn8SUm5 zdjokG^LBgP@+xmiX5Wm}5n0k*>Vco>H#$I)%;1b`dTM9IT!>TP>BJa)8EhaJ>H!FI z8$m2g8r3_p&vu`709+*ZUwv5< z7h@Lo_;1@$z0cQNnav~-gGZ7e!Kgrrj+!IE29hEcdqyI0pK^hpX@I;&`fqa!>cqI|=`7P6SHH;i%T;J@OXtzx zgl%_oqv0kkwQlvtZR>B{GFz^1_h;MhS=}5E>P<0kO>eGA#o1%)Q>d1E%$Sznx@~4X zOgES74~y^ask>LtU!Sdh*Eh9vXP?zZRH^E9)~z3zzo&WF{@yG`6pW;g*Q11|&6DE|@5{Mqd~ z;1-DH?x1uY{NH?(E5JxKMF^oH<_u^I*q$N8z+C4ZA$Um*FoKn8S?5Mu^R`;_s;@1< zS23L>d|OSH%AwYqrbeI1CP|(L$QN-*7mtiikMbuC#H8n|gpwES^t1SYf;RsJ8qL0x zw+vdRu0BHipXIl!dmQ%{#g-YhxS?5lUPb-Fy9j3lq~D>^`&gZB#&EOPf`hFuZN^ll z)-jn4smkhVdwp<+Pe*wtbF+?QpNwDQ>7o9MaX&w@={G%xQnIqxHt*dVloJ z&NR@lucs3{`X_djeVT`S-R^~9)gTaAOP8|W6QTL2&{(eKLZ~Fy8B7UUHLzN|LzqH~ z-69o_`ro^ic>LxMkanCxYPb z)(f?et*6LUr-r`EtTTzpIE1hz(P~u-Hu=0c&fmz!94A&?{9-5VopS=1X7H+0DkY2D zk3TQ>b*ulpUg3}3+R|&z{^tC5q{HLJM$X6ru|lhnu8S+bbq*Ha?&v~3Fc+(YQmN9H z;e*zO4mq8+(2aZ$qHIaQq~qF&4BIaO?p;_NU!K-0e1a8*^FMR}3p0|I&$_#%yXu?{ z#@2$-9~)253{SeG!a6G0c&Ee&P~xLYK07a*`h3gLQ}m$AgxKim&uu%o^2Tv}i$@h$ z?f9}9-(9`WqXc7vHk>?J@BG78O3Lb66S)jzwxV2!WWaKo2BDIU+2+Z-(_+mK6azkX z4`n1Fu2b}bejD>b&BCNx?!)vlDq;`+{b94?{m;A4U<}5xOl;|c9}(9>2IYD6@6;f%~##ksT$~QKIWSGn{*5iHUHXAn`-yaNPY%_a1%yYf{lfM*6d%8T>jr!_+uqiHjm=V2x z;*09hIEby?ay4jR0XIWjq1i50B>qrPs)}4G))q#6Iz+|wgX!Z}r28B@TC+uB{SzMv zw%_6C^3u(5$S)X;6_*=v#S=_}JEw8#p;n?U+W-&zKFAFvN+?w>9z*$lMv`gUwAvEe z&S%)M+-IXCEWI0i`bn8uKBcm0MTs+=U%zS12~mwT#3**9(<)71fgvk=a{E7A2c+*J z-eYYJ(m`I zrnP_Q0IyV0=L1Qg>vUX>SBwfhdjU{}%2>A{yQg!wL7nn#>cUYtaK|fJHQ(#&gnKkD zH_k_U#j&Lz_tV3DTne#NR_4is0ZSAnTKRY?vzsFvqji0+0S$RgEG#UnPG3e>SC^Xl zF!%#7O#7<_GFb=|3v7TThJ>2S$4x$i|JMQ-0+#uxdV7?~pvEZ(+^Oj1@n!v%hnVr= z{4@q)Xe!5|EV#bQ7*AnJ)O_*OR+BWsR;M^S38zw0&adkziu^H+eVmTt-JA=Z$d&4F zy>y`)fM@3gXp6Sth(d+mOBje##pwG_Ne0hEZVl|=mr05WaS~p{b*=o^mS9Cb+dlB! z?)ml@91_48;TM8|n4!es54ddLj!Mad^|R=6HnwKFKmZ47M8#8a5GYoxdT@5SJa2nh z>eH@Pbk@0pK!CvvdTCsVVID_vj&$EqA%aS=09h@*mAbksi()I8Sl=o0TG<@o`S-P= zISkM$IjQfs3839P;&vjIJB6{3&GdWx=(_Y*5Bm5EO~qEp*?V2FhRqdTSVjq~Xt;DjHx^AJR0DfijN&AJn%Y;}w9JYzz2$%xk%Ua4 z5TK*m^uzMA@|pol13oaJo||NMCt*b3sU6z-B4Udei097pZ0B)%Ll@t>sMy-2(K%+8 zJPK4R62aJ^1^$qC-KP?TFW@lu(`{xuT6EYH- zJ7f`I6zpaI7}V%0(Gnk71$6EwwMxD7 zgl&x|@Ol-*a)!1Y`jNq>(1mlPWNz>X8}1t1qQ3=My;xskq=?!UEufv|&;y zzROp#<$25E+PgDIelonQsWnLXO}NjJImrNwsK{}sl;KQRR0w2geNQT{C7}H;;eZ&( zNK8~k({~1(}bXje$H8Np-Dq{lYsWkXU>mLN`y$U|CT;5J_ z6!RHY7;$&w@BmN`DBjg4+5)dYdGbODx(MyUO8m{qQL=;DFR z5)nXOUogiZX|(;e60Gm^w@YyAuPOLg7!03)Po&!-tjh{kr zyRW1yQUo?Dq2~QK&F1`Fy`ttER1VFnE`GPIVRGV3k=Cky+hwhC8T~77sSgIXu0-p) zY_4Y|4d~xnGOk>aQPHs>fmO~_oEFqA$1*9ywhAv<0dVTO@aG%%{bMQsPtN2VFJ(aS8A)%Hu1L`Z zO>aRo1-$X{^C#e9t2`IFAVDSvXddJn0j+E%#o}QdulXW2Uj^Zau-y2bVz9_N>#<4b z{Z_2bAgLLZkPIMYc8$_J0K^jwPv@U zFYO0YJN}El?9YOx`?cFLVkoC5wlUUs59~d=yOP7J*Jx z><`HXLs_$}_7@4JcuUMdk}|3fK-Q@uk(%OGikVP03BH>et%;bA0>DaDnHnD{B;H^! z0_!3;VjTR$dlk&$I;`gQM;(=xdwV~QYa0HvSQT{%m&H!9=~q5BZaeH_uP@I&jXO=m zu*#xT_GD}at4isOu_IA9k+(KPvU=3wH_KAytz+eFi|9SdB5hm=2G1A3F)P5*TeeE- zCQaS7yyH=zf8nfKB!$jPb&2d74cpx+S-l=98@m-$QjKm=kv=gxm0mGtEHm5(>^9+$ ztpUloFjVgkkxF^de@W%1E7j4sPVjAC>ti6ea#K*tQ93_8O{}V7!m(ZipW1*Jg>$T9 zkh6(}4td?4T>RT`{$<$jwS&D>Smi86Hs{zC%B-}~^eQv;+YRJlgaVU(O_q5@r>DL)MR1-61Di<3oHA`J3H5W<0|d{BD@S z44kZSSbt>LF*@KP3>nsW(jj?dtXs-Vr>KL`a$T@;Tm; zIVH!d|LEmnN~tIY=HfN)=GPbf0&`2U%qzw&y5vPbH+ zrCDB*ffL^q`m!o90+tliN~AalDx_2s74f-=z%d-DRB4fDZjL;<5Wmx=&wvFtMA+WG znnABaqm2$L{kvP0b0YW)hSUX!QtU}h|K^hS^z;N5fPuL>B~{TxbuR^Nw^9JL4YIoX zU5ht7Z}F%F+I1-w&>(QaCpc){EhUF7U*}|D)~{7-Sq0G6gt6*QACHWJrs)_ua(ybQ zw#hixts$gR=^X@UQ8i&Ag;c1qQ%;l^S3r5Zc)!RF&zFKCR~rx7hj6JaI3s1`4XchY zO4eu-%LBi=yESH$pO^J*Y7bKCX2tLu+ql86!;FeR*>!-5Xe0Pe>Ltx`+DJC<_5)C66SJ3FPVH$++S@Tn@e9NTUJmJEq56O! zvkUeh;W zk6w;L&krbNMW{oh`R)vT#n39^?|vbUXWX`K-89@WaqodBOWkYY=`AhTa_zAp{3%R4 z4a(7KV2eqp;Q2TbA9xYH8m&%+UV;^JzpX|MkwUJ>2sD`L_Qc{TQzcitibo7?-Db#p z3noR)Iz{?cU!+;iVaRmnCw)pnN4gN&xX{Aa%Gp4oz^V?}08@2om%(hZ7rRo4%X6i3 zUyXocMf_>rub$hKR`ax#RgJlV4xC&AR_cTC;4hl=A@GIvu~AjTaTG4~*HV?l0H^E1 z0Q8|CS`kYVOY!OF9Ort(m((yMp52Y%fL==AJ)?`Jd-@J^Abq~wi(f_t5ZZgSxmT)pH{AZ#Lepm#=4@-gtoWKxZn+$|B_D=)s}O15JMohn67FQK=ZKKIRGI@|l-_|MRk(UyrP2z}L z9A3L*%`Q5bvKu%g6osYPvKSe}$*$4V)uW`G-0~J&Ph3*!xTXh{U*KroxSJg6lGZ&F z#kayqemztGP}y2FsfXs9T@V#{3?oy1_%axk2)5S0^~J;(xJ00zHGhs{N>w3qxa7Tf7>S7O%A#Dn@Q5Eolg$CgH3Y|Q zD*Hct(#ug6_OtGP5)@UaT6#b3l8A#ok-U!XOD39vN1mEdgKzg>G|#eI<@$XzCI<(w%j(7-*B>a*R)W z5pSG^=2*9tP#LUTFL#`U)LyqSn;Q$2r6eEg485SlCah5a)}9KLq(b@`W)-OzZ|%G% zXNtphlU)Fo+^S%JWTwag)%RtAOcOk$5H-WqI@7wJPfp@xQ|au*i;Lhw43%Pq)EG3+ zpYkt#TeN93arTiI`BJ$l#o^vsg!3!e=aXhR8+2h|ze)~{x`hU$W&ZJ9x`}{{)8s=kj>mI`kY2Rt+?<6E4qqOm@CgFlB z_nuM-I08XBP;5j+n|zCw2IjSZ-a{Byd^WY`BXlC@xp>C>_1=G7BiPrM92GEzxo-6~Fi(S#u8o z$bR&f&^KY9^6Csyc8%fow zjZK!=oG`Y}NN((9R{=kGtPfC@eD)Jal=nci`__o?Gd6@prb!NH6uh|d1R=^u!2)gV zYcfzBeL}E^AE>v)N7}oiJljf{`;oq9r%JTA8h!ypPSu{$l?pw|MN+{iyTuy}MH1|O z_TKG7!W{)ij|{*<8AVk__b63eFD!loIJyWQ=3H6=Qr?96DEYxhNlncRzR0~e%L7S# zt9_iom>Oq@JapQ+D5n9-^8pinc8-8%WZWgi`4{gXLt6kGo^X9a(>&S zYeALFcK@KgOLzlGAY4|Q!y*(A?LAVX#yeK(Ys*4>Wn3+gDW!&)`w+`F=_Db05TpK> zImzKUQnbj1d5&W~2^)MK)Al5qZ^7Pxr}Z^|%ry9jw!$w^?Ix4_qIp-`I!+#6QkY|q z0!D!o8?pf&_Gsy?`U$_rSaOfDJ~w)saNXHZu^npy`J4-(8H}o1WCQ$*DJkAgHUjgv z51ZPGLKI128rM#=a6bbwXOp1q8Ur7!ep$-d+~wbrAbnzH+my@rQu?vakrr1byFSax z1Z-vIFB4Phw3E1&S69jC9D4nF@e!cflthc3#!Bx{mML+a4F6MT1{7=z-o#R|N>o;* z632!PI&}q3d?P_&_N#L_=Py`$QIB8r#UVY0G=zdx7tJPilv=jB)SdOvI|=*aFr){Z zSfjQIWy}Z3a==9O8d%_F-TXR~aC2+6X<9X7Gaici$dWDWRmzogU7Dfg-xLZSQY<8V zhk^+Z%+Be1#q813uQw=`+HzIli)={y8VzJi=8d#{Pf`@IqXkbA~A_JHD zm7Gh*wQ?lleR|8yZ&+1VyPEx^vqcH12v3Iki!ySW(Yz2MV-gxrC?S=|{ZhIwd!LeY zbX?l2Gzds?OEmArQG{m`*b8GE;h0#lRoHsCZN1%U#Iv-LK*{5L`70TTJh~wLG+p^# z&-}dc@RPSSg~o}DLof`BM`M`)M`3%3(R|W5j72{66COxhxQyGpo`KHl=~AJ)v5yg* z{`<;<(YY?f`df%SGD&ZD_;RT)y(fQ4fh~;83r~(?Q3tUXm50;HT1$AM&rJK5PT|0EYvB@*`m`?POA^dU? zPr@LDmRk_*21?U2^nmB7|5US~mR{0}hg8Ly`}dhfjjd+W>&N;8q%#^ofBdx`AyxQ> zS{F`vU|?WBm7j^#dv1N|zt|=BG3f#ItoOz@$b8mq<+U2e98SDjAPB*zODLOYC4m#~ zE#u0&68XIOaUp860RYgS{(9Fb?A~LR&KL_xp?VB84Vy~&z0|F^ly|mT#&Lw{-@n#Z zcA&m(E^DD}2XRp~O4G676Hlf;D^B@&f_7*fjz_~);xsj<-(ae+`)=4`n1K8r%Ya`b z2fvU7LJTn=I+m9&B}@Fc`o<3R;N5TCRZ5SLq?-o3>!)ZB&$I^nWn#~fBpK^e@oN}^u795Uaja;sB5R|GcnlD65YKg)$|;?m1SQ(Xs+6)vc#5H?aHKv zIvnAh?2}a?fBXAOV@>d%1^RXDDDjH8uBzZQgPDhFDs=o=D2`Bvyk_L4V^RY~$wjwb z)|d!ybbRmJ4f$k8-K1msA1i1Q6)~WMeeb%9h3z7}ho)mZ&20)ILN8XCK}igab=+H2pTYJ~k(}a_UpZ2Jc*_$O?EO+Ka(5-L*SAV%dZk+tUvM7U`0u}e z^{fOozd)DKZO&wpC}D6>{B*>iQ`NtXBbiXuji zChsHx;OrAkvB)+}hZ;c3k6GlNko}`wzaGt zt)24zB=LoaQVI0Z!X){Vh{A|Lzsu^myXkgvsi@|pzVL_j4%cKz0CsP#iwpqCIKrFQ zmdFoBrSI>e1QMqjqms;(D=_lv)6ZY8a#z%xbWAADBha4OyBwRy6|Hzh59E``Mp$sY zF;8R)P1TXQLXgS|hzq|+t!44fPVnz)J`+}t9j+Z77GZ^2V8si&_TFye>wi5!1GF$u z8nJk=idXoo)c{1HHK>*l=0WH-!$K=ng}?>h{c`fX>lWx6qRb|VPxj~!i>SaJZCH9W zKI)Y53=$Uea7{g-&E#d`mU6~V@=Yp&yHC~DuX&BE`F@~CzXV8BQI9hOyya|s5bb-H zf?obtNlis2c0JCW*Q=UA3_~f``KgVf9IY&tY5v6@5M6=&o;8k=V_y70wrPO%>jq9k zrG#Wj$2VL_Ay*i>Ska1Wl63QH?~0kp!ss4#JJm6-W>khwRcm>FTOVu-53!{M%DOBL zseped9gE`z8Ci(~ySOW5mMo&*A47#vP*7T7h6KyR&g1XgIb@cFa+Hm#FCGqZlYw3w zloAUlAVPg_D^TMK6^cvJ?f$NuBH3Tk-MDJjv@%5x2{HWCAe_V@TY)~f>3NMPxT9=> zh+&NC#Y7Uj%w2lZgQY*j2J?IZ`qF=D*m!T7Ja;N&(>FG(k&hE7}I=f)>c}hMgOAKPDfS}py12& z7JU`yvR}LI5M zbfEAvf6~(HAZ#?|{)zAJUY^hz)?BhTo-^E?6$J95B0##8Wtes8kkAv?Yc}}O(O0=& z=yo5zl=qvWhxnWtUykr^+-aC}-bOu=g%5(>cp|WZ>Hd&={8=+VwGBt+?n}7o!vjDq zH42Gvqa63&p)C~qGeOR?Mq13W|Io1Ex_&Zrjoi|jn}HX9%JlBHoD&+!Pq8o&)ZC)c zfx-j3>$H+Q{lK@FV1Z$sl_|Gdhsdk6lz-AZ1qD>EE#oyR`hUuSyb7F8DluwLV^ta) zHeEk|tN%$%cOuRYr9jOpB~wjEK5dbF+|=gJQX8a`L}c+&y%8ugl=5@zmuvU`!$LsxevV zh(eBp7i!UgSoB7D2gW+K;=N(fQ(cl^F)m}cOChcDvc@~K_jt%J0A@SmqTo&PA% zAR*Pq#YZuKr1BQZ1F&NIW-$=a6qnsk53qzi58u&^F7FH~>qFh% zefdODB}_l}nmrsKroJ{pw@dw3zoN`gHi|AB7Vt|0*bI4O_F&t(wY3<=`j7fbifrjL z>C`@Xcv+&Z4!7w*w3RcVv#~}L!xU-@t~LVX-v_wf5Czz)i!XfNhyU8Vmw-Dj+-O)- zmX}6hou$j7b{JCm4N&yMULWS-@6d?A65bucI6rpLD@oeYYE3liSljn){+^Sc%8Y6= z&p?)wA0Wbal9A4L6qI=XVW3*LVjG{ItuJAbcNPC7M~I=NuX*0AN*9q-{YF;k98HO+ z%o3`0PnxxMxPDV8?V6TR9fCz$|J~rTVu~mUpTxF>Ri`*qOrj&fWhBO=IL2~CbcKql zv~`J|@8pRl%KUIyQDF@)@#ym1^`*h9Qc2)8Rk-&sq&|lz zyTk2KHD1cI(rylgK;=e#gAX<1Iosg6b!n>WAm`aL&X4fuN{o`~8-Oj1o*ak#e8+^^$_D0A!xYFp)0$BP?gZ)dRqfR5X*YoDZ1C@&}gN~6zEkc^M#Fav`xttrQ;*vBnmCod%Cu- z;L%v>0~y>5KV20^UJ-`CuP@WGPWB6I-qrc~97PJ2#fISd)<)G5vU_`=kV6Zv$Cvdt zCc`f2FkWFKm)rMLJr!3dCr_P_BJRv$&rm&=4ZJpP0QT}A#4E(0OEKn<{-yQ9qFp8@ zS1ATOE&DgE0&lxu*6YWp30FDPGOHBg+Y0Fv6=`~%@OY)%lKp)0?9`U(#`T+MzRL!D zn!M@vf!#BZ{6#@wnhjB=Ik!|U+w?R4hKsUC|IADLzUmJD`nIvemq8M#-4(L}S}%k; z_W-VUj<3g~j#~u46P6?HG!Lr7G9`NbH1fRhNFsBnEigHnAn}W2bXV=7-q8Ub@k{Ml{8!<LCsH-6nPisd9y1S5)uYh3U=#lrDz`3F!_+I%nt@8tLvvKoEYw&>^KD3=LA!Eg&V`Al=>d9^bY8 zpJ3LUIrBVs?7gq88|0w)mY1!b1_*g5`VN;enc^A^g0Yq?YM`$*3+);jEzeItu=Wu# zE@l#5-rP+nd7sHdk$S7iIN%Rd=9hTnUhZD&;&13bXbI~`M!m5do+mV!u=pe(#XfYc zHA_H?WsJJ;#B5%dJ50j*KP`YwN2+=vQ-$z^?!oG60s&{*_b*!gVs;JYVp~9U4-sG) zfJpopuGHBFC#yxKh&T^kp~Tdy>9K8=8*&lFta4!Yfd}stF>3EVu;{PUN0o?bn*Y&> zmRm^*-0_U-?kFlgt&?{C+G69jAMmp1k}X=1WzfJoE6Ak3e{AGriz!PZyg?HHfvY-CUnzl>7_{G?}y1G z>f%qSZAgg!)gNOdgqP52Y^D$~WD4?}W7jE3!g_s_$^V34vsj_3xszY(A<+=OxV~f+ z3F+1-JpASGnkQD76xs)GMVLuFi^@Pn$Ict3as5!e?Et;hrTPg11^|&c#n}0%HJ6u* z6r*1tI3@H>w=UgKi&{3aVpDoOuu7G%+as8D-@1}LMrG4X`tXDFz)_I9NYwA}y)wAs zC)dE&OD}C3QHvg}^zM}0xsFZtN_Fkk5;q-MUQtq0*I+~Pt}0LrOp|Wb^g{%d153dr z2gxOa^0}PHbf|{n*hLT0E0L_h%1rpLf_<`zd9)&&o>=v_uaNsLIy_oSX>W=G)w*oz ziD9T^IncIihY2}Q0}Ym;=eM3x&eL+27Xk$P1=|v^!#KW`t=n6(xwcPn?W8cpM!6p{ z?}B@Y&zc%gN-L)XKE8OBivQSW#HehqT2#qnlm88|-TB$y#X;3$RWIR_wAE&I-n87} zxibOVi5_U2US`i>PLDQxM%1*qfwB^FdgHd!VH_>b4aYns>cg&>*pOCJrZ$Tr!g@H0 zZE4^dTAmZCciey0HXN3}U50kIV-GYSB^#ylETmFM+5)PACvs*n_0YQ9a5Ea}x7WCd{YMSjut6`R%p4@jqwqtY1=FmZSMm{o z!ynp&JTxNrfmfKK=YFFe#Wsl2WFm=YN!jckdu#|KGltcIR>i^HN_q1rv}{`(;=6Sc5y5%#di;W|FtqB zpBw8nD||PN5{dLJec$2>;; z9Yl962{{2`b340((AXu3BkQAJjLdPnFa3HV;99} zS5aLYQaIIc#aw<57nfhm7j;7hCs+sbVpfZ7Uri82F8mt2WY!n@RlP}OXGU+nm0`@- z_{qnMY7e;ZFEZxt;s$M>6utk^l(H*kIDPpwG%QBNv^-qyh+!Fjh&^O_o5 zQ0rI*d?Xa7!%m&>u}Jh}joKQ(afTf)R3jZ*UM2|q`Y{^*()n%d3+B4-C}-|K2R@9% zO~7Ga`oR}ezw3I5S9hwz!~6z)s>+VR<6{r#2T^9a#`mA;o?jJM^;L7qtfp8>pBr|K zusC?h4NT$Jx2Vys`x_F$gU%fWHO&vpu2p21$~QXe%j-rc?*tFIy98H`{V!fjb`7Ri zr}Pi%xt#i_F}A<3KDhPc2`}pZ!Io3ruHV-uoL;l^CeTv^{fyrvtih~nO<`)Mqr8F` zWdMmpVaQz~q#y=vY`rTrB~REUYO9f}%QkTB#RG&O3U`&ELL&0 zlc=eBy-z20quO<%IN51-wwkO1ojdNZ&n#V&D`l!TD%+SRe$HrqI*fu>j4Sg!ot4B9=r& zw)V4{Hn)NA=C?nDi#K1HP`s?6eJR{NHH@BR%TsZU%@$P(kHav6kT7YKWb(_nyTSjw zuk#OeAieJR@jJ}wD_Z4ylra$Y-tJ33ar3G73LrJILXJxsLA?TbQ-jot>g;cq@0e;G z7sR1ene`%V$7c5cC;^3Cj7Re*E!<*)!TrSVGOu^~8Ml5DJ=*T4CG~${C8F~1ICo3m z*|`$mf)H^5cZq**# z&8=?pbxf}?^>$%z9X1FIkjRgPAg<&TJkz7xDUS|(Dr;Uy*FUChU|G57qG=s91JISP zRbQNkMvJ;2>QRO9jkQ0cU;FJ@(JsH{jsGpDbChy~KAFu_{c|7Xm|j_)je}tHor*bQ zJp1)@KTNqkh5FFJW~H8jIHB~d+L-`x#AheQuqVY2ZXRJZ2N6uUT^w_gVk_c24RLT4unJ@kfzo3glgF7x57xHg@BY zsC$rh@n@y&j9mYocCrm+=TXlQ1vo;%%>MYrlAY~MTe0J)y-ek!NRFd>$TeJ!I{~%BGQ9H6%`3i2EF>Fq%vv>+G+I?LDT?^3qdEQ|eJUNeZbB|K= zG>80`7AoM~;q`m`XgPU$p{u+OZE2F0o2qYQUU7a+8$;-z#q}&F7soJ&$l=_A2cPg4 zMjHfP8NcRw?v#tG?XJaGQ9(!A|>amSt5qAT}U>G>;; zHrRe>2e(d!V9)vEt^wzLkI`&OaN^rqZ%ZFCO4}2y~Dz2Qr7d{zbftx^wY-x7Qvez z#4h}Pxu089Kd$M_e+nVtyL~Z)UK8^?eY6Rhl)|c9Gr#VN4UHz1Adf1(BO-_qmB-V?f< z7>-xg>m{n{Q`1PUFO2)Lu0@q&YZLNjg=M@f3_2Q2>#Kh4{5AH-2bt|dPviMfVttAG z1O#%Zx)+4^u| z`<9m``}TGd8v+uD>hwf`vBB*^+Rsf1LT@Qr?aio;brvw8-6=}6U|zx24I1icxlTbI zi;*dDO5@LFJEKOT`e*gEmo9y46A}GNhG*n}8j=ktY?a0c+@I1+dRR*0uDgD;<4vxx zBd?dvf9k8r*UCUU7XX2$sky!`q=;Bi`<`V$4zRWPh)r&hdE&fp3vB~INP<$}tXtW` z+44@hR$Urud6d?}lT13ay(cyc2MUKWtfGJzv_w;lQk-=qEq4s&N~B_8qa$TAU1QuI ztp!Uin%?2L0XnXSu9#v31mU4G3uqG$!ec&koLSnvVrFL?p*4Y4bW-oO=4C3dl>|fW zsZ&0uOoaS3CgKPtHR*oE^W`(Fd0BhKb%N_!02BqK-btz^SPQ=d7X={~9s1tZP_bqL zN7(3Xj4NhTXb1bu-$2Wy9D-(Rrm_vIy!T!i8xDp3Hg|iB@j<*si-!HqQw)p$Mi;Q~ zXWKN9x7TRjDrLg%q99ym3u(X1HxzkH;WGW zXDZ4eF3f*M3HHqEaA;!|8_=+d|)&jiKik}fWwyeGpZ_a3^~6tP69 zMrn5)NwumfePS5c#+`?ZR{X?}2We>s7Su+#xXcoft9u1wb$1_ZMVa~OC?BL?8rHP- znDlo}=H%Go>}4WZGbO)G9R0o;(4%w}(QqZ0p1KXYr`$Xb&|2r6a7P4>K{k{^<)V(_ zVVTxS58B+k>Jfr_?|So{B!gmL|2+aJc58S0mHmK+(HOv!NoKTtW9TMTQ0ZAF|6yw% zDC4*gyD?L5>re4MC8MoH;gx=MO!1k32-d%8!QLoC68}-}=GHsi>iH&e9TZtX#j4iQ zDIo>1Y`8{wCUfXxx{7JOoG4ERM+Ph1T*Qgeb%?%ysl!&~&i0PLB3tgE7L2pmi*AF` zP{e`q?-HC-62;Iv2~0Tzw&e^h5eAW;znf|4l<5m86I*Y?80yX{`tBL4(X^L=(t}Wg zfBKd3T1>bMGxe#V6|M5+9=>zqGV;cNdV;nO9dw7B6|n>IB60P`mwNm<_yM($pYoBkv+r z8^f?MN$Zho9a54V^ibGBcvAR>D=>iH1#w8ZZxJDUeYJn2^645J=B0bB$KL!4g5I_vUw;s)jqkG(W zKMMqi@C7PZMA!rt=v+xu33fcxd?wj@lkNz9lw#asNxO32X7P*kqBF3}z6ap#?1l%Xn zOPuzQ2w*U{`T+^^t5dqBQxD!HgqJqzN2YKKNPCmX$6 zZ+{F=>pIP7`>7yD2r_3j2vGg6`!Jmtc>t0VM9(YJB=c_TB3#vWJ}0canF7|Ye9^I` z43pY}tW1>JhT$G`V>mH0iFFJ$lUElUK91JA=Vu-*K!Zcg^e58K`ER^kW?37j>qbzf zjR+U2e;vmd`I7To4M`8Y20js=kv9HoWo6}xMM+ha%b3h`jn&Wz5Wr5B#H`wtVUrV$ zK(LpYv{C}Gjn0=(fZ4T{nKl5QnN~tVA~T@{__nsTw$iGq_*b(QgiuEwhMmL1sf`d; zZtj^pXP$pvW@uAqk7Zvh#VqhN1U?Mtq}NDL_2`sh2pPp@-u70m#Xc_4jWMdcI$Iru9E=6&ev< zkHznkX;^go3@ZGWF97lVmm{|ZwI);X&)i0n3 zNL$;(*^sT1)AXMwz~u!4G`it2!Q`e;2qdqxRN10zjIkZ1$PU9{fdd}Jl`OCdmGHsf zGRd~x)t1Q{nSK@_c*Td+Ke*2$oS-34&5)vHDdCs3DzHR2xq|1>&fV;i1Mc5_?A3%DYBIyy&B#@cC`A*J?cWEw=aNex1I)f zwp?NQ6DmyJlr-inm>DbhZXy?W4e9>TcY9KFO`-wYk<-Pofq?;JNhYOFJ@`(W%hcZ9 zz8mmW7w(P2;h+}aY`NL_8qcq}8i$P*Y&sNgnY)Ti?F_bhzUi0x8^cjC2DSkrv--J% zPH|OoB?C2{Bcn-J{^o@fbWNyBl^1%c=+tEBF{zw_^-bHb;)lKGO;dRJ39X0g;0dY9 z^`w%O{FqV1?`H0KE@!$0B^h1yP|JD@9FRWoLimoh;fJjGwuU|O#%P8-$f?y{+l+Z% z;s&1ZCTdZoVGuq97;IP1=&*>tDj|L__~N!tA6td^LSI$HTfeLi9E}kIpuS zQm8lAQ9~^`xsZH#exLb24Flf9aQ~yG_tl~0$8(V_NHfB9RwlZ-%`Lj1s ziRk@0?H9v07JgN-7*PlEUN({ha#7J^1Mf{+?@BW3yu019`V?yM;(Om2=KkagN4&G5_uEb^CK*Hh=@aqlU!sHRWBu#GV9* zK}x}C{wUEp>;}NyVbf}(B|C*-8WoK;v`Oo`LCh~8VD|KI+X$dB3Sd`OS(H$ODtGH@m%~A=impUQFTlP{cxvl#=xzH+_D*QKQ z&5~n5B*p0{+BLd6R66BGOJMi0(f%6%gXmd8a}e&c0U#;*rYt|n15Ym=|1V|FI>?XAI}Cj2q5=$w^QmF`1p zovdB{AAeYk`SbEcFb%~Ma}@Czw1c68CFwNj>{%l>$fGjS*dKSyg|LGe>X57<0!6vU zHB-9A3Irx{DF3Y#IKujZ$pnLA1FpPLB!;Gh2K{K}1AZkRbF^{CIm9@Gkw6x7og z{<)cIh=791Q8AQVG#Q3&KA%EZAEDZb?I|l+dG5R_EyT9IXvLyvtc&aux-Zz!dJzBB z7S9TbvI28OhHrj|$Z3l@|0V>J!vv~9SR~4vaH)C-g?oPLPvN)Zw-zw@Kw9Q@BQc_{ z`x5EX`h2NOYu$yQi{pInI=3KEqmy=GHG_G| zpib&-5|7oHhOu$^<^$e=bIYkbSHDf3`e!6|h$4aydyX7%WL5=DVdUCZePfqN;Y?y+ z7wUq5Y|e1Z2EQYJ&4TS!gw3>~*!n39pjTeGf7(p5z5~%vO9oc0edu@aDXmDnpD}AS zN&ou=)^CDkC_+=zG52~CP47}3dL|s*aE7o7ZdD(Ea@ZGC2lA}Hh6@L16;<+Wo2?%z z1=QAzI#2pyY5df+UAF*SJIC!(FF5r=0Bngahv}cSVWE{tVXKFmQ&if&d|q>U=cT|Y znC=Q{-Hwt?fI~KA_{%Y6EA^PbUV@~&;|&dmp6OTURa~Rp8r8I*YFY9Q;r3_ifG~j{ z*>T;XSkYxYW)|cMvb2MW^UXLWORCbZ6sPJC2|RV*6?wd?UqRi`GCQCHHj-Cb>2PE4 z%6_P0Ahy?3E^^LDl&g_gEGs{GzEa&2t?`=#U3Be0ki(Q>jdil+-I*YTQFloX>`gKL zT49=rmM3dqYyGS_?xPr}c;#-o;fD;W3^%VJ{O@%*0~A{llLU>K0}PFV!_a!zm5*i9 zU>h$H4e8~X$a1~FEP{ztrQg2FtV+Peg`D8-r-1L3&eJ>Qvr=s36bZAwV47-#Hcd%p zIL|v0Sf3GRgL`OKIiRqZ=l3mr%Ew$L$cWfAVRt>{;7PTcDz|*jd`%H3Oo;58V5qMj zounqJSZeoz%i!DTThS9(MpOe>CrRd#wVJJm9f}}fR@q@`#z37%8mkXM%z5n1^K`vX zsxTHAt|Yy*To#hTkKcnv5r_MgVOR`PJ*2z;3IZBlJFKlOBEcw!&_m-_Vq0}Qan}k& zGf3LPwAL3HpxHo8lxD7ftJ5qJbSpsp1nV;a&b}=1G0cT4_5(ZYJ+W;uH-VY)Iy^o9 z@5jh5IU-BMA%S`35o?E9!_0V`<2G=a=PG=&qs692d`fuWuNzP4$eJ?8Vy0WLT}g=5 zA3oAL_G?N5%mh+vSrX=6JE_^V?9CCfD0^=!4=$8Fr$1=ZoeVVzBKBe?XnR)9hdvX! zEo>!s&-w(0_EwVqFefKnXuc)r^|*$#xhLRp z9`81j9EF|PJkd_o1#p47HA8hyAvCC@j)cluGFyISffYl|@B zqBY#TR{J7Kwz;|49VjM92(H$CmZOT&KPQ~M@`lY@4~3)+2Yq%{;QwI^OuWq8!$Q3l z+@;Sg_`n8cI1OPGfubFeUJUQl)#I68sIU_VuOdAF=%ESE&~tHPw+;;5w{|?E+c=+~ z6))wObebw$Ti4vttUSY!D^vEV2NpXk6z6cX+k{jODNbhjtNqCwCX%EFa)K-pcxZG) zg&pu{+|BfvCMDI|>#Y1s8?4J5l!^lpH1g!PR?<^!8eD2im(nx$HJDP^xY471!4#~S z32V5&8GKyx9+__OQtyY2l)WOkmV|ypWdKh18GD<>j)#vu?ARkfZE3Kcuo07u1lG9~ zDmlfEhDweIN2b1&Lw=4#W2+3;QQ4^;ny!H$r-xI zN8#=c^G{U>YV$6tIOfvjJ%6chamF$Cns{| z8uYpZWY&4^(*?`FKB)`H zV=A(H4JYzmbj1XSQwGKg&P|&ymVSMh9|6IFRJFoCa|wB2ynrMEt-DlLX=PgsKg-0NSw|-}Yug6OTb+o@C zR{l0(QSr8e_UwOJ04lILG!3n(l;?Q<#*tj0Y8Kur z{(1s1B?KnY-dLu0;iPA3TRHCl8U~ZD>P_kMuRjSF#$R@l;>Z1Rn|(X0lTpjvIqMZ2 zS8B!{|C=3oP@_}Ma*Id&tu>$+W2EI9%@)zlf*dv8>i9-u=N)RPx#m`WwyiV`1}U`^`Hh^?%KtT?uz?JR0_ZL6}ve zI4@IES6t@z`o%J3B_&9{k`x2ztIQnN(4Ext?dblf5Qe0XM97Wb?x1}QgBVWn2cd3qE#8a5Qc ztR{Z?cF|)(6~U+ezRXS1Jy6{d)N4sEoXk)yI?1f{5XdaBD3zI+>G6dMr+ToCW9phS znKgkI>R$s_huHZ5V!%x6t`{bVw_)LO#SEvZ<;}!Jm+yj5lMir|>4yKvF#?s|(e1wu zSEqpezaBhCZH2sq-)os^czp^+%HeYCaQ>3Lx=_kKC#;JI%R=O6a@yjEicY#jQygs| zYDW|{vsj?|)Y5lvW?sYmUz_x_YJ*@9A`ez{Zk%TyEtp;#VW?;%{%-l1$S;#cx)Wy| zzfTJ7ykr!JK=T3Mg)XBK*LVtL7$5D}s|TCN#NYD>iKK~)>er02OZN$sU5MQ6d=(f~ z!hn7U``k8XKU1O1km8u7>z?{X{@HoM$y0<@^q19#t9Fxau~^5!`nSkg(!tPZH^!x| zDyYLs!gQU-_M?l9w*szTDdh!8=^ViVuW45J>`1RT0p=iqZc+fLQ_8L~6;XhClCruU zMps@)A;+$?C&$1P;H8A3e!w`zefhfQPoeUCV1%AL--kb7uIp`#;kYl~i!LaX@Y^U7 zRszn4DNit!8anBDKH0btO(S(wE%;xa!Z9mCKQ!XkH_+0ijNA&G-RzDKz8+i^wmGla z>JP*X2|JZMg*FBjRXXUw7>Rxl<#`+?YpZnv!P{T=JVs7KGZhMzIcHTugS-201F}G6 zyliHQQk8M3Opq!kETeFrRXI>9+B@(kXw{n|aC+t_iUeJW?7W~sd=1DZ1E7 zwBQ0ri-HgYueyI74vUvQ^Ux>-$1T z8c~XjkNpQ|z}3Yw&@@u|oL2BKW>4WgK=<~1)zJRIWq9}tm_7V4&X-XwgYR9mCaAQ9 z&SBdL@g^Ot5hzF=VLx4vhXP>S`096u{No)i=!S%U8q==e6uBW@i8JD;f-`9oMzaRJ zDB7V>L)(Fn9SQCdSOLnHx7MpneIja5G7^6fHZWLP@e5A-Pp|MUrH6fB+%f{1*MU=p zawB0HU+7eV$z??6(;>$gqBI#7x=%HLQQ>@HgWpOfjS>mgp5ldTC@_u(w5wMMO6C>1 z6uCf(xJNt9c6RKq%ORA{_$1DWf$r2iTjzWu--mu?E@39c+UPS~Je-g2-_-#;IyPU~ z&ACYFzmdyVU=2Ny9szg{t_2URNgyymyK}E-fYiBh;Uc2Rw7t52 z|3+nDi0_EtvR8v3D;5HpN<@r@zS4OWwvp60**>_fLd+R#_NKHGP7IbU&i1+8OcRhMcW|e~08T|8 z9BMoB6jo~VH+w3xM=8=n6QDKDi1K#)B1^Gb{g0^GM(h)j>u`Kw#_ z%DJ~sx;qd!w_epvV7MI;xsOAFKA)Q4FiU>37{G;qM$JbH?aL50YqE5E4M!d772DfORktzc=PP`YC|nMkX(I1h@Dk zz3b3J^tp(!)9+l~7wZ8mCH`v>FN>ITDCl@|M1djvy(1nY_7yj4F3Q9Ok;Ac4`yc*g z@Vb)&P&ZCuao$3Z`nT52e(boD6aA+bM+8yIxd_w&mDc#oPH%_wVQ%hQr=#d+&rM~0 zUu4*oRh~i>GR2tv$4!`D`6?Sr#XV&+V9ES)EYDp?Xd~b2$U32OhNjFQh2FP&#Tq}{F3E{#OMl3kC{)jo4#*(4dEh&b7++1JQGL z4J6C```;YQXCVPoJ+coGQ6-Wj%tM(Uov;S>Y1S#&CmMr_?D@L&K1;?uh|y|jw#vJu zU@EupT3f4lJl$@WqNLh0VAF!~LM!d;s8vf-ODldV%j!NnE z3rTWdM6(L01iMXGC5FuAx0R`BpJJ+2!u-{Pp{`vR^rfY-G#L0o9E>QACMkca*g4dt zZCjRI(l|#rtXhj~ws=8{xmZcLkD<&f7EV7ny(JEROe8z3M%#@AFq3gMF^P1Z!SjBn zt-7PB68pr6LZpo5v5Am1`N$J)U_?X|f5X?aLpRfFL%Uo-4)u!DXRKon$;Wb=MEE_s zY*(C|fnR2YYJD*Ex&KQ6!rKx1Xeb;=psdinn0;jBwMHkG<+IcnkLY(AN27InyWeyB zfJyz=d!$yRlC~QF2N_NGu!?yzHyRXa`tbMV&EmFXgNZw$11BW7zeW%Ka<`-I06=U& zrm&}s2M|fW=;QGX)e@>3l7e04E(yj2m8Ua&fOnpM)#n>~!p4jKJE6AIxFABYR6i4s z@ppH^!6RDEQN;4u0R+{M&@qcigRN)PG;3;Nya|eA1H%LX~n|c?l~U``~Y_ zJ-+}_jsK;@<_y?GvEGe_`crZ~{I#BUlzIQ#6Z*Jzsr1N@e594!nnz2{ zFNJZ*4yGI`LrH*LsJ9tPQ2FNUS81|uTl2v>y#GpIK=Lf+ z?fUCcN&;aoRJW;Glk_EVYAqsy=)CScSdFpT@(f<(nohbG<;{?+RvWj>qIQMrZswbl)lXkseGkE}eSAn1NsqA%C1`dGitfoXX`{?)bGxw0zvqG)G2uPW zK(|(SPuPz`7A&4;IdF;o(kO33;+mJa7JUC9lz1+ZK8qq16N&4e4hng`%#I2+nZZ-I zo8@HvhJ4$N#)7lYwfoPVM^NGU*6_q-0vgtOE>f8=&flW^yH{s*zDOMyI^gg~01H7M zhq-Qa{3^VKG4D(`y@CudwA{W>wLgZR3Ml@qddxn4R0vV3&mpY)9>RO(*{P=&?H-5S zAZRDo!$MZZ^2Gz>)VPKr4%Cx&@uc*|4|12HyxGFwD*l3DDrhOB_i7~lOmtT{&@R?t_3=e{N|t8DNEa8T5V{hce%rDmSd(wmwTcRIk#&P#<%U=; zfSJ~m>57WJ!{($zpH#l8p(=U(0$yoKu*^-H*06Lz*amy}{Yw)cvyK%)@el`moSDm^4&l;}evz(x`7-Q=#6+COSQypjGLW^q2<_P+wV*p`+^Hp~yG)EUstHm*G^OPA^fa8pJ4) zv`Do~(e8I9b+|YWe!dQF1lT;M|1>5*n4;DcU6KwQf#%4a6L_T$)pl1KYwI$zgo$l+ zPOlJLltt!O?(Jw3l}hULc?i#FvP+H%uj5I;iZZ#rAY!pNHMA7(@)eX-9Fb-Q z@O_($!k9)oI|JWF8*GKKHC(Z=%hDf}n*hqyF0@Y7oI7G@87<$iTPE!Bzl6Hw~!jcPyczQV10 zJ5MI)n&9BC)8!SoL-ItBg_gzo%%bv}K2?VcK>%5_fG>K-Wjuu`~cRGONXsPyvtOAc>N;;$P^KOe~qYFj@(gPKUDIj(*Iv=zO zF?Cu0t`%-q(-|^||77g8JzU%Yn0TEBKk(G-X8B+`OsoTof@W2zgPo*rWt+T*9|4D} zIrRPDJg?-0u7Eif>4}jTc{WQWs*$N)s?sJKRsA=?0p*z%c3VW3Kum)wlc-_`oVC2P zRNG1(W(>zMK-YjO*Rhj*N|ayIsj;CsqT9L<9GDG|?X$Khs$}2qge!s+54uMBq`|jy z2_HX7^^Y*685Kk&tJps8w?E;|m<9)4^#9qC9W@{~;P&MDD0-51h^y@hpEvwS3|6EF zr*Z8eM(o%;bPKQ=wrp*isl%hKI2_r6x9^SkLEH1w{miQX3c~U0l=k;@vqqtDQ04ywG?%YY$Scu{+(UJ8 zL>(wS9tLkllK}DmX4AP|9Nxd(7MO~GL|?Ar%2O%ClWt71|JYjpCyR#v&jUpG{7v8sVtXvr7i}1J+`RrJnXg^5C=TS zm+^(q1Mhyqn>50yKv}s^+E-b@B_Ow=-5?35Cl*_yS6w^Cm^SA!rZ(q*^KCwYIu=Ju zqB^OwKO>}8leT&Ej}w?;7XU)zDM-3FQXoK*6p&5zOn${AoC-(OlCH)`O;3e)1FxG8 zK*M!R6u$3xpcAkdaMP;cLYo5BcEm1H)cwG}HfR;VZ7gzD_Vdb4jRNDNUe9C+&io>H z%AN#!EoxQE-Nl6Z%+{;L2I@#;Zi33oh>vtGgc`y!%vTgofmp-PQtV0Ai!G^;80QvTwLd{q&oRAJcEzu>JI~BULh}s>KVmF8D_x-?)ROCJD0j*+ zDUTu!eK>%1V$kf1^2KVCmkuTo&g;Y=&A~n*ez&jXW75Lg+3u4p89}F^QS94dGoc<) zq}}Dy-=;7L(=tq5)p0rm!ZCxztIP=cZa8&ewyiopOLH6g#RLR}TqMu4a2$0ugY#pi z$`CwWKskBUEm@>vVSZ8;Mar$Vp0_HDD;<`z2YnjW$b2J;7jk69gMZ!WHMBTfiDaji?0Hc& z=H*5(`Q6AyK~3vXCFP9;Hz*sG;ZwBsq592zD991`mHSKsOe6_`SV0&toHU3g`fv=p zE7ws4j5vlbs8APrt?Qnr0~gImI_0*G2t#OBu7);d?j#3@qc?rAeh0FBDW{-9Pukcp z>FSQAe`)bR%72DWr00OAd)uEwA#+~3;M83H?5ab^yR{aIpA{-UeP=8E%fO(fG`3mG zH@JCi+udv?9^L zx%2H!lDcGxs*SB!0v>Z7-rg>+e9C-eKu|H>U(feTmc~O6yP|Hd*T{cCzl0>P3|&Kd zkdxj7ejt!T4*y$GSapc|z$eR0O!mIBr@$(iF1f}vko=QgVdfXB3CJaH2`q_KP?`Qu zN|);+{VmU8xWJPHwl>HV@=>!XaZ&nn!ipzzkQ2e zKG;2h_36G>qlF;~^*_S-X&yyY3_|S2VAU_8o?qzw$T$02?r79 zR=)>-YW<`#pLzopBB-RJFHdi*cQxW+{+p?29uZ^vAIshHcSb!_ZET|dB%UOK+t`%u zJN}EVR2Eo*<%EADn)20bX!=Cvj6d{*y`;=E`>3#dppS$d*!Rf5bomB1M*GE}@yj3j z2|6lo`@g2S60ApC4W;7WxYOok2b>Kw0{c4GVSyRjqn?21bBU?HuWWII5={3sIvS%8 z&_2lvwC`gP?oR-zcLG(W?e%$UHp+|^EvGj1R4p}g8^(@tiK-P%?igT$+33IeSp+4T(2C>2;D;PsX-qD;{q(HsKK0eTx*#~^;$7L zbn+{5lW2l@O719$x_Ew&#KRYh|3u`oh64bdS^qzI)nUQI%JbvOJSzhkB$tnTO~A1@ zl#B%8M{)`g-s?fYFUj7cSOv7lg35|cHQOC}8N^{?9P-Nht2Bx6sIu(vGmS>q}R@MbK0&nBc|nyt{wf*M#M@Kgeh#8WOp~Ds%-pKq1ZkgxW z8UDQk&PD-d^$(H=vtro7ZK#&hlRz>-UvFzkb{)8xbLpxTFuYc|7~R@t=D}*ya3M`4{YkOUW{D ze!Y1NxX?f1Y%=qhMfob@1U*L@jZBbp#`uSAVom|`s|*OuFN+i~m%6MoFd|w60)}rU za-Tk$KAoj0A)Wx-)a393zy$xt#Asi>Aah`a2r6k|^f~SsU zZ_C-?rNhFxbi+Om4YOV)Mg64}6FS~w&me(WRE>)1^mi0c65jF$Y`%oSF!xk;C$4{H5~r?(qWiKH%wsuv*^zk^R(YdTJABPSz_H5%iiR9JAkO=tETMVjerv zHYGae%1xh;2i=-zM_=~J?T9x9`^yJF4~A_mw+S+eE9j11V}h%Z>NMpbPN&0=* z=hV$V&vZTlIRndi&LYjcEG(2NwoSVKLZ%TxOyi@~if+M;R=J6CGbppE+u+l~1YS|v zqAPF{UEOK>kQ-0m-^?U&FU7Jm|M~YC=wD(yOeTTrF=_+?S1HvGT_l1_TlaSk<`jci8)( z37Vwsa^TXn5VRAMJ0_}>{I)u}9oKC568vjr<9-KWbnCZeh+J4urvG=y?gOk)TuX^J-4u)k4SMzI4Ue)4+D(cdI(S)cMe za=s!wmA2Q10qyV0U}qfdHIp%G>Lg?_1EgQK~-O+fB9A@eikjwl$mjk!ot3s_`Y; ziNoKcrlgJATmouC-8%N6<2jl%c8&^x689X;*8!5WC~-a5!hwAXdvNj_VCP@7|6+g> z-VBNRhiPik2LUT9jrxY;SLDtqbz9JMH#qYgjh5!FN>z5^hWK@2NVbhoY>lTYl$v@XMR+{Y;2Ca zA;A3*7M}=y6*|K9 zmnnjP85#Cd3hu*1SmYKAJWd7vpZQvG7R(uwc?G#qVn*>h?}IlIzRCPg3$T@8Q*kaN zbCBYv0Swb)cYXAFeLKSKD!eb8nS4iQW3Qp0vL? z3G-OI6u+bYnJ$K-wMu;j(PKx+ovYo#&$HcgMze4c=b>gWT$a1R-5lno^3YR1xx=L| zifGfuf=3alRIYk-b6?Pf@vsGN)TL{z&n~|DXMnTZHyAC)xw4TAJ;hZxTQ*x{!h{l{ z7*JiAW5wTD{YhWE6woMV=FSX_(sjZ4$p&MTuEUsmry`%h`YmVm%&*wmYK}$O&mH3; zmwiEf`P&z!aKy20c>&BYJwZTqNPv8S;72Qyd)a$zsG)0Bnbr7Gk%CCl>jBzVxTDgOP8$i=ju3$`e`whJ@E(A^CK z4Ba5z-QC^YE#0YfNJ&U{Bk+(C5)z6?h;+Af^WDD3@%@E8_w0SeI@elQdp`AlObAI= z(`oaXu|hz=!Up^D;pz3U&&R^_P)@USz91$+tC?X-%3kkm+$6SJ-&`?>-zS(g((09X zn%8-!4V!XI8XQM5tr`)g9Hc|^-JaZ~;YPXNe@rJU(L|YAJOb7_{BGR`6`%xNE9eL_ zR;l8;cFBaNvQ?%vi@@>bTh$N87oN5{dR=y2YMksat_4cdo-5(Mw1Pi&Uf zwq*vkMUK&bVRrI9dDX7$oWC|HhXux4y)t^I(rUj;`0)HPiB{23o9*0N<3>~`e7C!2 z8K|#dV+?29T?s46kgm@|p1ABn9@P&1M7%%uJ5G^y9H|C3{RFHvj~k4cPN{;*=S#hF z$wOjsu3nC#{3AUxL7&XcX!iuq5Vgzft4W7wIgN1F=0iW2Jgo2N+V6;c z^|DLPaS4<=*Kh+6ie(XI2YiCN;tP8nMWkY{EE`ct@H^YN@o^R`L;*_0)pUtoKn4C! zJ;4Z4<`Bvb_#s>n2ZAZy3n&XIMr+!RHD}gIZJR(*2)-d0VR?vK&m&-Q!9$W@0XYY7 z?Iu#cTZI7o`Q~9$q_Kzl+&c0UX$0}Gn!4Qg^!!+K1}~G%Bh4~kp4@eG-UMGMYCiFx6B{7YxwDLTeDA-TTnmc^;`HXUo>1 zcML!GL|{`3&!aL*jfdELiw1%!k_0ZFHNULg{HmTe$G^#)O0t+~F7!P!j|L`u@e&Eh z9#l6E!ufWn9s0OaH-@1JHlb`*S=!HTk<^Ir-pmeFZHm`YHd0EqScKC&^q!vW7WKD0~vvc!vwKKv_mk?X=?G)oFrcAjPsSR3xU% zP`vTpHX{~6%Bq67DL#0s(>3QO4ooJmzsO#*j_UT5$580e+#b07gjyMyyN)j|=SZzxv@mQ?+0qr9ExSS6jlWDDHQ# z>Zm#V64&26!O*V0BF|Bh{3{{LIJRZPiVKT`!R))kmuv=07OaeBlG6f<%Wyq77Ryc3 zzJ5Ba3lnGjIP@>WiR&XZ7A`7MH*N_bi(63yw8_NesNi>`y*uMc9Ci~&B7kI5pn2sND&rf=w^7=tk=k#82K zqX9!Y3vNhrfQ{_gN+}cI&P##rx>LkoI{muJ)3cpE7s$L21B67TZUZFN)g;hiFTB8L6TN+q%duxhfqx;)7{+LwdMsWiZWmnay`*b*yO=C{|gG z%IVo+xvaevpXu^9=rY{9kfpKKTmIP8Wmi>pF5DohWb=*FYUcJ}rM<1x;tdFf_`$(y z5L>D?_NKUaHO6^Pn6LQl^JZ?YNEFl(7SK@HRFw zoEtsLKoW!1+WR-!oblc}8uHlpB1>~`-;Ede)mr+j>+J*nq(X1OR)~B@YbKogh(`90 zK)MCkSd0#L%Kom98>jrjq8Ki3oSuMJMXeg~lRbHsDJxFtS4XdVQamNG1rPPgDu@*m zSy4*tiKM>`a}1z&Wp76+zBR2Fl^Ufc>t_=;h}1*@EBx~PhVby?!?Bq>l5tqCrdO{$M=u2W67d*}M4XULXO_J31k=@u6jO1GK&oho1J4noW+kH@ZbU9kr# zxv&+ETf1pYdAM<9c zDfkgQO~kAh;0mA+h3-^LWMNYbbO&1SdBpnV6#lhl5HYc@6Mt0+&MIYld3=tYC zLtHfgvOT)8OQ%zo8FM2}zFlyOisi^*hE%@JjYcHjf!|H+;Oi!KXlEU-6(`Wpyl2w; zPk*rGkztb)VGFyq?7;sn!=tZAXNPmVG?AV_1=sLUwjE2EzM9mU$W=`32d`iggQR3R zL|1s|U}b6#)~r;-L66URX=9yA<_4goZ2pUuNY~|)h8~#s>R_dgIKNh#YMV#rnp4j) zK7*V>tocU8sJ17g`{NFj-XDLczgQd)vT$F>N&lApff+7VYgjjos#69(f&`nYMqf$w z$`f0?GAu`884r3Wy&%MvUzq`W@j~^G0@+?%IER^Qx!$HKX8AD-$|11)H;84!kgBcW ze&`?GK*x<~d&0Vm8jF9#P9iJ-rrAEZzYA#8Do-6%t6*VKXYjP^L(9M3!&VM=;->g?FBgEC!xIO=J$F?4cc# zfOX17YB2ilU$8H3w~NjfSoCVm)@Tyhugf?J`bLvg55=AX-aSQ$wTqUO#-beH1J6c6 z|M+gZ)iDbz>7|C1f7QdWCrY})(u$yEM)hae!bJC`FI%>Jt9~y|Y9TzuzNfj>w^X$Q zm3%Tii6>yn{fmA4A4}S9NlT{N%%y&DSsD8AREQ4|*8=wAN40}t;#9A@w9?Ah(2=SR z3h!h%t7M(Y&3{k(yjj*+SOBz>tcI{fl}wPHdzHhW;N(@OZJ75yEip~;&Ko`b$$n@c ze0InABIsd-$4$iz@k55ij^Yw!Qw(15;pDV!Q#wnh^l4J~8P=BWcs(lu^L zy50!k&oR@8qRUp&S<5->Z?^oEvVpA@em?3--Zdqva8*p!}Y{K}M3QMPjB| ztAZ&#nw;f9iYj^#>9yHxqTrEy>A)N@LzbZ69j7|DU!6mCao>hUnRVbw9tCbGzM{Et zUx|L(WM+sfp%rSE!bBNyLd@46$+r+Dng}6M`CBD3SL2XM%Ss{)%oo~^)5;jnkic1= zj#s93*>z-_x^xch2NB<>$Sq0cPStldVeVZD?dDjY1EVHfEb*tN?4s}RX*Mk8zaw7E z@N7lgSRP-!610yte0xf5;)UtH(Hj6Fwa`yl@?rB7bZPOU%Ny9X!!{vHYQNHHiq;QJ zsRcO|C)2J!Q!qhxZdd%Z27BKHeU~_#F>JM~MokslbcxUDF;DA64Q4~4sX<)cx)Y_M zs>%rDe(N!YirvSDg$aMb4~J6suY0MnD-+_{!^F)^^<|4q^ZY99tKCVb!7Z2`M0S!P z5V{6*J#FHzKEJw2Ff^9bQ`)giDQ)Q$Ww zd>Vx%R;60|7Fy)JhKl8D_!$MjWAC2HikyG)IaF-YCE`i&t)Fq#UGfguY}!-uu5Lu^{rw6be_*g=8% z_m#Ex))AWyi*OK&RF!#PV~gu2-RG`ip$@3D*|18%ew|b0InaOecmW{GSyy#(Z?D~r z(Q=B87!f2ZtPJ-mgzXN$ya%r(B!*JzZ7jB zVTXNEW8bvaY)Zbubrg(PJar#NorTJmve`%Y_Pslhf&Cz$sLQAJ1pLIG))-jyqC%1| zsup8JbMbd(?u_b|i(}N7!LldW#%|Srem4GhDkK7c``zw{>%L}wOSXX$iZpBt<1CFt z9nZRk!uhas##p8$-PM%|74!MZNPu8=QjyN5OCHi`$tiMuP<`RPc zC^q%509RB7mW$hb4U!LAcu5M~yzq#y(lp5wTo_DZ1k(FCrzsh~D%$p9(B@}a&G=Xp zllASXRswvtMPT*>grrbw#4`H(0`p%(9^?1bA@Sp6Tj^|Z$4Flp$r8^w!$( zTP7qRnXZT%=W`P;j? zptR+mKidkW_!y7Ox_u6WQs(dq%A97Q+*NQTG}r&QaA#V8(I|b~d%j&uac=0cqxi!6 zc^0E>27Z&=yQRNbiIH#$euzoC!l7sQuX1__G}Yz#x-qQ2@A4_nnzyN10dexSI<{gW z^QCG?(qny^z8v;=)_ZIA5$XMin&3`m+sl9;iZ-HgPkzG(`c=f=Vhgv(e#FG|FN(QM zdaqqMW7I<$lY`(ppQvEA%Z0Sae8f?q6_!mi^1ppzw_BtSYdb4 zx-fv}sz?El^~#siSNk&&I9P4XRhXME=3E96HcBKk5h@r3p{s&I-z6rZCN^}-`RV(- zHgr4t>HDj)AVz`^AZf)=8bt({g5KtPT>2TG>9d!av%Wr8Rm~0EhK8;p8dF}LNy4Qpi3J1?KE%*Zuo_WI=^oULEd%xsS?)gHIy_t?!nlgx zK&;vo2X>=1l31}=<{T%|@&=M?GhW;BkbEIfxo-2iwYZk7a74*Rt>$`VpHdMT?rO~E z#VxDlqO~^3{gp^W>jEFjsjRu0egx7T|8`~Org1%%(c=B@F%=-%3giVf(Jslr{g^522ZD7-!?>n zr05=PJgK~js2VgxYg^ogHcktNU){b(E9(mQjZbdoYj!3CL&N83an|ilHKx&K{cRRb zT20B&1+)m?aZYv0uJFXGjH0J95r7DHn|0{25dRo*v*dL#&hVeuZB;uUf?Y7Q^&3EU z`1q+AB>l^T+jo=X`m5ei?rUVAx#19qMT94DQMAAU(Y(5lhyZ(i;+0{OkN^>+zk&*_ zo7{|O91h5GO6ZTJteuJga_{lTyB=<1$98T`Sr5y<>MOqKGAoF1&E=@zK}SM$AlK+l zKU~o}9y4vAfP)v0J{XTMs28pia*&H+l~NByDML*>LBZ6sr-m&}>N(JJ$IT zd-!hJ^lD8iOG8T{_@WBm;4|Z3YxN-f3+C?*87kv0RDK=;tR7y9-w5Wccn!b0c^fwW zCU!{lK;FQe&(O+KwI43c)hqKLQzyo3Iryl5mT0)>m-8itPm~iF&x3?!R2Uf-L`KV> zn2F#DH-BMbC{W5O^rp8tgeOHxZaP|&tUJI@pdU^a-$CvTe;7(d&s!nBHJV#zmNoQ^ zrvmSydcU&5?@LDoh_bbzz7?aJl*5=I=XCXVd5I^vAM}(aO?qZFM zgMN3yzaFBVrdg^>cgqC+j7}9Tp7uzbcNBFN@(J;a$8h~m3H;@=!8^4@yjorOu4Qs$ zz3yDNW}#C3s_MD|3$NhOLHv9y5*veT>uxkfr5#L}hVx7$RC)aqZG4KoQI7z?{s1kk5;UcNGGWt*2&|;uK zih2IP2rNJ#Vj~G07brsf{yniUj96{1TcOO>v$v5MTFklMy4?OQZ*sL$d~4h2dL(k{ z8{(u!qfY+sQzoOZ=tulnJ}dkDb)&4mKEYRI$>vh=mPQ*d$WqQGoEG zN@ozZY{ubd#3J6})uzK;^uxS1&#?R4YZ498g0&oO%eT6C)W@;(Qr$}PSWPu3TAAWE zU(1=Va;>>tIom)Oh|VYynu=xQ_m=bvF_v%`QJrgSn0dJ;OoZ68cbq)hUL(oFu5ieq zrL+Bl#fkA1SICdG4<@CgyEVNoYuxBhXgR{gURAEm&foD>Qv|Mk&qrFqe<{#6#B%y^ z(-#kgpjNTeIZIpT>H-NYoOmVV0u6R{`)~J~fp4qOAY%Zp`XD8*mroKlfl^oNNOTmd zj{uJ|Yru)_Q%XcJ9scpht1-hMtpob7w)>VkZAICaJzP$Ii_+@Og-&M#&ZLUc)ercy z-#AI5RU5Q21gjhL{_8d^dDa?OiF7o?zbz-c9vLmlZ7u>GcvzaSSi${t$!I2q7O;V? zA&+mCs~-J?DE0mb^{?u`VF1bF$)-IDiSnG$GV0~SM;N%$GbvMyBl3{D$pa0fWDy|q+OnQ*M>DOGxKOJRyMs5RxchS)uBlP&`7ILO@CG`f| zQL89TxXI?RVPf#o!X22pQXp?6*k@j~;*gl~KnJHJWkQHexaglBdx3^pwzdpTaU#Cu9(q(W@X~-_?&=57UGPD&5UWr;=*tf3}goZ z54+st#V`gEPF^VW;~Fxj+5x7ht;)8-*?AY_8$oB5(l~v+ToVT=GEzEAardl+OWL=Zw?!xmq$uF!c5u$DXn#vd{CssaQvjfa-2v9; z*}AoQ^Q@=j#Kcw0-YF?5lRyJ*8`#})l;*q}FgZ9on+h0j&?jFWLDB>407Hc@do1`NNwnm>J{^X&Xp5t`blTuF+lavS0D%W!(s8mh2T3 z?Uy4Tw^GfgbVZZ$AmfY+$Mt@B&%syStlZz4Yl&blb*6Ac*xmozq=1emaXxU3LE+0k zYcDULik<*=y!^QZ1(`QDeoIcZ_1pFCA+`V9YIFnsR2Bv*i9IgOOaSB;J44~yPfz`? zx3A0>Jpg=LY2rCTZ~>s26Nv;YHaVv^WKMc~6=$08%z$?>U#cpV0540mkUw-+{DIVxDT} z=Cym#>_Od=8LWhD+_XGuJ#E-7T^rbe@Za~K(B9TbKh~a|LB_*77dtRa$1*sGkZ-d}v^XZ`%g4o;^CG6N;J_R8~?C>?^5k;1ZbW3S${`0EqR znj->Nv)S`ii9oc{6y79uclamEt?-{A?pkt2IUw9weB{J=dQg7mv3yOttX6eq(9hHM z(zgckV;zt;oC*SqBy@%a!2^;Q&K;{BY;em&`;}aCkH2CGF@S$FI}j7JPv8EouwO3< z1J5Bc-04el*9Ntl29uje&3vG_wuFQgu|0#LjG^d#QvP>r{Ms3iQpb&}tWmcty?{NR zKzVoCDPYDuObOet7rP`e1d8*gZ3gkQe;|3r+Wl;t*!I{Mz`a-gn46;o4rH&qwYBwl zp#t&(fT3BF9Q`ZR)`O7oHn1CHed2{K~oZu?8K6Zg``v(#rZ(w!G*rei&<2zYjB=!6)YK^ix zz4#+oi*HZJwdI8yhgZ7esCqobCFKho9HmghUK!FDe*%NR3t#`MgH}7&)TGBjjcDED0 z{h%1+4P!w!>363@rd8^>WnxaN?F$sGE7{f`p<&#&ou``AuvMW6ldWO<}rvkC!-3dLE7CT+u?{RDS?D=3~5sn*nm`4tUrF+fINu~ zjsjkhTd_nEHJ|drb7Ibi?WD!DHsv^_*63b7Y6+10BO7F5x(EIKy{%pJprbi~@JoDQ z!n+t&f{uYpgo`hg2^VRxL-n#jwGtj<6>r>t^R?(!j*0wve4l0X@}l*m%eDwOIA5&`nN`n8N-t#1K0zHNQ$$)7PzaiZ39n zXwe%uR^M#~W@Y5>Qehbwu&{qh9D#D?8Ci~n>!XFq>jm?(CsgEVtHH~sm)m}SW}Pve z_$i{^eOZLpeY*V{@LtrqW;)z z->v9}H(%YqA+BnqEU4k47AZ#&^#??@XX}oF=4GLJ z`RM447x}Gr^>8_D(-C)oUXj64zt{4Ba zNk!a9viO!xUD7Zyw!wO)_MzVp27jl8B`{9%lc9#ew)X+G?gqL0gI~$=+Z`5jCIGh2 z3&BLz3Pq%zgwJAmp3s2000UPwl#58Bo&nK2cVq<}GL_m9&#?WHI1>*^MbgC7vSDTr zLOsHM+Nh4Q$gfM%81XZ_C=$E30OpU0Hh-4`N4mDv)Sn6jAj7#-U?_}iEZ z!M->P+bRSb_Op+0DCNj!9MypY-1!mM5aT3BWjIxkl1f=bY`1oYZCaVi799kfhwP@{ zphQDu<+eR-c(AqD)d zkk%!vd*N!M*5f!=P1@gN8M;-BSLggE#tXacWN@kYD@UC3jm?(V-rQ;^f&}WuuEzK* z`tXOCd7tH7CpRr3T<*5Lp1b9zCjOvCtizQ<=!{cSu+z^17ydJ8N^9sFzK;=!?s)=u zQHB|j%lD6>XAXD{vxsn&Pk+3UL1}Z{t!K zI;K{hR%l@P^UUj03at`Tgfb~PmkfAb&dz-~a7dy~txn@nyaa?;?m2@NAt!My8TMZ% zXzu+X$9rXRtaN`T z!Wq&BVkB5)z{KD3`8l}8_a$kv(;uh+cx0ODi#_zO$~D$P#7x9QTV|pP?oaIEJ6BjT z4@=?&C=AVuz%%g@4nQ>y%bwsGfDJMMHw;LOwaDrgcQK79SjL2qXzk-C@} zakqo(1+NO4X|dkr8gUTf=+-{C)hmA~WWzbBrse};y5>$0cM;X{noUpD)e%#hvx}z-YLQpy)4V6)sdmaa2N0 zw)7!PJux?hx%6e2`RK#N{p&;HYdR8Du!h;=@`BJ8&lJ&{x0oms!v;Td7y;9YcN6$o zUjZcX;FnksrWVfLJuuoY*7mjHxBv+cc_1jL|0H{&uys_7P>M?LR%Y)SW}@iyQ@UtX z{k&s@g5G2cL4ojJp(*SC3AFeCHSd4g;rP!Fu}41i101wfpP26oaJltA%Qv&C66+*< z7}-5y*&PJ(?MNF3!(i2acLF&^eNX(H;8ez~tqX%ds?op9>{(2?Me`CLbrB)o==KFu z1V1xP&)(#gd;%?{9=WR-o9nzvXt}csS zgR>26v44H^Up*Kz4=%Qne2SsE1I}WgJ!e9$&T6mg753@xUObO8R#H*y8Bs2!Z(s7k ziee*6)i-5?7arG^0%SM2=H<69t`bbh!%jSs{Pa7P^~RWe1~d} ze>(9qb!iSr&TPmZuq|mQ`Gx$-h)S2_OwG<+7n5R@c;iu=#w1fOr^uYE9*D#>fVhPW zHH5N^9dF{3`~K9t0A7)mta^O3hKz;C;hi9}IQWl4WV!~;h8E#Q$&?Z{vH@y=Hy%~e z9v)QCC>Gh3ixq6i9!#vv;1#5XqB?h6r1~G6+R~)a$-^k|+3X>#j#XNhQ)HwjzI_@| ztfoZTMiyW8 zWhvmU8@%58fi1&i?KOrD|$iOg}IxbVRYNUw--9e`v|Y z-r<{uNY?W~0vn=3Qhk$a$u~-eDm!|mnPMRfEyl0H;^W1hv0gv^O66RTTJqPT`|8yU z=640^wWqa`JHvfBIN7Vi$*Q)7Oj)6g=HS%kbow6YWP)B)_QwTwAj zBiaC=&3pn0ckzz;;05d&ytahkvh02pNX_g#L>H*x2Jj>5!- zIG7=uZBFkjTOyUXmo*j>I+q*mu}niFq?nP|NZl(s$!7lguK+pUsIr1sGEZn5L417&AQT@%5 z%|`v-Ln;K$>W{$wD{Tk0V$zOayo$2ZXxt<(c9I^KHK&;{6+e%_f}O@FjQ<5JT#oQf z$ydoc$bSX*neZ$`XrK4p_ReJCG9Z+39tutvK%KkHS_)HX>+mMh4g{|b_4~USf6(Iz zh^2Cg10#r)VvmeW=CG_^cwUdb=XT+PKpGp`~48t`%7Dhy)<+`9G5aOwC z59f;t&GUQu7kchLXAe#Dc*pV&_9eu&jYR>wxyf%-)5D>L5rJ8&rB|rdO02e*izq*j z7gMAx7{L*U5vY%a+(E~xTB&f6izA^D7e6j}6SUQ65<<l8b(4D$gdvm z5WOHG?CEQmk1eT(SQNnee z+yb4{44UQ-2Y)i}f0$#_z?HL-OqU(1EMpe4TMJ;8vBTSpt$3wgJfzn3d;p4}SMNDN zYL~7;sq(g}-cGFG5$cFB3E&Y#^^B%TQDINyiPtAD&?1K@7%8~W$4f~_OO*si$ylj+ zJ)^%$KFbH-B#LEv@Ot7hw&oa6EmD=cG+$0%_U@ zS$!?#WsB;y6R+DQ(IlKfFTr2LFb@N}6@6~F|I^8LdGQBLqNwkWh5dA(f<`L_Dv{$i4X-( ztJT-MD(C75{FjgXujVLL_s!Qy61LGjiJZ+`>^RwCI?}_69k;(WXH;h~y*FTo(&u(4 z?Ba5#K?_k*bCGbDlw;c^n7I$WW5t8WugD7+Su}$-O+3s4wuKfo{3W4YcZH!32gxQX zQsiC=m&+zdWgMb7da^Zg`0sLIS2} zwsHX*OX{dZ5VOcwDPWKO?sOnrWJGcT7NYt5z4W54b=nK#&=XhbKv_qm;+jT3K7rmR z!$+Yeq&C&nm9uytefpyeqkroV4ef2hLAgz>SP>qoVk~DWI@D0=6Ro27td9lHqC3p( zE&G^mA%o%?*A45TyG|uc4$Ap1Amo@x$yh=8Sg|>zOF_=_*#th(5TB&a7qoDdzxFix zERz3`8KPi(JPnAlPj#5%C<7g)*JN>&Q-Oeqkor%e6_c?a33+@zhgyQY@+ti}JbJ%^ z!8Mri**}9tzbvmvkmVYP&MowD&HuRLzq5h0HiumC*C7Z>pwXlc&o`0vFa*=Nm^0Pq zdVyYXa8Yn8^KRqIgkIRh3{I5a`PL^le$N*;h}Bp8{e!co22SPcrOfhYJmH(@oN?bn zsy~e{T3b2_>+b9JO&kusGBiTw=t>3BwY=&5*cHeo$%4B%1%1&BdN_GDM_6YOYhR99 z8mdqK1|dhFHxok~s@J>Tx;11}I0%|}*}8}7XJFU1-$d7iD49YeY&(yB9DMe78H+q8?Cc`>n-?SYEB#G zdeca=#C`5hOW6daGdc3B#^4>61{ePPsEx6(80rJw>ABfA9{UrIlA~6Z29wMrrYqp$uP_qS|3&pTUC{KFsS7X%_5!-Z~uM z=?!{}#gO9HH^3k64LYPbco(FXEK+9v_0UgL;4e(rVD5^J&2JH8(O5EVlhRzdxK>4$ z&iIAes+r-6iB?hbm{X*IqMadu;Mlx*J@0^S@>&YLwBp=i7R(1iqy)+O~5*Yp% zLGyX`OiImK7;4yx;a`R3G; z0iq}u$$K>`GT}t4_rnwVK)gatFT3dK-``E}$|cfMVH63h4MhtZt%Le>Y5FXS3JXrd(C?0-XTo$&e}vE* znd31RFvCM@rMTViFcRzFtQSL!C;$K(j5d_K?_rY^yA;` z_&S+(Sy%8@P=yX)6tq?cSp9d4{#QHq9MT;Id4u&u@t2B4lu_=Vs&<&Zs#BlB5$*?H zzupWvD#;7o)`eSWMm+c$$inf5(MX#^5m7-jc-M#jW=KlH9^8%y5_(i$yRh#>TN)X= z-ikgj(~CNIvU>ayY;x2;@A%wXZ&9R;>8EsXV2#QZF_ab{D!?uvlu04∓x0A*YDP zRq|$hRRvF2d6ape-v!}U$7B*hV2po|8TY9bvwvfOYEeJo^fIZ}N{crfwaNEpe2lbe zAGFXg^XZcjFOv0)4GxY8wPQK*6J3ORfMp;v`YwXj&zip;kCaI)$)bU8hM6i0Xpku1 zT1>B9GspQfz2=&{+fq+2)hSMvNRZS3E21^=W}f4zNMvTB>QF*NM^=d9aVeAFn0Z*E zY8f-6J?DFkdtzDOeu@_$0o$iE+_~=Z&QGleT)x4D1ba`s$W7t}M|YIiwJ>SunZnrH zA2BWFfLHT^KJKEL8T>2Kk0@rEWr{3R7Zx$hK5A)2NB?NiZ54rovJCR?QCM;p9~Z9t zTCl6)*8}$XRWDA`mDxRS^3D#XlCTt7NL#KCYa9KZS12lTG0I}x#U4$+1K45< zF2?n-;XcMAg=z`b_!^B-%P8WO&KE?}CR6npf5Qh8mj?M7H-D2xwy`igFS6D_Dufkx zBY%_1fc{y0fc{s3n3LYtK(V#KGk2KtJw>)gA#(=~6Nbqw$z*%2sB1=^c*QotR4LDh z#5jzq=8Y>$m_e;M>b3s57xq#~>ze_dXL=6vC_c!|vw4e;2~LJT!~!FM<9#IbB(GISe;c@4m*y7@9h0h4Dv^+x5Na?2Er@!@d~e!MB)t$VyZ#!>=0 zj63d*xMA{kBgTz!9Z2EW$n;+{z;8|+NtGT64;t{^{GASqKL66c(^VZCzTXFobxlTa zqA>1Npgr%J$IA!Q>JoH61Q+F1()&1`e?^TDUF(WEef(%rq?`-P&3r0PAFI1faUbCc z_@93zNE*Dh!Hpp(z;0duzD@B~wC1{O{tb4m$l}aM$5?n9jC~M`rQ@TvP&|qv>3t1} z74I5lL%~HbuDD{tywT7^)#9M|@Mfk?3Sz>eLJhA!OKiA}0>^8LU0x;m5yp{o3-+R8fTKGQ1#VNz?ti*1gY>Ju>Z zvpOIhW1l{WKMj=p<%SiVXYjxkvxg?RD2e%LcsmIBKb6$;@~=Y7>cIr*8#{Z%Ub4ql=^C>t5-9DCJ7jd>m*EVx zw$q}}%IZ*W<5{OHVN|U#xh^AG7&%J2+kNq20R^OQcD4(M8uRNEa~^VAWN4 zG}PdWD*aj)9h#JodWiEosQC0z?Al)5>UB)-z*`CKSd`iIm&jve4inWm?V>t%0z*-7 zi?%8ejiTY#JIZ5*t_ngKE*p7G;^kmV z%weZ$lwzkZscmE-0&bTJ6@4yi)LhL}8aUrNJkb-%DM}YEX=kTbMcoU`l zigBw#qDyCIF_kXPgg#5 z91LS3;xiHiL2=o%m@@L`2tB@5{zEu8f97_zivbQwToPv{c&>z1IN48llPodvVJHjr zlr0)*C*%NTC1!Dyj{Z_3L|=#_{9wPZHQm9EJJ(B8TF-Lv6WILw^Q8r)Jd3{EZBdM) z+(%rn_SWU1f|x1p$i|2i=*EZ@a(u9#(jCf#;4TQP@My$ZT}X;RS_I(iGm7a~strQWam=O5EhIT=z zzvr7Xw78r*=5{E=!qo$-1*hi@30Up@rVx}Xhk*DLQQ~WTXxyfYeXAQpmpQ7*s4$e? zbkoq+A3|KnL`4+wOQoU&rWWjR{`+DS(KEc7bxC4j9AIjO_ao+c3nkxcIct4EQZ9X< zLKHWMkq9T6ZRs;NX3!WLnaC&3{SY6EQW`iXG~6aGe&wu!Dr&9O`>s|cc^GO^D%*6ts4#d;ffF}5g$QCkv5#p1g~*0ifu7hghi@j z(M|YZ1ZF$2o8}Zj0ztN)#GCI_E0s8ks0MSRl9)4fz9CF2A=?x+Ar5mQn?U`$I<(*f z-+L9kx8HjCYs%qu$pl6*5L-ECzD{duPD{GdQ;&OGhE=J+uxAB0 zJw5Q}hXzkqjFK9}MvL%y+S%QZW}8)~0u48dGh7*(V5J6$X;xai$>3pT_##wL3&{S% zLdE-<#dOPwZ4V8P;0)l6fJC4naSztJ$Eu<*)fhj75tKqzks=rdxj_H<)3ij0r9u=& z)L3r^n5dDzG*^)lm+}3LcEj-PUM5UDSP~YvNJ7=QWo+*D(-XeP4E1yVS=y`W@)grb z&MC;G`Nr_~{a6I-d`Nz=GUg}AA|4n;>0C2>?&}+(V0G&oF~v;4i!(TT_j+q4> z^*FT-6e76r_N;&_wKh}O`xQm*z7Bx2Z-r$^nW35XRX?FZ)IkcXnr=x_#6L3IzvPvW zXGq|ery)hK53)95;7AXkgHRkNqrB-_=a(qvcK=@sfF{ZA9QngtC-Lf6w8e!@1Co>2 zLw0K)wMQr4L^@MRA23$8iyOk}#AUq9YRzhm@l{w?`-F`B>Th?s`{l5QfRVfeSy|Kp$r00>VXrU+e0U?|)lgTdl z_k*{}S&(GaIG!Dr;-tqV339R9FY1d^3%*`Yp^KT%VV-aOPiAY%PC0P&Hv) zy#d^BRTlK)19`EFG?_<=uw6FyfOpF0-}As!XvWDQ_Gb@`2Uv}>qYdjEshk$>7ygT` z!Ss|ca`EeG^_{xe2!owlhbYM&T~>v|5>{JvC^ESY;@4kAazn= z+&b2dCKD7p;_BRX6fy{@t`cV~Wu?=gUZ-=|>k>Hk1|h}V&N$=$_8WwkNBgo1D670u z5~IZUXt5GL8ti0>cDOqGs(eO!?ja?qrsV34OLRT(F8}4Xemgx_OXsnRa8CVGZOl!h#I zqH9HZRKKO^C*beDjR8X+<9en%Rub;WA%wELGFe1df)kMFmGG(%zrEn7PS0mSV+!97;JZpvW(N5 z3_UyeJ;rNc3`J0;(1X{USsnNswW7YfkoNpV$VR=z{zt?sQuQ#Uyy(ZaPvJocRurFpD%dxaKc3UWA{pwm}P8<*0`|a--)z`9~_Pq`4xV)P2>IU`ab|WLBzguNOTtg zLpy-JL-gLwkI$g~oAuDIg72IM^i<{Sz(!LsK$(3K5UX(Rut!;EB*`Ea5ms=vurFBS z_%)EVB>6}xk{qN>1$&Tlj+l#mMDm2>8xPL3e8~n9X!t~&S*64p^i?J?NYco+BO)nG zyvel_sof=R+yby{tz^9Wucpt$~G+b($Uz6o|Av8vMV&Q6LQy2JJBbp1QKc2gfdWLz5= zPQ5a3f06cWgs#zM;xQ4NyBezSv8OoUIK0KQ_Q(dG^hgqXP|nJ0zvCV6m{sK!x=!|g zdJjRb?BF%aRd_;LL99Ze`o4U=-9VwTze0dyfc!`rlr;o!hDRS18Kobze&3;MwC8|| z2OG4ZV8{nSYdXOW;SSMAK+3)IDq@tXURe!^LNH1RF$5*g1u03{eL7I4@jECyJvgga zcbseKKn27agH%rkq%Y(Z>opw&iM%esFCeMN^&W7*0hRMszNWjaW3 z@P7SJFU~v4LU~`PX+3!VkfoHA`salpgT!Oaat^11-(`;$8x+?aDEPZy;@aClQn|jB z)5#{%R|D5vbB*%{@EwvSqgWS!&!t#fh41v~Pk-7a4DcgJIH1gAJ$a=)wxtwb5aI>G z1D_5esF)txydGGKCup%jizX5+Nd}5~ zVCzYYVEgg$D%w(v(pR;eW@>F5v$W_s>1cpqgmVdyG2Jf{+qvUxzgjzZYt2L~B+xh? zXzRkD-eN0PIH$1JS6p$0Q=YQdP@7^4IP+*P0BQT-4}aJt1&Ez!=K+Dq*+jfS5}EcH zBqkteQDyTr-#RB*Kt%8vtB9)=pi<+3*`({0FVMCS3I%Geep`wa_A{m*fyo2b1jN<41{QyX>^!MX^72hrc_%-V%FMIHN{Jtlu z*jJFOsB6=~x~C^C=d34!UAf)N8Jt-v%9`f6^&fqQa;cf(G9Mr7DR4{4Yokuad>4Knn7CvyO`)6+P&!%HN|@ zEyX^u&LQ|AR{a{}4B&aOpGO{fWJ$?%2qexWS_$L>CE7ecuTx6P7LpBoCJ;a6o*|n8 z72KcV!Bwd)G2Oek661g(p?lu+9jS)7Z$`Cxqu8m!VvusczCs0!D*WRg|F}zPBuW0J zPe1oy&yz^OPGc{KS6Hu{NyK10FLv46eBi$(dChF#xwvi;GE_)V*_R|n=6w_AaW-bN z2N1T*=0FL{JxQ9NLr6l)8?NV^bIwUTV6P^#Q@AgqkLX@Saj)lMyZYk`j~3HX+Px3R z0nTv!+!;Dv>VU<7#zXidn*&c zLnxAQ^oM@Fdx*11`5}itB`Eo(WBb7Y^mY64m%lvgP(v&b{FO5t$M+zjq@Dl*CxFsp z?m;<|%u(zT91$qxDpBynYN>4(0Hh7~l3=%->E&5LbN~L^HQ1zlRgbQ=ZJi?@+5pS} zFw~;&&sghXgAY zkX`KGq%BQyf!>*rc(C|JuZ<46`^8sZd3j1;gY}FEG>~S%}cf|_9wq;^^b&Z^UKj3793m?6JM& z%sfB2R@Ne25O+7$z88sQb zLzBR_M`BI!H%ae5iZe)6dVo?Xgn};Jwz5XN%`T)^%{EXFp9D1>X8?UoO9AhNrkLX%(~J2uZpAv`lV)RAl&0=krzr_z}cAR4CBrmjP{=z?NcPS?Ab))(-X_B|B#e zXMH*F$uZw^H5XW~v>D3QT7-VbRCi!^KJ%H+IN!_*U9tgNLed6huCF-E?0ZkF2;oXH zg1)o#H>Wi~uEaC<3A^z5&wt+CACjjeK$0S#*rj5ylj?~4Mg!fI`hB||GyBCYI|3>S zBGH(;NzJwf2$=f_(ye9!*$?@9cCRj*lmox-FtHnc>4sR@(TDWw3NhWgR`q2$&><=b zq{<;yaR_i+3uXB^keNbBz?yHk6F?P2U!Zitn?u(JiscZKz6T=CI-fV+<5-tNtYY8^ zv#L{zjlgvX{lU4%Y2}f#uHCG@tnSr#Q?_{B7nV=ua7d0HtHbuE$YH@flYx}%{9qA z39tbuuGr%Q=sxiQ5sEqk@~TuoZqY9jQjXyla{|*E&<*@bV~)S6aZx+ovxis|R~0^I z31Yd|ls;yIZvntr!u^9h%61KY0y673TRRI9h`xOdXAxu#geC!EdWkXtD*FJXT{;QQ z`oMNWL}ADMc|)K|(8%-nAt4aBC`(b=G3}ZDl7RKeHKvnsoCOfE=bwMR+cN~6oJo{X z^Ll<55Tr3+a7g-~N%|D?y!5&Bgd1l%{amRsp*;c5?_1CiWb?aokyy2+H6F&;f32Q( z8%2ii788x=Iam83Zw!vXCL~Fe;P*gQ0DeESO+_wXPa#BTaY0XAT2N%RV9F#`b17C) zb5jz`-e5gYHV;@=*nHGN@r#Z8u7- zCi4Cxitvh(IO9)AG`2iWdbcjo^ZX^DXJe^o*-~uZp<>4#Q~zk42r<{Zebum+H*7N# z*k^jGUU0z$uJ1Pew0$3U);DX72j>=|4id5c;S&q2CH@{#vs7@NL9BA#6`!};iicfM@6~hn4L#r5yNJUQH z5l$=>P+3GXWNK&u&|C<_YLmgF{!XaYXS3>SckZap{;pytGyt7=Hdd{6>@22=Q!6

    CNcXdrWAU3OXC`Mzwk9s6Q`LoCQ5SH;5WAF^TGktVIEtG>=hue_=l~7 zErWv2Wi6Z~S2;^e$6st)z>Z0l=~a+Y`oPv1+D1XQWykh=LuJMwkDhvNS}4r+ zQ{(sr8i4@K{$-#(70Z`L7LywwWs$)m4JoGpoi^YOHLy$^d$eaVObe?FuXOpkj`ku# z3R~>GAjt9*U~bcE+lHzZo@aPN+_p~EzYeujMj7)S5ie{wj|G;bX{hgOeuCqm(-iME)fmSYn6Vt$B zM!tUgKgh}+@J^5N9YP7E4(LZ?P)LrwyigJQ!2f?*fI=yPr@tcUWc&dhMX{4sUD;E{ zC*A4m-;amxc0yksU7mQ3HUqM2mpm3y_O?K4h78f%-z6V8D8+llchYa9wB6ewcg;gXS zSt)7*eLP3?w!h+sIvRR!Cdg^*pmbX%!D%kY_Dauw*8uCZQ2NCP!*meZcCah`Z)`0F z8hq4K6eB>s!hnya`c~lCiyKSIIbg$!cq}0(Oq` z({NcT@9tIzz(3jm4MkW)sUv!(04%p?6yO%lXeINjF+#zQ*GH$2Et1AZ}k1bd6JmwgW#eKP`YuR04)ag0IiJ{a7?GC@;hdR_pQtAOTWJcycDg!ikBK`XygGh zhN_htJ%=Xx*%|sI{U4WqXl?B3=PWuAkHW3uvNGN=#S9@{uUh~IcD&j~0_qj>`l@-G zk|ID@Rd#-h&%ZeSYv+eU(D?a~(ftIr_3qBFeS=JSJCuXH^;n9A#-zPINuQFX>;&NQ zu-2I0_XGBjY9pDVdh||b3N=ovQm=z30gqhf=V8eg0J%~IkXfM~{`r8R;JjTyZf^HM zf!m63kiad#G-24=ggx3FUoXxQW&;`Ls0c(12s`5zLXl&MmU#m$tpecADQcn=`R2OQ zZGp4zYx6x~e;V*;vlLU_Yx;IX*4O!2meSn8Wkn>oFx-9>`BzBKzHVARifY8*3j0 zLI6%R(Fim2*`;3(8TtyO`V0WIh0kr)9}6%Lx`*^yeeyyKim7JZ)yLZ`fEWWXESLAO z1I##8lMFmkp3MoNew95K1NiMCfc>hFUT^^j`vw*ghAeW~sM z9sA(XKvC|Knj~=)|Jt339Sc_gV|A z>rb|Z*DkNi0Roz#offx_hR~c(W3mRtn?DZrOpxZYiWM+7@c1i9f_|V&&%ahEuueX6 zER2Q#WX4;YueWK&fGUH*$lMd_=Hq8=9GMD>(RAy}0l@0|vCDEbFh)bl{)oxiZ@;Qh z1a%kE&T4rxfz0ve1F@iPoDs>5Y0KIzDC4B1(rs7O8_?yLpKc7~AFKIxdK~}x^>h~C z&Wz`Sj@(Mh>VI&W_9jbd&05+Aj-3K^cIsj;pgYi331HC!^fat$-FCo^ae$qwNfIqt{$K8uV!4nr}OF|PGkM5L~4^NNI zQs|_S5uTw`Kk-J(#{t#h{$nW<+MC>;1&i$#R_j^tls*|LEd_>HpFSKcVb$7e z=^Wo#mj6+1YT|9O{(2ruhlBczqmcGoB?watgPdd;%JmLU=I#X^f%`0$5Qv2&mX!F} z6NnZ1lN`hc`HxakjI=1K4ts}(=`~lWFh2`D*P|Ncma9cIIO4&<<5Fz<(T}lY^rqBu zl!>ri(d-DnT&0D@ti-`PvHwylOhNyhDrH)!C7|HuAa1mU1Xau@K?zn~@9s1$Zv(N65U|Hp()KxSjikS(NxxpK>0%NHde!L-N2 zpfgu5%^#pQF8Z{)Ul(G|Q8WzY9YJA5RJiOW`h)?CPI z=y5LI$XKsc(J}sE=4qL~7^71&BAWC3?Ry{6A79+7W9~D2+Xn7hp&F|Cb1q$Z<)t^carR@b<|9O!zD!lR3Ln>xaU>J7nJW#SYRlMO z3qyzus!S=17-laxr96N3CvHbXW|0S#_=@l0w#IxvxXJEct@v&S4rDpDA?XyP%h)70 ze+fKYU(}@4xOaPhTTCO=vt=+0X>j#I>(bA|iqicrkqqAEP<@SHwoUiT`5}~j zlz;TKA$&!ZRsI_LRKR1YZeGR_u@R9Y{bl&X})nzU8W|<#aJwRi1BUHHiL?PKR{~t8%|s3>Aqcl5T|2on<5U+I=C$Q zNmfM+TquyRQ0x`r0ERSL?e%jkxEAW4C8tZvqOCscq5V{ss(qN(^D-w;y<|PmN*VO0 z&9|HsLKL7OYfOB&%BIrB5^ypoD)d#es2|Q3yG=aIRKSi0AHSj)}tXjM#*K$}qL=MHnHMR2nq#8Nf zFXXi>7Ui3s1@A$yixF^;8_f6tG=qj(VucUGX&lpaPby*?X{bV9vZqTkTEXp7eld6E zNaySeEpMON0GDlneuuex&fj!d1XSjD+!}=l~1q7P^1^Bl^AVColh4=}pWc4jWH@;e3Cb1tn0u`y92D%^>XAZ`$- z!?`Had9wq{fc*GFoG7s9z8Sfg|6PI;mjC^1|CC(3FX2fRd-cuUQx)@Lwc#$PvTz26 zRRRO5#*}v8ML-AhybQZiLT_{9$5m{1hWC61Y+T-PEN{hS&9>WtDQ^E_jEY~W1fxbw z&R>r>$Cfy{3onMj!RZdbQ_qOnV`x!77xZiBzki?@44gD_Ht#f`<(iqJL@2g0kA-5ubAfDlOUhZ8n$>n(OA zAP*$(Oy5#OXB`cKfpEE1xI&1;jc(Ym^Ue@y$yUO@oa;zkBe9e(OZKyTAd{s66U~?45F+QEMAk(|dQazy9usQcdwpXeStsJ_& zagxFmY)C=S#-MA(a*6v@6^G-KCjTd8P(t|wPEelFc!_8i6-Iv;iJj>BB)Ze zmU?)i+enT0)j#~Ydfn)+{>>|$K{>F(%AmqY>;^C%1>eA z_^{m1zuou1xuTtfDwX%&T>;0R%bwZ8QO1E@Hcuk z!VXDxsc|Js<NdAOXRJl)9t`&c*6Cge{6ZA& zSbp3-sVMGjxHI{Q+o*5MF{sq68WJ%--HinJvmts#S+I5fK`#v`vQ!$~+zdRuZTrU^)yN>Rijritf; zEn86UQs@>k*}48mn>{ePQhEra{G*TK+qlS56iCqHyPNQH!;x?c@|84~rcW>-C0El%nC@rwVz)Uo|WZ5<0H2 zOL`xQs!;dQfD`0%*w238Qj z$hmZoNSXYjCxosoKt|`8@NH5Ga~~(^TjWfY>yl~2!kw^L4Js($Lh&~M&)A4=4oV73 zY01yG`XfqmN;e!O3M}r+ix-w&>0(4>5p${4!4UW{uABL+=xSA$-FN?*?-s4NVmTnh zl~j*8(GJF-=FF9zX)}6qrBW`9?KY|wlYo}l{wMv-)j*DwznyyT3H&+Ts5yQI&KSU} zChrc};_e;}musdoHkFA}oQ_0S)4F~mwY8)u2+w$50V#|z{#oEu=5^^5IqUi&t;=|zg$W>y%m4f=%piuK(ceiZ<{&0#M6TsN|W zVx>}79SMXx7P{uYm-%~*)hRe#tTsuY4xjbl(sI?x)ms(G+1u9G6wV9cxI6x)@ZQ7n z3FnFuv)p_~_(km{r$<`<^23YWM)}_EIoc;4r#Lz6oQEGetc*;|YJuU?NaRxONtoUT zm)orm3WOTmY>g-Br)*J_r=NXCA|Y{Ym*TJ|{9$F6Nj^3^xN<`R6m<_bLx9QX`XJx> zmzP{>Ra9i{+sKvTfd{n8na2ZbR@bdCd!BT*@#B|_Gf9=Jo%DmzjfJl4CwIZ+(a!Dt zoeMxCccgg+Wc&`|NmePzty|DW6;vrSt6`Z|;+76)rjB{CgsA}eiJTiz?lpZVowo7+ z1Ohqf*HmRqrHm`@okOMh_Bz=Coe+}n8_4#dGVMbFH!VxuZ=IrrwG}mGx0u;(BfT3k z%(HHU8CaB8l-r5;zr@#f=c0(qL`dTrMZj=p$<8Qj_BldrT49Q)eP~*|HpnHZKQPSz zW7Cz^w{H26nGGr3+cz9setK$tb*0>R<$x4@ID8h%h2dK9= zf{v)G3CN2q<`aae2m;j)sST0x8EyRW;H=cy&ykHY5;*8i)ESWTqsi^Z7XR=??8_)4N9TR3@A7S8cb z6yZF!7qJBQ*@2o`|5BP^#A}z0?UZd3y`is_>(%NjLW@_;^i$>o^Cnj9_bTTk&oRo^Gi1>qW6Hyf2*0S2rnZ7qmdv^bTu%FFBdx$Z=sI;r+>|O(HLB;1 zz}avnM2oJ=TR1<>hCb?&kb7o8zx!)EBfz2+@jAws1q9j;aU7&hySOU&s|ek#XmaVK z%)!f^EA(-lp>pvTe}P)YXYpH;Gq!lHaEZv&2)^AHITayo1ox@Y)Ps&IGtVon7iY-Z zF}gLFzhf%-UrqdlN3Cw3P2JRh)ARt*@lotI@8$N?zqS!2qB$=ayBW{7X4$Xq<%d54 zZq^^?w)b>HO)K4FO7xfZmv8gNYaPelW7m5q;eqq4e~Q_!@jFBM?Re+^bR)ZC4KAUEwRt>%a&C4cO{j`?^)3%$^S-Q33+NDRicewF+c8zpTunZOqIIq-i32F zv;JF~M%~{$MbN$h-K5a33W5-K&mCn&q{H+xF!E#-X*&&>X?s&`gjV*mY7NLGmE4HS z`kHlYvoDMf23?-t&)eYTyGBuxQUdaYWh_( zlmBm^S=ZQ9?sOxmt>YqIIGHIFzH&d$0oU1l8`MbWgQR_h%;ZaXL|D{Y5p{NXHfI_1 z*jZ=+uLKZ;O0wiHj!h6^^hpcR^n|F~?AZ}0V$`t&0*Mp^$}=g$ZD4MSS8embp3wpd z8~}pWvAw;LdAFt?%zO$y9*KFfwy`X}$e0kDrjF)+PZ&Z|Qvd#+M6rJifs){};9SO* z{ree!fWDk82bbDDb?@?~RnySRCTqS$iT+yV{w}r{rySSZ;Qy=0rOcrQ+0B$yl+Ay! z5*6pb0Y@e7H6?Z#tkt_IIf6L~-y%uNI;>s)T2qo=-zU#Cvq!! zLR&K(gIanvW$~^2IX~n>VSiK>B_enlW(})+p47?D!lS+g0v-N(9roz}YZ|t5@GbCn ze*3fF0(euy>+^5(3zWKvR%-Xlflg}bjvfe2I#Xw-B38KUpWWT^s*IoS8OCtt3W;K# zbgJ9C|C-#|XGft~DYX7oES}iYP|c%Saf*tfjR)){gnwL@8&;K!{p(0E1x9yI@+prZ zG@BWui8^t#p4E)uc51>L7s{X7O%H1xCQW1MQ4^;L`o!hC@RZUA<>PQv! zIe{V~(DY->yOO^Aqx$mGP+?h$|H{b-o{@*LRXU8)#>Ge@c2Od@wJTYN&6#JnMfjgt z#{E0G&?8*p_al}6#FqC&t4stavk04EwnRPJf+FKlDZD2+IyFKPz1o8=(+(J;(FVA7 z;VG3G0_3sQXdvxRw;xxEj?_HCJbe1d+KbTkXWq(WBGm=_Z>VuQC!4L>D##1#eEB#R zMtW^?m%qQ7O#4Bxbau&6Xy!2L51<@2w$Jc0bsavUvM5E=!LP4=2Tp-KubpoJ9O?0B zG%OUFmyQ1tFJoNBQ8m{t{$`zq49NCQacE!nJuGWHwWPuacPK7VGAFbR1z<@hMmvrQ z5Mxg59O4mwerV&OD4;+%A9mwG;REn>r6&m=M|%G;M6VY#d++ir30O%SXa;1nfQ*|G zz*#mc>R8{VC?fwDWnzxvipkFKH? z5myByr+c$at2$T-6KQD>r@mATzB_LtME9{O ztN)}%yr|Sn5s*mCmCr1BtCS1T%VMKNwvwia!|^&bvzB}u0q;&&nXfd)RByN??CzZ~ z_)~vuPI2c zEi^bEzs1kA=`9))TY6S*AawluzAakuYG2@c{Fv@x-`2zPaw7(@^Hg(H*jB;Uv~Q{3 zgq|U3p^`LpL$6?@#W*83yP>bNYa)eZXCVTXWJAV79X^uA#H=P=*%}&T9k?Ar+#DY@ zalbm?py|x9&}$j;{**;pjEvB?KWio(zt`KJ^|yU+!fUq4-)|c?o3O-pH=!AD&TjwUE80zX({<1jzm8S7Yv9?)cM z63Kp?!OJG6oLbN1&`$JV;<(H9g$Q`CI0=~jMc|f~9AENG@><~DD9k$yJ7h%OjYstb z*7AksCmGS7WEPp@mVG4ui4rb9yw>r!%2mpLHG^o~ zozX+XbYdk^Up8Pp=<@yMUde}_IDT|bmp=b*wS*kq`ZjM5)|N}`Q@xN3Twg3@!IV zK75*)x*mOB`p&j~KO|NzSEo#u37$z7RF-iK(zF4ch)1#n93HprOxa1!-=`C{XjO9`)=o;g5r~JLW!DAJVso2n+ zb#Yrha@o-0dNZK-P>|{_bTWJFD{P3aAbdWD-@%A#jiWw>?t@s11eFp36&}?GBJ4et zdia&KHi~h5`le8B4HLS+;ZL({aZ&KhV1s6FonWCw3xW-k=eMs+=JaU)w$>sZ#VDOEkyouW9G}Hlf zW0X=?G{v(B2E;v&ZfKf*o8bLxT0n0mP`WfW8T0kbS^To5Z2M3MQ%-T1>#$&WlILT5 zCU?t8h$e2L10Mf|5a+u3Sf9^p1++X<=kYFwm&fB71+E>n{bFTr15wFFW~vlEsuOE# z0jo?VlFYMe;z^<$DJw|3v?-_@@|0DpDzlYF9kCBQ0Lgc-7D}kJM+qO}q4-;_3yB?z z4lKi~5QaP<)LKjfUkBaEC&Ye&FSrbSIRj{9pqOpHVAjplh3x`pb|x;7NOah z8I=<#ZktEoxN}U^VO3TePD;iFvmy+P{spD<>(rDxO-=3f+?D;_Xy~M{bYc;v(*9Ca zT4KhDx6v?{`?iW`(q%zJ{tf58dX^$?KS74F`>`Z`stu;i-kG{%;V%9=(HI;50@K}B zh~)893IB?_48)}C+&0s;5=getnn`{TIQ8y?C0UNL#qVZCv*x=x3L!y9wT?Lu|TtLYpo5 z`+i9suBrgd8m0y2iznI^*PmKXa@{}$Xq*fFT05FDXt@{5PRnUwX%N6ok>s(Nni6Yksm6g5i1^JVhQD0RH)>n=09)?daYM+BxNb8klq z)-2S7j-Cl%IN@FUp1SVk3+wwUa#)zn zwEY@X(sfmns$7F-i18mvLsx~W>`mUG%cG@*CeK~UBVjy7Jg0(bL~jw02fl2|yuqM_Taij`AuMp27Y(PnbI@e79BWH(>N7|tN->%99L z7pJL*YA-5+RQXo}ZKSDFw*2&|a^f`&19TUi6KJa)GJYv{Ij}sF#jwR-SL~ zMJ8g}k9yctO}1?IX1Xn>v`#EW-|tN1Qur$^rSCLJkI_O@3gfMtS>1Ymbxy#Gat7Mk zVEGiXJvXN17Kn5)P$}_C^}~yvotwEB{J%K3+JwOJ7u}mrsAAE2sCfGxO*`uYh7p!7 z%#lD*Tdgvet%WLE7z#0dWu!fUWa0~}lVG2w zP&@3&1s(~7mwKMp(euYg6Ck7WsP7u_XxUt|@yjrYw+PC*lPg4_0_Ptw1nulD^3{@7 zq*F!8FL-id@amD6m(N?CK4|+51uJ)sqiR@RwW9~@Nng|0*Q~It3cxpkamg`piQ45v zdrT(};X`MU)(e+A7s)2izi(WgTKu}3Yj+$64O87rvGH&Ra-`=mL3V#Luib)A0rkc@YhT|WjQyTviCE?LKZV2hVfIw7OXSNXLcLf9VFjb>S&f`?HN|_IO zdxjmB|J*+)P_S@`sR)wRideRV%vdm*N zQkg(@Ju;+Ly8PnR*g#}HPW)y&F-p~|&WMGE`Vm{EtvH5}iDqu;KxuB@)F$UN3X4gWsS=hi)DSaVM^M1IsL_e1zy0^ys5|vx~D>##f<|j(&UxnRG0C9*VKtHzpl}{MKSG&}xc| zW|K3L5Z>owoP`OP=tE$|{M|)Z@wFigW`--22U0)im7r!a*2xR_+%Qmz?{9_rsj2;w z{k;fD&{wpx$T2~u-Td9iz5u&d$HV?1zVPl}X<4#(=ZLm9!ipbqx>3CSxKDmjguG}} zyi-o4v)VW6!|Oiv-M)9v(`n<`(OE+)o3%T>KBCxpi-w*ja#_^}qmJ{x} zqa-!3zV6)S>!HBPxL%sP&p_QO+6DU=?nx+jV}pzxZhWj#)sC6j2m*R&E5m2T8Hj10 z<*{4jH_S(%f%@9HcB)l4`0ko~O$xQGP`3-S?I22lY}Tmid<3mOxlDLzN>HFveYtJ$ zo;FjpNo$I<&(I>K3-tp>muBqjJmW8e(TZSbK1e@~m5DQ83(b~EB{`@SQH@=jFJXc^ zd(+{7XSgY$i`(2QQ@D1e*g3v>&rrt7rK85dg{gKHVC=kLCBbfPues|QUi!ECra5df z4^K_)R@8o-N6HV^A(1@7oWzzg_=mFyq07TF5z=>H^EhK z*OhBGEkN@zMNZEmEZ@7J!xNXU;7DX#T@-9sfMa8OqKme^S-=1Btby4gW*(THBNP8_ z1`COT;jKl39L$J(?#0U2MUJk=c$BH*|L z#CHbGu#3f-S8UB(<9OQkGn8rJ$Ts$ZuA^I#d@~OTKE7Qg#V&et4U&;LtPc(iiXS#5 z)b8j&8Nu~T*|woGMsf5hsRKwn1F%lmvged|lba4|akAxfz;V5o-9ryzpXsjjadCrbDTB+wi{TgSj!v z)_ux^Mz*NL7zQP7R6jpO4XEo$WLF&2!>H^94kTMLt=-By?Kt?)DqK(>zZ&|=R_2?u zf{3{gdoG3{WBX`(0t^>52AkCE=uUBbx_k+9-0yk$N8m$Wwcyf8TJ1E%;khIqdHPCHB)9SZZ98zf0Qlme`d8g)=ydjj}d#bK5m)_&+S9A4CIArnm4-vHJh2o0Z zLjxyhuONy%r>*4Mz;TVElK3;!LRG#p<%N7JOe0Leh^^GsqJCV;Q47V27>kwa8wN%R z;L$KB*kAVQN)>kqNde#n0KZnrWyj^2iKBqBRoj33eyGj1iH7EJbqH&=vS9@?qcxy~ zXB&=ovjzpB4cVryV_???1J#vbLIsP&e+ChN@)4FGUXiIjuc8!tA-#&(6`=EkI1{hKE zs7;&_hOqyq2)Ql?xvj(u#?)hjI+{7PRGewg%-0f+8WKcWT^klX9|#2fc47~_j=vP0 zt;l{d(svZ_Y8^j~z7C%=Y43}JP=P=ttQUp9!z5f6`!FgmW9vg_j#;1i){Xg8{qgDC zMFCko$)YFXHkKYj$`^;5(1AcKy#}84;^+SGmdcXdryy;@x17IuYbSP)3$BDihvFa* z<~j0iHaH+Ix@3|3Ll_pwc+<*gYle@It*fIM(9s>{q!f$2E+DBH4`2ZFf8Q-i@@1!s zawm5;@BkrHC2FLHj@FIlYq3K44C4Pl8PUjR+>@k}o)wmel0Q6viiXL({m4-yq;08i z7zI#t49+A_O7V91bp8t`aVGBJY#8zsHffd>dJgceebo5*m;1VVki+0&V&H6g6o3rH zZG}$jzW{xD6!n?h9g4Hy8DM}UUgH~TMC3gID0j`kxbd+jM{8^52R!4$M?T+~w6K}v zpWUku+UOu-i9@UkT&V1bHhl+x_z#|#YW9%cH!)CR|CinJ`eA%-0gd0=2rb^BfoO^h zHtqAFKOyZ$Mrfdbggl&L22afFvHt``9n8AY?CSMUQa!yYFmn_L^ahZSk*VaxXaM&h zi(L@n5Bg7c6X)d2)i(B$4UhxG`m$%0Ae&3 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

    `L}}HB|yIAl8@{F)q6l838+=A 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%0Dh-%5qrc8NVJ23Oan9%0O#)-^fU&4g; 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 KRV!3%!u}6K$5a6T diff --git a/src/program/snabbnfv/doc/.images/neutron-map.png b/src/program/snabbnfv/doc/.images/neutron-map.png deleted file mode 100644 index 30f4fde9481dc7a77431a298231c258b4e7612db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98460 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 Date: Thu, 17 Mar 2016 04:58:46 +0000 Subject: [PATCH 2/6] Makefile, genbook.sh: Output processed markdown in obj/ The documentation build infrastructure now expects to preprocess every markdown file and write the result into obj/. This replaces the previous behavior of expecting the files in the repository to already be preprocessed. --- src/Makefile | 6 +++--- src/doc/genbook.sh | 41 ++++++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/Makefile b/src/Makefile index 9fb0370e6d..d610581b50 100644 --- a/src/Makefile +++ b/src/Makefile @@ -16,7 +16,7 @@ CSRC = $(shell find . -regex '[^\#]*\.c' -not -regex './arch/.*' -printf '%P ' CHDR = $(shell find . -regex '[^\#]*\.h' -printf '%P ') ASM = $(shell find . -regex '[^\#]*\.dasl' -printf '%P ') ARCHSRC= $(shell find . -regex '^./arch/[^\#]*\.c' -printf '%P ') -RMSRC = $(shell find . -name README.src.md -printf '%P ') +RMSRC = $(shell find . -name '*.md' -not -regex './obj.*' -printf '%P ') # regexp is to include program/foo but not program/foo/bar PROGRAM = $(shell find program -regex '^[^/]+/[^/]+' -type d -printf '%P ') # sort to eliminate potential duplicate of programs.inc @@ -30,7 +30,7 @@ ARCHOBJ:= $(patsubst %.c,obj/%_c.o, $(ARCHSRC)) ASMOBJ := $(patsubst %.dasl,obj/%_dasl.o, $(ASM)) JITOBJS:= $(patsubst %,obj/jit_%.o,$(JITSRC)) EXTRAOBJS := obj/jit_tprof.o obj/jit_vmprof.o obj/strict.o -RMOBJS := $(patsubst %.src.md,%.md,$(RMSRC)) +RMOBJS := $(patsubst %,obj/%,$(RMSRC)) INCOBJ := $(patsubst %.inc,obj/%_inc.o, $(INCSRC)) EXE := bin/snabb $(patsubst %,bin/%,$(PROGRAM)) @@ -152,7 +152,7 @@ $(JITOBJS): obj/jit_%.o: ../lib/luajit/src/jit/%.lua $(OBJDIR) $(Q) luajit -bg -n $(patsubst obj/jit_%.o, jit.%, $@) $< $@ -$(RMOBJS): %.md: %.src.md +$(RMOBJS): obj/%: % $(E) "MARKDOWN $@" $(Q) scripts/process-markdown $< > $@ diff --git a/src/doc/genbook.sh b/src/doc/genbook.sh index e6ddef654f..b9fd6c7c6e 100755 --- a/src/doc/genbook.sh +++ b/src/doc/genbook.sh @@ -8,9 +8,12 @@ # Link images in local .images/ for png in $(find .. -name "*.png"); do - ln -s ../$png .images/ + ln -f -s ../$png .images/ done +# Root directory for markdown files +mdroot=../obj + cat < Date: Thu, 17 Mar 2016 05:39:22 +0000 Subject: [PATCH 3/6] src/Makefile: Build manual in obj/doc/ Build the manual in the obj/doc/ directory (for build objects) rather than the doc/ directory (for sources). Fix the Makefile dependencies to work. They are still ugly though... --- src/Makefile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Makefile b/src/Makefile index d610581b50..ec773cd204 100644 --- a/src/Makefile +++ b/src/Makefile @@ -110,7 +110,7 @@ $(TESTSCRIPTS): testlog snabb ) \ ) -$(OBJDIR) bin testlog: +$(OBJDIR) bin testlog $(OBJDIR/doc): $(E) "DIR $@" $(Q) mkdir -p $@ @@ -151,7 +151,6 @@ $(JITOBJS): obj/jit_%.o: ../lib/luajit/src/jit/%.lua $(OBJDIR) $(E) "LUA $@" $(Q) luajit -bg -n $(patsubst obj/jit_%.o, jit.%, $@) $< $@ - $(RMOBJS): obj/%: % $(E) "MARKDOWN $@" $(Q) scripts/process-markdown $< > $@ @@ -184,20 +183,20 @@ obj/jit_vmprof.o: extra/vmprof.c | $(OBJDIR) book: doc/snabbswitch.pdf doc/snabbswitch.html doc/snabbswitch.epub -doc/snabbswitch.md: markdown Makefile doc/genbook.sh +obj/doc/snabbswitch.markdown: snabb markdown Makefile doc/genbook.sh (cd doc; ./genbook.sh) > $@ -doc/snabbswitch.pdf: doc/snabbswitch.md +obj/doc/snabbswitch.pdf: obj/doc/snabbswitch.markdown $(E) "PANDOC $@" - $(Q) (cd doc; pandoc --template=template.latex --latex-engine=lualatex -V fontsize=10pt -V monofont=droidsansmono -V monoscale=.70 -V verbatimspacing=.85 -V mainfont=droidserif -V sansfont=droidsans -V documentclass:book -V geometry:top=1.0in -V geometry:bottom=0.75in -S --toc --chapters -o snabbswitch.pdf snabbswitch.md) + $(Q) (cd doc; pandoc --template=template.latex --latex-engine=lualatex -V fontsize=10pt -V monofont=droidsansmono -V monoscale=.70 -V verbatimspacing=.85 -V mainfont=droidserif -V sansfont=droidsans -V documentclass:book -V geometry:top=1.0in -V geometry:bottom=0.75in -S --toc --chapters -o ../$@ ../$<) -doc/snabbswitch.html: doc/snabbswitch.md +obj/doc/snabbswitch.html: obj/doc/snabbswitch.markdown $(E) "PANDOC $@" - $(Q) (cd doc; pandoc --self-contained --css="style.css" -S -s --toc --chapters -o snabbswitch.html snabbswitch.md) + $(Q) (cd doc; pandoc --self-contained --css="style.css" -S -s --toc --chapters -o ../$@ ../$<) -doc/snabbswitch.epub: doc/snabbswitch.md +obj/doc/snabbswitch.epub: obj/doc/snabbswitch.markdown $(E) "PANDOC $@" - $(Q) (cd doc; pandoc --self-contained --css="style.css" -S -s --toc --chapters -o snabbswitch.epub snabbswitch.md) + $(Q) (cd doc; pandoc --self-contained --css="style.css" -S -s --toc --chapters -o ../$@ ../$<) CLEAN = snabb snabbswitch obj bin doc/snabbswitch.* doc/.images/* testlog programs.inc From 35a2422d8ba09ad75e2d6792f258792712faf86b Mon Sep 17 00:00:00 2001 From: Luke Gorrie Date: Thu, 17 Mar 2016 05:40:31 +0000 Subject: [PATCH 4/6] .gitignore: Add .images directories --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c6d6fcadca..6422517199 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ obj /src/syscall /deps/*.vsn /src/programs.inc +.images From 64ee8af6d8de9b6f63c2aec40a54bfeabaee61dc Mon Sep 17 00:00:00 2001 From: Luke Gorrie Date: Fri, 18 Mar 2016 09:20:34 +0000 Subject: [PATCH 5/6] scripts/process-markdown: New takes output file arg Previously process-markdown took only an input file argument and printed the result to standard output. Now it takes both an input file and output file argument. The important change is that the '.images' directory containing ditaa images is now created in the same directory as the output file, and that directory is created if necessary. Previously the '.images' was created in the source directory and in practice this was only the right thing if the output file happened to also be in that directory. This was true the past when we were converting foo.src.md -> foo.md but is not true anymore now that we convert foo.md -> obj/foo.md. src/Makefile is updated to reflect this. This also made it possible to drop the Makefile dependency from the manual on the 'snabb' executable, which was an ugly hack intended to ensure that the required directory tree in obj/ had been created somehow. Now the process-markdown script automatically creates any required output directory. --- src/Makefile | 6 +++--- src/scripts/process-markdown | 14 +++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Makefile b/src/Makefile index ec773cd204..4e4689518b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -153,7 +153,7 @@ $(JITOBJS): obj/jit_%.o: ../lib/luajit/src/jit/%.lua $(OBJDIR) $(RMOBJS): obj/%: % $(E) "MARKDOWN $@" - $(Q) scripts/process-markdown $< > $@ + $(Q) scripts/process-markdown $< $@ $(INCOBJ): obj/%_inc.o: %.inc Makefile | $(OBJDIR) $(E) "INC $@" @@ -181,9 +181,9 @@ obj/jit_vmprof.o: extra/vmprof.c | $(OBJDIR) $(E) "C $@" $(Q) gcc $(DEBUG) -Wl,-E -O2 -I ../lib/luajit/src -c -Wall -Werror -o $@ $< -book: doc/snabbswitch.pdf doc/snabbswitch.html doc/snabbswitch.epub +book: obj/doc/snabbswitch.pdf obj/doc/snabbswitch.html obj/doc/snabbswitch.epub -obj/doc/snabbswitch.markdown: snabb markdown Makefile doc/genbook.sh +obj/doc/snabbswitch.markdown: markdown Makefile doc/genbook.sh (cd doc; ./genbook.sh) > $@ obj/doc/snabbswitch.pdf: obj/doc/snabbswitch.markdown diff --git a/src/scripts/process-markdown b/src/scripts/process-markdown index 9a43e21ad9..1880f7e9b1 100755 --- a/src/scripts/process-markdown +++ b/src/scripts/process-markdown @@ -9,15 +9,19 @@ # # which uses ditaa (http://ditaa.sourceforge.net/) to create a PNG # image from the ascii art and put an inline image link in the -# outpt markdown. +# output markdown. set -e -if [ $# != 1 ]; then - echo "Usage: $0 " >&2 + if [ $# != 2 ]; then + echo "Usage: $0 " >&2 exit 1 fi -cd $(dirname $1) +input=$(readlink -f $1) +output=$(readlink -f $2) + +[ -d $(dirname "$output") ] || mkdir -p "$(dirname $output)" +cd $(dirname $output) awk '/^ DIAGRAM:/ { diagram = $2; printf("") > diagram @@ -30,5 +34,5 @@ awk '/^ DIAGRAM:/ { diagram = $2; system("mkdir .images 2>/dev/null || true") system("ditaa " diagram " .images/" diagram ".png > /dev/null"); system("rm " diagram) - diagram = 0 }' < $(basename $1) + diagram = 0 }' < $input > $output From 19ffe8433b9ef75a0c6114bb7546a7396f5decb7 Mon Sep 17 00:00:00 2001 From: Luke Gorrie Date: Sun, 20 Mar 2016 05:26:09 +0000 Subject: [PATCH 6/6] scripts/process-markdown: Fix usage of readlink Had used 'readlink -f' to canonicalize input and output paths. However, this fails when the output directory does not exist yet. Now uses 'readlink -m' instead to avoid this problem. --- src/scripts/process-markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scripts/process-markdown b/src/scripts/process-markdown index 1880f7e9b1..6fe3cbe279 100755 --- a/src/scripts/process-markdown +++ b/src/scripts/process-markdown @@ -12,13 +12,13 @@ # output markdown. set -e - if [ $# != 2 ]; then +if [ $# != 2 ]; then echo "Usage: $0 " >&2 exit 1 fi -input=$(readlink -f $1) -output=$(readlink -f $2) +input=$(readlink -m $1) +output=$(readlink -m $2) [ -d $(dirname "$output") ] || mkdir -p "$(dirname $output)" cd $(dirname $output)

    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 kKw9Ddx|Gs+<-ZFCl@EAzdZa<9qA2LS(NB{r; diff --git a/src/program/snabbnfv/doc/.images/database-node.png b/src/program/snabbnfv/doc/.images/database-node.png deleted file mode 100644 index 62084cf15bae7b6059575a6ef7e9b82d8af5916d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103129 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\)(uc4S*Ew9}NiZ<{_=1*-@rpO-+_?S+~ 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%0D8jF8^H~ghhi))mRaG@MLBrVi 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 r1D|sG&X&S^2itVfdH%er$&8q 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